摘要: 在VOIP的音频算法中,回音处理已经成为一个关系通话质量的主要问题。回声的产生在IP网络主要有两种:1.声学回声2.电路回声声学回声主要又分成以下几种:a ) 直接回声:由扬声器产生的声音未经任何反射直接进入麦克风b ) 间接回声: 由扬声器发出的声音经过多次反射后,再进入Mic对于第二种回声,拥有多路径,时变性的特点.是比较难处理的.由于IP网络下的传输的延迟较大,而一般情况下,对于人耳,如果声音延迟达到了10ms以上的话,那么回声就会越来越明显.一般来讲,VOIP中的声音延迟主要来自于几个方面:1. 编码延迟: 一般情况下编码算法在声音压缩时都会产生延迟,就我们采用的Speex来讲,延迟大 阅读全文
posted @ 2011-07-21 22:08 心随灵动 阅读(1697) 评论(0) 推荐(1) 编辑
摘要: view plaincopy to clipboardprint?// demo.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <speex/speex.h>#include <stdio.h>#include <ostream>#include <speex/speex_preprocess.h>#include <speex/speex_echo.h>#pragma comment( 阅读全文
posted @ 2011-07-21 22:07 心随灵动 阅读(3967) 评论(1) 推荐(0) 编辑
摘要: 在Speex(www.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。/**创建AEC对象*/SpeexEchoState *echo_state = speex_echo_state_init(frame_size, filter_length);frame_size 的取值最好是一个编码的frame大小, 在低带宽条件下,一般延迟20ms,而大小为160filter_length,最好是房间内反射时间的1/3如: 一个房间的反射时延 阅读全文
posted @ 2011-07-21 17:20 心随灵动 阅读(3302) 评论(0) 推荐(0) 编辑
摘要: 看到网上很多希望使用speex aec的, 似乎找不到win32下的例子, 我这里尝试做了一个, 效果还行, 使用上面是三路实时音频录下后, 在audacity中显示, 第一路为本地mic采集, 第二路为本地回放, 第三路为经过speex_echo_cancellation() 处理后的, 这个测试中, 为间断的读"1, 2, 3...", 图中选中的是 "2". capture到playback之间,大约差了1百多毫秒.下面开始叙述实现过程, 并附上源码.其实aec中最困难的问题是如何同步capture和playback, 一开始我也尝试用 speex 阅读全文
posted @ 2011-07-21 15:07 心随灵动 阅读(2114) 评论(0) 推荐(0) 编辑
摘要: Speex是近年来开发出的一套功能强大的语音引擎,能够实现高质量和低比特率的编码。它不仅提供了基于码激励线性预测(CELP)算法的编/解码模块,而且在其最新发布的版本中还提供了声音预处理和声学回声消除模块,为保障IP网络中的语音通信质量提供了技术手段。此外,Speex还具有压缩后的比特率低(2~44 kbps)的特点,并支持多种比特率。这些特点使得Speex特别适合VoIP的系统。虽然是开源的,但是使用的人还不是很多,网上的资料也很少,下面简单给大家介绍一下如何使用speex的API。一:编码流程使用Speex的API函数对音频数据进行压缩编码要经过如下步骤:1、定义一个SpeexBits类型 阅读全文
posted @ 2011-07-21 10:29 心随灵动 阅读(6102) 评论(1) 推荐(0) 编辑