音频模块

Supported ICs: [RTL8735C]

概述

audio_module 提供 AP 侧音频采集与播放功能,通过内建音频硬件支持模拟麦克风 (AMIC) 与数字麦克风 (DMIC) 输入,并经由 DAC 驱动扬声器或耳机输出。

在多媒体框架中,音频模块可作为 source(采集)将音频数据送入上游处理单元(如 AAC 编码器),亦可作为 sink(播放)接收来自网络或本地播放的解码音频。

[Audio Source] --> [audio_module] --> SISO --> [aac_module] --> ...
   (capture)       (DMA/ALC)

... --> [aad_module] --> SISO --> [audio_module] --> [Speaker/Headphone]
                                                      (playback)
audio_params_t audio_params;
mm_module_ctrl(audio_ctx, CMD_AUDIO_GET_PARAMS, (int)&audio_params);
audio_params.sample_rate    = ASR_16KHZ;
audio_params.channel        = 1;
audio_params.use_mic_type   = USE_AUDIO_AMIC;
audio_params.mic_gain       = MIC_20DB;
audio_params.avsync_en      = 1;
mm_module_ctrl(audio_ctx, CMD_AUDIO_SET_PARAMS, (int)&audio_params);
mm_module_ctrl(audio_ctx, MM_CMD_SET_QUEUE_LEN, 6);
mm_module_ctrl(audio_ctx, MM_CMD_INIT_QUEUE_ITEMS, MMQI_FLAG_STATIC);
mm_module_ctrl(audio_ctx, CMD_AUDIO_APPLY, 0);

sample_rate

选择音频采样率。

常量

数值

说明

ASR_8KHZ

0

8000 Hz,窄带语音

ASR_16KHZ

1

16000 Hz,宽带语音

ASR_32KHZ

2

32000 Hz

ASR_44p1KHZ

3

44100 Hz,CD 质量

ASR_48KHZ

4

48000 Hz

ASR_88p2KHZ

5

88200 Hz

ASR_96KHZ

6

96000 Hz

备注

ASP 算法 (AEC、NS、AGC) 仅支持 8 kHz 与 16 kHz。使用更高采样率时会绕过 ASP 处理。

word_length

常量

数值

说明

WL_16BIT

0

16 位 PCM (默认)

WL_24BIT

1

24 位 PCM

channel

声道数:1(单声道)或 2(立体声)。使用 USE_AUDIO_STEREO_DMIC 时,两个声道默认会合并为单一单声道串流。

use_mic_type

选择麦克风输入类型。

常量

数值

说明

USE_AUDIO_AMIC

0

模拟麦克风

USE_AUDIO_LEFT_DMIC

1

左数字麦克风

USE_AUDIO_RIGHT_DMIC

2

右数字麦克风

USE_AUDIO_STEREO_DMIC

3

立体声数字麦克风

mic_gain

模拟麦克风输入增益(仅在 use_mic_type = USE_AUDIO_AMIC 时有效)。

常量

数值

说明

MIC_0DB

0

0 dB 增益

MIC_20DB

1

20 dB 增益

MIC_30DB

2

30 dB 增益

MIC_40DB

3

40 dB 增益 (默认)

dmic_l_gain / dmic_r_gain

数字麦克风增强增益(仅在使用 DMIC 时有效)。左右声道可独立设置。

常量

数值

说明

DMIC_BOOST_0DB

0

0 dB 增益 (默认)

DMIC_BOOST_12DB

1

12 dB 增益

DMIC_BOOST_24DB

2

24 dB 增益

DMIC_BOOST_36DB

3

36 dB 增益

ADC_gain

ADC 数字音量控制输入(模拟转数字)增益。范围:-17.625 dB (0x00) ~ 30 dB (0x7F)。默认值:0x66(约 20 dB)。

可在运行时通过 CMD_AUDIO_SET_ADC_GAIN 修改。

DAC_gain

DAC 数字音量控制输出(数字转模拟)增益。范围:-65.625 dB (0x00) ~ 0 dB (0xAF)。默认值:0xAF (0 dB)。

