Home | 简体中文 | 繁体中文 | 杂文 | Github | 知乎专栏 | Facebook | Linkedin | Youtube | 打赏(Donations) | About
知乎专栏

112.5. 声卡

		
rk3288:/ $ cd /dev/snd/                                                                                                                                   
rk3288:/dev/snd $ ls
controlC0 pcmC0D0c pcmC0D0p pcmC0D1p timer		
		
	

112.5.1. 播放

播放测试

		
aiv8167sm3_bsp:/storage/emulated/0 # tinyplay zai.wav                                                                                                     
Playing sample: 1 ch, 16000 hz, 16 bit		
		
		
		
tinyplay netkiller.wav -D 0 -d 0 -r 48000 -c 2

aiv8167sm3_bsp:/storage/emulated/0 # tinyplay zai.wav -D 0 -d 0 -r 48000                                                                                  
Playing sample: 1 ch, 16000 hz, 16 bit
		
		

		
neo@MacBook-Pro-M2 tmp % adb shell tinyplay /sdcard/zai.wav
Playing sample: 1 ch, 16000 hz, 16 bit		
		
		

112.5.2. 录音

录音测试

		
tinycap netkiller.wav -D 0 -d 0 -c 1 -r 48000
		
		
		
-D  card        声卡

-d  device     设备

-c  channels  通道

-r  rate   采样率

-b  bits   pcm 位宽

-p  period_size   一次中断的帧数

-n  n_periods     周期数

例子: tinycap /sdcard/test.pcm -D 0 -d 0 -c 4 -r 48000 -b 32 -p 768 -n 10

声卡0;设备0;四通道;48K采样率;32位位宽;一帧数据存储大小;采样n次
		
		

查看录音设备

		
neo@MacBook-Pro-M2 tmp % adb shell ls "/dev/snd/pcmC*c"
/dev/snd/pcmC0D10c
/dev/snd/pcmC0D1c
/dev/snd/pcmC0D2c
/dev/snd/pcmC0D4c
/dev/snd/pcmC0D6c
/dev/snd/pcmC0D8c
/dev/snd/pcmC0D9c		
		
		

默认录音参数 Capturing sample: 2 ch, 44100 hz, 16 bit

		
neo@MacBook-Pro-M2 tmp % adb shell tinycap /sdcard/file.pcm -D 0 -d 2 -T 5     
Capturing sample: 2 ch, 44100 hz, 16 bit
Captured 0 frames		
		
		

指定参数

		
neo@MacBook-Pro-M2 tmp % adb pull /sdcard/file.pcm                         
/sdcard/file.wav: 1 file pulled, 0 skipped. 14.6 MB/s (1851436 bytes in 0.121s)
neo@MacBook-Pro-M2 tmp % adb shell tinycap /sdcard/file.wav -D 0 -d 2 -c 2 -r 48000 -b 16 -T 5
Capturing sample: 2 ch, 48000 hz, 16 bit
Captured 0 frames		
		
		

下载录音文件

		
neo@MacBook-Pro-M2 tmp % adb pull /sdcard/file.pcm                                            
/sdcard/file.wav: 1 file pulled, 0 skipped. 7.0 MB/s (966700 bytes in 0.132s)		
		
		

112.5.3. 查看声卡信息

device 0 表示录音设备

		
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D 0 -d 0                                                                                              
Info for card 0, device 0:

PCM out:
      Access:   0x000009
   Format[0]:   0x000444
   Format[1]:   00000000
 Format Name:   S16_LE, S24_LE, S32_LE
   Subformat:   0x000001
        Rate:   min=8000Hz      max=192000Hz
    Channels:   min=1           max=2
 Sample bits:   min=16          max=32
 Period size:   min=32          max=32768
Period count:   min=2           max=256

PCM in:
cannot open device '/dev/snd/pcmC0D0c'
Device does not exist.
		
		
		

device 1 表示录音设备

		
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D 0 -d 1                                                                                                
Info for card 0, device 1:

PCM out:
cannot open device '/dev/snd/pcmC0D1p'
Device does not exist.

