语音识别代码报错求助:SyntaxError语法错误排查
问题排查与修正方案
语法错误根源
报错指向第10行,但实际问题出在第7行的路径拼接代码——缺少一个闭合括号,导致Python语法解析失败,报错位置被误指向后续代码。原代码:
AUDIO_FILE = path.join(os.path.join(path, "User/Desktop", "Module1.mp3")
修正后(同时优化路径写法,避免嵌套冗余):
# 先确保导入os模块 import os AUDIO_FILE = os.path.join(os.path.expanduser("~/Desktop"), "Module1.mp3")
其他需修正的问题
- 缺失模块导入:代码中使用了
os.path.join但未导入os模块,需在开头添加import os。 - 版本属性拼写错误:
sr.__verison__应为sr.__version__(末尾少了一个s),若要查看版本可改为print(sr.__version__)。 - MP3格式不兼容:
speech_recognition的AudioFile仅支持WAV/AIFF/FLAC格式,MP3需先转换。可借助pydub库处理:- 安装依赖:
pip install pydub,并单独安装ffmpeg(音频处理工具)。 - 转换代码示例:
from pydub import AudioSegment sound = AudioSegment.from_mp3(AUDIO_FILE) wav_path = os.path.join(os.path.expanduser("~/Desktop"), "Module1.wav") sound.export(wav_path, format="wav")
- 安装依赖:
修正后的完整代码
import os import speech_recognition as sr from pydub import AudioSegment # 打印speech_recognition版本 print(sr.__version__) # 处理MP3转WAV mp3_path = os.path.join(os.path.expanduser("~/Desktop"), "Module1.mp3") wav_path = os.path.join(os.path.expanduser("~/Desktop"), "Module1.wav") sound = AudioSegment.from_mp3(mp3_path) sound.export(wav_path, format="wav") # 音频识别逻辑 r = sr.Recognizer() with sr.AudioFile(wav_path) as source: audio = r.record(source) # 读取整个音频文件 # 使用Sphinx识别 try: print("Sphinx识别结果:" + r.recognize_sphinx(audio)) except sr.UnknownValueError: print("Sphinx无法识别音频内容") except sr.RequestError as e: print(f"Sphinx请求错误:{e}")
内容的提问来源于stack exchange,提问作者Nick liberators
相关产品推荐
相关产品推荐

