python - Raspberry Pi Buster 更新中断音频输入
问题描述
运行 Raspberry Pi 4 8-gig、Buster、Python 3.7.3
我已经运行语音识别大约一年了(首先在 RPi 3B+ 上,然后是 4 - 4gig,现在在 4 - 8gig 上)。最近的更新似乎禁用了通过我的 USB 声卡的麦克风输入。
我显然并不孤单,但我到处找到的信息都与音频输出有关,关于音频输入的信息很少或根本没有:
https://retropie.org.uk/forum/topic/26434/usb-audio-broke-after-latest-updates/4
无论如何,我注意到声卡是卡 1,但是当我运行时
cat /proc/asound/cards
输出显示位置 1 有一张新卡:耳机。USB 设备已移至 2:
0 [b1 ]: bcm2835_hdmi - bcm2835 HDMI 1
bcm2835 HDMI 1
1 [Headphones ]: bcm2835_headphonbcm2835 Headphones - bcm2835 Headphones
bcm2835 Headphones
2 [Device ]: USB-Audio - USB Audio Device
GeneralPlus USB Audio Device at usb-0000:01:00.0-1.4, full speed
所以为了验证硬件是否正常工作,我测试成功:
arecord -D plughw:2,0 -d 4 test.wav && aplay -D plughw:2,0 test.wav
而在过去,该测试需要 plughw:1,0
我知道在 python Speech_Recognition 中没有设置来指定声卡。它似乎只使用默认值。所以我尝试设置默认值。
我在 /home/pi/.asoundrc 中将卡从 1 更改为 2
我试过 sudo nano /etc/asound.conf
pcm.!default {
type hw card 2
}
ctl.!default {
type hw card 2
}
当然是重启。这些都没有奏效。
所以我尝试编辑 /boot/config.txt 通过将 dtparam=audio=on 更改为 dtparam=audio=off 并重新启动来关闭板载声音。
这确实禁用了板载声音,并且仅显示 USB 卡可用,并且在卡 1 上。所以我将所有内容从卡 2 更改回我之前编辑的卡 1,仍然没有运气。
我尝试使用托盘中右下角的音频图标,右键单击并选择 USB 设备作为输入,以及我尝试过的其他一些东西,发现不起作用,并且已经忘记了。在某个地方,有一个设置或其他东西可以让这项工作再次发挥作用……必须有。
真正奇怪的是,尽管进行了所有这些更改,但我从未丢失过音频输出。我的音频输出是通过 USB 卡。你会认为这也会改变 - 但它似乎只是麦克风输入。
我知道麦克风输入有效,因为 arecord 和 aplay 确实有效。
这令人沮丧。我使用的任何代码都没有进行任何更改,这些代码已经完美运行了一年多。
下面是我尝试从命令行运行 SpeechRecognition.py 时的输出。我收到一大堆错误,它永久挂在“校准麦克风”处。我必须执行 Control-C 才能退出。
我希望有人会认识到这里发生了什么并可以提供帮助。非常令人沮丧的是,我如此努力地进行完美调整的东西会被更新炸毁。我的系统依赖于语音输入。现在它聋了。
谢谢你的帮助。我真的需要帮助......完全陷入困境并迷失了方向。
ERROR ON RUN OF SpeechRecognition.py:
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.rear
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.center_lfe
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.side
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.hdmi
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.modem
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM cards.pcm.phoneline
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa
ALSA lib confmisc.c:1281:(snd_func_refer) Unable to find definition 'defaults.bluealsa.device'
ALSA lib conf.c:4568:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory
ALSA lib conf.c:5036:(snd_config_expand) Args evaluate error: No such file or directory
ALSA lib pcm.c:2565:(snd_pcm_open_noupdate) Unknown PCM bluealsa
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
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
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_oss.c:377:(_snd_pcm_oss_open) Unknown field port
ALSA lib pcm_a52.c:823:(_snd_pcm_a52_open) a52 is only for playback
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
ALSA lib pcm_usb_stream.c:486:(_snd_pcm_usb_stream_open) Invalid type for card
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
Calibrating microphone
解决方案
推荐阅读
- python - pygame定义不同的位置顺序产生不同的结果
- node.js - Discord.js - 如何使用随机成员向指定数量的参数发送消息?
- r - 按组的操作在一个函数内的函数和跨多个列的选项
- javascript - 使用 Jest 测试 Nuxt + Vuex + Vuetify 的设置
- object - 获取一个通用对象的两个对象
- visual-studio-code - VSCode - 自定义反应片段在 javascriptreact.json 文件和 javascript.json 文件中不起作用
- javascript - Firebase Analytics JS SDK:无法以“items”作为参数记录事件
- user-interface - 如何在 Flutter 中的网格视图末尾添加一个容器?
- google-sheets - 没有使用 min() 函数获得最低值
- angular - 如何在firestore文档中按字符串字段值的一部分进行搜索?