Python语音识别无法正常工作,识别结果差的问题求助
解决语音识别脚本麦克风输入音质差及识别失败的问题
我之前也碰到过完全一样的情况!结合你的描述和相关问题记录,下面几个方法应该能帮你解决问题:
1. 明确指定麦克风参数(与录音脚本对齐)
你的录音脚本用的是44100采样率、1024 chunk大小、双声道,但speech_recognition的Microphone类默认参数可能和这个不匹配,导致录制的音频格式错乱(出现低沉缓慢的变声效果)。修改初始化代码,明确传入这些参数:
import pyaudio import speech_recognition as sr def initSpeech(): r = sr.Recognizer() # 明确指定麦克风参数,和你的录音脚本保持一致 mic = sr.Microphone( sample_rate=44100, chunk_size=1024 ) with mic 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) # 保存音频时强制匹配录音脚本的格式 with open("microphone-results.wav", "wb") as f: f.write(audio.get_wav_data(convert_width=2)) command = "" try: command = r.recognize_google(audio) except sr.UnknownValueError: print("Couldn't understand you!") except sr.RequestError as e: print(f"Could not request results from Google Speech Recognition service; {e}") print(command) initSpeech()
2. 确认并指定正确的麦克风设备索引
Windows系统可能存在多个音频输入设备(比如内置麦克风、外接耳机麦),speech_recognition可能默认选中了错误的设备。先列出所有可用麦克风:
import speech_recognition as sr for idx, name in enumerate(sr.Microphone.list_microphone_names()): print(f"设备索引 {idx}: {name}")
找到你实际使用的麦克风对应的索引,然后在初始化Microphone时加上device_index参数:
mic = sr.Microphone( device_index=你的设备索引, sample_rate=44100, chunk_size=1024 )
3. 调整噪音阈值与监听参数
有时候adjust_for_ambient_noise的效果不够理想,导致语音没有被正确捕捉。可以尝试调整相关参数:
with mic as source: r.adjust_for_ambient_noise(source, duration=3) # 延长环境噪音采集时间,让阈值更准确 r.energy_threshold += 500 # 手动提高阈值,过滤轻微背景噪音 audio = r.listen(source, phrase_time_limit=15) # 延长语音监听时长
这些调整应该能解决音频格式错乱的问题,进而让Google语音识别正常工作。
内容的提问来源于stack exchange,提问作者Tobias Schäfer
相关产品推荐
相关产品推荐

