3 降噪
降噪模块先将音频转换到频域,估计噪声谱,完成降噪,最后再转换到时域。
降噪模块每次处理一个音频帧,一个音频帧包含 AUDIO_DENOISE_BLOCK_LEN
个采样。
音频采样率支持 8 kHz、16 kHz,推荐使用 8 kHz。
3.1 使用方法
初始化对象
*audio_denoise_init( audio_denoise_context_t void *buf, uint32_t sample_rate);
buf
是用来存放对象的内存空间,其大小为AUDIO_DENOISE_CONTEXT_MEM_SIZE
字节。处理音频
void audio_denoise_process( *ctx, // 对象 audio_denoise_context_t const int16_t *in, // 音频输入 int16_t *out, // 降噪输出 void *scratch); // 临时内存
in
、out
各自包含AUDIO_DENOISE_BLOCK_LEN
个采样。 降噪输出out
可以与in
相同,数据原地处理(in-place)。scratch
指向用来存放中间结果的内存空间,其大小为AUDIO_DENOISE_SCRATCH_MEM_SIZE
字节。
一个降噪对象只能处理一个声道的数据。如果需要同时处理多个声道,则需要创建多个对象。
如果并发调用多个降噪对象的 audio_denoise_process
接口,那么各对象需要使用独立的 scratch
;
如果顺序调用多个降噪对象的 audio_denoise_process
接口,那么可以使用同一块 scratch
内存,例如:
(ctx_left_ch, ..., ..., scratch);
audio_denoise_process(ctx_right_ch, ..., ..., scratch); audio_denoise_process