树莓派音频
概述
树莓派音频板可为您现有的高保真音响或基于树莓派的设备和项目带来高品质音频。我们提供四种不同的顶部硬件连接 (HAT) 选项,适合任何使用 40 引脚 GPIO 接头的树莓派。
每块电路板都有特定的用途和功能。我们的 DAC PRO、DAC+ 和 DigiAMP+ 板可提供最高音频质量的回放,最高支持全高清音频(192kHz);而 Codec Zero 板最高支持高清音频(96kHz),并内置麦克风,是小型项目的理想选择。
功能概览
| 线路输出 | 平衡输出 | 立体声扬声器 | 单声道扬声器 | 耳机 | 辅助输入 | 辅助输出 | 外置麦克风 | 内置麦克风 | |
|---|---|---|---|---|---|---|---|---|---|
| DAC Pro | ✓ | ✓ | ✓ | ||||||
| DAC+ | ✓ | ✓ | |||||||
| DigiAMP+ | ✓ | ||||||||
| Zero编解码器 | ✓ | ✓ | ✓ | ✓ | ✓ |
线路输出
双声道/RCA 连接器,通常为红色和白色。该输出为可变模拟信号(0-2V RMS),可连接到现有的高保真音响(前置放大器或功放),也可用于驱动内置功放的有源音箱。
平衡输出
XLR 连接器,通常为三针公连接器。在录音室和某些高端高保真系统中使用。也可用于驱动有源监听扬声器,如俱乐部或舞台上面向 DJ 或表演者的有源监听扬声器。
立体声扬声器
两组螺丝端子,用于 2×25W 扬声器。这些用于没有内置放大器的传统高保真扬声器。这些扬声器被称为无源扬声器。
单声道扬声器
一个螺丝端子,用于单个 1.2 瓦扬声器,如晶体管收音机或类似设备。
耳机
为耳机提供立体声音频的 3.5 毫米插孔。树莓派DAC 板上的耳机放大器可驱动阻抗高达 80/90Ω 的耳机。
辅助输入
双 Phono/RCA 连接器或 3.5 毫米插座。可接收高达 1V RMS 的模拟音频。可用于录制来自可变模拟源(如手机、MP3 播放器或类似设备)的音频。
辅助输出
双 Phono/RCA 连接器或 3.5 毫米插座。可输出高达 1V RMS 的模拟音频。与线路输出相比,它可以用较小的音量将音频输入放大器。
扩展麦克风
用于外接驻极体麦克风的 3.5 毫米插座。使用外部麦克风输入接口时,Codec Zero 的内置 MEMS 麦克风会自动禁用。
树莓派DAC Pro
树莓派DAC Pro HAT 是我们保真度最高的数模转换器 (DAC)。
DAC Pro 采用德州仪器 PCM5242,具有出色的信噪比(SNR),支持平衡/差分输出与唱机/RCA 线路电平输出并行。它还包括一个专用耳机放大器。DAC Pro 由树莓派通过 GPIO 接口供电。
作为 DAC Pro 的一部分,树莓派的 USB 和以太网端口上方有两个三针针座(P7/P9),供可选配的 XLR 板使用,允许差分/平衡输出。
引脚说明
| PIN | 说明 |
|---|---|
| P1 | 模拟输出(0-2V RMS),携带 GPIO27、MUTE 信号(耳机检测)、左右音频和左右接地。 |
| P6 | 耳机插座信号(1:左,2:接地,3:右,4:接地,5:检测)。 |
| P7/9 | 差分(0-4V RMS)输出(P7:左,P9:右)。 |
| P10 | 备用 5V 输入,并联为树莓派供电。 |
可选XLR板
Pi-DAC PRO 上有一个 6 针接头,可用于选配 XLR 板,通过 Pi USB/以太网端口上方的 XLR 插座提供差分/平衡输出。
XLR 连接器用于工作室和某些高端高保真系统。它还可用于驱动迪斯科舞厅或舞台上使用的有源 "监听" 扬声器。
树莓派DAC+
树莓派DAC+ 是一款高分辨率音频输出 HAT,可提供 24 位 192kHz 数字音频输出。
DAC+ 中使用了德州仪器公司的 PCM5122,可将模拟音频传输到设备的唱头连接器。它还支持专用耳机放大器,并通过 GPIO 针座由树莓派供电。
引脚说明
| PIN | 说明 |
|---|---|
| P1 | 模拟输出(0-2V RMS)、GPIO27、MUTE 信号(耳机检测)、左右音频和左右接地。 |
| P6 | 耳机插座信号(引脚 1:左、2:接地、3:右、4:接地、5:检测)。 |
树莓派DigiAMP+
通过树莓派DigiAMP+,您可以连接 2 个输出功率高达 35W 的无源立体声扬声器,使其成为基于树莓派的高保真音响系统的理想之选。
DigiAMP+ 使用德州仪器公司的 TAS5756M PowerDAC。
必须由外部电源供电。它需要 12-24V 直流电源(推荐使用 XP Power VEC65US19 电源)。
DigiAMP+ 专为 Raspberry Pi 3 及更早型号的设备设计。若将其与 Raspberry Pi 4 或更新型号的设备配合使用,请使用外接电源供电的 USB 集线器,以防止 USB 端口给设备增加额外负载。若未采取此措施,可能会导致出现低电量警告。
DigiAMP+ 的电源桶形连接器为 5.5 毫米 x 2.5 毫米。
开机时,放大器默认为静音(静音 LED 亮起)。软件负责静音状态和 LED 控制(树莓派GPIO22)。
DigiAMP+ 可并联为树莓派和 DigiAMP+ 供电,通过 GPIO 接口为树莓派提供 2.5 安培的 5.1V 电压。
使用 DigiAMP+ 时,请勿向树莓派自身的电源输入供电。
引脚说明
| PIN | 说明 |
|---|---|
| P5 | 用于硬接线安装的备用电源输入(必须注意极性) |
| P8 | TAS5756m 内部 GPIO1/2/3 |
扬声器端子极性
极性信息印在扬声器端子上方的丝印标记上。
从电路板顶部向下看,且电源连接器位于左侧时,两个端子的极性相同:左侧为"−",右侧为"+"。
树莓派编解码器Zero
树莓派Codec Zero 是一个树莓派Zero 大小的音频 HAT。它在树莓派和 Codec Zero 的板载 Dialog Semiconductor DA7212 编解码器之间传输双向数字音频信号(I2S)。Codec Zero 支持一系列输入和输出设备。
- 高性能 24 位音频编解码器
- 支持 8-96kHz 之间的常用音频采样率
- 内置微型机电麦克风 (Mic2)
- 单声道驻极体麦克风(麦克风 2 左侧)
- 麦克风 2 插入检测时自动禁用 MEMS
- 支持额外的(不适合)单声道驻极体麦克风(右 Mic1)
- 立体声辅助输入通道(AUX IN)- PHONO/RCA 连接器
- 立体声辅助输出通道(耳机/AUX OUT)
- 灵活的模拟和数字混音路径
- 用于自动电平控制(ALC)的数字信号处理器(DSP)
- 五段均衡器
- 单声道线路输出/微型扬声器驱动器:1.2W/5V,THD<10%,R=8Ω
Codec Zero 包括一个 EEPROM,必要时可用于自动配置 Linux 环境。它集成了 MEMS 麦克风,可通过 3.5 毫米插座和单声道扬声器(1.2W/8Ω)使用立体声麦克风输入。
除了绿色(GPIO23)和红色(GPIO24)LED 灯外,还提供了一个可编程触感按钮(GPIO27)。
引脚说明
| PIN | 说明 |
|---|---|
| P1/2 | 必要时支持外部 PHONO/RCA 插口。P1:辅助输入,P2:辅助输出。 |
| P1 | 针脚 1 为方形。 |
Codec Zero 是对讲机、智能门铃、古董收音机或智能扬声器等小型项目的理想设计起点。
连接、装配与配置
树莓派音频板带有预编程 EEPROM,因此设计为可与运行 Raspberry Pi OS 的树莓派设备即插即用。它们属于称为 HAT(Hardware Attached on Top,顶部硬件附加)的设备系列。
它们也可以用于无显示器(远程)设置。
连接音频板
树莓派音频板连接到 40 针 GPIO 排针,设计为使用随附的电路板支柱和螺钉进行支撑。所有必要的安装硬件(包括垫片、螺钉和连接器)均已提供。
正常操作无需焊接;但如果您想硬接线某些特定连接器(例如 DAC Pro 上的外部线路回传连接),则可能需要焊接。
要连接音频板:
- 将 PCB 垫片用手拧紧到您的树莓派设备上。
- 将音频板装到 40 针 GPIO 排针上。
- 从电路板上方拧入剩余的螺钉。
检查硬件版本
树莓派音频板有多个版本。具体版本决定了配置所需的操作。
较旧的 IQaudIO 品牌板采用黑色 PCB。较新的树莓派品牌板采用绿色 PCB。这些电路板在电气上等效,但 EEPROM 内容不同。
要检查音频板的版本:
-
将音频板连接到您的树莓派并通电。
-
检查音频板上的电源 LED 是否亮起(如果有的话)。例如,Codec Zero 有一个标有
PWR的 LED。 -
在树莓派设备上,使用终端输入以下命令:
grep -a . /proc/device-tree/hat/*终端会返回以下字符串之一:
- Raspberry Pi Ltd.
- IQaudIO Limited.
- No such file or directory
无需进一步操作(但请参阅下文的额外的 Codec Zero 配置)。
无需进一步操作(但请参阅下文的额外的 Codec Zero 配置)。
未检测到 HAT。请执行以下操作:
-
关闭设备电源。
-
检查 HAT 与树莓派设备之间的物理连接。
-
为设备通电,然后重复上一节的步骤 3。
-
如果仍返回相同的字符串,请在您的树莓派设备上打开
config.txt。 -
添加以下行,以取消加载默认 HAT 覆盖层并应用正确的设备树覆盖层:
# 取消默认 HAT 覆盖层:dtoverlay=# 添加以下之一:dtoverlay=rpi-codeczerodtoverlay=rpi-dacplusdtoverlay=rpi-dacprodtoverlay=rpi-digiampplus -
保存并关闭文件。
-
重启您的树莓派,使更改生效。
配置音频板
将音频板连接并装到您的树莓派设备上之后,您可以在音频板与板载设备之间切换音频播放:
- 右键单击屏幕右上角的音频设置。
- 在板载音频设置与 HAT 音频设置之间切换。
您也可以禁用板载音频设备,这会使树莓派音频板成为 Raspberry Pi OS 中的主音频设备。
如果您运行的是无显示器设置(或 Raspberry Pi OS Lite),无法通过 Raspberry Pi OS 图形桌面界面控制音频板,那么下面介绍的命令行方法会很有用。
要通过 SSH 禁用板载音频设备:
-
使用 SSH 连接 到您的树莓派设备。
-
运行以下命令编辑文件:
sudo nano /boot/firmware/config.txt -
找到文件中的
dtparam=audio=on行,并在该行开头加上#符号将其注释掉。程序会忽略任意一行中
#符号之后写入的内容。此时您的/boot/firmware/config.txt文件包含以下条目:#dtparam=audio=on -
按 Ctrl+X,然后 Y,然后 Enter 保存。
-
重启您的树莓派使设置生效:
sudo reboot
额外的Codec Zero配置
树莓派 Codec Zero 使用 Dialog Semiconductor DA7212 编解码器。
它可以通过内置 MEMS 麦克风、立体声排针(AUX IN)或两个单声道外置驻极体麦克风录制音频。播放则通过立体声排针(AUX OUT)或单声道扬声器连接器进行。
每个输入和输出设备都有自己的混音器,可以独立调节音频电平和音量。编解码器本身还有其他混音器和开关,可将输出混合为单声道,用于单扬声器输出。信号还可以反转;有一个五段均衡器可以调整某些频段。您可以使用 AlsaMixer 以交互方式控制这些设置,也可以通过编程进行控制。
AUX IN 和 AUX OUT 均为 1 V RMS。您可能需要调整 AUX IN 的混音器,以确保输入信号不会使 ADC 饱和。同样,也可以调整输出混音器,以获得最佳输出。
预配置脚本(可加载 ALSA 设置)可在 GitHub 上获取,提供以下配置:
- 单声道 MEMS 麦克风录音,单声道扬声器回放。
- 单声道 MEMS 麦克风录音,单声道 AUX OUT 回放。
- 立体声 AUX IN 录音,立体声 AUX OUT 回放。
- 立体声 MIC1/MIC2 录音,立体声 AUX OUT 回放。
每次树莓派开机时,Codec Zero 都需要知道使用的是这些输入和输出设置中的哪一个。
要为编解 码器提供输入和输出设置:
-
如果尚未安装
git,请打开终端并运行以下命令:sudo apt install git -
在终端会话中,运行以下命令克隆脚本:
git clone https://github.com/raspberrypi/Pi-Codec.git -
运行以下命令,将设备设置为使用板载 MEMS 麦克风输入、扬声器回放输出,将
<username>替换为您的用户名:sudo alsactl restore -f /home/<username>/Pi-Codec/Codec_Zero_OnboardMIC_record_and_SPK_playback.state此命令可能会产生无害的警告,包括:
- "failed to import hw" 或 "snd_use_case_mgr_open"
- "No state is present for card"
在大多数情况下,您可以安全地忽略这些警告。
不过,以下警告可能表示硬件故障:
- "Remote I/O error"
-
为确保下次启动树莓派设备时保留您的设置,请编辑
/etc/rc.local文件:sudo nano /etc/rc.local -
在
exit 0行上方添加所选的脚本命令。文件内容类似如下:
#!/bin/sh## rc.local## This script is executed at the end of each multiuser runlevel.# Make sure that the script will "exit 0" on success or any other# value on error.## In order to enable or disable this script just change the execution# bits.## By default this script does nothing.sudo alsactl restore -f /home/<username>/Pi-Codec/Codec_Zero_OnboardMIC_record_and_SPK_playback.stateexit 0 -
按 Ctrl+X,然后 Y,然后 Enter 保存。重启设备使设置生效:
sudo reboot
如果您在无显示器或命令行环境中使用树莓派:
-
在您的主文件夹中创建以下文件:
nano ~/.asoundrc -
在文件中添加以下内容,通过 ALSA
plug插件路由默认播放和采集,以实现格式和通道的自动转换:pcm.!default {type plugslave.pcm {type hwcard Zero}}ctl.!default {type hwcard Zero} -
按 Ctrl+X,然后 Y,然后 Enter 保存。
-
再次重启以完成配置:
sudo reboot
音频框架
与其他现代 Linux 发行版一样,Raspberry Pi OS 默认使用 PulseAudio 或 PipeWire 进行音频控制。
这些框架可以混合和切换来自多个音源的音频,并为音频应用程序提供高级 API。许多音频应用程序默认使用这些框架。
仅在音频应用程序需要以下情况时才创建 ~/.asoundrc:
- 直接与 ALSA 通信。
- 在没有 PulseAudio 或 PipeWire 的环境中运行。
此文件可能会干扰界面对底层音频资源的显示。我们不建议在运行 Raspberry Pi OS 桌面环境时创建 ~/.asoundrc。界面可能会自动移除该文件(如果存在)。
使DigiAMP+静音和解除静音
DigiAMP+ 的静音状态由树莓派上的 GPIO22 切换。最新的音频设备树通过附加参数支持取消 DigiAMP+ 静音。
首先是内核模块加载时的 "一次性" 静音。
对于树莓派板
dtoverlay=rpi-digiampplus,unmute_amp
对于 IQaudIO 板
dtoverlay=iqaudio-digiampplus,unmute_amp
当客户端打开 ALSA 设备时,解除放大器静音。当 ALSA 设备关闭时,静音并延迟 5 秒。(在五秒关闭窗口内重新打开设备将取消静音)。
适用于树莓派板:
dtoverlay=rpi-digiampplus,auto_mute_amp
对于 IQaudIO 板
dtoverlay=iqaudio-digiampplus,auto_mute_amp
如果不想通过设备树控制静音状态,也可以编写自己的解决方案。
音箱启动时会静音。要解除音箱静音
sudo sh -c "echo 22 > /sys/class/gpio/export"
sudo sh -c "echo out >/sys/class/gpio/gpio22/direction"
sudo sh -c "echo 1 >/sys/class/gpio/gpio22/value"
再次将放大器静音:
sudo sh -c "echo 0 >/sys/class/gpio/gpio22/value"
控制数字音量
如果您使用 Raspberry Pi OS 桌面环境,可以使用系统托盘中的音量滑块。
要在无显示器设置下调节音频板的音频输出音量,请使用 AlsaMixer:
alsamixer
使用左右方向键选择要调节的音量通道,然后使用上下方向键调节音量。按 Esc 退出 AlsaMixer。