使用Speex中的AEC模块,提高声音质量

android speex AEC 回音消除 android speex AEC 回音消除。 有时候喇叭声音会被mic录制进去,就会产生回音数据,这是非常让人头疼的,所以去回音在音视频应用中非常重要。 现在主流的回音消除手段有android自带api效果很好,如果其他平台就要使用c库了。有哪些c库具备这个功能webrtc 、 speex等。他们都是开源代码,而且后者还没有专利保护可以随意开鲁。 今天介绍的就是speex方法消除回声。 那么sp... 阅读详情

在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,而大小为160
filter_length,最好是房间内反射时间的1/3
如: 一个房间的反射时延为300ms
    那么这个filter_length就最好是100ms(这个长度又被称为tail length).

而其中filter_length的设定是一个关键。

/*
*执行AEC
*/
speex_echo_cancel(echo_state, input_frame, echo_frame, output_frame, residue);

其中:
input_frame: 就是被声卡捕捉到的声音
echo_frame: 是由扬声器播放出的声音,这个声音是需要从 input_frame中抵消的声音.

output_frame 是处理完以后输出的声音

residue是一个可选参数,如果不使用可以将之设置为NULL, 也可以通过preprocessor 来控制

问题的关键是 处理input和echo 之间的关系,
也就是说在捕捉到的信号和播放的信号之间的延迟必须足够的小,才可以提高效率.

writetosndcard(echo_frame, frame_size)
readfromsndcard(input_frame, frame_size)
speex_echo_cancel(echo_state, input_frame, echo_frame, output_frame, residue)
如果你想要尽可能的减小信号中的回音,那么可以将residue这个参数设置为噪音参数.

我相信在大多数情况下,都是因为声音捕捉和声音播放之间的同步问题没有处理好,导致的音频质量下降。

/*
*销毁和复位
*/
speex_echo_state_destroy(echo_state);

speex_echo_state_reset(echo_state);
不再复述了!

说明:
据说在Speex的最新的1.2beta版本上,Speex提供了可选择的,简化的API,来提高echo执行过程中的同步问题。
这些,我会在以后的文章中在讨论。

===========
bluez
keo321#msn.com
===========

speex aec回声消除效果调研 speex aec回声消除效果测试本次测试以采样率44100,帧长882,对应时长为20ms(speex推荐时长为20ms)麦克风采集的PCM波形图:远端传输来用来播放的PCM波形图:1.当声音对齐错位范围在0.01s以内时,回声消除处理效果如下波形所示:从波形图中可以看出,回声基本已经被消除,但是非回声部分的声音也已经被“误杀”,使得声音质量明显被大大降低。2.当mic麦克风采样PCM数据比即将... 阅读详情

相关推荐

音频(四) - 音频压缩(Speex使用&Opus简介)

版权声明:本文为原创文章,未经允许不得转载 博客地址:http://blog.youkuaiyun.com/kevindgk GitHub地址:https://github.com/KevinDGK/MyAudioDemo 一简介 二局域网语音配置 三Speex 1 简介 2 技术特点 3 开发-语音压缩 4 相关计算 四Opus - 音频编解码器中的瑞士军刀 1 简介 2 技术 3

一路向东 2万+

如何使用Speex中的AEC模块,提高声音质量

