使用本地脚本生成中英文配音
这是项目提供的独立命令行工具,用于准备视频或演示配音,不是 Sharp Stock 应用内功能。需要安装 Python 3.10 或更新版本,无需安装额外 Python 库。在 Windows 的 PowerShell 或 Mac 的终端中运行。
配置 API Key
- 进入豆包语音新版控制台。
- 在需要使用的项目中开通“豆包语音合成模型 2.0”,确认可用额度及音色授权。
- 打开控制台的 API Key 管理,创建或复制可访问该项目的语音服务 API Key。脚本使用新版
X-Api-Key鉴权,不需要 AppID 或 Access Token。 - 在运行脚本的终端中设置环境变量。请将示例值替换成实际密钥,不要将密钥写入脚本或提交到 Git。
Windows PowerShell(仅当前窗口):
powershell
$env:DOUBAO_TTS_API_KEY = '你的语音服务 API Key'如需保存到 Windows 当前用户的环境变量:
powershell
[Environment]::SetEnvironmentVariable('DOUBAO_TTS_API_KEY', $env:DOUBAO_TTS_API_KEY, 'User')先完成当前窗口配置,再执行保存命令。新打开的终端会读取保存的值;若终端所在应用已经运行,可能需要重启该应用。
Mac 终端(仅当前窗口):
bash
export DOUBAO_TTS_API_KEY='你的语音服务 API Key'脚本只读取环境变量,不自动读取项目的 .env 文件。
生成配音
在项目根目录运行。Windows 使用 python;Mac 若没有该命令,替换为 python3。
powershell
python scripts/doubao-tts.py --lang zh --text "欢迎使用 Sharp Stock。" --output output/voice_zh.wav
python scripts/doubao-tts.py --lang en --text "Welcome to Sharp Stock." --output output/voice_en.wav--lang zh 自动使用“阳光青年 2.0”;--lang en 自动使用 Ryan(美式英语)。语言由参数选择,不根据文本猜测;中英混合内容仍使用所选音色。两种语言均通过 V3 HTTP 单向流接口调用 seed-tts-2.0。
也可从 UTF-8 文本文件读取完整文案,避免多行文本或引号影响终端命令:
powershell
python scripts/doubao-tts.py --lang zh --text-file output/narration.txt --output output/narration.wav--text 和 --text-file 必须且只能指定一个。文本文件支持 UTF-8 BOM。每次命令发送一个合成请求,不自动分段;如服务提示文本过长,请按段准备文案并分别生成。
音频设置与注意事项
- 默认生成 24 kHz、16 位、单声道 WAV。脚本接收 PCM 后封装 WAV,避免流式 WAV 重复文件头。
- 可增加
--sample-rate 48000设置 48 kHz;可选值为 8000、16000、22050、24000、32000、44100、48000。 --speech-rate 0为正常语速,范围 -50 到 100;-50 为 0.5 倍速,100 为 2 倍速。--timeout 120设置网络等待超时秒数,默认 120 秒,不是整个任务的总时限。- 输出文件夹会自动创建。已有同名文件时直接报错,不会覆盖,也不会为该次操作调用接口。
- 未收到合成成功标记、音频损坏或网络失败时,不保存 WAV。错误不会自动重试,避免意外重复调用。
- 音频会在内存中完整接收后保存;适合按段生成配音。生成结果占用内存与音频长度成正比。
- 缺少密钥:检查当前终端的
DOUBAO_TTS_API_KEY。HTTP 401/403:检查语音服务密钥、项目及开通状态。错误码 45000000:检查音色权限。并发或额度错误:检查控制台用量。 - 查看全部参数:
python scripts/doubao-tts.py --help。
参考:官方 V3 接口说明、官方音色列表。Ryan 使用 en_male_ryan_uranus_bigtts,阳光青年使用 zh_male_yangguangqingnian_uranus_bigtts。Ryan 仅支持单向流,本脚本使用该接口。