Python Speech_Recognition 糟糕的结果
Python Speech_Recognition Bad Results
我正在尝试使用 speech_recognition 3.1.2 和 Python 3.4,但我一直遇到麻烦。
最初,当尝试仅使用示例 WAV 识别器时,我遇到了类型错误:'str' 不支持缓冲区接口,因此我梳理了源代码并进行了以下更改:
def read(self, size = -1):
buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size)
if type(buffer) is str:
buffer = buffer.encode(encoding="utf-8", errors="strict")
print(buffer)
if self.wav_reader.getnchannels() != 1: # stereo audio
try:
buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono
except Exception as e:
print(e)
return buffer
来自:
def read(self, size = -1):
buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size)
if self.wav_reader.getnchannels() != 1: # stereo audio
buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono
return buffer
虽然它现在不会引发错误,但转录质量很糟糕。我可以 运行 python -m speech_recognition 非常准确,所以我不确定发生了什么。我将 energy_threshold 提高到 4000 以确保这不是环境噪音问题。我什至使用了 2 种不同的识别服务(IBM 和 Google 语音识别)。此外,由于某种原因,最后 2 个缓冲区是空字符串,然后我必须将其转换为字节对象
b''
b''
任何建议都很棒!
我已经发布了 v3.1.3,应该可以解决这个问题。使用 pip install --upgrade SpeechRecognition
升级并尝试修复!
这里其实有两个因素:
- Python
chunk
库中存在错误,如果文件指针位于或超过文件末尾,它 returns 一个字符串而不是空字节对象.这是几个月前修复的,但今天使用的大多数 Python 版本仍然存在该错误。
- 立体声音频未正确转换为单声道 - 通道仍设置为立体声。这产生了一些有趣的音频!
我正在尝试使用 speech_recognition 3.1.2 和 Python 3.4,但我一直遇到麻烦。
最初,当尝试仅使用示例 WAV 识别器时,我遇到了类型错误:'str' 不支持缓冲区接口,因此我梳理了源代码并进行了以下更改:
def read(self, size = -1):
buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size)
if type(buffer) is str:
buffer = buffer.encode(encoding="utf-8", errors="strict")
print(buffer)
if self.wav_reader.getnchannels() != 1: # stereo audio
try:
buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono
except Exception as e:
print(e)
return buffer
来自:
def read(self, size = -1):
buffer = self.wav_reader.readframes(self.wav_reader.getnframes() if size == -1 else size)
if self.wav_reader.getnchannels() != 1: # stereo audio
buffer = audioop.tomono(buffer, self.wav_reader.getsampwidth(), 1, 1) # convert stereo audio data to mono
return buffer
虽然它现在不会引发错误,但转录质量很糟糕。我可以 运行 python -m speech_recognition 非常准确,所以我不确定发生了什么。我将 energy_threshold 提高到 4000 以确保这不是环境噪音问题。我什至使用了 2 种不同的识别服务(IBM 和 Google 语音识别)。此外,由于某种原因,最后 2 个缓冲区是空字符串,然后我必须将其转换为字节对象
b''
b''
任何建议都很棒!
我已经发布了 v3.1.3,应该可以解决这个问题。使用 pip install --upgrade SpeechRecognition
升级并尝试修复!
这里其实有两个因素:
- Python
chunk
库中存在错误,如果文件指针位于或超过文件末尾,它 returns 一个字符串而不是空字节对象.这是几个月前修复的,但今天使用的大多数 Python 版本仍然存在该错误。 - 立体声音频未正确转换为单声道 - 通道仍设置为立体声。这产生了一些有趣的音频!