如何使用Speex中的AEC模块,提高声音质量    在Speex(www.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。/**创建AEC对象*/SpeexEchoState *echo_state = speex_echo_st

2246

android 利用speex 音频降噪,回声消除

android 利用speex 降低声音噪音,回声消除demo,提高音频播放质量

aec in speex利用Speex进行AEC(回声抑制)的代码实现

#include <speex/speex_echo.h> #include <speex/speex_preprocess.h> static SpeexEchoState *echo_state = NULL; static SpeexPreprocessState *denoise_state; static pthread_mutex_t mutex_aec; static char* rec_buffer = NULL; static char* play_buffer

翻肚鱼儿的博客 934

android 利用speex 音频降噪,回声消除demo

android 利用speex 音频降噪,回声消除demo,提高音频播放质量

从零搭建企业网络:使用Packet Tracer模拟多区域OSPF组网全过程

本文通过Cisco Packet Tracer模拟,详细演示了从零搭建一个典型企业多区域OSPF网络的完整流程。内容涵盖网络拓扑规划、IP地址设计、多区域划分原理,并提供了从设备初始化、接口配置到OSPF多区域核心配置与验证的详细步骤。文章旨在帮助网络学习者与IT支持人员通过动手实验,将理论知识转化为实际的配置与排障能力。

day7的博客 1030

基于Speex的音频调试实验(NS / AGC / AEC)

1. NS(噪声抑制)功能调试 使用全向Mic进行实验 :  波形图(不加去噪功能): 波形图(加去噪功能): 从波形中可以看出,去噪效果较为明显。Speex的降噪功能,对于人声有噪声抑制效果,但偶尔会有“噼噼”声,而对于音乐播放 “噼噼”的声音出现频率较高;建议播放音乐时关闭此降噪功能。 噪声消除模块需设置一个参数,即噪声抑制阈值(默认为-25dB),此值可控制噪声削弱强度。即...

lifei092的博客 9747

在win10-wsl2(ubuntu)中安装jlink

在 官方下载linux版本的deb包拷贝到ubuntu的/home目录下(其他目录也可以),进行安装然后提示很多依赖缺失的错误,此时执行自动安装需要的依赖包再次重新安装就可以啦查看是否安装成功,输入JLink 再按下两次Table键,是否如下所示这样表示安装成功了。

yaq_30401的博客 3137

如何使用Speex中的AEC模块,提高声音质量?

<br />如何使用Speex中的AEC模块,提高声音质量?<br />在Speex(www.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。<br />很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。<br />/*<br />*创建AEC对象<br />*/<br />SpeexEchoState *echo_state = speex_echo_state_init(frame_size,

运用之妙,存乎一心 4536

STM32_USB复合设备开发实战:基于CubeMX插件简化HID与CDC集成

本文详细介绍了如何使用STM32CubeMX插件简化USB复合设备开发,特别是HID与CDC的集成。通过自动处理多设备描述符融合和端点资源分配,该插件显著降低了开发复杂度,帮助工程师快速实现键盘、鼠标和虚拟串口等复合功能,提升STM32 USB开发效率。

palm99的专栏 748

【嵌入式笔试题】C语言笔试题(4)

嵌入式C语言综合笔试题

m0_74055118的博客 1067

使用Speex中的AEC模块,提高声音质量(转)

在Speex(www.speex.org)的最新版本中,开始集成了回音消除的模块,而回音消除一直是Voip之中亟待解决的主要问题。 很多朋友和我说speex的aec模块的效能并不好,我们先来看一下speex的aec的api调用方式。 /* *创建AEC对象 */ SpeexEchoState *echo_state = speex_echo_state_init(frame_size, filte...

weixin_33858249的博客 146

单稳态触发器Multisim电路仿真——硬件工程师笔记

本文系统介绍了单稳态触发器的基础知识及其实现方式。主要内容包括:1)单稳态触发器的工作原理、电路结构、特点及应用;2)555定时器实现单稳态触发器的配置及工作过程;3)使用反相器和与非门实现积分型和微分型单稳态触发器的电路结构及工作原理。文章详细阐述了各种实现方式的特性、应用场景及设计考虑,为硬件工程师提供了实用的电路设计参考。最后还附有相关笔试面试题链接,便于读者进一步学习扩展。

XU157303764的博客 1877

Speex manul中文版

在VOIP的音频算法中,回音处理已经成为一个关系通话质量的主要问题。回声的产生在IP网络主要有两种:1.声学回声2.电路回声声学回声主要又分成以下几种:a ) 直接回声:由扬声器产生的声音未经任何反射直接进入麦克风b ) 间接回声: 由扬声器发出的声音经过多次反射后,再进入Mic

huoppo的专栏 1885

Cadence OrCAD Capture 原理图中创建差分对约束的两种常用方法

本文介绍在原理图设计阶段,添加差分对的方法。

fydar的博客 3930

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging )

3、Tone Mapping色调映射(Advanced High Dynamic Range Imaging) 如今,大多数可用的显示设备无法本地显示HDR内容。 入门级显示器的对比度仅为200:1。 尽管高端液晶电视具有更高的对比度,但平均对比度约为10,000:1,但通常每个色彩通道的离散度为8位,很少为10位。 这意味着色调限制为255。在过去的二十年中,研究人员花费了大量时间和精力来压缩HDR图像和视频的范围,以便可以在LDR显示器上更“自然”地看到数据。 图3.1 色调映射和真实场景之间.

ISP行业的忠实粉丝 1866

Speex 介绍

<br /><br />在VOIP的音频算法中,回音处理已经成为一个关系通话质量的主要问题。<br />回声的产生在IP网络主要有两种:<br />1.声学回声<br />2.电路回声<br />声学回声主要又分成以下几种:<br />a ) 直接回声:由扬声器产生的声音未经任何反射直接进入麦克风<br />b ) 间接回声: 由扬声器发出的声音经过多次反射后,再进入Mic<br />对于第二种回声,拥有多路径,时变性的特点.是比较难处理的.<br />由于IP网络下的传输的延迟较大,而一般情况下,

1948

ROS & ROS2 机器人深度相机激光雷达多传感器标定工具箱

不过,多传感器标定工具箱允许通过编辑 yaml 文件来调整标定目标的参数: <repository>/mutlisensor_calibration/cfg/TargetWithCirclesAndAruco.yaml%YAML:1.0rows: 4cols: 1dt: irows: 4cols: 2dt: frows: 1cols: 12dt: fCAD 模型网格/云通过 GICP 将模型数据与分割点云对齐,用于优化检测到的目标姿态。

2506_90492529的博客 2107
上一篇: Speex
下一篇: Android总结之drawable(hdpi,mdpi,ldpi)文件夹的使用
wd_cloud
博客等级 码龄19年 733粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值