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

标签 java linux audio echo javasound

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

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

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

感谢任何帮助;)

最佳答案

我试过做同样的事情。我没有成功使用 speex。实际上,我只是编写了自己的声学回声消除算法,效果相当不错。它并没有那么复杂,并且允许我根据自己的规范进行调整。回声消除是数字信号处理中反复出现的问题之一,因此有很多信息来源。

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

Paper 1

1) 回声消除论文是实现的。查看 3.3.2 归一化最小均方 (NLMS) 算法部分。即实现的代码

Paper 2

2) Acoustic Echo论文与附录中的代码相同。但它与已有的略有不同

关于java - 已知声源的回声消除(java + linux),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5080654/

相关文章:

linux - 使用 paramiko ssh channel 以 root 权限运行远程程序

java - Java Audio SourceDataLine不支持PCM_FLOAT

c# - 使用C#问题进行声音捕获

Java 矩形选择

regex - 如何用通用电子邮件地址替换一组文件中的所有电子邮件地址

c - 如何使用 execlp() 查找 pid?

python - 使用python编辑wav文件

java - 如何在 hibernate 过滤器中使用 session.commit?

java - .NET 中 java.net.URLConnection 的等效项

java - 两个单独的错误