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

时间:2011-02-22 16:08:15

标签: java linux audio echo javasound

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

有输入麦克风和输出扬声器。麦克风非常靠近输出,需要留在那里。麦克风使用usb-soundcard插入,扬声器连接到普通的车载声音设备。

OS是fedora(12),应用程序是用Java编写的......

感谢任何帮助;)

1 个答案:

答案 0 :(得分: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