工作中,我们可能会经常遇到不同的声卡主板和系统主板,尤其是在chatGPT 当下正热门的情况下,开发测试语音功能,少不了要用到不同的主板和USB声卡。下面以3399和讯飞声卡配置简单说明下配置方法和步骤:
1、准备工作,整套设备如下图:
上图1所示为3399主板,2所示为讯飞声卡套件之一,3所示为3399电源,4所示为声卡usb链接点,5所示为喇叭/音频输出接口
2 、正常情况下:我们连接后启动遇到有时候会正常,有时候会发现声卡无效,异常信息如下所示:
异常信息中,有一句信息:startRecording | open pcm device failed 。意思是:录音设备打开失败。
这时我们就需要来查询下主板链接的录音设备卡的设备信息,并检测授权是否正常。
3、查询设备信息:
我们打开命令输入框,输入adb shell
链接成功后:输入命令 ls /dev/snd
这时候会打印出当前主板所有的音频设备节点信息,如下图所示:
然后我们手动拔掉当前链接的usb 声卡设备
然后我们再次输入命令 ls /dev/snd 查看现在的设备信息,如下图所示:
经过简单对比,我们会发现,拔掉后,少了一个controlC4 和 pcmC4D0c
再次插上设备,我们再次确认是不是会再次曾经设备pcmC4D0c
注:上述pcmC4D0c 解析:pcm录音设备 C4-card 号 = 4,D0- 设备devices=0。我们可以根据这两个参数进行稍后进行检查代码配置。最后一位c表示录音设备,如果是p则表示波音设备,例如:pcmC2D0p
4、配置pcmCard 和 pcmDevice
通过步骤3我们确定了我们的USB 声卡的信息为pcmC4D0c 。下面我门来检查代码中的配置信息是否正确。
我这边的由于是定制的设备配置参数信息在BothlentRecorder类下面。如下图:
注:如果走通用版本,配置信息应该在CaeOperator 类下面。当然了,具体情况具体来查询,不能固步自封。
在这里我们看到mPcmDevice =0 ,device 参数不需要修改,且已经配置。我们需要查询mPcmCard 参数的配置方法和调用的地方。
找到参数所在类,找到参数配置的方法,如下图:
跟踪方法调用路径,最终在类RawRecorderFactory中找到,如下图
问题是不是已经找到了,是的,你猜对了,就是你认为的样子,card 参数应该是 4 (pcmC4D0c)。
修改代码中的配置参数为4,保存,这时我们配置信息也已经完成。
5、检查以及完成设备授权
我们通过 输入命令 chmod 777 /dev/snd/* 为设备进行授权。
执行完成后,我们输入指令:ls /dev/snd/* 查看授权情况,如下图:
这时显示的是授权成功。
如果授权失败,或者显示没有权限进行操作,我们需要输入指令 adb root 获取root 权限。
然后输入 adb remount 命令修改为可写入默认。然后再进行一次授权即可。
6、重启设备,并检查UDB音频板卡功能,日志截图如下:
启动成功,板卡加载成功,我们来试试语音唤醒,看看下日志:
唤醒正常
我们再试试问问题
正常!!
没问题了!!
可以愉快的继续卷起来了!!