Raspberry Pi Buster 更新破坏了音频输入

Dav*_*tos 5 python speech-recognition alsa raspberry-pi raspberry-pi4

运行 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
Run Code Online (Sandbox Code Playgroud)

输出在位置 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
Run Code Online (Sandbox Code Playgroud)

因此,为了验证硬件是否正常工作,我测试成功:

arecord -D plughw:2,0 -d 4 test.wav && aplay -D plughw:2,0 test.wav
Run Code Online (Sandbox Code Playgroud)

而在过去,测试需要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
}
Run Code Online (Sandbox Code Playgroud)

当然要重启。这些都不起作用。

因此,我尝试编辑 /boot/config.txt 通过将 dtparam=audio=on 更改为 dtparam=audio=off 并重新启动来关闭板载声音。

这确实禁用了板载声音,并且仅在卡 1 上显示可用的 USB 卡。因此,我将所有内容从卡 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
Run Code Online (Sandbox Code Playgroud)