PCM in:
      Access:   0x000009
   Format[0]:   0x000444
   Format[1]:   00000000
 Format Name:   S16_LE, S24_LE, S32_LE
   Subformat:   0x000001
        Rate:   min=8000Hz      max=192000Hz
    Channels:   min=1           max=2
 Sample bits:   min=16          max=32
 Period size:   min=32          max=8192
Period count:   min=2           max=256		
		
		

如果不知道设备编号,可以使用 /proc/asound/cards 替代

		
aiv8167sm3_bsp:/storage/emulated/0 # tinypcminfo -D /proc/asound/cards
Info for card 0, device 0:

PCM out:
      Access:   0x000009
   Format[0]:   0x000444
   Format[1]:   00000000
 Format Name:   S16_LE, S24_LE, S32_LE
   Subformat:   0x000001
        Rate:   min=8000Hz      max=192000Hz
    Channels:   min=1           max=2
 Sample bits:   min=16          max=32
 Period size:   min=32          max=32768
Period count:   min=2           max=256

PCM in:
cannot open device '/dev/snd/pcmC0D0c'
Device does not exist.
		
		
		

112.5.4. /proc/asound 设备信息

		
aiv8167sm3_bsp:/storage/emulated/0 # ls -1 /proc/asound                                                                                                   
card0
cards
devices
hwdep
mtsndcard
oss
pcm
seq
timers
version		
		
		

查看当前的声卡

		
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/cards
 0 [mtsndcard      ]: mt-snd-card - mt-snd-card
                      mt-snd-card		
		
		
		
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/pcm
00-00: MultiMedia1_PLayback (*) :  : playback 1
00-01: MultiMedia_Capture (*) :  : capture 1
00-02: TDM_Capture (*) :  : capture 1
00-03: HMDI_PLayback (*) :  : playback 1
00-04: DL1_AWB_Record (*) :  : capture 1
00-05: MultiMedia2_PLayback (*) :  : playback 1
00-06: VOIP_Call_BT_Capture (*) :  : capture 1
00-07: MRGRX_PLayback (*) :  : playback 1
00-08: MRGRX_CAPTURE (*) :  : capture 1
00-09: BTCVSD_Capture snd-soc-dummy-dai-9 :  : playback 1 : capture 1
00-10: BTCVSD_Playback snd-soc-dummy-dai-10 :  : playback 1 : capture 1		
		
		
		
aiv8167sm3_bsp:/storage/emulated/0 # cat /proc/asound/pcm
00-00: MultiMedia1_PLayback (*) :  : playback 1
00-01: MultiMedia_Capture (*) :  : capture 1
00-02: TDM_Capture (*) :  : capture 1
00-03: HMDI_PLayback (*) :  : playback 1
00-04: DL1_AWB_Record (*) :  : capture 1
00-05: MultiMedia2_PLayback (*) :  : playback 1
00-06: VOIP_Call_BT_Capture (*) :  : capture 1
00-07: MRGRX_PLayback (*) :  : playback 1
00-08: MRGRX_CAPTURE (*) :  : capture 1
00-09: BTCVSD_Capture snd-soc-dummy-dai-9 :  : playback 1 : capture 1
00-10: BTCVSD_Playback snd-soc-dummy-dai-10 :  : playback 1 : capture 1
		
		
		

112.5.5. 查看声卡当前占用设备

		
aiv8167sm3_bsp:/storage/emulated/0 # lsof |grep pcm 
audio@2.0   253 audioserve   16u      CHR              116,3       0t0       8644 /dev/snd/pcmC0D0p
omx@1.0-s   316 mediacodec  mem       REG             179,14     57968        603 /vendor/lib/libMtkOmxAdpcmDec.so
m.netkiller  2956     u0_a51  mem   unknown                                         /dev/ashmem//data/user/0/cn.netkiller.ui/files/msclib/1691060275989tts.pcm (deleted)
m.netkiller  2956     u0_a51   54u      CHR              116,5       0t0       9451 /dev/snd/pcmC0D2c
		
		
		

112.5.6. tinymix 设置声卡参数

