我正在使用Raspbian Jessie(2015-11-21)在Raspberry Pi 2 Model B上运行Jasper(主分支)。
文档中的安装说明似乎是针对Wheezy而非Jessie。

在Wheezy上运行Jasper效果很好。但是,在Jessie上,我在配置声音时遇到了问题。我的麦克风正常工作,但扬声器没有工作,反之亦然。

需要做的是,必须将默认声卡设置为USB,因为这是我的USB麦克风连接的地方,而Jasper则需要这样做。关于通过~/.asoundrc/etc/asound.conf甚至/usr/share/alsa/alsa.conf配置ALSA的答案很多,但它们都不对我有用。默认卡。那是Pi2的默认卡,但我想将USB设为默认卡。

我该怎么做?

#1 楼

根据ALSA Wiki,标题为“如何为多个已安装的卡选择特定的订单”的标题下显示以下内容:


哪个卡是卡号0、1和因此默认情况下由模块加载顺序决定。这对于选择哪个卡成为默认卡特别有用。 。 (注意:这假设每个声卡需要不同的驱动程序。如果您有两个相同类型的声卡,请跳到下一节。)

有两种方法可以实现此目的,“卡驱动程序模块的“旧”索引=选项,而snd模块的替代(新)插槽=选项。


它记录了执行此操作的两种方法:


较旧的“ index =”方法
较新的“ slots =”方法

前者是Jasper安装说明的建议。这也是大多数解决方案都在谈论的内容。但是,这是较旧的方法,可能无法在最新的Raspbian Jessie图像上使用。查看您的卡的装载顺序:第二。

要重新排序卡,我首先创建一个名为0的文件。只要以bcm2835结尾,它就可以命名为任何名称。然后,我添加了以下内容:

$ cat /proc/asound/modules
 0 snd_bcm2835
 1 snd_usb_audio


这些注释应该解释每行的作用。
一旦这样做,看来您必须重新启动计算机才能它可以正常工作。

重新启动后,您应该可以使用默认卡录制一些音频,该默认卡现在应该是您的麦克风: />然后播放它,将卡指定为1,将设备指定为0,这就是扬声器输出应位于的位置:

。这使我的USB卡成为默认卡,但索引错误。例如,一旦这样做,我的/etc/modprobe.d/alsa-base.conf就是这样的:

这就是为什么我也使用.conf方法来实现这一目标的原因。

评论


高兴的是:)我将在我的Github帐户上(我个人资料中的链接)拥有一个bash设置脚本以及一个厨师食谱,可在几天内完成所有这些工作。

–休斯尼
16年1月11日在18:08

不幸的是,我有两个名为snd_usb_audio的设备。

– kleinfreund
17年7月29日在19:22

@Housni您是否制作了该脚本?

–not2qubit
18年3月7日在15:45

#2 楼

在尝试调试该项目的alsa问题并让usb mic和bcm2835扬声器都正常工作后,我认为存在一个基本问题,我收到的所有ALSA建议都无法解决。 / usr / share / alsa / cards目录没有bcm2835.conf文件。
/ usr / share / alsa目录文件alsa.conf留下了很多需要指定的存根。除非提供了用于bcm2835的卡,否则
启动Jasper.py会显示很多可能不致命的错误消息。

在我看来,这是一个Jessie错误;确实应该有一个文件可以解决这些错误消息。对于处理ALSA的jessie程序员来说,我似乎很懒惰,没有创建经过测试的脚本。这个也是。

另一个没有成熟版本的情况是在启动过程中无法检查旧固件。我的jessie上的旧固件导致台式机无法响应键盘或鼠标,这是将jessie与旧固件一起使用的最佳选择,除非您知道ssh。不是天真的用户情况。

评论


WRT它“对于与ALSA打交道的杰西程序员来说似乎只是懒惰而未创建经过测试的脚本”,不要迷惑于相信Debian 8,也就是。构建Raspbian的jessie主要用于Raspberry Pi和BCM2835 SoC。后者将占Debian用户的<1%,因此几乎不能认为它们是优先事项。一群主要是志愿者的人不想每天25小时使用键盘工作以使每个人都能接受,这并不能使他们变得懒惰。

–金锁♦
16 Jun 8'在0:28



...这仅表示社区中没有足够的技术专门知识的人来从事这项工作。

–金锁♦
16 Jun 8'在0:28