我正在使用Sphinx4 API进行语音识别的软件(在java中)。
为了减少干扰,我想在2个不同的麦克风上录制2个声音(一个用于扬声器(A),另一个用于录制“环境”(B)),然后执行AB以获得“无干扰”声音我给狮身人面像表示认可。我认为java.sound可以做那样的事情,但我真的不知道该怎么做。
答案 0 :(得分:1)
Java Sound本身无法做到这样的信号处理。但您可以从麦克风中实时获取原始音频数据,自行处理,然后传递给Sphinx4。
要访问2个麦克风,请在AudioSystem
中查询可用的混音器,然后选择与两个麦克风对应的2个混音器。从每个混音器中获取SourceDataLine
并使用它来捕获音频数据。
您可以实时处理数据,只需确保在SourceDataLine
上使用合适的缓冲区大小。对应于20ms的缓冲区大小应该适用于大多数系统。
大多数硬件应该可以正常工作。 Windows和Linux上有“直接”SourceDataLine
可用。您在OS X上的里程数会有所不同(取决于Java实现)。
www.jsresources.org有许多编程示例。