前言
最近调试板子上的3个ADAU1761音频接口,使用pocketsphinx语音库调用alsa库的API接口打开指定的Mic进行录入语音时出现异常,默认情况只能打开第一个ADAU1761音频接口,想打开第二个或第三个ADAU1761音频接口时却出现错误,本文记录一下调试的过程。
PCM设备选择
移植alsa lib 和alsa utils库后(移植教程见:传送门)可使用以下指令查看声卡设备和PCM设备,具体如下:
root@newboard_project:/# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ADAU1761 [ZED ADAU1761], device 0: 43c00000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ADAU1761_1 [ZED ADAU1761], device 0: 43c10000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: ADAU1761_2 [ZED ADAU1761], device 0: 43c20000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
root@newboard_project:/# arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: ADAU1761 [ZED ADAU1761], device 0: 43c00000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: ADAU1761_1 [ZED ADAU1761], device 0: 43c10000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
card 2: ADAU1761_2 [ZED ADAU1761], device 0: 43c20000.axi-i2s-adau-hifi adau-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
root@newboard_project:/# ls -l /dev/snd
crw-rw---- 1 root root 116, 0 Jan 1 00:00 controlC0
crw-rw---- 1 root root 116, 32 Jan 1 00:00 controlC1
crw-rw---- 1 root root 116, 64 Jan 1 00:00 controlC2
crw-rw---- 1 root root 116, 24 Jan 1 00:00 pcmC0D0c
crw-rw---- 1 root root 116, 16 Jan 1 00:00 pcmC0D0p
crw-rw---- 1 root root 116, 56 Jan 1 00:00 pcmC1D0c
crw-rw---- 1 root root 116, 48 Jan 1 00:00 pcmC1D0p
crw-rw---- 1 root root 116, 88 Jan 1 00:00 pcmC2D0c
crw-rw---- 1 root root 116, 80 Jan 1 00:00 pcmC2D0p
crw-rw---- 1 root root 116, 33 Jan 1 00:00 timer
如上,共有三个声卡设备:
card 0: ADAU1761
card 1: ADAU1761_1
card 2: ADAU1761_2
在使用aplay和arecord指令进行播放和录音时可正常选择其中某一个声卡,如:
//使用ADAU1761_1录音
root@newboard_project:/# arecord -D hw:ADAU1761_1 -fS32_LE -d10 -c2 -r48000 s32_
le.wav
Recording WAVE 's32_le.wav' : Signed 32 bit Little Endian, Rate 48000 Hz, Stereo
//使用ADAU1761播放
root@newboard_project:/# aplay -D hw:ADAU1761 -fS32_LE -c2 -r48000 s32_le.wav
Playing WAVE 's32_le.wav' : Signed