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

Parrot OS 6.0.0中Python语音识别项目ALSA lib错误求助

问题描述

在Parrot OS 6.0.0和Google Colab环境下运行基于speech_recognition库的Python语音识别项目时,执行python jarvis.py输出大量ALSA lib错误,核心提示包括无法找到声卡0、未知PCM设备等。项目代码如下:

import speech_recognition as sr
from subprocess import call

def sptext():
    recognizer=sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening")
        recognizer.adjust_for_ambient_noise(source,duration=1)
        audio = recognizer.listen(source)
        try:
            print("recognizing")
            data = recognizer.recognize_google(audio)
            return data
        except sr.UnknownValueError:
            print("sorry I don't understand")
            

def speechtx():
     call(["espeak","-s120 -ven+6 -z","Hello"])
     
if __name__ == '__main__':
     data=sptext().lower()
     if 'your name' in data:
         call(["espeak","-s120 -ven+6 -z","my name is jarvis"])
         speechtx() 
解决方案

1. 明确指定麦克风设备

speech_recognition的Microphone()默认调用系统默认麦克风,若系统声卡配置异常,可手动指定设备索引:

  • 先运行以下代码列出可用麦克风设备:
import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
    print(f"麦克风索引 {index}: {name}")
  • 在代码中指定正确的设备索引,比如索引1:
with sr.Microphone(device_index=1) as source:
    # 后续代码不变

2. 修复ALSA配置问题(仅Parrot OS环境)

  • 检查系统声卡状态,执行命令:
aplay -l
arecord -l

确认是否有可用的播放/录音设备。若输出为空,需检查声卡硬件连接或驱动安装。

  • 创建/修改ALSA配置文件~/.asoundrc,添加基础配置:
pcm.!default {
    type hw
    card 0
}

ctl.!default {
    type hw
    card 0
}

如果card 0不可用,替换为aplay -l输出中存在的卡号。

3. Google Colab环境的特殊处理

Colab运行在云端服务器,没有物理麦克风,需通过浏览器获取本地音频:

  • 安装依赖:
!pip install speechrecognition pyaudio ipywebrtc
  • 使用ipywebrtc捕获浏览器麦克风输入,修改sptext函数:
from ipywebrtc import AudioRecorder, CameraStream
import speech_recognition as sr
from io import BytesIO

def sptext():
    recognizer = sr.Recognizer()
    # 启动浏览器麦克风录制
    camera = CameraStream(constraints={'audio': True, 'video': False})
    recorder = AudioRecorder(stream=camera)
    display(recorder)
    # 等待用户录制完成后,获取音频数据
    audio_data = BytesIO(recorder.audio.value)
    with sr.AudioFile(audio_data) as source:
        audio = recognizer.record(source)
    try:
        data = recognizer.recognize_google(audio)
        return data
    except sr.UnknownValueError:
        print("sorry I don't understand")

4. 检查依赖安装完整性

  • 确保pyaudio(speech_recognition依赖的音频处理库)正确安装:
    Parrot OS下执行:
    sudo apt install portaudio19-dev python3-pyaudio
    
    Colab下执行:
    !apt install portaudio19-dev && pip install pyaudio
    
  • 验证espeak是否可用:
    espeak "Test"
    
    若报错,Parrot OS下执行sudo apt install espeak安装。

内容的提问来源于stack exchange,提问作者G-one

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 06:50:44