echo-sdk-audio
Audio transcription provider abstraction (Gemini, EkaCare). Use when transcribing audio, adding a new transcriber, or shaping AudioInput.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Audio transcription provider abstraction (Gemini, EkaCare). Use when transcribing audio, adding a new transcriber, or shaping AudioInput.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Router for any non-trivial echo-sdk task. Maps user intent to the right module skill and diagram. Invoke FIRST for any change to src/echo/ before reaching for a specific module skill.
Recipe for adding a new provider (LLM, transcriber, eval, prompt). Use whenever adding Cohere, Mistral, Deepgram, Phoenix, Promptlayer, etc. — anything that plugs into an existing get_*() factory.
End-to-end recipe for defining a Skill bundle and wiring it into a GenericAgent with the right activation mode and tool registry. Use when extending agent capability via swappable skills rather than baking tools in.
Building agents with BaseAgent / GenericAgent, including skill registration, activation modes (llm vs manual), and system-prompt composition. Use when editing src/echo/agents/ or building a new agent subclass.
Postgres support — asyncpg client, schema-aware binder, PgQueryTool surface. Use when querying postgres from a tool, modifying the binder, or adding a new DB engine.
Evaluation provider abstraction for dataset experiments (Langfuse today). Use when running an experiment, adding a new eval backend, or wiring evals into CI.
| name | echo-sdk-audio |
| description | Audio transcription provider abstraction (Gemini, EkaCare). Use when transcribing audio, adding a new transcriber, or shaping AudioInput. |
BaseTranscriber in audio/transcription/base.py — abstract.audio/transcription/gemini.py, audio/transcription/ekacare.py.get_transcriber(TranscriberConfig) -> BaseTranscriber in audio/transcription/factory.py.AudioInput, TranscriptionResponse, TranscriberConfig schemas.get_transcriber() is the single entry point; optional-deps handled there.AudioInput carries the audio data + metadata (mime type, sample rate where relevant). Don't pass raw bytes around.TranscriptionResponse includes token/usage where supported — surface it to the caller for cost tracking.google-generativeai for Gemini, EkaCare SDK for EkaCare. Guard imports.→ [[echo-sdk-adding-a-provider]]. Subclass BaseTranscriber, register in factory.py, add extra in pyproject.toml.
aiofiles or asyncio.to_thread.AudioInput.[[python-async-discipline]], [[python-optional-deps]]