doubao-speech-mcp
豆包语音云 API 的 stdio MCP server。接口依据官方目录于 2026-10-10 核对。
0.4.0 按用途重组工具:一件事只有一个入口,常用能力全部是具名参数,只剩 speech_raw_request 需要手写官方 JSON。默认暴露 18 个工具(原 29 个);实时会话和管理接口改为按需启用。这是不兼容变更,旧工具名不保留别名,对照见下方迁移。
| 工具 | 作用 | 接口 / 模型 |
|---|---|---|
text_to_speech |
语音合成:2.0 音色、语音指令、8 种方言、30+ 语种、读音修正、SRT 字幕;超过 5000 字自动改走异步长文本(最多 10 万字) | 同步单向流式 HTTP / 异步长文本,seed-tts-2.0(复刻音色自动用 seed-icl-2.0) |
generate_audio |
音频生成:按描述生成音效、配乐、多角色对白混合的音频,最长 120 秒,可参考音色、音频或图片 | seed-audio-1.0 |
generate_podcast |
双人播客:text 文章 / url 链接 / topic 联网话题 / dialogue 逐轮脚本;可只出脚本 |
WebSocket 播客协议 |
speech_to_text |
录音识别:flash 同步(100MB / 2 小时);standard / idle 异步(URL,512MB / 5 小时,支持说话人分离) |
极速版 / 标准版 / 闲时版 |
summarize_meeting |
妙记:转写加全文总结、章节、待办、问答、翻译,开关式参数;结果 JSON 自动下载 | 异步 HTTP |
translate_text |
Seed-X 机器翻译,glossary 指定术语,自动检测语种 |
一次 1–16 条文本 |
interpret_audio |
同传 2.0:S2T 字幕 / S2S 语音,热词、术语、目标音色 | WebSocket + 官方 Protobuf |
clone_voice / design_voice / get_voice / upgrade_voice |
声音复刻、音色设计、训练状态查询、升级 | 新版 V3 HTTP |
list_jobs / get_job / recover_job |
异步任务(长文本、标准识别、妙记)查进度、自动保存结果、修复交付 | 本地任务记录 |
speech_raw_request |
兜底:HTTP 合成 / 极速识别 / 音频生成、WebSocket 合成、流式识别、历史接口,按官方请求体原样调用 | 固定端点 |
list_speech_capabilities / get_speech_usage_examples |
产品目录、未启用的工具组及启用方法、官方模板归纳和调用示例 | 本地查询,不计费 |
按需启用(设 MCP_TOOL_GROUPS 后重启,如 speech,voice,jobs,help,realtime):
| 工具组 | 工具 | 默认不开的原因 |
|---|---|---|
realtime |
open_realtime_session / send_realtime_event / receive_realtime_events / close_realtime_session |
持久会话要逐轮发送和接收,适合专门的语音应用 |
admin |
manage_word_table(热词 / 替换词表)、speech_console(控制台 OpenAPI) |
需要 IAM AK/SK,可创建、删除和下单 |
所有具名参数工具都有 parameters:官方请求体里工具没单独列出的字段(SSML、水印、bit_rate、ssd_version 等)深度合并进去,同名以 parameters 为准;TTS 的 req_params.additions 可直接写成对象。提交类调用只提交一次,查询不会重新提交或购买资源。
环境变量
| 变量 | 说明 |
|---|---|
VOLC_SPEECH_API_KEY |
必需,豆包语音控制台 → API Key 管理(新版控制台单 key 鉴权),并开通对应服务 |
VOLC_ACCESS_KEY_ID / VOLC_SECRET_ACCESS_KEY |
IAM AK/SK,控制台 API 与替换词管理需要;区别于语音 API Key |
VOLC_SPEECH_APP_ID / VOLC_SPEECH_ACCESS_TOKEN |
历史产品(如字幕)的旧版凭据,不自动拿新版 Key 替代 |
DOUBAO_SPEECH_OUT_DIR |
音频输出目录,默认 ~/Downloads/doubao-speech |
DOUBAO_SPEECH_JOB_DIR |
异步任务记录,默认 ~/.local/share/doubao-speech-mcp/jobs |
VOLC_SPEECH_BASE_URL |
默认 https://openspeech.bytedance.com |
音频生成和播客可能超过300秒,客户端需设置相应超时。异步任务提交前先写本地记录,get_job 完成时自动把官方临时 URL 的结果下载到输出目录。
本地运行与验证:
uv sync --project servers/doubao-speech
uv run --project servers/doubao-speech doubao-speech-mcp
servers/doubao-speech/.venv/bin/python -m unittest discover -s servers/doubao-speech/tests -v
MCP 客户端本地启动命令可指定本项目 .venv/bin/doubao-speech-mcp 的绝对路径。已安装的 GitHub 版本需在发布后升级并重启客户端,本次源码修改不会自动替换已经运行的 server。
调用示例
完整示例与技巧见 使用指南。MCP 内可直接调用 get_speech_usage_examples,返回官方模板分析、工具参数、技巧和来源链接:
{"product": "audio", "category": "timing"}
product 支持 audio、tts、voice、podcast、asr、translation、minutes、realtime;仅 audio 支持 category=text/reference/timing/multilingual。省略分类返回该产品全部示例。示例为根据官方用法改写,文件路径、URL、分配音色 ID、会话 ID 需替换;查询示例不会上传或生成音频。
音频生成 1.0:官方四类用法
2026-10-09 核对官方体验中心的模板分类:文本生成、参考生成、时间控制、多语种。四类均使用 generate_audio,可以组合使用;以下 JSON 是 MCP 工具参数,示例提示词为根据官方用法改写,未做真实云端生成验证。
| 官方分类 | 写法与 MCP 参数 | 官方模板举例 |
|---|---|---|
| 文本生成 | prompt 按顺序描述角色、台词、环境声、配乐与音效 |
悬疑刑侦片、宫廷试药、双人播客对谈 |
| 参考生成 | reference_audios 提供样音,prompt 用 @音频1、@音频2 引用;说明参考音色、情感、风格、节奏 |
带货双人、警局对峙、多角演绎 |
| 时间控制 | prompt 写总时长及 [开始秒s:结束秒s],支持小数秒 |
控制音效卡点、控制情绪递进、控制叙事转场、控制旁白推进 |
| 多语种 | prompt 直接使用目标语言台词,说明语言、口音、角色与表演方式 |
英语、日语、韩语、法语等模板 |
文本生成:先定义角色和场景,再按发生顺序编排声音;台词用引号,区分台词与表演指令。
{
"prompt": "雨声持续。青年女子嗓音清亮,紧张地说:‘有人来了。’随后响起三声敲门声,低音弦乐渐强。",
"model": "seed-audio-1.0",
"format": "mp3"
}
参考生成:样音列表的第一条对应 @音频1,第二条对应 @音频2。多人对白要明确每个角色的引用关系;下列绝对路径需替换为真实文件,也可以传可访问的音频 URL。最多3段,每段不超过30秒、10MB。
{
"prompt": "主持人甲参考@音频1的音色,热情地说:‘欢迎。’主持人乙参考@音频2的音色,轻笑着说:‘你好。’随后两人自然地笑起来。",
"reference_audios": ["/absolute/path/host_a.wav", "/absolute/path/host_b.wav"],
"format": "mp3"
}
需要指定现有音色时可用 speaker;图片参考用 reference_image(本地绝对路径或URL),不能与 speaker 或 reference_audios 混用。图片参考是 API 支持的另一种输入方式,不是体验中心第五个模板分类。
时间控制:官方输入提示使用 [2s:5s],音效卡点模板使用 [2.7s:5.7s] 等小数秒区间。将标记写在对应台词或声音事件前,同时描述停顿、情绪递进、转场和声音强弱。
{
"prompt": "总长10秒,雨声持续。女子轻声说道:[2.7s:5.7s]‘你终于回来了。’[6s:7s]响起敲门声,最后雨声渐弱。",
"subtitles": true,
"format": "mp3"
}
区间标记随 prompt 原样传给官方 text_prompt;没有独立的 timeline 参数,也不在 MCP 内做音频裁切或强制对齐。subtitles=true 返回的是生成后的人声字幕,subtitle.sentences 及其 words 的 start_time / end_time 单位为毫秒,不标注所有音效。实际时间落点需核对音频与字幕;不要把提示词控制理解为每次严格命中指定时间。单次最长120秒,台词过长或区间过短可能影响节奏。
多语种:目标语言台词配合角色、口音和表演说明;不需要额外的 language 参数。官方英语模板用英文描述人物声线、标准美式英语、情绪、环境音和配乐。
{
"prompt": "A young woman speaks warm, clear American English: ‘Welcome home.’ Soft piano continues underneath. A young man replies quietly: ‘It is good to be back.’",
"format": "mp3",
"subtitles": true
}
语言支持清单以官方音频生成 API为准,控制台模板展示与 API 列举可能不同。四类用法及参数示例也已写入 generate_audio 的工具描述,客户端发现工具时即可读取。
长文本、识别与妙记
长文本合成(超过 5000 字自动异步,long_text=true 强制):
{"text": "长文本……", "voice": "zh_female_vv_uranus_bigtts", "long_text": true}
立即返回 job_id;get_job(job_id=..., wait=30) 查询,完成后 speech.mp3 保存到输出目录。异步模式 format 只能是 mp3 / pcm / ogg_opus,subtitles 输出 sentences.json。
会议录音区分说话人(自动用标准版,音频须是可下载 URL):
{"audio": "https://example.com/meeting.wav", "speakers": true, "parameters": {"request": {"ssd_version": "300"}}}
妙记:
{"file_url": "https://example.com/meeting.wav", "summary": true, "chapters": true, "todos": true}
bundle_billing(官方 AllActivate)只选择打包计费,不会开启功能。复刻先用 clone_voice 注册已分配的 S_ 音色,get_voice 查训练结果,再 text_to_speech(voice="S_...") 合成。
实时会话(需启用 realtime 组)
最简配置:
{"session":{"audio":{"output":{"voice":"zh_female_vv_jupiter_bigtts"}}}}
- 使用返回的客户端
session_id,通过send_realtime_event发送input_audio_buffer.append与audio_file(16kHz / mono / int16 裸 PCM),或事件里的 Base64audio。 - 发送
input_audio_buffer.commit强制判停,或由服务端判断停顿。 receive_realtime_events接收转写、回复、音频路径、工具调用和用量。音频 delta 自动落盘,附格式和采样率,不返回巨大 Base64。- 调用者执行 Function Calling,再通过
conversation.item.create回传role=tool和对应call_id。可发送response.cancel打断、上下文增删查和session.update。 close_realtime_session等待关闭确认并释放连接;MCP 退出也会清理全部会话。
实时上传20ms一包。MCP 不直接采集麦克风、播放声音或驱动声卡,客户端负责设备输入输出。同传需16kHz / mono / 16bit WAV或PCM;WAV自动去容器。目标 PCM16k 保存有效WAV,PCM24k保留float32原始PCM并返回格式信息。
播客断线保留 .partial.*、task_id 和 last_finished_round_id,可通过 parameters.retry_info 显式续传;返回的是续传片段,不自动和旧文件合并。
从 0.3.x 迁移
| 旧工具 | 现在 |
|---|---|
submit_long_text_speech / query_long_text_speech |
text_to_speech(long_text=true) + get_job |
websocket_text_to_speech |
speech_raw_request(product="tts_websocket") |
speech_http_request |
speech_raw_request(product="tts" / "asr_flash" / "audio") |
submit_transcription / query_transcription |
speech_to_text(mode="standard" / "idle") + get_job |
streaming_speech_to_text |
speech_raw_request(product="asr_stream") |
submit_minutes / query_minutes |
summarize_meeting + get_job |
query_voice |
get_voice |
legacy_speech_request |
speech_raw_request(product="legacy", operation=...) |
clone_voice / design_voice / upgrade_voice / generate_podcast / translate_text / interpret_audio 的 request 参数 |
具名参数,其余字段放 parameters |
实时会话、manage_word_table、speech_console |
同名,需在 MCP_TOOL_GROUPS 启用 realtime / admin |
clone_voice.language 现在接受 zh、en 等代码并转换为官方整数枚举;旧版示例里的字符串写法不符合官方契约。
官方来源与覆盖边界
新增接口来源包括长文本提交、音色注册、音色设计、实时识别、播客、实时3.0、同传、机器翻译、妙记、热词、替换词及控制台OpenAPI。
Speech SDK的离线模型、端侧VAD / 音频处理和Android / iOS接入需原生应用,不能等同于云MCP。术语词表CRUD官方仅公开控制台流程;翻译 / 同传通过 glossary、glossary_table_id(或 parameters 里的 glossary_table_name)使用术语。同传官方附件的Protobuf尚未声明文档新增的 detected_language,本版不猜字段编号。
历史产品使用独立工具与旧版凭据,返回各操作的精确官方 source 链接。传统 /api/v2/asr 旧 WebSocket 协议未重复实现;一句话和流式识别功能通过现行大模型接口提供。实时对话采用最新3.0,未复制旧1.0/2.0会话协议。所有产品覆盖不等于每个历史 SDK / 协议版本都已适配。
_ast/ 的Protobuf bindings来自同传官方Python示例,生成日期2026-06-12,调整为包内相对import;运行依赖 mcp、websockets、protobuf。
离线测试覆盖HTTP合同、任务状态、签名、Protobuf、二进制帧、模拟WebSocket收发、音频文件、超时 / 取消清理,以及实际stdio MCP初始化、工具发现与调用。未调用付费云接口,因此不能证明账号开通、配额可用或实际生成质量。
参数说明见工具描述(src/doubao_speech_mcp/server.py)。接口细节以官方文档为准:单向流式语音合成、录音文件识别极速版、音频生成、音色列表。
运行时与稳定性
共享连接池、总超时、工具分组、错误语义和迁移说明见 MCP 构建与稳定性。完整工具说明可调用 get_tool_help(tool="工具名")。
Metadata
Release files for doubao-speech-mcp 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| doubao_speech_mcp-0.4.0.tar.gz | 114.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| doubao_speech_mcp-0.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 212.0 kB
Release files / doubao_speech_mcp-0.4.0.tar.gz
| Download URL | doubao_speech_mcp-0.4.0.tar.gz |
|---|---|
| Size | 114.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c2e1eabe228263d86f76beba22021cb0e1f245484d419187abf8c012b98449bc
|
|
BLAKE2b-256 checksum How to use checksums |
d9c2b3f24e0c11cf8b15393a9fe2a8c245a38e3bcb259f4f4c1a2eb1180bbd96
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency logRelease files / doubao_speech_mcp-0.4.0-py3-none-any.whl
| Download URL | doubao_speech_mcp-0.4.0-py3-none-any.whl |
|---|---|
| Size | 97.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9cfc907cafeb3966f3a289a826417a581e6237cca3e5f51a089d671647758d4b
|
|
BLAKE2b-256 checksum How to use checksums |
ed67069c809d57bfe4cbd9133a1a02d5ef784d4ed6557434b3a82b0b4d155411
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 10, 2026.
Transparency log