1.简介
语音在采集和传输过程中,由于语音源的差异、信道的衰减、噪声的干扰以及远近效应,导致信号幅度相差很大。所有在语音处理之前我们需要对语音数据进行前置处理,包括预处理(AG47035e2381fc48bdc6b3eea898d85dee、VAD、回音消除)、重采样和噪声抑制。
所有的代码都是基于speex开源库,具体内容可以参考291d2afd5f2ada1fc43694cc7c1ab012。
本开发手册暂时只提供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个采样
|
2.1.2 speex_preprocess_state_destroy
函数原形
|
void speex_preprocess_state_destroy(SpeexPreprocessState *st);
|
功能
|
销毁预处理器
|
参数
|
St [in]处理器指针
|
返回值
|
Void
|
说明
|
|
2.1.3 speex_preprocess_run
函数原形
|
int speex_preprocess_run(SpeexPreprocessState *st, spx_int16_t *x);
|
功能
|
处理一帧语音数据
|
参数
|
St [in]处理器指针
X [in|out]数据缓存,处理后的数据也存入该缓存中
|
返回值
|
如果VAD打开,返回值为1表示有语音,为0表示静音或者噪音
|
说明
|
|
2.1.4 speex_preprocess
函数原形
|
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net]
本文出处:audiobuf 作者:秩名
原文
|
------分隔线----------------------------
| |