抑制 wav 文件中的噪音
我正在开发一个使用 wav 文件作为输入的语音 2 文本转换原型。我目前正在尝试几种 ASR,例如 Microsoft SAPi、Sphinx 等。传递的音频 wav 文件包含来自背景的几种失真/噪音。我尝试使用大胆的方法完全消除噪音,识别效果稍微好一点。噪声消除部分,我目前通过提供的 Ui 来完成。我的背景是java,我想使用java实现相同的噪声消除部分。我已经下载了 Audacity 源代码,我想知道哪种方法更好。 1) 只需尝试对已存在的 C++ 方法进行 jni 调用。 2)使用傅里叶变换实现我自己的噪声门机制。然而,在后一种方法中,这更像是重新发明轮子。 java 中是否已经实现了标准 api/算法,它将接受 wav 文件输入并通过实现高通/低通滤波器或任何其他方法来执行噪声消除。
我尝试搜索《Digital Audio with Java》这本书,貌似包含DSP算法,但没有找到。任何有关采取的方法或可用的 API 的帮助都会非常有帮助。
I am working on a prototype for speech 2 text conversion using a wav file as an input .I am currently experimenting with several ASR's such as Microsoft SAPi, Sphinx etc. The audio wav file which is passed consists of several distortions/noises from the background. I tried using audacity to remove the noise completely and the recognition became a wee bit better. The noise removal part, i cam currently doing it via the Ui provided. My background being java, i wanted to implement the same noise removal part using java. I have downloaded the Audacity source code and i was wondering about which would be the better approach. 1) Simply try and make a jni call to the C++ methods already existing. 2) Implement my own noise gate mechanism using Fourier transformation. however in the latter approach, It would be more like re inventing the wheel. is there a standard api / algorithm already implemented in java, which will take in the wav file input and perform a noise removal , either by implementing high/low pass filter or by any other methodology.
I tried to search for the book "digital audio with Java" which seemingly contains DSP algorithms, however it was not available. Any help on the approach to be taken or apis available, would be really helpful .
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以尝试:
使用噪声门:http://en.wikipedia.org/wiki/Noise_gate
使用语音定位 ->如果您以立体声录制,那么左右声道的声音通常会相等。一般来说,一个通道中的噪音会比另一个通道中的噪音更强。
阅读有关噪声消除的内容:http://www.developer.com/java/other/article.php/3599661/Adaptive-Noise-Cancellation-using-Java.htm
使用低通滤波器:如何使用java实现低通滤波器
如果您可以处理录音条件,请在扬声器后面放置一个麦克风,并从语音麦克风中删除此信号。
You can try:
Using noise gates: http://en.wikipedia.org/wiki/Noise_gate
Use the voice positioning -> voice in general will be equal in the left and right channels, if you record it in stereo. And noise will be, in general, stronger in one channel than the other.
Read something about noise removal: http://www.developer.com/java/other/article.php/3599661/Adaptive-Noise-Cancellation-using-Java.htm
Use a low-pass filter: How to implement low pass filter using java
If you can deal with recording conditions, position one microphone behind the speaker and remove this signal from the voice - microphone.