快速开始
软硬件配置
- RDK X5/Module
- RDK S100/S100P
- RDK S600
- USB 模式
-
将 RDK 音频套件的拨码开关设置如下(
101X),该状态设置模式为 I2S,I2S 通道数为 1,I2S 参考电平为 3V3。
-
保证系统镜像版本 = RDK OS 3.5.0,将以下补丁包下载到 RDK X5 板卡中。
-
在板端输入
sudo dpkg -i hobot-*安装它们。
-
输入
srpi-config,依次点击 3 Interface Options > I5 Audio > Audio Driver HAT V2,按下回车,然后选择<Finish>,根据指引选择重启,或者自行输入命令sudo reboot使所有配置生效。
-
如果按照前文说明正确安装了 RDK 音频套件,重启完成后,输入
cat /proc/asound/cards查看 ALSA 检测到的所有声卡信息,其中duplexaudio是 RDK X5 板端自带的声卡,duplexaudioi2s1则是 RDK 音频套件的声卡,配置有效。
-
输入
ls -l /dev/snd可以查看录音与播放节点,其中pcmC0D0p表示 PCM 通道 0 设备 0 的播放节点,pcmC0D1c表示 PCM 通道 0 设备 1 的录音节点,以此类推,这两个节点就是 RDK X5 上 RDK 音频套件的对应节点。
-
RDK S100/S100P 的
PCM0默认接入 Wi-Fi & BT 模块,用于蓝牙音频功能,为使用 RDK 音频套件,需要将PCM0功能切换开关拨到OFF,以将PCM0相关引脚接入 40PIN 引脚。
-
将 RDK 音频套件的拨码开关设置如下(
101X),该状态设置模式为 I2S,I2S 通道数为 1,I2S 参考电平为 3V3。
-
保证系统镜像版本 = RDK OS 4.0.5-20260507,可以使用
cat /proc/version命令确认,如下图所示,如版本不匹配,请更新最新版本。
-
将以下补丁包下载到 RDK S100 系统中。
-
在板端输入
sudo dpkg -i linux-*安装,然后重启。
-
重启后输入以下命令加载驱动:
modprobe hobot_cpudai_super
modprobe snd-soc-es8156
modprobe snd-soc-es7210
modprobe hobot_snd_s100_ac_fdx_host -
输入
cat /proc/asound/cards查看 ALSA 检测到的所有声卡信息,其中s100snd2是 RDK 音频套件的声卡,配置有效。
-
输入
ls -l /dev/snd可以查看录音与播放节点,其中pcmC0D0c表示 PCM 通道 0 设备 0 的录制节点,pcmC0D1p表示 PCM 通道 0 设备 1 的播放节点,以此类推,这两个节点就是 RDK S100 上 RDK 音频套件的对应节点。
-
将 RDK 音频套件的拨码开关设置如下(
100X),设置 RDK 音频套件为 1.8V 参考电平的 单 路全双工 I2S 模式。
仅 S600 可以使用双路单工 I2S 通道进行独立时钟、独立采样率的录制与播放,需配置为下图(
110X),详见 硬件接口说明。
-
保证系统镜像版本 = RDK OS 5.1.0,将以下补丁包下载到 RDK S600 中。
-
在板端输入
sudo dpkg -i linux-*安装,然后重启。 -
重启后,输入以下命令加载驱动(I2S 通道数为 1 使用全双工部分命令,为 2 使用单工部分命令):
# 全双工:
modprobe hobot_cpudai_super
modprobe snd-soc-es8156
modprobe snd-soc-es7210
modprobe hobot_snd_super_ac_fdx_host
# 单工:
modprobe hobot_cpudai_super
modprobe snd-soc-es8156
modprobe snd-soc-es7210
modprobe hobot_snd_super_ac_master -
修改 I2S 驱动能力:
devmem 0x33805088 32 0x00000033
devmem 0x3380508c 32 0x00000033
devmem 0x34830020 32 0x17171717以上配置重启后失效。
-
输入
cat /proc/asound/cards查看 ALSA 检测到的所有声卡信息,其中s600snd2是 RDK 音频套件的声卡,配置有效。
-
输入
ls -l /dev/snd可以查看录音与播放节点,其中pcmC0D0c表示 PCM 通道 0 设备 0 的录制节点,pcmC0D1p表示 PCM 通道 0 设备 1 的播放节点,以此类推,这两个节点就是 RDK S600 上 RDK 音频套件的对应节点。
-
将拨码开关设置为以下状态(
0XXX),可以将 RDK 音频套件切换到 USB 音频模式。
-
无需加载驱动,RDK 音频套件作为
UAC标准设备会自动生成节点,输入cat /proc/asound/cards查看 ALSA 检测到的所有声卡信息,其中带有AudioArray和 USB 等字样的就是 RDK 音频套件生成的节点。
-
输入
ls -l /dev/snd可以查看录音与播放节点,其中pcmC1D0c表示 PCM 通道 1 设备 0 的录制节点,pcmC1D1p表示 PCM 通道 1 设备 1 的播放节点,以此类推,这两个节点就是当前 RDK 音频套件的对应节点。
功能体验
本处以 RDK X5 + RDK 音频套件为例,展示如何使用 arecord 工具录制多通道音频、使用 aplay 工具播放多声道音频、全双工录制播放。
录制多通道音频
保证录音节点存在,可以使用 arecord 命令录制音频,简单描述 arecord 命令录音用法:
arecord [选项] [输出文件路径]
-D 通路:CARD,DEVICE 通路可选 hw(直通硬件) plughw(自动格式转换) default(默认值)
-d 录制时长
-f 采样格式 可选 S16_LE S24_LE S32_LE 等
-r 采样率 常用 8000/16000/22050/44100/48000/96000 等
-c 通道数量
这里我们不做格式转换,假设 ls -l /dev/snd 查看到的声卡通道号为 0,录音设备号为 1,使用 S16_LE 格式,采样率 16000,录制 8 通道音频 10 秒:
arecord -D hw:0,1 -d 10 -r 16000 -f S16_LE -c 8 record.wav
不论使用 4-Mic 或 6-Mic 阵列,都需要录制 8 通道音频,在 8 通道中,前 4/6 通道为麦克风阵列对应的拾音器,第 7、8 通道是双声道功放的回采数据,4 通道录制时,第 5、6 通道为空,仅包含白噪声。
如果录制不到声音,可以尝试使用以下命令调整 RDK 音频套件的 ADC 增益:
amixer -c 0 sset ADC 10%+ cap # 调大
amixer -c 0 sset ADC 10%- cap # 调小
amixer -c 0 sget ADC # 查看当前值
amixer -c 0 sset ADC 80% cap # 设置百分比
播放双声道音频
保证播放节点存在,可以使用 aplay 查看播放音频,简单描述 aplay 命令播放用法:
aplay [选项] [输入文件路径]
-D 通路:CARD,DEVICE 通路可选 hw(直通硬件) plughw(自动格式转换) default(默认值)
-d 播放时长(秒)
-f 采样格式 可选 S16_LE S24_LE S32_LE 等
-r 采样率 常用 8000/16000/22050/44100/48000/96000 等
-c 通道数量
假设 ls -l /dev/snd 查看到的声卡通道号为 0,播放设备号为 0,播放音频文件:
aplay -D hw:0,0 record.wav
RDK 音频套件的功放为双声道,播放多通道音频时,aplay 工具只播放前 2 条通道。
如果声音过小,可以使用以下命令调整 RDK 音频套件的 DAC 功放音量,建议设置为 75% 测试:
amixer -c 0 sset DAC 10%+ # 调大
amixer -c 0 sset DAC 10%- # 调小
amixer -c 0 sget DAC # 查看当前值
amixer -c 0 sset DAC 80% # 设置百分比
全双工录制播放
RDK 音频套件的录音与播放节点均为独立通道,支持全双工录制播放。
-
启动 2 个终端,在第一个终端中播放较长的音频:
aplay -D hw:0,0 demo.wav -
将扬声器靠近麦克风阵列,在第二个终端中输入以下命令,录制 5 秒音频:
arecord -D hw:0,1 -d 5 -r 16000 -f S16_LE -c 8 record.wav -
在录制到的音频中可以听到播放的音频内容,验证全双工录播有效。
除此之外,也可以编写程序,在两个线程或两个程序中同时使用录音和播放设备,同样可以进行全双工录制与播放。
-
拨码开关 2 设为 off 时,使用 1 路 I2S 进行全双工录播,目前 RDK X5 和 RDK S100/S100P 仅支持该模式,对于 RDK S600,可以将拨码开关 2 设为 on,以使用 2 路独立 I2S 分别进行录制与播放。
-
I2S 通道数为 1 时,播放与录制的采样率和采样格式必须一致,因为录制与播放数据通道使用相同的位时钟。
下一步指引
至此,RDK 音频套件基本功能已体验完成。
接下来:
- 结构安装说明 中详细说明了 RDK 音频套件的结构参数与安装注意事项,建议结构开发者阅读;
- 硬件接口说明 中详细介绍了 RDK 音频套件各接口的硬件描述,建议硬件开发者阅读;
- 使用本产品结合 RDK 开发板进行音频应用开发,见 USB 音频设备使用指南。
- 基于 RDK 音频套件使用音频前处理、DOA、VAD、语音唤醒、自定义命令词、ASR、TTS 等算法,见 智能语音盒子。