我使用的是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
向上看,我发现了一个拥有类似problem的家伙,提议的解决方案(用波形库改变几个参数)对我来说没有效果。在我使用wav.setparams((2, 2, 44100, 0, 'NONE', 'NONE'))之后,音频变成了完全的垃圾,就像蚂蚁的谈话一样。
我对声音文件的理解还不够,无法理解“通道”、“采样宽度”、“框架”、"nframes“、"comptype”和"compname“的含义.
发布于 2020-07-03 15:20:05
你误解了错误信息。PCM是wave文件格式的固有内容。没有"PCM“版本,然后是”普通“版本--波形文件格式总是使用脉冲编码调制(PCM) --这实际上意味着构成信号的样本是数字化和连续量化的。如果您的speech_recognition函数不能解析wave文件,那不是因为任何与PCM相关的内容。
我对SpeechRecognition模块一无所知(我假设这就是您所使用的?)。我对pjsua也一无所知。我的猜测是,pjsua可能在头元数据中出现了一些额外的块,这是SpeechRecognition API没有想到的。您是否有可能通过dropbox等方式共享波形文件?
另外,你的音频听起来像“蚂蚁说话”的原因是因为你的波形文件包含的元数据和你写到新的波形文件的元数据之间的差异。你的波形文件是单通道的,也就是说你写了两个频道。您的文件也有一个16 has的样本,但是您编写了44.1khz。
https://stackoverflow.com/questions/62717637
复制相似问题