VoxCPM2采样率设置：用模型原生采样率写WAV，修复时长与音高同时出错

素材身份：作者原创输入/可编辑参考。目标工具未在本轮执行。
先打开 index.html；input.csv 是原始字段，reference.csv 是验收基准，negative.csv 是故意构造的坏样例。
actual-results.csv 保留未测状态，实际执行后再填写。

前置条件：
准备自己有权使用的合成练习资料，不上传他人的录音或私密内容。
按官方文档核对当前平台、版本与套餐；本轮目标产品操作未执行，练习文件可离线查看。
练习包提供口述脚本、规则与验收数据，不附目标工具生成录音。按录音说明自行录制有权使用的输入，并在运行后保存实际音频。

操作步骤：
1. 读取两份WAV头
用音频信息工具查看练习文件的采样率、帧数和时长。两份帧数相同而时长不同，先定位容器解释而不是重新合成。

2. 核对当前模型README
以当前VoxCPM2官方示例为准读取tts_model.sample_rate。参考输入可用16k与模型输出48k是不同环节，旧示例的固定数字不能跨版本照搬。

3. 在写盘处取实际采样率
把生成的PCM与模型实际sample_rate一同传给sf.write。保存运行版本和该值，别在多个模块分别硬编码不同常量。

4. 算术检查音频长度
计算57600除48000应为1.2秒，误除16000会变成3.6秒。对真实输出同样从样本数计算，并与播放器信息交叉检查。

5. 区分改头与重采样
若PCM本来是48k而只写错头，应重写正确头；需要16k交付时才使用真正的重采样。直接改数字不改变样本，不能当作有效格式转换。

6. 回听速度与音高
播放正反文件，核对时长和音高是否同时变化。实际语音另检查词尾、句长与是否因为解码错误而出现音调异常。

7. 交付可验证WAV清单
记录帧数、采样率、时长、校验值和模型版本。离线正弦样本只证明头信息检查有效，不写成VoxCPM2实测生成。

验收：
正确WAV头为实际模型采样率，时长等于样本数除采样率。
坏头样本播放约3.6秒、音高变低，与真实重采样区分。
不把参考音频16kHz要求误抄为VoxCPM2输出采样率。

官方资料：
https://github.com/OpenBMB/VoxCPM

图片身份：assets/ 为内置image_gen生成的原创练习输入缩略版，原始文件保留在网站图片来源地址。可编辑SVG为作者原生排版。

本课确定波形无需自行录音；generate-fixtures.py与inspect-wav.py只用Python标准库。三个WAV的PCM身份、实际测量与4次退出码见signal-validation.json，目标模型仍未执行。
