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

使用SpeechRecognition库实现语音转文本时遇报错求助

macOS Monterey 12.0下PyAudio+SpeechRecognition语音转文本报错解决

问题概述

在macOS Monterey 12.0系统上使用PyAudio和SpeechRecognition库开发语音转文本程序时,持续出现三类报错:

  • PaMacCore (AUHAL) 错误:err='-66748', msg=Unknown Error
  • AssertionError:提示音频源未正确进入with语句
  • AttributeError:'NoneType' object has no attribute 'close'

已尝试重启设备、指定device_index参数、开启VSCode麦克风权限,问题仍未解决。

报错详情

source activate base
/Users/praveersinghmehroke/anaconda3/bin/python "/Users/praveersinghmehroke/Desktop/Virtual Assistant/main2.py"
(base) praveersinghmehroke@192 Virtual Assistant % source activate base
(base) praveersinghmehroke@192 Virtual Assistant % /Users/praveersinghmehroke/anaconda3/bin/python "/Users/praveersinghmehroke/Desktop/Virtual Assistant/main2.py"
||PaMacCore (AUHAL)|| Error on line 1277: err='-66748', msg=Unknown Error
Traceback (most recent call last):
  File "/Users/praveersinghmehroke/Desktop/Virtual Assistant/main2.py", line 8, in get_audio
    recorder.adjust_for_ambient_noise(source)
  File "/Users/praveersinghmehroke/anaconda3/lib/python3.10/site-packages/speech_recognition/__init__.py", line 383, in adjust_for_ambient_noise
    assert source.stream is not None, "Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?"
AssertionError: Audio source must be entered before adjusting, see documentation for ``AudioSource``; are you using ``source`` outside of a ``with`` statement?

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/praveersinghmehroke/Desktop/Virtual Assistant/main2.py", line 16, in <module>
    get_audio()
  File "/Users/praveersinghmehroke/Desktop/Virtual Assistant/main2.py", line 7, in get_audio
    with sr.Microphone() as source:
  File "/Users/praveersinghmehroke/anaconda3/lib/python3.10/site-packages/speech_recognition/__init__.py", line 189, in __exit__
    self.stream.close()
AttributeError: 'NoneType' object has no attribute 'close'
(base) praveersinghmehroke@192 Virtual Assistant % 

运行代码

import speech_recognition as sr
import pyaudio


def get_audio():
    recorder = sr.Recognizer()
    with sr.Microphone() as source:
        recorder.adjust_for_ambient_noise(source)
        print("Say something...")
        audio = recorder.listen(source)
    
    text = recorder.recognize_google(audio)
    print("You said: "+ str(text))
    return text

get_audio()

解决方案

1. 重新安装适配macOS的PyAudio

macOS 12+自带的portaudio版本存在兼容性问题,需手动安装适配版本:

  • 卸载现有PyAudio:
    pip uninstall pyaudio -y
    
  • 用Homebrew安装最新portaudio:
    brew install portaudio
    
  • 指定portaudio路径重新安装PyAudio:
    pip install --global-option='build_ext' --global-option='-I/usr/local/include' --global-option='-L/usr/local/lib' pyaudio
    

2. 补全系统麦克风权限

除VSCode外,需确保运行Python的终端(如Terminal、Anaconda Prompt)也拥有麦克风访问权限:

  • 打开「系统偏好设置」→「安全性与隐私」→「隐私」→「麦克风」
  • 勾选对应终端程序(如Terminal、iTerm、Anaconda-Navigator),允许其访问麦克风
  • 重启终端和VSCode生效

3. 修正代码并指定正确设备索引

第一步:获取麦克风设备索引

先运行以下代码查看可用音频设备,找到你的麦克风对应的索引:

import pyaudio
p = pyaudio.PyAudio()
for i in range(p.get_device_count()):
    device_info = p.get_device_info_by_index(i)
    print(f"索引 {i}: {device_info['name']}")
p.terminate()

第二步:修改原代码

添加异常捕获,并指定正确的device_index,同时调整环境噪音采集时长:

import speech_recognition as sr
import pyaudio

def get_audio():
    recorder = sr.Recognizer()
    # 替换为你获取到的麦克风设备索引
    device_index = 0
    try:
        with sr.Microphone(device_index=device_index) as source:
            print("正在适配环境噪音...")
            # 延长噪音采集时长,提升稳定性
            recorder.adjust_for_ambient_noise(source, duration=1)
            print("请说话...")
            audio = recorder.listen(source)
        
        text = recorder.recognize_google(audio)
        print(f"你说的是: {text}")
        return text
    except sr.UnknownValueError:
        print("无法识别语音,请重新尝试")
    except sr.RequestError:
        print("无法连接到Google语音识别服务")
    except Exception as e:
        print(f"发生错误: {str(e)}")

get_audio()

内容的提问来源于stack exchange,提问作者Prav_1311

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 04:53:18