验证工作室输出
项目的黄金法则:在查看结果之前,永远不要说“完成”。 自动测试只能说明是否正常运行;只有亲眼查看才能说明是否看起来正确
(在此项目中,hyperframes check 在一条弧线穿过文字的情况下通过了测试,而查看器测试未能检测到其四个视觉故障中的任何一个)。
步骤
- 视频或带
seek(t)的场景:拍摄 6–8 张分布均匀的帧(不仅仅是第一帧)生成联系表,并通过 Read 查看它们:node scripts/capture.mjs <scene.html> 1,4,7,10,13,16,19 out/frames/sheet.png 4对于已渲染的 MP4:ffmpeg -i out/x.mp4 -vf "fps=1/3,scale=640:-1,tile=3x3" -frames:v 1 out/frames/sheet.png。 查找:文字被截断或重叠、元素超出画面、对比度差、空白或冻结的帧。 - 格式:
ffprobe -v error -show_streams -show_format -of json <file>→ 1920x1080、30 fps、H.264yuv420p、预期时长、AAC 48 kHz 音频轨道。 - 音频:
ffmpeg -i <file> -vn -af ebur128=peak=true -f null -→ 综合响度 −16 LUFS(±1)、真峰值 ≤ −1 dBFS。 你不能听:使用频谱图(showspectrumpic)、测量结果以及通过 Whisper large-v3 返回的转录(audio/verify_voice.py)。 绝对不要使用小型 Whisper:它会在静默中虚构文本,并产生 49–160% 的错误率。 - 所有检查一起执行:
make verify(或audio/.venv/bin/python scripts/verify_output.py)。必须以ALL CORRECT结束。 - 如实报告:你查看了什么、测量了什么、你无法判断什么(声音的自然度、设计的品味)以及即使你修复了但仍然出现的故障。
已知陷阱
- 必须证明“相同”的结果(
cmp、使用ffmpeg -f framemd5的帧哈希),不能假定。Kokoro 在没有种子时不是确定性的。 - 使用小于 0.4 秒的窗口测量响度会得到 −65 LUFS 的结果(垃圾数据):应跳过它们。
- 在复杂场景中,PNG 可能比 JPEG 慢 10 倍(210 秒对比 20 秒),而在平坦场景中则更快。