7

In using an app, for example Wechat, to have video chats.

Two Android phones A and B are sitting in the same room. The two users of A and B stated video chat with mobile phones C and D in another city, when two users of C and D are also sitting in the same room.

That is, phone A is calling phone C; phone B is calling phone D.

When the video chats started, because phones A and B, C and D are close to each other, sharp noises started to appear.

What's the way to prevent this noises in the video chats?

Thank you.

enter image description here

0
18

This phenomenon is called audio feedback which usually occurs when the sound from the speakers reaches back into the microphone, and then gets amplified because of the speaker-mic loop.

Common and general solutions are to cut off the loop, or at least reduce the loop gain by:

  1. Wearing earphone or headphone (isolate the speaker and the mic, prevent the feedback loop completely)
  2. Mute the mic when not needed to speak (prevent the chance of feedback loop)
  3. Reduce the speaker volume (reduce the volume gain)
  4. Take some distance between the speakers (reduce the volume gain)
3
  • Considering this is a physical phenomenon, I'm not sure if there are Android-specific solutions, though I'm also interested to know if there are... consider posting it as the answer!
    – Andrew T.
    May 21 '20 at 14:44
  • 3
    The phone "knows" the sound it is emitting from its speakers and could thus subtract that from what it is recording on the microphone. This is similar to echo cancellation. This would be one thing that can be done in software. Other than that, the basic "acoustic hygiene" techniques you listed are the most effective. No need for complex feedback suppression algorithms if there is no feedback to suppress! May 22 '20 at 6:50
  • 6
    @JörgWMittag Such subtracting would not work when two phones are involved. May 22 '20 at 9:54
6

Before feedback cancellation techniques became common, such an effect would happen even with one pair of phones, e.g. phone A calling phone C. If both phones are on loudspeaker, then the signal emitted by the phone A would go into A's microphone and get transmitted to the phone C, where the same feedback between the loudspeaker and the microphone would re-transmit it back to A, etc:

SPK_A -> MIC_A -> SPK_C -> MIC_C

This problem is prevented by subtracting the loudspeaker output signal for the microphone input. However, for such a software subtraction to work, phone A needs to know what to subtract: if A is the only phone in the room, it can subtract its own loudspeaker output, and feedback cancellation works as intended.

With a second pair of phones, feedback cancellation fails because the signal emitted by the phone A is picked up by the phone B instead. As the phone B doesn't know what signal A was emitting, it cannot subtract it from its microphone input, and sends it to phone D:

SPK_A -> MIC_B -> SPK_D -> MIC_C

There is a second (symmetrical) feedback loop that is possible:

SPK_B -> MIC_A -> SPK_C -> MIC_D

As you can see, the loops are closed, and there is no opportunity for the feedback cancellation software to break those.

In order to prevent the noise, you'll have to break the cross-phone loops physically, e.g. by muting both loudspeakers (switching to earphone) in one of the rooms (e.g. A and B), or in one of the calls (e.g. A and C).

Indeed, muting the microphones, being in separate rooms or having a single call at a time would also help, but I suppose those are not real options.

5
  • This depends somewhat on the implementation of the feedback cancellation - you can also reduce gain automatically/adjust a notch filter if an increasing high frequency component is detected, which is how units such as this work behringer.com/Categories/Behringer/Signal-Processors/… but I don't know if that approach is implemented on 'phones. May 22 '20 at 14:11
  • @PeteKirkham Suppressing high pitch with a filter will only work when the feedback delay is fixed and very small (single digit milliseconds), such as between a microphone and loudspeakers on a stage. Mobile phones can delay audio for hundreds of milliseconds, which means you'll have to filter out the whole audio range to eliminate the feedback. May 24 '20 at 10:16
  • It's been a long time since digital signal processors were capable of both detecting the peak frequency of a spectrum and implementing a narrow filter at any point in the audio range. Both were part of the course work when I did my first electronics degree in the late 1980s. May 24 '20 at 12:47
  • @PeteKirkham If you filter out, say, 10 kHz, what will prevent the feedback loop from running on 10.1 kHz? If the problem is so easy to solve, why do you think cell phone manufacturers didn't solve it already? May 26 '20 at 12:33
  • The professional systems such as the one I linked to change the filtered frequency when they detect a change, otherwise they would be useless as the frequency changes when people move on stage. If you think about the OP, it is a situation which only occurs when there are two phones in the loop, so doing the development work would not benefit most customers, hence you see the approach in recording equipment and conference calling systems rather than phones, where the subtraction technique works well enough for most use cases. May 27 '20 at 10:07

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.