音频识别前,怎样从 WAV 头核对采样率、声道和实际时长
一个文件叫 recording.wav,不代表它真的是 WAV,也不能从文件名判断采样率和时长。音频识别前先读取文件头与实际数据,能够发现伪扩展名、参数记录错误和截断。这里检查的是输入内容,不是转写质量。
读取实际头部字段
本文用 Python wave 生成一秒静音 PCM:单声道、十六位采样宽度、每秒一万六千帧。读回声道数、采样宽度、采样率与帧数,时长等于帧数除以采样率,预期一秒;PCM 数据量等于帧数乘声道数乘每样本字节数,预期三万二千字节。
这里十六位等于两字节,文件总大小还包含容器头部,不能把总文件字节直接代入 PCM 数据量公式。wave 的支持范围也有边界,本文只用传统非压缩 PCM,不依赖新版本扩展格式特性,更不把所有 WAV 都理解为相同编码。
坏头与伪扩展名分别测试
附件包含正常静音文件、把普通文本命名成 WAV 的反例和损坏头文件。正常项应读回预期参数,后两项拒收。检查器还读取全部声明帧,核对实际数据长度与头部计算一致,避免只读头就放过内容不足的文件。
失败反例是从上传表单的“时长一秒”字段直接采用业务值,完全不核对文件。另一个是只看扩展名,然后把解码失败归因于模型。入口先检查能把格式问题定位到本地,避免不必要的真实上传与重试。本文没有录音,也没有连接麦克风。
文件可读不等于接口支持
一万六千赫兹只是本文固定算例,不是所有 ASR 都必须采用的采样率。具体接口支持的容器、编码、大小和模型能力要查当前官方说明;不能把某个训练配置当作所有托管接口的输入要求。OpenAI 音频资料提供接口层约束,本文不对任何实时模型作兼容承诺。
静音样本还无法验证识别准确率、音量、语种或说话人分离。若真实音频转写很差,需要在已授权素材上另做质量评测,不能从头部参数合规就断言语音内容清楚。上采样也不会创造原本丢失的声学信息,格式转换与质量改善应分开解释。
最终台账保存文件摘要、读取字段、复算值和拒绝原因。与用户填写时长不一致时,先保留两份值并核对来源,不自动改写原音频。检查通过仅表示这份合成 PCM 的头部与数据长度一致,没有进行上传、转录调用或真实语音效果测试。
配套文件与依据
本文的合成输入和参考结果可下载独立样本 a042.json,离线检查器 a042.py与样本放在同一目录后运行。检查器不调用模型接口。 使用 Python 3.12 或兼容版本,将上述文件下载到同一目录,执行 python a042.py。 同篇运行还需要:a042-silence.wav、a042-fake.wav、a042-bad-header.wav,请一并下载。
留言讨论
评论发布后会被人工复核,违规内容将被删除。
如果发表没有反应,可以前往联系我们告诉我们。