已知声源的回声消除 (java + linux)
我试图让语音识别“忽略”它自己的输出(使用文本到语音系统),因此想使用回声消除器。我实际上“知道”tts 输出,我什至可以将其存储为波形文件(或 pcm 或其他文件),因此不需要使用回声消除来未知输入的整个“估计事物”。但我真的不知道如何开始。我读到,“speex”对于此目的很有用,但根据其文档,它不能与 2 个独立声卡一起使用。简而言之:有什么想法吗?这是我当前的设置:
有一个用于输入的麦克风和用于输出的扬声器。麦克风非常靠近输出,需要保留在那里。麦克风使用 USB 声卡插入,扬声器连接到普通的板载声音设备。
操作系统是 fedora (12),应用程序是用 Java 编写的...
任何帮助都值得赞赏;)
I'm trying to make a speech recognition "ignore" it's own output (using a text-to-speech-system) and therefore wanna use an echo canceller. I actually "know" the tts-output and I can even store it as wave file (or pcm or whatever), so the whole "estimation thingie" used with echo cancellation for unknown input is not necessary. However I don't really know how to start. I read, that "speex" was useful for this purpose but according to its documentation it does not work with 2 independent sound cards. To make it short: any ideas? here are my current settings:
got a mic for input and speakers for output. The mic is pretty close to the output and needs to remain there. the mic is plugged using a usb-soundcard, the speakers are attached to the normal onboard-sound-device.
OS is fedora (12), application is to be written in Java...
any help is appreciated ;)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也尝试过做同样的事情。我用过speex,没成功。实际上,我刚刚编写了自己的声学回声消除算法,效果相当好。它并没有那么复杂,允许我根据自己的规格进行调整。回声消除是数字信号处理中一次又一次出现的问题之一,因此有很多信息来源。
我附上了两篇论文,其中甚至包括源示例。它们是用 C 语言编写的,但可以通过 JNI 在 Java 中使用或将其转换为 Java 代码。
论文 1
1) 回声消除论文是实施的一个。查看第 3.3.2 节“归一化最小均方 (NLMS) 算法”。这是实现的代码
论文 2
2) 声学echo paper的内容和附录中的代码是一样的。但它与已有的略有不同
Ive attempted to do the same thing. I have used speex unsuccessfully. I actually just wrote my own acoustic echo cancellation algorithm that worked fairly well. It was not that complicated and allowed me to tweak it to my own specifcation. Echo cancellation is one of those problems in digital signal processing that comes up time and time again so there are many sources of info.
I have attached the two papers that even include source examples. They are written in C, but could be used in Java via JNI or converting it to Java code.
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