You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

语音识别代码报错求助: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库处理:
    1. 安装依赖:pip install pydub,并单独安装ffmpeg(音频处理工具)。
    2. 转换代码示例:
      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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 06:42:26