Common Voice Chat Fixes in Unreal Engine 4

This guide will run through common voice chat fixes in Unreal Engine 4.

These fixes are for both normal voice chat and positional voice chat.

We will update this guide with new fixes as problems are reported.

If you have any issues with the voice chat comment down below as we try to help everyone!

Network Replication Advice

When dealing with multiplayer games, bandwidth and packet sizes have to be considered.

Sending too much too quickly (multi cast events on Event Tick) impacts network performance and prevents voice chat from being sent as the network is too saturated.

Make sure you consider every replicated variable, event and blueprint node that is run over the network.

Many problems can be fixed by optimizing your networking replication!

Common Issues and Fixes

Players can’t hear voice chat after joining (UE 4.25)

  • Run the “Register Remote Talker” function on begin play for your character actors. Suggested by CouchLearn user pftq

This can be done with C++ or the Advanced Sessions Plugin.

https://docs.unrealengine.com/en-US/API/Plugins/OnlineSubsystem/Interfaces/IOnlineVoice/RegisterRemoteTalker/index.html

Voice chat audio is not following the character

  • Check your character/pawn is replicated and has replicate movement enabled.

No voice chat audio

  • Follow our voice chat tutorial exactly and make sure to double check each step.
  • Make sure you are using the multiplayer session system.
  • Make sure that both players have a working microphone plugged in.

    If those steps didn’t fix the problem try:
  • Following the “Stuttering or Robotic Sounding Voices” steps.

Stuttering or Robotic Sounding Voices

  • Reducing the number of replicated events running on Event Tick and on timers.
  • Make sure only essential events are replicated.
  • Reduce the amount of multi cast events.
  • Remove redundant parameters from replicated events.
  • Remove audio and texture parameters from multi cast events.
  • Lower your mic threshold value by -5

Voice chat only works on certain levels

  • Make sure your other maps have an actor that is setup for voice chat on a key press.
  • When changing levels make sure to use the servertravel command

    If those steps didn’t fix the problem try:
  • Following the “Stuttering or Robotic Sounding Voices” steps.
    Some levels in your game may include actors have poor replication performance.

Positional voice chat isn’t working