查看所有参数

	
rk3288:/storage/emulated/0 # tinymix                                                                                                                      
Mixer name: 'rockchip,rt5640-codec'
Number of controls: 125
ctl     type    num     name                                     value
0       BOOL    1       Mono Playback Switch                     Off
1       INT     2       Mono DAC Playback Volume                 175 175
2       BOOL    2       Speaker Channel Switch                   Off Off
3       INT     2       Speaker Playback Volume                  31 31
4       BOOL    2       HP Channel Switch                        Off Off
5       INT     2       HP Playback Volume                       31 31
6       BOOL    2       OUT Playback Switch                      Off Off
7       BOOL    2       OUT Channel Switch                       Off Off
8       INT     2       OUT Playback Volume                      31 31
9       BOOL    2       DAC2 Playback Switch                     On On
10      INT     2       DAC1 Playback Volume                     175 175
11      INT     1       IN1 Boost                                0
12      INT     1       IN2 Boost                                0
13      INT     1       IN3 Boost                                0
14      INT     2       IN Capture Volume                        23 23
15      BOOL    2       ADC Capture Switch                       On On
16      INT     2       ADC Capture Volume                       47 47
17      INT     2       Mono ADC Capture Volume                  47 47
18      INT     2       ADC Boost Gain                           0 0
19      ENUM    1       Class D SPK Ratio Control                2.77x
20      ENUM    1       ADC IF1 Data Switch                      Normal
21      ENUM    1       DAC IF1 Data Switch                      Normal
22      ENUM    1       ADC IF2 Data Switch                      Normal
23      ENUM    1       DAC IF2 Data Switch                      Normal
24      BYTE    128     ELD                                     0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
25      INT     1       AUDIO MODE                               0
26      BOOL    1       RECMIXL HPOL Switch                      Off
27      BOOL    1       RECMIXL INL Switch                       Off
28      BOOL    1       RECMIXL BST3 Switch                      Off
29      BOOL    1       RECMIXL BST2 Switch                      Off
30      BOOL    1       RECMIXL BST1 Switch                      Off
31      BOOL    1       RECMIXL OUT MIXL Switch                  Off
32      BOOL    1       RECMIXR HPOR Switch                      Off
33      BOOL    1       RECMIXR INR Switch                       Off
34      BOOL    1       RECMIXR BST3 Switch                      Off
35      BOOL    1       RECMIXR BST2 Switch                      Off
36      BOOL    1       RECMIXR BST1 Switch                      Off
37      BOOL    1       RECMIXR OUT MIXR Switch                  Off
38      ENUM    1       Stereo ADC2 Mux                          DMIC1
39      ENUM    1       Stereo ADC1 Mux                          ADC
40      ENUM    1       Mono ADC L2 Mux                          DMIC L1
41      ENUM    1       Mono ADC L1 Mux                          ADCL
42      ENUM    1       Mono ADC R1 Mux                          ADCR
43      ENUM    1       Mono ADC R2 Mux                          DMIC R1
44      BOOL    1       Stereo ADC MIXL ADC1 Switch              Off
45      BOOL    1       Stereo ADC MIXL ADC2 Switch              Off
46      BOOL    1       Stereo ADC MIXR ADC1 Switch              Off
47      BOOL    1       Stereo ADC MIXR ADC2 Switch              Off
48      BOOL    1       Mono ADC MIXL ADC1 Switch                Off
49      BOOL    1       Mono ADC MIXL ADC2 Switch                Off
50      BOOL    1       Mono ADC MIXR ADC1 Switch                Off
51      BOOL    1       Mono ADC MIXR ADC2 Switch                Off
52      ENUM    1       DAI select                               1:2|2:1
53      ENUM    1       SDI select                               IF1
54      BOOL    1       DAC MIXL Stereo ADC Switch               Off
55      BOOL    1       DAC MIXL INF1 Switch                     On
56      BOOL    1       DAC MIXR Stereo ADC Switch               Off
57      BOOL    1       DAC MIXR INF1 Switch                     On
58      BOOL    1       Mono DAC MIXL DAC L1 Switch              Off
59      BOOL    1       Mono DAC MIXL DAC L2 Switch              On
60      BOOL    1       Mono DAC MIXL DAC R2 Switch              Off
61      BOOL    1       Mono DAC MIXR DAC R1 Switch              Off
62      BOOL    1       Mono DAC MIXR DAC R2 Switch              On
63      BOOL    1       Mono DAC MIXR DAC L2 Switch              Off
64      BOOL    1       DIG MIXL DAC L1 Switch                   Off
65      BOOL    1       DIG MIXL DAC L2 Switch                   Off
66      BOOL    1       DIG MIXR DAC R1 Switch                   Off
67      BOOL    1       DIG MIXR DAC R2 Switch                   Off
68      BOOL    1       SPK MIXL REC MIXL Switch                 Off
69      BOOL    1       SPK MIXL INL Switch                      Off
70      BOOL    1       SPK MIXL DAC L1 Switch                   Off
71      BOOL    1       SPK MIXL DAC L2 Switch                   Off
72      BOOL    1       SPK MIXL OUT MIXL Switch                 Off
73      BOOL    1       SPK MIXR REC MIXR Switch                 Off
74      BOOL    1       SPK MIXR INR Switch                      Off
75      BOOL    1       SPK MIXR DAC R1 Switch                   Off
76      BOOL    1       SPK MIXR DAC R2 Switch                   Off
77      BOOL    1       SPK MIXR OUT MIXR Switch                 Off
78      BOOL    1       SPOL MIX DAC R1 Switch                   Off
79      BOOL    1       SPOL MIX DAC L1 Switch                   Off
80      BOOL    1       SPOL MIX SPKVOL R Switch                 Off
81      BOOL    1       SPOL MIX SPKVOL L Switch                 Off
82      BOOL    1       SPOL MIX BST1 Switch                     Off
83      BOOL    1       SPOR MIX DAC R1 Switch                   Off
84      BOOL    1       SPOR MIX SPKVOL R Switch                 Off
85      BOOL    1       SPOR MIX BST1 Switch                     Off
86      BOOL    1       LOUT MIX DAC L1 Switch                   Off
87      BOOL    1       LOUT MIX DAC R1 Switch                   Off
88      BOOL    1       LOUT MIX OUTVOL L Switch                 Off
89      BOOL    1       LOUT MIX OUTVOL R Switch                 Off
90      BOOL    1       Speaker L Playback Switch                Off
91      BOOL    1       Speaker R Playback Switch                Off
92      BOOL    1       HP L Playback Switch                     On
93      BOOL    1       HP R Playback Switch                     On
94      ENUM    1       DAC L2 Mux                               IF2
95      ENUM    1       DAC R2 Mux                               IF2
96      BOOL    1       Stereo DAC MIXL DAC L1 Switch            Off
97      BOOL    1       Stereo DAC MIXL DAC L2 Switch            Off
98      BOOL    1       Stereo DAC MIXL ANC Switch               Off
99      BOOL    1       Stereo DAC MIXR DAC R1 Switch            Off
100     BOOL    1       Stereo DAC MIXR DAC R2 Switch            Off
101     BOOL    1       Stereo DAC MIXR ANC Switch               Off
102     BOOL    1       OUT MIXL SPK MIXL Switch                 Off
103     BOOL    1       OUT MIXL BST1 Switch                     Off
104     BOOL    1       OUT MIXL INL Switch                      Off
105     BOOL    1       OUT MIXL REC MIXL Switch                 Off
106     BOOL    1       OUT MIXL DAC R2 Switch                   Off
107     BOOL    1       OUT MIXL DAC L2 Switch                   Off
108     BOOL    1       OUT MIXL DAC L1 Switch                   Off
109     BOOL    1       OUT MIXR SPK MIXR Switch                 Off
110     BOOL    1       OUT MIXR BST2 Switch                     Off
111     BOOL    1       OUT MIXR BST1 Switch                     Off
112     BOOL    1       OUT MIXR INR Switch                      Off
113     BOOL    1       OUT MIXR REC MIXR Switch                 Off
114     BOOL    1       OUT MIXR DAC L2 Switch                   Off
115     BOOL    1       OUT MIXR DAC R2 Switch                   Off
116     BOOL    1       OUT MIXR DAC R1 Switch                   Off
117     BOOL    1       HPO MIX DAC2 Switch                      On
118     BOOL    1       HPO MIX DAC1 Switch                      Off
119     BOOL    1       HPO MIX HPVOL Switch                     Off
120     BOOL    1       Mono MIX DAC R2 Switch                   Off
121     BOOL    1       Mono MIX DAC L2 Switch                   Off
122     BOOL    1       Mono MIX OUTVOL R Switch                 Off
123     BOOL    1       Mono MIX OUTVOL L Switch                 Off
124     BOOL    1       Mono MIX BST1 Switch                     Off
	
	
		

