获取两个音频输入流之间的差异-java
我正在开发一个使用语音识别的软件(java)获取两个音频输入流之间的差异-java,java,audio,speech-recognition,javasound,sphinx4,Java,Audio,Speech Recognition,Javasound,Sphinx4,我正在开发一个使用语音识别的软件(java) 为了减少干扰,我想在两个不同的麦克风上录制两个声音(一个用于扬声器(A),另一个用于录制“环境”(B)),然后进行A-B操作以获得一个“无干扰”的声音,我将其发送给斯芬克斯进行识别。我认为java.sound可以做类似的事情,但我真的不知道怎么做 你认为这种解决办法行得通吗 有可能实时完成吗?如果是,它需要什么样的硬件配置 你有我的案例的一些有用的链接/代码吗 Java Sound本身无法进行此类信号处理。但您可以从麦克风中实时获取原始音频数据,自
为了减少干扰,我想在两个不同的麦克风上录制两个声音(一个用于扬声器(A),另一个用于录制“环境”(B)),然后进行A-B操作以获得一个“无干扰”的声音,我将其发送给斯芬克斯进行识别。我认为java.sound可以做类似的事情,但我真的不知道怎么做
- 你认为这种解决办法行得通吗
- 有可能实时完成吗?如果是,它需要什么样的硬件配置
- 你有我的案例的一些有用的链接/代码吗
- Java Sound本身无法进行此类信号处理。但您可以从麦克风中实时获取原始音频数据,自己处理,然后传递到Sphinx4
要访问2个麦克风,请在
Audio System
中查询可用的混音器,然后选择与这两个麦克风对应的2个混音器。从每个混音器中,获取一条SourceDataLine
,并使用它捕获音频数据
您可以实时处理数据,只需确保在SourceDataLine
上使用合适的缓冲区大小即可。对应于20ms的缓冲区大小应适用于大多数系统
大多数硬件都可以正常工作。Windows和Linux上有“direct”SourceDataLine
。您在OSX上的里程将有所不同(取决于Java实现)
有许多编程示例。这个问题似乎离题了,因为它是关于数字信号处理,而不是编程本身。