首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >阻止不可避免的回声的最有效方法

阻止不可避免的回声的最有效方法
EN

Stack Overflow用户
提问于 2016-01-04 22:23:52
回答 1查看 1.6K关注 0票数 4

我已经创建了一个模块化的系统,它可以通过UDP在任何有麦克风和扬声器的设备和android手机之间传输语音。如果麦克风和扬声器相距不太远,在电话上录制的任何东西都将在扬声器上播放,同时录制并发送回电话,从而产生不可避免的回声。

到目前为止,问题是麦克风在播放时正在录制,所以如果在有重要的播放时发送了一段代码来停止录制,问题就会解决。这要么是通过按下通话按钮(不太适合于电话类型的情况)实现的,要么是通过一种算法来感知最大振幅,并决定是说什么重要的话还是它的噪音。后者更容易使用,但在嘈杂的环境中很容易出错。

很抱歉,这次讲座太长了,但我想知道你是否有更有效、更可靠的方法来解决这个问题。

一般原理图

在硬件方面,我没有足够的处理能力以数字方式去除回声,我也不知道如何去做。我相信用某种模拟滤波器也能做到这一点,但我也不知道怎么做。

编辑:多亏了马特姆,我现在知道我需要像AEC这样的东西,尽管它可能不是最有效的,甚至不是最实用的。

我使用的是WIFI-UART模块(HLK 04),它有一个很大的问题。当模块将8位音频样本转换为IP数据报时,存在非常大的延迟。由于某些原因,这种延迟不存在,当它打开从android =>发送的数据报时,从android接收一个样本需要大约50‘s,但是从麦克风接收一个样本需要650’s。由于我使用的采样率为7200,这意味着AEC算法必须在至少4680个样本/秒的数据集上工作,才能保持它的“实时性”。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-04 22:56:09

这个最简单的解决方案是使用耳机或电话手机,这样一个用户的声音输出就不会反馈到同一个用户的麦克风中。

你的问题被声回波抵消解决了。您可以在Speex音频编解码器中看到声学回波消除的数字实现的示例,或者在WebRTC中实现。这些实现无疑是不平凡的。

我没有模拟声学回波消除的经验。

如果你不能在一方(非Android)上做声回波消除,另一方(Android)的经验将很差。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34600967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档