语音的前置处理(一)
1.简介
语音在采集和传输过程中,由于语音源的差异、信道的衰减、噪声的干扰以及远近效应,导致信号幅度相差很大。所有在语音处理之前我们需要对语音数据进行前置处理,包括预处理(AGC、VAD、回音消除)、重采样和噪声抑制。
所有的代码都是基于speex开源库,具体内容可以参考http://speex.org/。
本开发手册暂时只提供AGC的接口和测试代码,其他陆续添加进来。
2.接口说明
预处理模块包括自动增益控制、静音检测和回音消除。以下是接口函数,具体参考speex\ speex_preprocess.h。
函数名称 |
功能简介 |
speex_preprocess_state_init |
创建预处理器 |
speex_preprocess_state_destroy |
销毁预处理器 |
speex_preprocess_run |
处理一帧数据 |
speex_preprocess |
处理一帧数据(废弃的) |
speex_preprocess_estimate_update |
更新预处理器 |
speex_preprocess_ctl |
设置和读取预处理器的参数 |
2.1.1 speex_preprocess_state_init
函数原形 |
SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate); |
功能 |
创建预处理器 |
参数 |
Frmae_size [in]每帧的大小(建议帧长为20ms) Sample_rate [in]采样率(支持8k、16k、44k) |
返回值 |
成功返回预处理器指针,失败返回NULL |
说明 |
加入是16k的语音数据,帧长20ms等于320个采样 |