# 音频配置 ***Copyright © Quectel Wireless Solutions Co., Ltd. 2026. All rights reserved.*** --- # 音频功能介绍 本章节介绍 Debian Weston 桌面环境下的音频配置及测试方法。 Weston 作为 Wayland Compositor,不提供 GNOME 桌面中的图形化音频设置界面,系统通过 PulseAudio 音频服务管理音频输入输出设备。 用户可以通过 pactl命令查看音频设备状态、调节音量。 # 硬件音频通道总览 M1/L1开发板的音频硬件包含 2 路输入 和 2 路输出,均通过板载的 SH1.0-4P 连接器及板载 MEMS 器件实现。请在操作前确认硬件连接正确。 | **通道类型** | **通道名称** | **硬件对应位置** | **说明** | | --- | --- | --- | --- | | 输入 | 板载 MIC | 主板上的 MEMS 麦克风 | 内置硅麦,默认录音输入源,无需外接。 | | 输入 && 输出 | 耳机 | SH1.0-4P | 外接带麦耳机。 | | 输出 | SPK (扬声器) | 预留测试点 | 驱动大功率外放扬声器(需外接功放,直接接喇叭声音较小)。 | | 输出 | EAR (听筒) | 预留测试点 | 驱动小功率听筒/耳机。 | ```{image} images/image_QKg5bicXqo9BkUxCpy8cEAZZnkb.webp :width: 1256px :height: 809px :align: center ``` ```{image} images/image_OCsLbfNFRodo1txsWGccCx8HnPc.webp :width: 1280px :height: 1000px :align: center ``` # 查看声卡信息 可通过以下命令检查系统声卡与 PCM 设备的加载情况: - 查看声卡列表: ```shell cat /proc/asound/cards ``` ```{image} images/image_TyBIbrbmKoswLKxa6hkcOmgwnGe.webp :width: 675px :height: 86px ``` - 查看已分配的 **pcm** 流列表: ```shell cat /proc/asound/pcm ``` ```{image} images/image_FisEbnwZPoGLbYxxWJPcteEtnrf.webp :width: 676px :height: 362px ``` > 说明:若系统未检测到声卡信息或 **PCM 流**,则 **ALSA** 与 **PulseAudio** 均无法正常工作。 # ALSA架构 ## ALSA概述 ALSA是Linux系统的底层音频架构与驱动核心,它直接管理和控制计算机的音频硬件。它一方面为声卡提供原生驱动,实现对物理音频通道(如外置麦克风、耳机、扬声器)的直接读写;另一方面为应用程序提供标准化的API接口,完成最基础的音频采集与播放。ALSA是构建一切高级音频服务(如PulseAudio)的基石。 ## 音频录制 在 **Linux系统** 下,需确认智能主控板音频配置文件 **/etc/backend_conf.xml** 已正确配置(系统默认已完成配置): ```xml ``` ### 板载麦克风录制 进行录制前,需要先停止 **PulseAudio** 服务: ```shell systemctl stop pulseaudio tinymix "TX DEC0 MUX" "SWR_MIC" tinymix "ADC2 ChMap" "SWRM_TX2_CH1" tinymix "TX SMIC MUX0" "SWR_MIC4" tinymix "TX_AIF1_CAP Mixer DEC0" "1" tinymix "ADC2_MIXER Switch" "1" tinymix "ADC2 MUX" "INP3" tinymix 'TX_AIF1_CAP Mixer DEC2' '1' agmcap /data/testMic3.wav -D 100 -d 101 -c 1 -r 48000 -i "CODEC_DMA-LPAIF_RXTX-TX-3" ``` #### 结束录制 按下“**Ctrl**” + “**Z**”结束录音: ```{image} images/image_Mt5bb1rAhoSx8zx4hRbcaZF0nid.webp :width: 773px :height: 367px ``` ### 耳机麦克风录制 ```shell systemctl stop pulseaudio tinymix "TX DEC0 MUX" "SWR_MIC" tinymix "TX SMIC MUX0" "SWR_MIC5" tinymix "DEC0_BCS Switch" "1" tinymix "TX_AIF1_CAP Mixer DEC0" "1" tinymix "ADC2 ChMap" "SWRM_TX2_CH2" tinymix "MBHC ChMap" "SWRM_TX3_CH3" tinymix "ADC2_MIXER Switch" "1" tinymix "ADC2 MUX" "INP2" tinymix "BCS Channel" "CH10" agmcap /data/rec2.wav -D 100 -d 101 -c 1 -r 48000 -i "CODEC_DMA-LPAIF_RXTX-TX-3" ``` ## 音频播放 板载扬声器未焊接,请使用外接耳机通道播放。 #### 耳机播放(3.5 mm耳机) ```shell systemctl stop pulseaudio tinymix "RX_MACRO RX0 MUX" "AIF1_PB" tinymix "RX_MACRO RX1 MUX" "AIF1_PB" tinymix "RX INT0_1 MIX1 INP0" "RX0" tinymix "RX INT1_1 MIX1 INP0" "RX1" tinymix "RX INT0 DEM MUX" "CLSH_DSM_OUT" tinymix "RX INT1 DEM MUX" "CLSH_DSM_OUT" tinymix "RX_COMP1 Switch" "1" tinymix "RX_COMP2 Switch" "1" tinymix "HPHL Switch" "1" tinymix "HPHR Switch" "1" tinymix "HPHL_RDAC Switch" "1" tinymix "HPHR_RDAC Switch" "1" agmplay /data/vvdn_ring.wav -D 100 -d 100 -i CODEC_DMA-LPAIF_RXTX-RX-0 -dkv 0xA2000002 ``` # PulseAudio架构 ## PulseAudio概述 PulseAudio是一款跨平台的、支持网络功能的音频服务,它从一个或多个音源源(进程或输入设备)接收声音输入,然后重定向声音到一个或多个槽(声卡,远程网络PulseAudio服务,或其他进程)。它与最底层的ALSA交互,并为应用程序提供统一的接口,从而实现多路音频混合、音频转发等高级功能。 ## 设备查看与管理 **1.查看可用输出设备(Sinks)** - 要查看系统当前可用的音频输出设备及其详细信息,可以使用以下命令。 - 此命令会列出所有可用的sink(输出设备)的索引(index)和名称(name)。输出示例: ```bash sh-5.2# pactl list short sinks ``` - 若要获取更详细的设备信息,请使用: ```bash sh-5.2# pactl list sinks ``` **2.查看输入设备(Sources)** - 类似地,你可以用以下命令查看音频输入设备(如麦克风): ```bash sh-5.2# pactl list short sources ``` - 若要获取更详细的设备信息,请使用: ```bash sh-5.2# pactl list sources ``` ## 音频录音 **1.板载MIC录音** ```bash pactl set-source-port 4 speaker-mic pactl -d 4 --file-format=wav output.wav ``` **2.耳机录音** ```bash pactl set-source-port 4 headset-mic parec -d 4 --file-format=wav output1.wav ``` ## 音频播放 **1.喇叭播放** ```bash pactl set-sink-port 1 speaker paplay output.wav ``` **2.耳机播放** ```bash pactl set-sink-port 1 headset paplay output1.wav ``` # 蜂窝语音通话 Weston 环境下无图形化拨号界面,通话控制通过 **qlril-api-test** 命令行工具完成。该工具可注册事件监听、拨号、接听及挂断电话。通话过程中的音频路由切换仍需通过 **PulseAudio** 命令 **pactl** 进行。 ## 测试准备与初始化 1. 确保 SIM 卡已正确插入,且模组已注册网络。 发送 **AT$QCSIMAPP=?** 检查网络连接状态 > AT$QCSIMAPP=? > $QCSIMAPP: 0,"SUB1","L" # 网络已连接 > $QCSIMAPP: 1,"SUB2","No Service" 2. 在拨号或接听前,使用 `pactl` 将音频通道切换到期望的设备。示例: ```plaintext # 查看当前音频设备 pactl list short sinks pactl list short sources # 设置为耳机通道 pactl set-source-port 4 headset-mic pactl set-sink-port 1 headset # 设置为板载mic录音,耳机播音 pactl set-source-port 4 speaker-mic pactl set-sink-port 1 headset ``` 3. 打开终端,执行以下命令启动 `qlril-api-test` 程序: ```plaintext qlril-api-test ``` ## 配置事件监听 为了能够接收来电、通话状态等事件,需要进行以下设置(以下编号对应程序内的命令索引): ```plaintext # 输入 10,开启事件监听器 > 10 # 输入 12,然后输入起始值 1000,再输入终止值 1070,开启注册事件监听功能 # (终止值可根据实际返回的最大值调整,SW可能增加新事件) > 12 > 1000 > 1070 # 输入 13,屏蔽编号在 1009~1009 范围内的消息事件(可根据需要调整) > 13 > 1009 > 1009 ``` ## 接听来电(被叫测试) 当辅助机拨打测试机电话时,`qlril-api-test` 窗口会上报来电事件,类似: ```{image} images/image_GGISbxLIkonuvuxZ4dtcQRfMnAh.webp :width: 524px :height: 510px ``` 此时执行以下操作接听: ```plaintext # 输入 44,接听来电 > 44 ``` 接听后,通话应建立。如果出现“通话无声”,请检查音频路由是否正确。 ## 挂断电话 通话结束后,执行: ```plaintext # 输入 43,然后选择 1(挂断当前通话) > 43 > 1 ``` 此时通话被挂断,界面应提示挂断成功。 ## 主动拨号(主叫测试) 若需主动拨号,可使用以下命令(假设号码为 10086): ```plaintext # 输入 43,然后输入电话号码 > 43 > 10086 ``` 拨号后,系统会发起呼叫,对方接听后即可通话。 ## 测试预期与实际情况 - 预期结果:来电上报信息清晰,`44` 可正常接听,通话建立,声音正常;挂断命令 `43->1` 可正常结束通话。 - 实际测试中:接听成功但可能出现通话无声的情况。此时请优先检查音频路由设置(是否正确选择了耳机和 MIC 源),并确认硬件连接完好。此问题通常与 PulseAudio 配置或 ALSA 混音器设置有关,研发可自行排查。 ---