织梦CMS - 轻松建站从此开始!

罗索实验室

当前位置: 主页 > 流媒体开发 > 流媒体开发 >

语音的前置处理

落鹤生 发布于 1970-01-01 08:00 点击:次 
语音在采集和传输过程中,由于语音源的差异、信道的衰减、噪声的干扰以及远近效应,导致信号幅度相差很大。所有在语音处理之前我们需要对语音数据进行前置处理,包括预处理(AGC、VAD、回音消除)、重采样和噪声抑制。
TAG:

1.简介

语音在采集和传输过程中,由于语音源的差异、信道的衰减、噪声的干扰以及远近效应,导致信号幅度相差很大。所有在语音处理之前我们需要对语音数据进行前置处理,包括预处理(AG47035e2381fc48bdc6b3eea898d85deeVAD、回音消除)、重采样和噪声抑制。

所有的代码都是基于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_sizeint sampling_rate);

功能

创建预处理器

参数

Frmae_size   [in]每帧的大小(建议帧长为20ms

Sample_rate  [in]采样率(支持8k16k44k

返回值

成功返回预处理器指针,失败返回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 *stspx_int16_t *x);

功能

处理一帧语音数据

参数

St           [in]处理器指针

X            [in|out]数据缓存,处理后的数据也存入该缓存中

返回值

如果VAD打开,返回值为1表示有语音,为0表示静音或者噪音

说明

 

 

2.1.4  speex_preprocess

函数原形

本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net]
本文出处:audiobuf 作者:秩名 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
将本文分享到微信
织梦二维码生成器
推荐内容