如何在Python语音识别中添加多语言支持?现有双语言代码不生效求解决方案
Python多语言语音识别问题修复与实现
原代码存在的问题
- 逻辑覆盖错误:连续两次调用
recognize_google并赋值给同一个you变量,最终只会保留最后一次法语识别的结果,英文识别结果被直接覆盖;且两次识别共用同一个异常捕获块,若英文识别成功但法语识别触发异常,会直接进入异常分支,丢失有效识别结果 - 语法错误:
with speech_recognition.Microphone()语句下的audio = robot_ear.listen(mic)没有正确缩进,运行会直接报语法错误 - 笔误:请求异常分支里的
brokem为拼写错误,正确应为broken - 未利用API原生能力:Google语音识别接口本身支持同时传入多个目标语言,不需要重复调用接口
修复方案
优先使用API原生的多语言识别能力,在language参数中传入多个语言代码,用英文逗号分隔,写在前面的语言识别优先级更高:
import speech_recognition robot_ear = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: audio = robot_ear.listen(mic) try: # 同时支持英、法双语识别,优先级英语>法语 you = robot_ear.recognize_google(audio, language="en-US,fr-FR") print(f"You: {you}") except speech_recognition.UnknownValueError: print("I didn't get that") except speech_recognition.RequestError: print("Sorry, I am broken") except: you = ""
可选扩展:分别获取不同语言的识别结果
如果需要分别输出同一段音频的英语、法语识别结果,可以单独给每个识别逻辑加异常捕获,避免互相影响:
import speech_recognition robot_ear = speech_recognition.Recognizer() with speech_recognition.Microphone() as mic: audio = robot_ear.listen(mic) result = {} # 识别英语 try: result["en"] = robot_ear.recognize_google(audio, language="en-US") except: result["en"] = "未识别到有效英语内容" # 识别法语 try: result["fr"] = robot_ear.recognize_google(audio, language="fr-FR") except: result["fr"] = "未识别到有效法语内容" print("英语识别结果:", result["en"]) print("法语识别结果:", result["fr"])
内容的提问来源于stack exchange,提问作者Tai Lieu
相关产品推荐
相关产品推荐