可在运行时通过 CMD_AUDIO_SET_DAC_GAIN 修改。

备注

应优先配置数字增益。仅在数字增益不足以满足需求时,才使用模拟增益 (mic_gain)。过大的模拟增益会引入明显的噪声。

mix_mode

设为 1 时,模块会将最多 4 个 PCM 输入串流混音为单一输出。这可实现多串流混音(例如本地播放 + 网络音频)。默认值:0(单一输入)。

hpf_set

高通滤波器截止频率索引 (0–7)。截止频率约为:

fc ≈ 5e-3 / (hpf_fc + 1) × fs

默认值:0(HPF 关闭)。用于滤除直流偏移与低频噪声。

enable_record

设为 1 以启用音频录制数据路径。默认值:0。

avsync_en

设为 1 以启用硬件对齐的时间戳,用于音视频同步。在 MIMO 管线(MP4 录制、RTSP 串流)中同时使用音频与视频时需要启用此功能。

音频模块配置时机

请在 CMD_AUDIO_APPLY 之前配置 audio_params_t。应用程序启动后,仅使用音频控制路径可安全处理的命令进行运行时修改。

若需要在串流运行中修改采样率、麦克风类型、声道数或 HPF 设置,请更新 audio_params_t 并调用 CMD_AUDIO_SET_RESET 重新初始化音频编解码器:

audio_params.sample_rate = ASR_48KHZ;
mm_module_ctrl(audio_ctx, CMD_AUDIO_SET_PARAMS, (int)&audio_params);
mm_module_ctrl(audio_ctx, CMD_AUDIO_SET_RESET, 0);  // 重新初始化
mm_module_ctrl(audio_ctx, CMD_AUDIO_SET_TRX, 1);    // 重新启动 TX+RX

客户常见需求速查

需求

支持时机

建议做法

修改采样率

仅 init-time

audio_params_t 中设置 sample_rate,然后调用 CMD_AUDIO_SET_RESET 重新初始化编解码器。

修改麦克风类型

仅 init-time

audio_params_t 中设置 use_mic_type,然后调用 CMD_AUDIO_SET_RESET 重新初始化编解码器。

调整麦克风音量

支持 runtime 修改

使用 CMD_AUDIO_SET_ADC_GAIN,参数值为 0x00–0x7F,对应 −17.625 dB 至 30 dB。

调整扬声器音量

支持 runtime 修改

使用 CMD_AUDIO_SET_DAC_GAIN,参数值为 0x00–0xAF,对应 −65.625 dB 至 0 dB。

静音 / 取消静音麦克风

支持 runtime 操作

使用 CMD_AUDIO_SET_MIC_ENABLE,0 为静音(数据路径填零),1 为取消静音。

静音 / 取消静音扬声器

支持 runtime 操作

使用 CMD_AUDIO_SET_SPK_ENABLE,0 为静音(数据路径填零),1 为取消静音。

启动 / 停止采集

支持 runtime 操作

使用 CMD_AUDIO_SET_RX,0 为停止,1 为启动。

启动 / 停止播放

支持 runtime 操作

使用 CMD_AUDIO_SET_TX,0 为停止,1 为启动。

启用 / 禁用 AEC

支持 runtime 操作

使用 CMD_AUDIO_RUN_AEC,0 为禁用,1 为启用。动态切换 AEC 处理。

修改 AEC 强度

支持 runtime 修改

使用 CMD_AUDIO_SET_AEC_LEVEL,参数范围为 1–50,值越高消除越积极。

启用 / 禁用 NS

支持 runtime 操作

使用 CMD_AUDIO_RUN_NS,0 为禁用,1–3 为不同程度的噪声抑制。

启用 / 禁用 AGC

支持 runtime 操作

使用 CMD_AUDIO_RUN_AGC,0 为禁用,1–3 为不同程度的自动增益控制。

更新 EQ 系数

支持 runtime 修改

更新 audio_params_t 中的 EQ 字段,然后调用 CMD_AUDIO_MICEQ_RESETCMD_AUDIO_SPKEQ_RESET 生效。