查看指定参数

		
rk3288:/ $ tinymix 33 
RECMIXR INR Switch: Off		
		
		

设置参数

		
# 当前位 Off 状态
rk3288:/ $ tinymix 33                                                                                                                                     
RECMIXR INR Switch: Off

# 修改位 On 状态
rk3288:/ $ tinymix 33 1                                                                                                                                   

rk3288:/ $ tinymix 33                                                                                                                                     
RECMIXR INR Switch: On

# 修改回 Off 状态
rk3288:/ $ tinymix 33 0             
                                                                                                                      
rk3288:/ $ tinymix 33                                                                                                                                     
RECMIXR INR Switch: Off
		
		

112.5.7. 麦克风阵列调试

USB-Audio - Yundea M1051

		
rk3568_r:/ # cat /proc/asound/cards                                                                                                                                                    
 0 [rockchiphdmi   ]: rockchip_hdmi - rockchip,hdmi
                      rockchip,hdmi
 1 [rockchiprk809co]: rockchip_rk809- - rockchip,rk809-codec
                      rockchip,rk809-codec
 2 [M1051          ]: USB-Audio - Yundea M1051
                      Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed
		
		
		
rk3568_r:/ # cat /proc/asound/card2/usbmixer                                                                                                                                           
USB Mixer: usb_id=0x4c4a3135, ctrlif=1, ctlerr=0
Card: Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed
  Unit: 5
    Control: name="Auto Gain Control", index=0
    Info: id=5, control=7, cmask=0x0, channels=1, type="BOOLEAN"
    Volume: min=0, max=1, dBmin=0, dBmax=0
  Unit: 5
    Control: name="Mic Capture Volume", index=0
    Info: id=5, control=2, cmask=0x0, channels=1, type="S16"
    Volume: min=-7264, max=-241, dBmin=-2837, dBmax=-94
  Unit: 5
    Control: name="Mic Capture Switch", index=0
    Info: id=5, control=1, cmask=0x0, channels=1, type="INV_BOOLEAN"
    Volume: min=0, max=1, dBmin=0, dBmax=0
		
		

		
