获取两个音频输入流之间的区别 - java

时间:2014-03-20 15:15:52

标签: java audio speech-recognition javasound sphinx4

我正在使用Sphinx4 API进行语音识别的软件(在java中)。
为了减少干扰,我想在2个不同的麦克风上录制2个声音(一个用于扬声器(A),另一个用于录制“环境”(B)),然后执行AB以获得“无干扰”声音我给狮身人面像表示认可。我认为java.sound可以做那样的事情,但我真的不知道该怎么做。

  • 你认为这种解决方案能起作用吗?
  • 是否有可能实时做到这一点?如果是,它需要什么样的硬件配置?
  • 您的案例中是否有一些有用的链接/代码?

1 个答案:

答案 0 :(得分:1)

Java Sound本身无法做到这样的信号处理。但您可以从麦克风中实时获取原始音频数据,自行处理,然后传递给Sphinx4。

要访问2个麦克风,请在AudioSystem中查询可用的混音器,然后选择与两个麦克风对应的2个混音器。从每个混音器中获取SourceDataLine并使用它来捕获音频数据。

您可以实时处理数据,只需确保在SourceDataLine上使用合适的缓冲区大小。对应于20ms的缓冲区大小应该适用于大多数系统。

大多数硬件应该可以正常工作。 Windows和Linux上有“直接”SourceDataLine可用。您在OS X上的里程数会有所不同(取决于Java实现)。

www.jsresources.org有许多编程示例。