【发布时间】:2020-10-16 19:14:05
【问题描述】:
我生成了一个 .wav 音频文件,其中包含一些语音和一些其他干扰语音在背景中。 此代码适用于我的测试 .wav 文件:
import speech_recognition as sr
r = sr.Recognizer()
with sr.WavFile(wav_path) as source:
audio = r.record(source)
text = r.recognize_google(audio)
如果我使用我的 .wav 文件,我会收到以下错误:
ValueError:音频文件无法读取为 PCM WAV、AIFF/AIFF-C 或 Native FLAC;检查文件是否损坏或其他格式
如果我用声音文件保存这个 .wav 文件,情况会稍微好转:
import soundfile as sf
wav, samplerate = sf.read(wav_path)
sf.write(saved_wav_path, original_wav, fs)
然后将新的 saved_wav_path 加载回第一个代码块,这次我得到:
如果不是 isinstance(actual_result, dict) 或 len(actual_result.get("alternative", [])) == 0: raise UnknownValueError()
音频文件保存为
wavfile.write(wav_path, fs, data)
其中 wav_path = 'data.wav'。有什么想法吗?
解决方案:
按以下方式保存音频数据会生成正确的 .wav 文件:
import wavio
wavio.write(wav_path, data, fs ,sampwidth=2)
【问题讨论】:
-
您确定您的文件确实是 WAV 文件,而不是您刚刚添加了
.wav扩展名的其他类型的文件吗?而且它是一个简单的 PCM s16 或 u8 WAV 文件,而不是 MP3 压缩的 WAV 文件? -
WAV 文件不是 WAV 文件。它是一种容器格式,可以采用不同类型的音频流。检查音频流的类型和属性是否适合您的工具。
-
音频文件是用 wavfile.write("data.wav", fs, data) 保存的,所以,正如你们所说,它可能以错误的格式保存。您知道替代解决方案吗?
-
"音频文件是用 wavfile.write("data.wav", fs, data)..." 将此信息添加到问题中。看起来您的other question 中有这些信息;它也应该在这里。事实上,这个问题实际上是这个问题的重复,不是吗?
-
您对此有任何解决方案
r.recognize_google(audio)???我也遇到了同样的错误。
标签: python google-api speech-recognition