rk3568_r:/ # cat /proc/asound/card2/stream0                                                                                                                                            
Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed : USB Audio

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S16_LE
    Channels: 1
    Endpoint: 3 IN (ASYNC)
    Rates: 16000		
		
		

		
rk3568_r:/ # cat /proc/asound/card2/pcm0c/info                                                                                                                                         
card: 2
device: 0
subdevice: 0
stream: CAPTURE
id: USB Audio
name: USB Audio
subname: subdevice #0
class: 0
subclass: 0
subdevices_count: 1
subdevices_avail: 1		
		
		

112.5.7.1. 录音测试

尝试录音失败,参数设置不对

			
rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -T 5                                                                                                                              
Unable to open PCM device (cannot set hw params: Invalid argument)
Captured 0 frames

rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -c 2 -T 5                                                                                                                              
Unable to open PCM device (cannot set hw params: Invalid argument)
Captured 0 frames
			
			

查看麦克风参数

			
rk3568_r:/ # cat /proc/asound/card2/stream0                                                                                                                                            
Yundea Technology Yundea M1051 at usb-xhci-hcd.5.auto-1, full speed : USB Audio

Capture:
  Status: Stop
  Interface 2
    Altset 1
    Format: S16_LE
    Channels: 1
    Endpoint: 3 IN (ASYNC)
    Rates: 16000				
			
			

这里可以看到 通道是 1,码率是 16000,调整录音参数之后,正常录音

			
rk3568_r:/ # tinycap /sdcard/test.pcm -D 2 -d 0 -c 1 -r 16000 -T 5                                                                                                                     
Capturing sample: 1 ch, 16000 hz, 16 bit
Captured 81920 frames			
			
			

下载录音文件

			
neo@MacBook-Pro-M2 ~ % cd tmp 
neo@MacBook-Pro-M2 tmp % adb pull /sdcard/test.pcm
/sdcard/test.pcm: 1 file pulled, 0 skipped. 21.1 MB/s (163884 bytes in 0.007s)