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

2024-06-12 04:48:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用pjsua录制的wav文件进行语音识别,当我尝试发送文件内容时,它总是以错误消息结束

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

查找时,我发现一个人有一个类似的problem,建议的解决方案(使用wave库更改一些参数)对我不起作用。在我使用wav.setparams((2, 2, 44100, 0, 'NONE', 'NONE'))之后,音频变成了垃圾,就像蚂蚁的谈话一样

我对声音文件的理解还不够,无法理解“通道”、“采样宽度”、“帧速率”、“nframes”、“comptype”和“compname”的含义


Tags: or文件none消息内容错误not语音
1条回答
网友
1楼 · 发布于 2024-06-12 04:48:30

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

我对SpeechRecognition模块一无所知(我假设您正在使用它?)。我对pjsua也一无所知。我的猜测是pjsua可能正在头元数据中烘焙一些额外的块,这是SpeechRecognitionAPI不期望的。您是否有机会通过dropbox等共享wave文件

另外,你的音频听起来像是“蚂蚁在说话”的原因是你的wave文件包含的元数据与你写入新wave文件的元数据之间存在差异。 你的wave文件是单声道的——这意味着一个通道,你写了两个。您的文件还有一个16khz的采样器,但您编写了44.1khz

相关问题 更多 >