这次要解决的问题很具体:给儿童绘本短片做中文旁白,而且希望尽量在本机完成,不依赖在线配音服务。之前已经有 Voicebox 这样的图形化语音工具,但这次更看重的是中文旁白的稳定性、可重复生成,以及后续能不能直接接到《琪琪的木床城堡》这类视频项目里。
最终选择了 VoxCPM2,并在 Mac 本地完成部署。现在电脑里已经具备三样东西:VoxCPM 软件、VoxCPM2 模型,以及本地成功生成的测试音频。
1. 为什么要重新搭一套本地语音工具
做儿童绘本旁白时,声音不是越夸张越好。它需要满足几个条件:
- 中文自然,不要有明显机器感。
- 语速偏慢,适合小朋友听。
- 声音柔和,有睡前故事的亲和力。
- 能反复调整同一段文字,方便视频剪辑时替换。
- 最好在本机生成,避免每次都依赖网页服务。
Voicebox 的优点是功能完整,有图形界面,能做声音克隆、多角色、音效和长文本项目。但对于这次的目标来说,我更需要一个“固定风格、稳定生成、直接输出 wav”的工具。VoxCPM2 正好适合这个位置。
2. 本地目录规划
这套工具统一放在:
/Users/DELL/AI
里面主要包括:
voxcpm-env/ Python 运行环境
pretrained_models/VoxCPM2/ VoxCPM2 模型
story_voxcpm.py 最初测试用脚本
make_voice.py 后续常用生成脚本
story_text.txt 每次要朗读的正文
生成语音.command 双击启动文件
test.wav 测试生成音频
story.wav 第一次故事旁白音频
story_output.wav 便捷脚本生成结果
这个结构的好处是清楚:环境、模型、脚本、文本和输出都在同一个文件夹里。以后迁移或备份时,只要知道 ~/AI 是核心目录。
3. 环境和模型部署
部署完成后,每次从终端使用时,需要先进入环境:
cd ~/AI
source voxcpm-env/bin/activate
看到命令行前面出现:
(voxcpm-env)
就说明已经进入 VoxCPM2 的运行环境。
模型放在:
./pretrained_models/VoxCPM2
脚本加载模型时使用的是本地路径,不需要每次重新下载:
model = VoxCPM.from_pretrained(
"./pretrained_models/VoxCPM2",
device="cpu",
optimize=False,
load_denoiser=False,
)
这次是在 CPU 上运行,所以速度不会特别快。短文本也可能需要几分钟,长一点的内容可能要十几分钟。好处是流程稳定,不需要额外显卡配置。
4. 第一次成功生成
最初通过 story_voxcpm.py 测试生成,直接在 Python 文件里写入要朗读的文字:
text="(年轻女性,温柔甜美,语速稍慢,适合儿童绘本旁白,声音清澈,有亲和力。)晚上,房间里的小灯亮起来了。木床城堡安安静静地站在墙边,粉色纱帘轻轻垂下来,像一片柔软的小云。"
运行后成功生成:
story.wav
这一步证明 VoxCPM 软件、VoxCPM2 模型和本机音频写出流程都已经打通。
5. 改成更适合日常使用的方式
直接改 Python 代码不适合长期使用。后面新增了两个文件:
make_voice.py
story_text.txt
新的逻辑是:以后只改 story_text.txt,脚本自动读取文本并生成音频。
make_voice.py 的核心流程是:
story = TEXT_FILE.read_text(encoding="utf-8").strip()
wav = model.generate(
text=f"({STYLE}){story}",
cfg_value=2.0,
inference_timesteps=10,
)
sf.write(OUTPUT_FILE, wav, model.tts_model.sample_rate)
默认声音风格固定为:
年轻女性,温柔甜美,语速稍慢,适合儿童绘本旁白,声音清澈,有亲和力。
默认输出文件是:
story_output.wav
这样就把“技术操作”压缩成了一个简单动作:改文本,运行脚本,拿音频。
6. 不用终端的双击启动方式
为了减少日常使用门槛,又加了一个可双击文件:
生成语音.command
它做的事情很简单:
cd "$HOME/AI"
source voxcpm-env/bin/activate
python make_voice.py
以后不想打开终端时,可以直接在 Finder 里操作:
- 打开
AI文件夹。 - 编辑
story_text.txt。 - 保存。
- 双击
生成语音.command。 - 等待生成
story_output.wav。
这不等于 VoxCPM2 变成了一个真正有窗口的软件。它本质上仍然是本地语音模型,只是用 .command 文件做了一个双击启动按钮。
7. 和 Voicebox 的对比
电脑上之前装过 Voicebox,路径是:
/Applications/Voicebox.app
它的定位更像一个完整的语音工作室:支持多种 TTS 引擎、声音克隆、预设声音、后期音效、长文本切段和故事时间线。它适合做复杂语音项目。
但这次绘本旁白更适合先用 VoxCPM2:
- 中文儿童绘本旁白:VoxCPM2 更适合。
- 只改文本,固定风格生成 wav:VoxCPM2 更适合。
- 图形界面操作:Voicebox 更适合。
- 声音克隆:Voicebox 更适合。
- 多角色和音效:Voicebox 更适合。
- 长篇自动切段:Voicebox 更适合。
所以现在的分工是:VoxCPM2 作为中文绘本旁白主力工具,Voicebox 作为备用的声音工作室。
8. 后续使用流程
日常最简单的流程是:
打开 ~/AI
编辑 story_text.txt
双击 生成语音.command
等待 story_output.wav
把音频放进剪辑软件
如果要用终端,则是:
cd ~/AI
source voxcpm-env/bin/activate
python make_voice.py
长故事不建议一次生成完整音频。更稳的方式是一页绘本一段音频,最后在剪辑软件里拼接。这样如果某一页语气不满意,只需要重做那一页,不会影响整篇。
9. 这次部署的价值
这次部署完成后,《琪琪的木床城堡》这类视频项目有了一个本地可控的旁白生产流程。它不只是生成了一段测试音频,而是把“写文本、生成旁白、进入剪辑”的链路固定了下来。
后续如果要做系列绘本视频,只需要沿用同一个目录和同一个声音风格,就可以保持旁白的一致性。对儿童内容来说,这种稳定的声音识别度比频繁换工具更重要。
