3.5mm 耳机接口
1. 简介
RK3506B 通过 I2S 和 I2C 接口连接外部音频编解码器 ES8311,实现音频录音与播放功能,支持麦克风输入和耳机输出,满足高质量音频处理需求。
2. 声音配置
-
查看声卡设备
root@luckfox:~# arecord -l**** List of CAPTURE Hardware Devices ****card 0: rockchipes8311s [rockchip,es8311-sound], device 0: ff310000.sai-ES8311 HiFi ES8311 HiFi-0 [ff310000.sai-ES8311 HiFi ES8311 HiFi-0]Subdevices: 1/1Subdevice #0: subdevice #0root@luckfox:~# aplay -l**** List of PLAYBACK Hardware Devices ****card 0: rockchipes8311s [rockchip,es8311-sound], device 0: ff310000.sai-ES8311 HiFi ES8311 HiFi-0 [ff310000.sai-ES8311 HiFi ES8311 HiFi-0]Subdevices: 1/1Subdevice #0: subdevice #0card0:ES8311 音频编码器
-
声卡的驱动目录
root@luckfox:~# ls /dev/snd/by-path controlC0 pcmC0D0c pcmC0D0p timer- controlC0:用于声卡控制,C0 表示声卡0,对应上文的 es8311 的声音输出。 pcmC0D0c:用于录音的 pcm 设备,最后面的“c”是 capture 的缩写,表示录音
- pcmC0D0p:用于播放的 pcm 设备,最后面的“p”是 playback 的缩写,表示放音。
- by-path: 保存着设备的对应关系
root@luckfox:~# ls -l /dev/snd/by-path/total 0lrwxrwxrwx 1 root root 12 Jan 1 00:00 platform-es8311-sound -> ../controlC0
3. 录制
-
使用采样率16kHz/2ch/16bit的 WAV 格式录音
arecord -D hw:0,0 -t wav -d 10 -f S16_LE test.wav-f S16_LE:指定PCM格式为16位小端(16-bit Little Endian),常见采样大小有 8 BIT、16BIT、32BIT(FLTP)-r 16000:指定采样率为 16 kHz-D hw:0:指定音频设备为 card0,device0-d 30:指定录制时间为10秒test.wav:指定输出文件名为test.wav
-
如果没有指定采样率参数,arecord 将使用默认的采样率。通常,arecord 的默认采样率是44100 Hz(44.1 kHz),这是 CD 音频标准的采样率。
arecord -f cd -Dhw:0 -d 30 test.wav
4. 播放
-
播放 WAV 格式的音频。
aplay test.wav
5. 音量调整
-
调节耳机音量(推荐)
amixer -c 0 sset 'DAC VOLUME' 50%- 建议调节范围40%~70%
amixer -c 0 cset name='DAC VOLUME' 150- 建议调节范围100~180
-
使用 sox 调节音量
#查看音量可以最大调整值倍数——Volume adjustment# sox anheqiao.wav -n statSamples read: 22058820Length (seconds): 250.100000Scaled by: 2147483647.0Maximum amplitude: 0.891235Minimum amplitude: -0.891266Midline amplitude: -0.000015Mean norm: 0.153542Mean amplitude: -0.000068RMS amplitude: 0.206771Maximum delta: 1.232666Minimum delta: 0.000000Mean delta: 0.060496RMS delta: 0.092891Rough frequency: 3153Volume adjustment: 1.122#设置音量因子,生成另一个文件sox -v 0.2 anheqiao.wav output.wav- SoX是一个强大的音频处理工具,但是它的某些功能,比如MP3编码,可能需要特定的编译选项和依赖库才能支持。