2.1 KiB
1
你有一个voice-gen的skill。
项目目录是D:\AI\ClaudeCode\口播
先初始化环境,看看远程现在的voice id有没有是什么。
2
原始文档:
C:\Users\wangq\Documents\Codex\knowledge-vault\discussions\creative\从想法到作品\成果\01.从想法到作品口播文案.md
这个内容里是带标题的,所以正式的应该去掉标题吧。
你可以复制这个文件到工作路径的scripts/下,然后用这个voiceid测试生成这段音频。
3
我修改了voices.json,这个应该是历史原因造成的。
你现在用这个新的voice id 先做个简单测试。
4
测试成功了,现在删除这些测试的临时文件,生成最终的口播音频。
voice-gen gen 这次没成功(mmx exited 0 but mp3 was not created),但裸 mmx speech synthesize --text-file ... 跑同一份文本成功了。差异主要在 voice-gen 走 cmd /c 包装 + --quiet,Windows shell 转义/缓冲与长中文文本交互时偶发异常。这是 voice-gen 包装层的问题;以后如果要在这个项目跑 batch,可以考虑直接调 mmx,或者在 voice-gen 仓库里把 synthesizer.py 的 _run_mmx 改成走 --text-file 而不是 --text,把 shell 转义绕开。
直接重生成完整口播 → 改用 --voice BroTsong-Saying-Emotion-2026-07-07
注意传入:--text-file 而不是 --text
MP3的文件名,加个区分,不要覆盖以前的。
这次踩到的两个坑(已避开,下次可直接复用)
- mmx 是 .cmd shim:Python subprocess.run(['mmx', ...]) 会 WinError 2。要么 cmd /c mmx ...,要么用 shutil.which 定位
- cmd /c 包装(skill 的 _run_mmx 就是这么干的)。
- --text-file - 在 cmd /c 下被解释为字面文件 D:\dev\stdin(Windows cmd 替换规则)。改成写入临时文本文件再传给 --text-file 才稳,合成完即删。
要听下新版的「带情绪」效果再决定后续吗?或者要我现在帮 voice-gen 仓库把这两个坑打个补丁/PR?
- 把 --text-file - 支持改正(用 TEXTFILE_PLACEHOLDER 写临时文件模式,绕开 cmd 替换)
- 顺便把 Windows 中文长 payload + .cmd shim 这层兜底显式化