27 Comments

  1. Hello,
    Thank you for your help.
    But I’ve a problem:

    When I start the game, the player possesses the BP_Player, and the Voice Chat sytem works fine.
    But at each death (I’m working on an FPS Shooter game), I need to destroy the BP_Player, spawn a new BP_PLayer, and possess it.

    There is the problem: as soon as I destroy the BP_Player, the system doesn’t work anymore. If I do not destroy the BP_Player, it works, but I can’t let all “dead” BP_Player wihout destroying them..

    Please help me, I’m bloked on this problem for a month now ;(

    Thank you a lot,
    Best Regards,
    Marius Chatillon

    (Contact me here if needed: marius.chatillon@gmail.com)

    • Do you have the voice chat on and off code in your player or your controller?

      If the voice chat code is in the controller it shouldn’t break when the player character is deleted.

  2. Hello Matt,
    Thank you very much for you quick answer.

    I’ve all Voice Chat code in my Character.
    I started trying to set it in the player controller, but where I am supposed to attach the Voice settings (Instead of Camera or Capsule component, you know?)?

    Thank you a lot,
    Marius Chatillon

    • Ah ok. I understand what you mean now. The code for the voice settings should be on Begin Play. When you destroy and respawn your character it will re run this code. Try putting a delay blueprint node with 0.2 seconds of delay before the voice chat code in begin play.

      • I tried what you said, and even with a 10 second delay, it’s still weird..

        When I destroy my Player1, and spawn the Player2 (in my GameMode), set the settings, the sound seems to come from my past Player1.

        So, for example, I’m Player1, I’m talking in the bathrooms, all is fine.
        Then I switch the character to Player2, destroy the Player1, I talk, and the voice comes from the bathrooms (but I’m in the kitchen!).

        The settings seem not to be reset.

        Thank you a lot, your help is very precious to me.
        Thank you,
        Marius

          • Player1 spawns at default pawn class, all works fine, the the GameMode destroys Player1, spawns Player2 (at another location), makes the players possess the spawned Player2, at Event Begin Play I set a 10 seconds delay, and the voice comes from past Player1 location..

            Did I forget something?
            Marius

  3. Hello Matt,
    I begin a new discussion here, because I couldn’t find the “reply” button to your answer.

    Exactly! Player1 and Player2 are not the same blueprint character, that’s it!
    To be more specefic, “BP_WaitingPlayer” is the lobby player, and when all players are connected, the GameMode spawns “BP_Player”, and make the players possess them. Then, after each death of “BP_Player”, a new BP_Player spawns, etc. until the end of the Game.

    BP_WaitingPlayer
    -> BP_Player -> BP_Player -> BP_Player … -> End of game

    If you want you can contact me at marius.hatillon@gmail.com, it would maybe be easier.
    This bug it the last one for my game, it is delaying the release of my game on ACT, so I would be ready to pay if necessary, thank you very much for your help.

    Marius

  4. Hi! awesome tutorial, however I have an issue.
    When I set the push to talk in the ini to true, my proximity voice works just fine, but if i set it to false(so the mic is always open) it is no longer proximity and turns into a general voice chat that everyone can hear.

    Any idea how to fix this so my prox voip is always open?

    • I have looked through the engine code and can’t see any reason why the voice would not be proximity based when push to talk is false.

      A workaround would be to set Push To Talk to true and then in the Begin Play event execute the console command ToggleSpeaking 1

      This should enable voice chat all the time and as long as you don’t use the ToggleSpeaking 0 command it should stay on all the time.

      Let me know if this solves the problem.

      • I finally figured it out, thanks, however I have an interesting new problem and there seems to be ZERO information about this.
        With steam sockets enabled, the VOIP quality goes down a LOT and it also causes the character who is using it to lag/stutter/teleport/sound robotic a lot. I’m thinking it’s packet loss, as it works perfectly without steamsockets, and when I artificially make packet loss happen on the non-socketed build, it acts similarly to the socketed.

        Any idea what to do here? Just dont use steam sockets? lol. Is the voip saturating the client’s connection maybe?

        • UE4’s voice chat is a really neglected feature that rarely gets any spotlight. Unfortunately I think you will just have to use an old version of UE that works correctly for your needs and back port features that you need through C++ into a custom version of the engine that you can download through their github.

          I found through my testing that VOIP using UE 4.23 has the lowest priority when the network is saturated so SteamSockets might have changed that to discard other network information.

          I am hoping when they update the engine again (4.26 /UE 5) these issues will be resolved.

  5. The mic threshold doesn’t seem to be doing anything. I’ve tried various numbers (0.000001, -1, -5, -1000, etc) yet i still need to yell into my mic from 1 cm away or it will not pick up sound. When i use the audio capture component it picks up sound fine, so i dont know what is wrong with the VOIP method. Assistance would be appreciated

    • I have seen this happening with some microphones. I am working on finding a solution.

      My current ideas why this is happening is that the microphone sensitivity is set low in windows sound control panel. Setting this to 100 fixes the issue but is not a great fix as it is too sensitive for other programs.

      Try to adjust the attenuation settings and boost VOIP sound class volume. This my improve the quality of the voice system.

      Let me know if that helped or not.

      I am actively working on a solution for this.

  6. Hey

    I am using Unreal Engine 4.25 and project is all blueprints, I did generate Visual Studio files but I didn’t get FPSCharacter blueprint to cpp code where I could call RegisterRemoteTalker function I can only create new classes.

    I can’t hear when I speak, I tried both internet and LAN. I am using same computer with 2 clients. When I speak I do get that my microphone is being used but I can’t hear anything on either side.

    Please help.

    • To get the FPSCharacter in cpp code you need to start your project as a C++ project with the FPS template.

      I think another user had issues if RegisterRemoteTalker isn’t called in Unreal Eninge 4.25.

      I think the best fix would be to install the Advanced Sessions plugin. It has blueprint nodes for all of the related c++ voice functions that you will need.

  7. I’m also having issues in 4.25.3 relating to the mic sensitivity. I’ve tried various values, but the player continues to cut out unless screaming into the microphone.
    It seems like the only solution is to switch over to Vivox. You should make a tutorial for that, as the documentation isn’t great.

  8. Hello Matt,
    I’m seeing this on most computer connected with the chat:

    “`[2021.02.16-12.03.32:984][967]LogVoiceEngine: OSS: ReadLocalVoiceData: GetVoice: Result: Ok, Available: 0, LastCall: 0.000 ms
    [2021.02.16-12.03.32:984][967]LogVoiceEngine: Warning: OSS: ReadLocalVoiceData: GetVoice failure: VoiceResult: Ok
    [2021.02.16-12.03.32:984][967]LogVoiceEngine: Warning: OSS: Voice data error in ReadLocalVoiceData“`

    And basically nothing can ever be heard. The only computer out of 5 that can be heard flawlessly is the only one that does not show this error.

    Any ideas?

    • I haven’t encountered this before. I have a few questions just so we can narrow this issue down.
      – Which version of UE4 are you using?
      – Are you using Steam or the NULL subsystem?
      – Are you using continuous microphone or push to talk?
      – Have you set the microphone that you want to use as default in the windows recording options?

      • 1. 4.25.4
        2. Steam
        3. PTT
        4. Yes

        If I set the mic threshold to `-1` then the event `OnPlayerVoiceStateChanged` gets correctly called on the Player Controller on both the client and all of the other clients *but* the other clients still can’t hear anything.

        • Many users have had issues with the voice chat implementation in 4.25. Try making a new project using UE 4.23 and verify it works correctly there.

          UE 4.23 is the sweet spot in my opinion for VOIP stability.

          If its working correctly with UE 4.23 it would then be an engine issue which I unfortunately can’t solve.

          • As I think the UE4 community as a whole will benefit from it, I will do some testing on the state of voice chat for 4.23, 4.24, 4.25 and 4.26. I will reply to this post once these tests are complete.

Leave a Reply

Your email address will not be published.


*