Qualcomm 机器人 RB5 开发套件用户指南(5)
4.6 设置音频
确保板上的数字麦克风接口 (DMIC) 已打开。将 DIP2 开关板上的 PIN2 打开,如下图所示。在测试录音和音频播放之前,将扬声器连接到RB5板,如下图所示:
ALSA录制和回放
笔记
Linux 嵌入式系统不支持。
要通过高级 Linux 声音架构 (ALSA) 捕获音频录音,请执行以下操作:
-
运行以下命令:
adb shell
amixer cset name='TX DEC2 MUX' 'MSM_DMIC'
amixer cset name='TX DMIC MUX2' 'DMIC2'
amixer cset name='TX_CDC_DMA_TX_3 Channels' 'One'
amixer cset name='TX_CDC_DMA_TX_3 SampleRate' 'KHZ_48'
amixer cset name='TX_CDC_DMA_TX_3 Format' 'S16_LE'
amixer cset name='TX_AIF1_CAP Mixer DEC2' 1
amixer cset name='TX_DEC2 Volume' 84
amixer cset name='MultiMedia1 Mixer TX_CDC_DMA_TX_3' 1
arecord /data/dmic0.wav -f dat
-
录制完语音后,按CTRL + C停止录制。录制完成后,将输出剪辑从 /data/RB5设备的位置拉出。
adb pull /data/dmic0.wav
通过 ALSA 播放音频
笔记
Linux 嵌入式系统不支持。
要通过 ALSA 播放音频,请运行以下命令:
adb push dmic0.wav /data/
adb shell
amixer cset name='WSA_CDC_DMA_RX_0 Channels' 'Two'
amixer cset name='WSA RX0 MUX' 'AIF1_PB'
amixer cset name='WSA RX1 MUX' 'AIF1_PB'
amixer cset name='WSA_RX0 INP0' 'RX0'
amixer cset name='WSA_RX1 INP0' 'RX1'
amixer cset name='WSA_COMP1 Switch' 1
amixer cset name='WSA_COMP2 Switch' 1
amixer cset name='SpkrLeft COMP Switch' 1
amixer cset name='SpkrLeft BOOST Switch' 1
amixer cset name='SpkrLeft VISENSE Switch' 1
amixer cset name='SpkrLeft SWR DAC_Port Switch' 1
amixer cset name='SpkrRight COMP Switch' 1
amixer cset name='SpkrRight BOOST Switch' 1
amixer cset name='SpkrRight VISENSE Switch' 1
amixer cset name='SpkrRight SWR DAC_Port Switch' 1
amixer cset name='WSA_RX0 Digital Volume' 68
amixer cset name='WSA_RX1 Digital Volume' 68
amixer cset name='WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 1
aplay /data/dmic0.wav
tinyALSA 录制和回放
要通过tinyALSA捕获音频录音,请执行以下操作:
-
运行以下命令:
adb root
adb remount
adb shell mount -o rw,remount /
adb shell
tinymix set 'TX DMIC MUX2' 'DMIC3'
tinymix set 'TX_CDC_DMA_TX_3 Channels' 'One'
tinymix set 'TX_AIF1_CAP Mixer DEC2' 1
tinymix set 'MultiMedia1 Mixer TX_CDC_DMA_TX_3' 1
tinycap /data/dmic2.wav -c 1 -r 48000 -b 16
-
录制完语音后,按CTRL + C停止录制。录制完成后,将输出剪辑从 /data/设备所在位置拉出。
adb pull /data/dmic2.wav
通过tinyALSA进行音频播放
要通过tinyALSA播放音频,请运行以下命令:
adb push dmic0.wav /data/
adb shell
tinymix set 'WSA_CDC_DMA_RX_0 Channels' 'Two'
tinymix set 'WSA RX0 MUX' 'AIF1_PB'
tinymix set 'WSA RX1 MUX' 'AIF1_PB'
tinymix set 'WSA_RX0 INP0' 'RX0'
tinymix set 'WSA_RX1 INP0' 'RX1'
tinymix set 'WSA_COMP1 Switch' 1
tinymix set 'WSA_COMP2 Switch' 1
tinymix set 'SpkrLeft COMP Switch' 1
tinymix set 'SpkrLeft BOOST Switch' 1
tinymix set 'SpkrLeft VISENSE Switch' 1
tinymix set 'SpkrLeft SWR DAC_Port Switch' 1
tinymix set 'SpkrRight COMP Switch' 1
tinymix set 'SpkrRight BOOST Switch' 1
tinymix set 'SpkrRight VISENSE Switch' 1
tinymix set 'SpkrRight SWR DAC_Port Switch' 1
tinymix set 'WSA_RX0 Digital Volume' 68
tinymix set 'WSA_RX1 Digital Volume' 68
tinymix set 'WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 1
tinyplay /data/dmic0.wav
音频硬件抽象层(HAL)录制和播放
要通过 捕获录音hal_rec_test_64bit,请执行以下操作:
-
运行以下命令:
adb shell hal_rec_test_64bit -c [number of channels] -r [sample rate] -t [record time]
命令示例:
adb shell hal_rec_test_64bit -r 48000 -t 30 -c 1 ->sample rate 48000Hz ->channels 1[AUDIO_CHANNEL_IN_MONO] ->record data for 30 secs
-
录制完成后, /data/audio 通过运行以下命令从设备中的位置拉出输出剪辑:
adb pull /data/audio/rec1.wav
通过hal_playback_test_64bit进行音频播放
对于通过 hal_playback_test_64bit 进行音频播放,请运行以下命令:
adb shell hal_play_test_64bit -f [wave file] -t [file type, required for non WAV formats] -r [sample rate] -v [volume 0 - 1]
例如:
相变存储器:
adb push test.wav /data/
adb shell hal_play_test_64bit -f /data/test.wav -v 0.5
->file location /data/test.wav
->playback volume 0.5
MP3:
adb push test.mp3 /data/
adb shell hal_play_test_64bit -f /data/test.mp3 -t 2 -r 44100 -v 0.4
->file location /data/test.mp3
->file type MP3 [1:WAV 2:MP3]
->sample rate 44100Hz
->playback volume 0.4
GStreamer 录制和回放
要通过 GStreamer 捕获音频录制和播放,请执行以下操作:
-
运行以下命令进行录制:
相变存储器:adb shell
gst-launch-1.0 -e -v pulsesrc ! audioconvert ! wavenc ! filesink location="/data/track.wav"
AAC:软件编码
adb shell gst-launch-1.0 -e -v pulsesrc ! audio/x-raw,format=S16LE,rate=48000,channels=1 ! audioconvert ! avenc_aac ! aacparse ! mpegtsmux ! queue ! filesink location="/data/Audio_AAC.ts"
-
录制完语音后,按CTRL + C或使用adbshellkill -2 `pidof gst-launch-1.0停止录制。录制完成后,将输出剪辑从/data/设备所在位置拉出。
通过 GStreamer 播放音频
对于通过 GStreamer 播放音频,请运行以下命令:
相变存储器:
adb push audio_test.wav /data/
adb shell
gst-launch-1.0 filesrc location="/data/audio_test.wav" ! wavparse ! audioconvert ! pulsesink
AAC:软件解码
adb push test.aac /data/
adb shell
gst-launch-1.0 filesrc location="/data/test.aac" ! aacparse ! avdec_aac ! audioconvert ! pulsesink
MP3:软件解码
adb push test.mp3 /data/
adb shell
gst-launch-1.0 filesrc location="/data/test.mp3" ! mpegaudioparse ! mpg123audiodec ! pulsesink