Suppressing noise in wav files

2020-02-06 04:08发布

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 .

1条回答
该账号已被封号
2楼-- · 2020-02-06 04:45

You can try:

  1. Using noise gates: http://en.wikipedia.org/wiki/Noise_gate

  2. 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.

  3. Read something about noise removal: http://www.developer.com/java/other/article.php/3599661/Adaptive-Noise-Cancellation-using-Java.htm

  4. Use a low-pass filter: How to implement low pass filter using java

  5. If you can deal with recording conditions, position one microphone behind the speaker and remove this signal from the voice - microphone.

查看更多
登录 后发表回答