展开本页目录
开始前准备什么
- 下载本页素材,使用有权处理的声音,保留原始输入。
- 为对应工具建立独立 Python 环境,核对实际模型与版本。
- 先在小样中试听并保留失败记录,再处理长录音。
- 建立带完成状态的任务清单
- 每个任务独立捕获真实异常
- 按源 hash 判断能否跳过
- 将故意损坏的输入替换为合法副本
- 保留恢复前后日志
- 打包可回读交付
本任务输入、脚本、原始输出或明确待运行模板、原文、校验与损坏负例;不含模型权重。
macOS say 合成的本站原创任务输入;不是模型生成成功证明。
朗读输入与回听依据,独立于机器实际稿。
包含具体命令、步骤、来源与未运行范围。
保留原始文件;准确性需回听,脚本存在不代表模型已运行。
1. 建立带完成状态的任务清单
素材包包含三段 WAV 和一个故意损坏的 bad.wav,tasks.json 记录 input hash、pending/done/failed。先运行 check.py 能拒绝坏文件,失败案例不应阻止其他合法任务。 本次恢复实测后的 tasks.json 已是 done;复现实验时先复制 tasks.initial.json 为 tasks.json、bad-original.wav 为 bad.wav,再执行两次命令。
2. 每个任务独立捕获真实异常
执行 resume.py,失败项保存异常类型和信息,不写预期文本当输出。完成项先写临时文件,读取完整 segments 后再替换目标文件,防止中途中断留下看似完整的 JSON。
3. 用状态、输入摘要和完整输出决定跳过
仅当任务为 done、输入 hash 对应且 JSON/SRT 完整时跳过。若源文件或模型参数改变,保留旧结果并创建新版本,不能只看文件名相同。
bad.wav 的真实解码异常留在失败记录。按 repair-map.json 修复后只让该任务回到 pending,恢复前后日志分别保存,已经完成的其它输入不重跑。
run-commands.sh
cp tasks.initial.json tasks.json
cp bad-original.wav bad.wav
python resume.py tasks.json
python resume.py tasks.json --repair
python check.py4. 将故意损坏的输入替换为合法副本
练习第一次以 bad.wav 触发解码异常;下载 repair-map.json 提供正确替代来源。修复后只让该任务回到 pending,不重跑已完成的其他任务。
5. 保留恢复前后日志
第二次执行应显示已完成项跳过、失败项修复完成。核对恢复稿与原音的关联;运行日志记录实际事件,不用硬编码 done 填表。
6. 打包可回读交付
保存 tasks.json、events.jsonl、每个任务输出与源文件,运行 check.py 验证结束状态。失败恢复只证明任务可追溯,不证明识别文字准确。
7. 下载材料、检查负例与继续操作
解压素材包后先运行 python check.py,再运行 python check.py --self-test。前者读取真实 WAV / JSON / SRT 与源 hash;后者拒绝损坏 WAV、倒置时间、越界时间和缺失词时间。文件通过不代表文字、情绪或说话人判定已通过。 恢复页的 bad.wav 是本次修复后的有效文件;bad-original.wav 保留第一次损坏输入,tasks.initial.json 保留初始任务状态。
怎样确认已经完成
- 真实坏 WAV 被拒绝并留下 failed 记录。
- 完成项跳过时同时检查 hash 和输出。
- 修复只改变对应失败任务,恢复日志可回读。
常见问题
输出 JSON 已存在就可以跳过吗?
不能。需要完整结构、源 hash、参数版本和 done 状态一致;空文件或半截 JSON 应作为未完成处理。
失败任务能用预期稿临时代替吗?
不能。预期稿只用于回听核对,必须标出没有模型输出;修复后重新运行对应任务。


