在python中将PCM WAV转换为普通WAV



我正在将speech_recognition与 pjsua 记录的 wav 文件一起使用,当我尝试发送文件内容时,它总是以错误 msg 结尾。

Audio file could not be read as PCM WAV, AIFF/AIFF-C, or Native FLAC; check if file is corrupted or in another format

该文件使用 MPV 正常播放,检查文件显示它是 PCM(我使用了 file 命令(。

test2.wav: RIFF (little-endian) data, WAVE audio, Microsoft PCM, 16 bit, mono 16000 Hz

抬头一看,我发现了一个有类似问题的人,建议的解决方案(使用 wave 库更改一些参数(对我来说不起作用。使用wav.setparams((2, 2, 44100, 0, 'NONE', 'NONE'))后,音频变成了完全的垃圾,就像蚂蚁在说话一样。

我真的对声音文件了解不够,无法理解"通道"、"采样宽度"、"帧率"、"nframes"、"comptype"和"compname"是什么意思......

您误解了错误消息。PCM 是波形文件格式固有的。没有"PCM"版本,然后是"普通"版本 - 波形文件格式始终使用脉冲编码调制(PCM( - 这实际上只是意味着构成信号的样本以数字方式连续量化。如果speech_recognition函数无法解析波形文件,则不是因为与 PCM 相关的任何内容。

我对SpeechRecognition模块一无所知(我假设这就是您正在使用的?我也对pjsua一无所知.我的猜测是,pjsua可能会在标头元数据中烘焙一些额外的块,这是SpeechRecognitionAPI所不希望的。您是否有机会通过保管箱等共享波形文件?

此外,您的音频听起来像"蚂蚁在说话"的原因是因为您的波形文件包含的元数据与您写入新波形文件的元数据之间存在差异。 你的波形文件是单声道的 - 这意味着一个通道,你写了两个。您的文件的采样率为 16khz,但您编写了 44.1khz。

最新更新