Doubao TTS 是 OpenMontage 项目中的一个语音合成(TTS)工具,基于火山引擎豆包语音 2.0(Volcengine Doubao Speech 2.0),用于生成普通话和多语言旁白。它适用于创建中文配音,或用户偏好豆包音色的场景。
用途 该工具主要用于将文本合成为语音旁白,尤其适合中文视频配音。资料中给出的示例文本为中文,并推荐用于长视频旁白。
主要能力
- 支持普通话及多语言旁白生成。
- 支持通过 voice_id 或环境变量 DOUBAO_SPEECH_VOICE_TYPE 指定默认音色。
- 支持语速控制(speech_rate)、采样率(sample_rate)、时间戳(enable_timestamp)和用量元数据(return_usage)等参数。
- 长视频旁白推荐使用异步接口:POST https://openspeech.bytedance.com/api/v3/tts/submit 和 POST https://openspeech.bytedance.com/api/v3/tts/query。异步接口返回 audio_url 以及 sentences[].words[] 时间元数据,可用于构建字幕。
- 提供 TTSSelector 选择器和直接调用 DoubaoTTS 两种使用方式。
使用方式 需要配置环境变量 DOUBAO_SPEECH_API_KEY(在 .env 中)。使用新控制台 API Key 流程时,请求头为: X-Api-Key: ${DOUBAO_SPEECH_API_KEY} X-Api-Resource-Id: seed-tts-2.0 不要将 X-Api-App-Id 和 X-Api-Access-Key 与新控制台 API Key 一起使用。如果 API 返回 load grant: requested grant not found,通常表示密钥类型或认证头有误。
通过 TTSSelector 生成: from tools.audio.tts_selector import TTSSelector
result = TTSSelector().execute({ "preferred_provider": "doubao", "text": "如果 AI 真的会改变未来,普通人到底该怎么参与?", "voice_id": "zh_female_vv_uranus_bigtts", "output_path": "projects/my-video/assets/audio/narration.mp3", "speech_rate": 0, "enable_timestamp": True, })
或直接调用提供者: from tools.audio.doubao_tts import DoubaoTTS
result = DoubaoTTS().execute({ "text": "短样本试听文本。", "voice_id": "zh_female_vv_uranus_bigtts", "output_path": "projects/my-video/assets/audio/doubao_sample.mp3", })
提供者会写出:
- output_path:下载的音频文件。
- metadata_path:完整查询响应 JSON,默认路径为 <output_path>.json。
推荐工作流
- 在生成完整付费旁白前,先生成 10-15 秒的样本。
- 请用户确认音色自然度、口音和语速。
- 仅在获得批准后生成完整旁白。
- 保留查询 JSON,它是字幕时间信息的唯一来源。
- 基于 sentences[].words[] 构建字幕,而不是根据文本长度估算。
- 在应用时间戳前,按中文语义短语对字幕分组。不要仅按固定字符数拆分,否则可能破坏“在不押单个公司的情况下”或“可能会被慢慢稀释”这类短语,影响理解。
- 除非用户明确要求匹配之前的时长,否则视频时长应跟随已批准的语音节奏。
参数
- voice_id:豆包说话人/音色。默认使用 DOUBAO_SPEECH_VOICE_TYPE。
- resource_id:豆包语音 2.0 音色使用 seed-tts-2.0。
- speech_rate:0 为正常,100 为 2 倍速,-50 为 0.5 倍速。
- sample_rate:默认 24000。
- enable_timestamp:默认 true。
- return_usage:默认 true,在可用时请求用量元数据。 默认不要传递 additions.explicit_language。某些端点/密钥组合会拒绝 zh-cn,并返回 unsupported additions explicit language zh-cn。 对于平静的普通话讲解,建议从 speech_rate: 0 开始。如果结果对于已批准的格式太长,先用 speech_rate: 25 或 50 制作一个简短对比样本,再重新生成完整旁白。如果用户偏好豆包的自然节奏,不要仅为匹配之前提供者的时长而加速。
适用场景
- 中文视频配音、旁白制作。
- 需要字幕时间元数据的视频项目。
- 多语言旁白生成。
- 在 OpenMontage 工作流中通过 TTSSelector 选择豆包作为提供者。
限制与注意事项
- 需要有效的 DOUBAO_SPEECH_API_KEY。
- 新控制台 API Key 必须使用 X-Api-Key 认证头,不能与 X-Api-App-Id 和 X-Api-Access-Key 混用。
- 常见错误:load grant: requested grant not found(密钥类型或认证头错误);speaker permission denied(音色 ID 错误或未授权);quota exceeded(配额、生命周期字符数或并发超限);缺少时间戳(需确认 enable_timestamp: true、保留查询 JSON,并确认所选端点返回 sentences)。
- 安全要求:切勿将 API 密钥打印或写入日志、元数据、补丁或项目产物。.env.example 应只包含空变量名。
- 资料未提供具体收费、价格、平台支持范围或效果保证等信息。