修改 HPF 截止频率

仅 init-time

audio_params_t 中设置 hpf_set,然后调用 CMD_AUDIO_SET_RESET 重新初始化编解码器。

CMD_AUDIO_* 参数速查表

以下三张表按配置时机列出所有音频相关参数,以及在 AP 应用代码中使用的对应 command。

仅 Init-time — 在 CMD_AUDIO_APPLY 之前于 audio_params_t 中设置。运行时修改需要调用 CMD_AUDIO_SET_RESET

参数

audio_params_t 字段

说明

采样率

sample_rate

ASR_8KHZ / ASR_16KHZ / ASR_32KHZ / ASR_44p1KHZ / ASR_48KHZ / ASR_88p2KHZ / ASR_96KHZ

字长

word_length

WL_16BITWL_24BIT

声道数

channel

1(单声道)或 2(立体声)

麦克风类型

use_mic_type

USE_AUDIO_AMIC / USE_AUDIO_LEFT_DMIC / USE_AUDIO_RIGHT_DMIC / USE_AUDIO_STEREO_DMIC

AMIC 模拟增益

mic_gain

MIC_0DB / MIC_20DB / MIC_30DB / MIC_40DB

DMIC 左增强

dmic_l_gain

DMIC_BOOST_0DB / DMIC_BOOST_12DB / DMIC_BOOST_24DB / DMIC_BOOST_36DB

DMIC 右增强

dmic_r_gain

与左 DMIC 相同选项

HPF 截止

hpf_set

0–7。fc ≈ 5e-3 / (hpf_fc + 1) × fs

混音模式

mix_mode

0 = 单一输入,1 = 最多 4 个输入混音

录制路径

enable_record

0 = 禁用,1 = 启用

音视频同步

avsync_en

0 = 禁用,1 = 启用(用于 MP4 / RTSP)

麦克风 EQ(5 组)

mic_l_eq[5] / mic_r_eq[5]

每组双二阶滤波器的启用开关与系数(请参阅 EQ 设置)

扬声器 EQ(5 组)

spk_l_eq[5]

每组双二阶滤波器的启用开关与系数(请参阅 EQ 设置)

Init + Runtime — 可在 CMD_AUDIO_APPLY 前于 audio_params_t 中设置初始值,并在串流启动后使用对应命令更新。

Init 字段

运行时 CMD

API 函数

说明

ADC_gain

CMD_AUDIO_SET_ADC_GAIN

audio_adc_digital_vol()

ADC 数字音量(−17.625 至 30 dB)

DAC_gain

CMD_AUDIO_SET_DAC_GAIN

audio_dac_digital_vol()

DAC 数字音量(−65.625 至 0 dB)

RX ASP 参数

CMD_AUDIO_SET_RXASP_PARAM

设置 RX ASP 配置(所有 AEC/AGC/NS 设置)

TX ASP 参数

CMD_AUDIO_SET_TXASP_PARAM

设置 TX ASP 配置(所有 AGC/NS 设置)

麦克风 EQ

CMD_AUDIO_MICEQ_RESET

audio_input_l_eq() / r_eq()

从当前的 audio_params_t 重新应用麦克风 EQ

扬声器 EQ

CMD_AUDIO_SPKEQ_RESET

audio_output_l_eq()

从当前的 audio_params_t 重新应用扬声器 EQ

仅 Runtime — 仅在 CMD_AUDIO_APPLY 之后可用。这些在 audio_params_t 中没有对应的初始化设置。

CMD

参数 / 用法

说明

CMD_AUDIO_SET_MIC_ENABLE

0 = 静音,1 = 取消静音

静音/取消静音麦克风输入(数据路径填零)

CMD_AUDIO_SET_SPK_ENABLE

0 = 静音,1 = 取消静音

静音/取消静音扬声器输出(数据路径填零)

CMD_AUDIO_SET_TX

0 = 停止,1 = 启动

启动 / 停止 TX(播放),不影响 RX

CMD_AUDIO_SET_RX

0 = 停止,1 = 启动

