已知声源的回声消除(java + linux)

Posted

技术标签:

【中文标题】已知声源的回声消除(java + linux)【英文标题】:echo cancellation for known sound sources (java + linux) 【发布时间】:2011-02-22 16:08:14 【问题描述】:

我正在尝试使语音识别“忽略”它自己的输出(使用文本到语音系统),因此想使用回声消除器。我实际上“知道” tts 输出,我什至可以将其存储为波形文件(或 pcm 或其他),因此不需要用于未知输入的回声消除的整个“估计事物”。但是我真的不知道如何开始。我读到,“speex”对此很有用,但根据其文档,它不适用于 2 个独立的声卡。简而言之:有什么想法吗?这是我当前的设置:

有一个用于输入的麦克风和一个用于输出的扬声器。麦克风非常靠近输出,需要保留在那里。使用 USB 声卡插入麦克风,扬声器连接到普通的板载声音设备。

操作系统是fedora(12),应用程序是用Java编写的......

感谢任何帮助;)

【问题讨论】:

【参考方案1】:

我试图做同样的事情。我没有成功使用 speex。实际上,我只是编写了自己的声学回声消除算法,效果很好。它并没有那么复杂,让我可以根据自己的规范对其进行调整。回声消除是数字信号处理中经常出现的问题之一,因此有很多信息来源。

我附上了两篇甚至包括源示例的论文。它们是用 C 编写的,但可以通过 JNI 在 Java 中使用或将其转换为 Java 代码。

Paper 1

1) Echo cancelation Thesis is the one implemented. Look into section 3.3.2 Normalized Least Mean Square (NLMS) Algorithm. That is the code implemented

Paper 2

2) Acoustic Echo paper has the same thing with the code in the appendix. But it is slightly differing from what is already there

【讨论】:

遗憾的是,附录似乎已从该论文中删除

以上是关于已知声源的回声消除(java + linux)的主要内容,如果未能解决你的问题,请参考以下文章

Android 回声消除

回声消除-理论篇

技术分享| anyRTC回声消除算法进化

WebRTC回声消除

回声消除应用平台

WebRTC回声消除