Detect when a remote player is speaking

Options

Hi

I'm trying to display a Speaker icon on top of talking players. I'm using

Speaker.IsPlaying

The problem is that it seems to be always true. The recorder is set to transmitenabled and automatic voice detection. This settings seems to tell all remote players that Speaker is always IsPlaying even if that person is silent.

How can I detect when the Speaker is actually speaking?

Comments

  • JohnTube
    JohnTube ✭✭✭✭✭
    Options

    Hi @creat326,

    Thank you for choosing Photon!

    Not sure why it's always on? it shouldn't be like that.

    What Voice Detection are you using? Recorder.VoiceDetection or WebRtcAudioDSP.VAD? the latter is better. Try also enabling NoiseSuppression (NS) and AcousticEchoCancellation (AEC) etc.

    However WebRtcAudioDSP does not expose when voice is detected.

    For Recorder's built-in VAD, you can try to sync Recorder.VoiceDetector.Detected across clients maybe? that would be the last resort.

  • creat326
    Options

    How does it work?


    Do I have to set the recorder to transmit enabled AND also enable VAD? Meaning both must be enabled?

    Or I set transmit to disabled and VAD enabled and then VAD will auto-enable the transmission when voice is detected?

  • JohnTube
    JohnTube ✭✭✭✭✭
    Options

    Hi @creat326,

    Disable Recorder.VoiceDetection.

    Add WebRtcAudioDsp next to Recorder and enable WebRtcAudioDsp.VAD.

  • creat326
    Options

    But do I need to set the recorder.transmit to enabled or that can be disabled and the VAD will automatically enable/disable it?

  • JohnTube
    JohnTube ✭✭✭✭✭
    Options

    Hi @creat326,

    VAD handles this automatically.