启动 / 停止 RX(采集),不影响 TX

CMD_AUDIO_SET_TRX

0 = 停止,1 = 启动

同时启动 / 停止 TX 与 RX

CMD_AUDIO_RUN_AEC

0 = 禁用,1 = 启用

动态启用 / 禁用 AEC 处理

CMD_AUDIO_RUN_NS

0 = 禁用,1–3 = 积极程度

动态启用 / 禁用 NS 处理

CMD_AUDIO_RUN_AGC

0 = 禁用,1–3 = 积极程度

动态启用 / 禁用 AGC 处理

CMD_AUDIO_RUN_VAD

0 = 禁用,1 = 启用

动态启用 / 禁用语音活动检测

CMD_AUDIO_SET_AEC_LEVEL

1–50

设置 AEC 消除强度(越高越积极)

CMD_AUDIO_SET_AEC_ENABLE

0 = 禁用,1 = 启用

决定下次重置时是否启用 AEC

CMD_AUDIO_SET_NS_ENABLE

0–3

决定下次重置时是否启用 NS

CMD_AUDIO_SET_AGC_ENABLE

0–3

决定下次重置时是否启用 AGC

CMD_AUDIO_SET_AEC_MODE

AEC 模式值

设置 AEC 模式(仅 NEWAEC)

CMD_AUDIO_SET_MESSAGE_LEVEL

0–3

设置音频调试日志级别(0 = 无,1 = 全部,2 = 警告+错误,3 = 仅错误)

CMD_AUDIO_SET_RESET

0

使用当前的 audio_params_t 重新初始化音频编解码器

CMD_AUDIO_SET_SAMPLERATE

ASR 常量

