简体   繁体   中英

How to amplify the voice recorded from far distance

When a person speaks far away from a mobile, the voice recorded is low. When a person speaks near a mobile, the voice recorded is high. I want to is to play the human voice in equal volume no matter how far away (not infinite) he is from the phone when the voice is recorded.

What I have already tried:

  1. adjust the volume based on the dB such as AVAudioPlayer But the problem is that the dB contains all the environmental sound. So it only works when the human voice vary heavily.

  2. Then I thought I should find a way to sample the intensity of the human voice in the media which leads me to voice recognition. But this is a huge topic. I cannot narrow the areas which could solve my problems.

The voice recorded from distance suffers from significant corruption. One problem is noise, another is echo. To amplify it you need to clean voice from echo and noise. Ideally you need to do that with a better microphone, but if only a single microphone is available you have to apply signal processing. The signal processing algorithms you are interested in are:

  1. Noise cancellation. You can find many samples on Google from simple to very advanced ones
  2. Echo cancellation. Again you can find many implementations.

There is no ready library to do the above, you will have to implement a large part yourself, you can look on the WebRTC code which has both noise and echo cancellation, like described in this question:

Is it possible to reduce background noise while streaming audio on the iPhone?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM