Python 语音识别产生不好的结果
Python Speech recognition produces bad results
我正在尝试让我的语音识别脚本正常工作,但它无法理解我的意思。
import pyaudio
import speech_recognition as sr
def initSpeech():
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source, duration=2)
print("Set minimum energy threshold to {}".format(r.energy_threshold))
print("Say something")
audio = r.listen(source, phrase_time_limit=10)
command = ""
try:
command = r.recognize_google(audio)
except:
print("Coundn't understand you!")
print(command)
initSpeech()
这是我用来识别我的声音的代码,但是当我使用 python 和以下脚本录制我的声音并将波形文件作为语音识别的输入时,它总是打印出 "Coundn't understand you!"
工作正常:
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
此脚本用于录制我的声音,然后使用此文件 "output.wav" 作为语音识别的输入。
编辑:
有,
with open("microphone-results.wav", "wb") as f:
f.write(audio.get_wav_data())
我录下了我的声音,我们将对其进行分析。它听起来真的很糟糕,低沉而缓慢,就像在带有语音转换器的糟糕电影中一样。
也许这是解决方案的提示。我已经检查了 chuck_size 和 sample_rate 的设置,这些设置与我上面的录制脚本中的设置相同。
我的系统:Windows10
githubgithub issue 358
也有问题
Python: 3.6
感谢您的帮助!
您的录音明显没有录好,导致识别失败。我的猜测是 r.adjust_for_ambient_noise
让你失望了(自动 speech/silence 检测器实施起来并不简单)。从删除此行开始并手动设置
r.energy_threshold = 50
r.dynamic_energy_threshold = False
之后,将录制的音频保存为.WAV 文件并收听。在将其发送到 ASR 引擎之前,您必须先将音频弄清楚。
此外,我建议您确保您使用的是您打算使用的麦克风
print(Microphone.list_microphone_names()[0])
我正在尝试让我的语音识别脚本正常工作,但它无法理解我的意思。
import pyaudio
import speech_recognition as sr
def initSpeech():
r = sr.Recognizer()
with sr.Microphone() as source:
r.adjust_for_ambient_noise(source, duration=2)
print("Set minimum energy threshold to {}".format(r.energy_threshold))
print("Say something")
audio = r.listen(source, phrase_time_limit=10)
command = ""
try:
command = r.recognize_google(audio)
except:
print("Coundn't understand you!")
print(command)
initSpeech()
这是我用来识别我的声音的代码,但是当我使用 python 和以下脚本录制我的声音并将波形文件作为语音识别的输入时,它总是打印出 "Coundn't understand you!"
工作正常:
import pyaudio
import wave
CHUNK = 1024
FORMAT = pyaudio.paInt16
CHANNELS = 2
RATE = 44100
RECORD_SECONDS = 5
WAVE_OUTPUT_FILENAME = "output.wav"
p = pyaudio.PyAudio()
stream = p.open(format=FORMAT,
channels=CHANNELS,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
print("* recording")
frames = []
for i in range(0, int(RATE / CHUNK * RECORD_SECONDS)):
data = stream.read(CHUNK)
frames.append(data)
print("* done recording")
stream.stop_stream()
stream.close()
p.terminate()
wf = wave.open(WAVE_OUTPUT_FILENAME, 'wb')
wf.setnchannels(CHANNELS)
wf.setsampwidth(p.get_sample_size(FORMAT))
wf.setframerate(RATE)
wf.writeframes(b''.join(frames))
wf.close()
此脚本用于录制我的声音,然后使用此文件 "output.wav" 作为语音识别的输入。
编辑:
有,
with open("microphone-results.wav", "wb") as f:
f.write(audio.get_wav_data())
我录下了我的声音,我们将对其进行分析。它听起来真的很糟糕,低沉而缓慢,就像在带有语音转换器的糟糕电影中一样。 也许这是解决方案的提示。我已经检查了 chuck_size 和 sample_rate 的设置,这些设置与我上面的录制脚本中的设置相同。 我的系统:Windows10
githubgithub issue 358
也有问题Python: 3.6
感谢您的帮助!
您的录音明显没有录好,导致识别失败。我的猜测是 r.adjust_for_ambient_noise
让你失望了(自动 speech/silence 检测器实施起来并不简单)。从删除此行开始并手动设置
r.energy_threshold = 50
r.dynamic_energy_threshold = False
之后,将录制的音频保存为.WAV 文件并收听。在将其发送到 ASR 引擎之前,您必须先将音频弄清楚。
此外,我建议您确保您使用的是您打算使用的麦克风
print(Microphone.list_microphone_names()[0])