更新参数中的采样率(需 CMD_AUDIO_SET_RESET

CMD_AUDIO_GET_FRAMESIZE_MS

返回 int(通过指针)

获取音频帧持续时间(毫秒)

CMD_AUDIO_GET_FIRST_DATA_TS

返回 uint32_t(通过指针)

获取第一个数据帧的时间戳(用于音视频同步)

CMD_AUDIO_FORCE_DEINIT

0

强制取消初始化音频编解码器

Audio Codec

音频编码与解码由独立的 MMF 模块提供,详细说明请参阅 MMF 开发指南

  • aac_module — AAC 编码器(PCM 转 AAC 比特流)

  • aad_module — AAC 解码器(AAC 比特流转 PCM)

比特率选择指南

采样率

比特率

使用案例

8 kHz

16 kbps

语音,窄带

16 kHz

24–32 kbps

语音,宽带

24 kHz

48 kbps

优质音频

48 kHz

64–128 kbps

高质量立体声

备注

较高比特率可提供更好的质量,但需要更多带宽。对于实时串流应用,请根据网络条件选择比特率。

音频优化

本节介绍音频的软件和硬件优化方案。

音频设置

增益设置

模拟麦克风增益设置

音频模拟输入增益可分为模拟增益和数字增益。

模拟麦克风增益

支持 0、20、30、40 dB 的增益优化。

用户可使用 audio_mic_analog_gain 或设置音频模块的参数 mic_gain 来设置。

ADC 增益 - ADC 音量

ADC 增益可用于设置输入 (模拟至数字) 增益。

范围为 -17.625dB (0x00) ~ 30dB (0x7F)。

用户可使用函数 audio_adc_digital_vol 或使用 CMD_AUDIO_SET_ADC_GAIN 来控制音频模块。

数字增益配置可用于控制音频输出增益。客户可通过 DAC 音量设置合理的增益值,以获得适当的音频输出音量。基本上将增益设置为 0dB (0xAF),输出振幅将符合开发板音频输出音量要求。请注意,当输出增益设置过大时会发生声音断裂。

如果模拟增益过大,会影响声音效果且噪声会变得明显。

建议: 客户应首先配置数字增益。如果需要增加音频信号增益但数字增益已达到最大范围,则再配置模拟增益。

数字麦克风增益设置

麦克风

说明

左麦克风增益

左 DMIC 增益支持 0、12、24、36 dB 增益优化。

使用 audio_l_dmic_gain 或设置 dmic_l_gain 参数。

右麦克风增益

右 DMIC 增益支持 0、12、24、36 dB 增益优化。

使用 audio_r_dmic_gain 或设置 dmic_r_gain 参数。

DAC 增益 - DAC 音量

DAC 增益可用于设置输出数字 (至模拟) 增益。

范围为 -65.625dB (0x00) ~ 0dB (0xAF)。

用户可使用函数 audio_dac_digital_vol 或使用 CMD_AUDIO_SET_DAC_GAIN 来控制音频模块。

HPF 设置

提供了一个高通滤波器让用户过滤低频噪声。这是用来过滤直流电源产生的噪声,建议设置默认值 0。如果用户想使用其他滤波器,请参考 EQ 设置。

以下是函数:

void audio_adc_l_hpf(audio_t *obj, BOOL en, audio_hpf_fc hpf_fc);

参数说明:

参数

说明

obj

应用软件中定义的音频对象

en

是否启用高通滤波器

hpf_fc

设置截止频率,值为 0~7; fc ~= 5e-3 / (hpf_fc + 1) * fs

EQ 设置

提供了五组双二阶滤波器,分别用于左数字麦克风 (模拟麦克风)、右数字麦克风和音频输出。

一组双二阶滤波器可通过寄存器设置切换为高通、低通、带通、陷波峰值、低架和高架滤波器。

以下是使用 EQ 的提示:

选择双二阶滤波器

用户可先使用以下网站配置偏好的滤波器类型、采样率、截止频率、Q 值和增益:

https://www.earlevel.com/main/2021/09/02/biquad-calculator-v3/

获取寄存器值

用户可使用 AmebaPro3_EQ_tool.exe 生成寄存器设置。例如,如果选择截止频率 200Hz 和 Q 值 0.707 的高通滤波器,用户可以输入设置并获取此设置的寄存器值 (0x1e45618, 0x1c000000, 0x2000000, 0x3c72d61, 0x1e35d500)。

设置寄存器值

获取寄存器值后,用户可使用以下函数应用滤波器设置:

void audio_input_l_eq(audio_t *obj, audio_eq eq, BOOL en, u32 h0, u32 b0, u32 b1, u32 a0, u32 a1);
void audio_input_r_eq(audio_t *obj, audio_eq eq, BOOL en, u32 h0, u32 b0, u32 b1, u32 a0, u32 a1);
void audio_output_l_eq(audio_t *obj, audio_eq eq, BOOL en, u32 h0, u32 b0, u32 b1, u32 a0, u32 a1);

参数说明:

参数

说明

obj

应用软件中定义的音频对象

eq

选择 EQ 编号,可为 0~4

en

是否启用 EQ 滤波器

h0, b0, b1, a0, a1

从 AmebaPro3_EQ_tool.exe 获取的寄存器值

使用 MMF 设置时,用户也可以在 audio_params_t 中设置 EQ 参数。

其他设置

命令

说明

CMD_AUDIO_SET_RESET

重新初始化音频设置以及 ASP 算法。 修改设置后需重置音频

CMD_AUDIO_SET_SAMPLERATE

设置采样率。重置后才能应用新设置

CMD_AUDIO_SET_TRX

停止/启动 TX 和 RX 而不重新初始化

CMD_AUDIO_SET_MIC_ENABLE

静音/取消静音麦克风输入 (设为 0)

CMD_AUDIO_SET_SPK_ENABLE

静音/取消静音扬声器输出 (设为 0)

备注

如果使用音频编解码器,请确保采样率与音频编解码器使用的采样率相符。

音频 ASP 算法

下表显示一些常见的音频问题及其原因,以及使用 ASP 算法的调整方式。

情况

算法

案例

失真

AGC

  • 环境声音过高

  • 耳机前级增益过大

音量过低

AGC

  • 原始输入音量过低

  • AGC 未正常运作

回声或啸叫

AEC

  • 发送端和接收端设备距离太近

  • 音量过大或麦克风过于灵敏

  • AEC 未开启

  • AEC 参数设置不正确

间歇性语音

AEC, NS

  • NS 或 AEC 抑制过强

噪声本底

NS

  • NS 模式设置过低

  • 由环境造成,NS 无法有效处理

机械声

网络、设备

  • 较差的网络环境

  • 设备采样不稳定或硬件问题

备注

音频信号处理 (ASP) 基于数字音频信号。如果音频信号已经失真,ASP 无法保证获得预期的结果。

启用 ASP 算法

要使用 ASP 算法,用户需要在配置中启用 ASP 库。

在 module_audio.h 中启用 ENABLE_ASP,并使用 3A (AGC: 自动增益控制;ANS: 自适应噪声抑制;AEC: 声学回声消除) 算法以获得更好的音频效果。

备注

参数、采样率和麦克风增益,以及 NS、AEC、AGC 和其他算法的初始化将在 CMD_AUDIO_APPLY 和 CMD_AUDIO_SET_RESET 时设置。

要启用 ASP 功能,用户可以使用 ASP.h 中的以下参数:

// =================== 启用 ASP 算法 (ASP.h) ================
typedef struct CTNS_cfg_s {
    int16_t NS_EN;
    int NSLevel;
    int16_t HPFEnable;
    int16_t QuickConvergenceEnable;
    int16_t Reserve1;
} CTNS_cfg_t;

typedef struct CTAGC_cfg_s {
    int16_t AGC_EN;
    CT_AGC_MODE AGCMode;
    int16_t ReferenceLvl;
    int16_t RatioFormat;    // Ratio format: 0 => integer, range 1~50, 1 => 8.8 fix point, range 26~50*256 (mapping 26/256~50)
    int16_t AttackTime;
    int16_t ReleaseTime;
    int16_t Ratio[3];
    int16_t Threshold[3];   // Threshold1, Threshold2, NoiseGateLvl
    int16_t KneeWidth;
    int16_t NoiseFloorAdaptEnable;
    int16_t RMSDetectorEnable;
    int16_t MaxGainLimit;
} CTAGC_cfg_t;

typedef struct CTAEC_cfg_s {
    int16_t AEC_EN;
    int16_t EchoTailLen;
    int16_t CNGEnable;
    int16_t PPLevel;
    int16_t DTControl;
    int16_t ConvergenceTime;
    int16_t Reserve1;
} CTAEC_cfg_t;

typedef struct VQE_SND_STATE_s {
    int16_t DoA;              // in degrees
    int16_t ERLE;             // in dB
    int16_t SinLvldB;         // in dBFs
    int16_t SoutLvldB;        // in dBFs after AGC (if AGC is enabled)
    int16_t DTState;          // 0 = single talk or 1 = double talk
    int16_t HCDetectState;    // 1 = detected, 0 = not detected
    uint8_t AECRun;
    uint8_t AGCRun;
    uint8_t NSRun;
    uint8_t BFRun;
    uint8_t Reserve1;
    uint8_t Reserve2;
    uint8_t Reserve3;
    uint8_t Reserve4;
} VQE_SND_STATE_t;

typedef struct VQE_RCV_STATE_s {
    int16_t RinLvldB;
    int16_t RoutLvldB;
    int16_t HCDetectState;    // 1 = detected, 0 = not detected
    uint8_t AGCRun;
    uint8_t NSRun;
    uint8_t Reserve1;
    uint8_t Reserve2;
    uint8_t Reserve3;
    uint8_t Reserve4;
} VQE_RCV_STATE_t;

参数详解

CTAEC_cfg_t (AEC 配置)

参数

说明

AEC_EN

在 AEC 过程中启用 AEC 模块

EchoTailLen

回声消除过程所依赖的缓冲区长度;设置越高 CPU 使用率越高 建议 16KHz 使用 64,8KHz 使用 128。支持 32/64/128

CNGEnable

启用舒适噪声生成,设置 0 或 1

PPLevel

AEC 的细部调整值;越高阶回声消除越积极 (高阶也可能消除 更多本地端信号)。支持 1~50

DTControl

AEC 的粗略调整值,支持 1 (允许一些低残余)、2 (可能衰减 最多 6dB 本地端)、3 (可能衰减最多 9dB 本地端)

ConvergenceTime

AEC 初始化收敛时间 (毫秒),支持 100~1000

CTAGC_cfg_t (AGC 配置)

参数

说明

AGC_EN

在 AGC 过程中启用 AGC 模块

AGCMode

设置 AGC 模式;值为 0 (CT_ALC)、1 (CT_LIMITER)

ReferenceLvl

输出目标参考 level (dBFS),支持 0,1,…,30 (0,-1,…,-30dBFs)

RatioFormat

调整比率的设置格式,0 => 整数 (范围 1~50), 1 => 8.8 定点 (范围 26~50*256)

AttackTime

信号振幅压缩变化的转换时间,支持 1~500

ReleaseTime

信号振幅提升变化的转换时间,支持 1~500

Ratio[3]

支持三个比率用于调整 AGC 增益曲线

Threshold[3]

支持三个阈值用于调整 AGC 增益曲线;第一和第二项指 AGC_Threshold1 和 AGC_Threshold2,支持 0~81; 最后一项指 AGC_NoiseGateLvl,支持 50~90

KneeWidth

调整 AGC 增益曲线的拐点宽度,支持 0~10

NoiseFloorAdaptEnable

是否在 AGC 上使用噪声检测;启用此配置时 AGC 将忽略 一些背景噪声,设置 0 或 1

RMSDetectorEnable

设为 0 用于峰值检测,设为 1 用于 RMS 检测

MaxGainLimit

AGC 将应用的最大增益 (dB),支持 6,12,18,24,30

CTNS_cfg_t (NS 配置)

参数

说明

NS_EN

在 NS 过程中启用 NS 模块

NSLevel

设置 NS 过程的积极程度 (dB,越高越积极),支持 3~35

HPFEnable

是否在 NS 之前启用 HPF,设置 0 或 1

QuickConvergenceEnable

设置 NS 收敛速度,1 为立即抑制 (快速),0 为平滑抑制

ASP 算法使用

以下是 ASP 算法的配置:

配置

说明

支持采样率

8K 和 16K 音频

默认设置

module_audio.c 中的 default_rx_asp_paramsdefault_tx_asp_params

获取 RX ASP 参数

使用 CMD_AUDIO_GET_RXASP_PARAM

获取 TX ASP 参数

使用 CMD_AUDIO_GET_TXASP_PARAM

设置 RX ASP 参数

使用 CMD_AUDIO_SET_RXASP_PARAM

设置 TX ASP 参数

使用 CMD_AUDIO_SET_TXASP_PARAM

启用 AGC (RX/TX)

agc_cfg.AGC_EN 设为 1 启用,0 禁用

启用 NS (RX/TX)

ns_cfg.NS_EN 设为 1 启用,0 禁用

启用 AEC (RX)

aec_cfg.AEC_EN 设为 1 启用,0 禁用

AEC 设置

AEC 算法包含三个部分:延迟调整策略、线性回声估计和非线性回声抑制。

命令

说明

CMD_AUDIO_RUN_AEC

动态切换 AEC_process() 的使用

CMD_AUDIO_SET_AEC_ENABLE

决定在音频重置期间是否启用 AEC_init()

CMD_AUDIO_SET_AEC_LEVEL

可设置消除强度

NS 设置

NS 算法旨在减少噪声或环境声音,因此建议在其他 ASP 算法之前使用。

命令

说明

CMD_AUDIO_SET_NS_ENABLE

决定在音频重置期间是否启用 NSx_init()

CMD_AUDIO_RUN_NS

动态切换 NSx_process() 的使用

AGC 设置

AGC 算法用于平衡串流音频的音量。

命令

说明

CMD_AUDIO_SET_AGC_ENABLE

决定在音频重置期间是否启用 AGC_init()

CMD_AUDIO_RUN_AGC

动态切换 AGC_process() 的使用

关于媒体示例的使用方式,请参考 媒体示例