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

ChromeOS Linux Beta版SpeechRecognition运行失败求助

ChromeOS Linux Beta下Python语音识别的ALSA/Jack报错解决

问题描述

在ChromeOS的Linux Beta版本中运行Python语音识别代码,代码无语法错误,但执行后输出大量ALSA、Jack相关报错信息,最终触发KeyboardInterrupt中断,尝试安装多个相关库后问题仍未解决。

代码示例

import speech_recognition
import pyttsx3

recognizer = speech_recognition.Recognizer()

try:
    with speech_recognition.Microphone() as mic:
        recognizer.adjust_for_ambient_noise(mic, duration = 0.2)
        audio = recognizer.listen(mic)

        text = recognizer.recognize_google(audio)
        text = text.lower()

        print(text)
except Exception as e:
    print("Exception "+ str(e))

报错信息

ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.front
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround21
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround40
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround41
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround50
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround51
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.surround71
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.iec958
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2660:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for -1, skipping unlock
^CTraceback (most recent call last):
  File "/home/perez_brian18/Python Projects/Nexus Voice Assistant Project/main.py", line 9, in <module>
    audio = recognizer.listen(mic)
  File "/home/perez_brian18/.local/lib/python3.9/site-packages/speech_recognition/__init__.py", line 491, in listen
    buffer = source.stream.read(source.CHUNK)
  File "/home/perez_brian18/.local/lib/python3.9/site-packages/speech_recognition/__init__.py", line 199, in read
    return self.pyaudio_stream.read(size, exception_on_overflow=False)
  File "/usr/lib/python3/dist-packages/pyaudio.py", line 608, in read
    return pa.read_stream(self._stream, num_frames, exception_on_overflow)
KeyboardInterrupt

解决方案

1. 修复ALSA音频配置

ChromeOS的Linux容器默认音频配置缺失,需手动指定默认设备:

  • 在用户目录下创建或编辑.asoundrc文件:
nano ~/.asoundrc
  • 写入基础配置(适配ChromeOS音频映射):
pcm.!default {
    type hw
    card 0
}
ctl.!default {
    type hw
    card 0
}

若出现设备占用问题,改用dmix插件配置:

pcm.dmixed {
    type dmix
    ipc_key 1024
    slave {
        pcm "hw:0,0"
        period_time 0
        period_size 1024
        buffer_size 4096
        rate 44100
    }
}
pcm.!default {
    type plug
    slave.pcm "dmixed"
}

保存退出后,设置环境变量让PyAudio读取该配置:

export ALSA_CONFIG_PATH=~/.asoundrc

也可在代码开头添加环境变量设置:

import os
os.environ['ALSA_CONFIG_PATH'] = os.path.expanduser('~/.asoundrc')

2. 开启ChromeOS Linux容器的麦克风权限

  • 打开ChromeOS设置,找到「Linux开发环境」
  • 进入「权限」选项,确保「麦克风」权限已开启

3. 重新安装适配的PyAudio

卸载不兼容版本,安装系统适配的PyAudio:

pip uninstall pyaudio -y
sudo apt-get update && sudo apt-get install portaudio19-dev python3-pyaudio -y

4. 简化代码测试

先注释掉pyttsx3相关代码(该库在ChromeOS Linux容器中易出现音频输出问题),优先测试语音识别功能:

import os
os.environ['ALSA_CONFIG_PATH'] = os.path.expanduser('~/.asoundrc')
import speech_recognition

recognizer = speech_recognition.Recognizer()

try:
    with speech_recognition.Microphone() as mic:
        print("请说话...")
        recognizer.adjust_for_ambient_noise(mic, duration=0.2)
        audio = recognizer.listen(mic)

        text = recognizer.recognize_google(audio)
        text = text.lower()

        print(f"识别结果: {text}")
except Exception as e:
    print(f"错误: {str(e)}")

5. 解决Jack服务报错

Jack服务并非语音识别必需,通过上述ALSA配置已可绕开Jack依赖,无需额外启动Jack服务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 19:45:13