展开本页目录
开始前准备什么
- 下载本页素材,使用有权处理的声音,保留原始输入。
- 为对应工具建立独立 Python 环境,核对实际模型与版本。
- 先在小样中试听并保留失败记录,再处理长录音。
- 按句意拆成三段旁白
- 固定参考音与模型目录
- 每段完整消费输出音频块
- 按段号保存状态和实际参数
- 试听段尾再按顺序拼接
- 导出整轨与段落定位表
本任务输入、脚本、原始输出或明确待运行模板、原文、校验与损坏负例;不含模型权重。
macOS say 合成的本站原创任务输入;不是模型生成成功证明。
朗读输入与回听依据,独立于机器实际稿。
包含具体命令、步骤、来源与未运行范围。
保留原始文件;准确性需回听,脚本存在不代表模型已运行。
1. 按句意拆成三段旁白
jobs.json 保存三个独立 id 和对应旁白文字。语义拆段与模型流式音频块不是同一概念;先确定段级输入,人工试听发现问题时才知道需要重做哪段。
2. 固定参考音与模型目录
三段复用同一有权使用 reference.wav 与逐字稿。素材的 sample-segments 是系统语音朗读的原始输入演示,不是 CosyVoice 输出;模型生成本次未执行。 将 --repo-dir 设为已安装依赖的 CosyVoice 克隆目录;--model-dir 使用该目录中实际模型的绝对路径。运行脚本的数据文件仍从素材包所在目录读取。
3. 每段完整消费输出音频块
run-cosy.py 对每段 inference_zero_shot 迭代结果,先将所有 tts_speech 按顺序合并到该段,再保存段 WAV。不能只取第一块就标记整段完成。
run-commands.sh
python run-cosy.py --repo-dir /path/to/CosyVoice --model-dir /path/to/CosyVoice/pretrained_models/Fun-CosyVoice3-0.5B
python run-cosy.py --repo-dir /path/to/CosyVoice --model-dir /path/to/CosyVoice/pretrained_models/Fun-CosyVoice3-0.5B --only segment-002
python concat.py generated.json
python check.py --result generated.json4. 按段号保存状态和实际参数
运行后 generated.json 记录每段 id、参考音频/文字组合的 inputSha256、实际文件 hash、采样率和 generated_pending_review 状态;这表示文件已生成但还需回听。本教程没有自动跳过或续跑,首次运行处理所有 jobs,重做时人工指定 --only segment-002。脚本按 id 合并先前输出清单,保留其他段记录。 尚未运行的段不会写生成完成条目;只有实际产生的 WAV 才进入 outputs,未生成状态只作为任务进度描述。
5. 试听段尾再按顺序拼接
先确认三个生成段都无漏字、重复或截尾,再用 concat.py 严格按清单拼接。采样率和声道不一致要明确报错,不静默拉伸音频。
6. 导出整轨与段落定位表
concat.py 要求 outputs 中存在 jobs.json 的全部三个段号,并从真实 WAV 帧数累计 offset,保存 combined.wav 和 segment-offsets.json。本次仅系统输入演示完成拼接;CosyVoice 实际生成整轨仍待用户运行。
7. 下载材料、检查负例与继续操作
解压素材包后先运行 python check.py,再运行 python check.py --self-test。前者读取真实 WAV / JSON / SRT 与源 hash;后者拒绝损坏 WAV、倒置时间、越界时间和缺失词时间。文件通过不代表文字、情绪或说话人判定已通过。
怎样确认已经完成
- jobs.json 的段级编号与模型音频块分别记录。
- 手动指定需要重做的段,全部完整生成后回听段尾。
- 拼接顺序与 WAV 参数校验可回读;系统音频不当作 CosyVoice 输出。
常见问题
stream=True 的一个块就是一个句子吗?
不能这样假定。流式块来自音频输出机制,与语义句子边界不同;先完整组成段,再核对段级文字。
失败一段必须整篇重做吗?
不需要。人工试听找出失败段,使用 --only segment-002 这样的明确段号重新生成;脚本没有自动恢复逻辑。新输出按 id 与先前清单合并,所有段都完整后再核对衔接和整轨。


