3 降噪
降噪模块先将音频转换到频域,估计噪声谱,完成降噪,最后再转换到时域。
降噪模块每次处理一个音频帧,一个音频帧包含 AUDIO_DENOISE_BLOCK_LEN 个采样。
音频采样率支持 8 kHz、16 kHz,推荐使用 8 kHz。
3.1 使用方法
初始化对象
audio_denoise_context_t *audio_denoise_init( void *buf, uint32_t sample_rate);buf是用来存放对象的内存空间,其大小为AUDIO_DENOISE_CONTEXT_MEM_SIZE字节。处理音频
void audio_denoise_process( audio_denoise_context_t *ctx, // 对象 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 内存,例如:
audio_denoise_process(ctx_left_ch, ..., ..., scratch);
audio_denoise_process(ctx_right_ch, ..., ..., scratch);