【发布时间】:2016-02-05 04:22:46
【问题描述】:
我正在尝试通过 Python 3.4 使用 Speech_recognition 3.1.2,但我一直遇到麻烦。
最初尝试仅使用示例 WAV 识别器时,我收到 TypeError: 'str' does not support the buffer interface 所以我梳理了源代码并进行了以下更改:
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 Speech Recognition)。此外,由于某种原因,最后 2 个缓冲区是空字符串,然后我必须将其转换为字节对象
b''
b''
任何建议都会很棒!
【问题讨论】:
-
python 2 和 3 在处理字符串的方式上可能存在巨大差异,您可以查看:python3porting.com/problems.html。所以不确定这个变化是否非常微不足道..
-
@toine 这也是我最初的想法,但看起来他们用 Python 3 编写了所有内容,考虑到我遇到的错误,这很奇怪。
标签: python python-3.x speech-recognition