Voice Chat Bug: Nobody can listen to, but everyone can speak (?)

Hello, programmers!

Well, I just came across a bug that absolutely terrified me. It breaks the entire way logic works, and any understanding I had about how Roblox Voice Chat functions went straight down the drain. I ask that you read this with discretion, because this is the most ghostly, physically impossible, and NONSENSICAL bug I’ve encountered in my career, and I have several years of experience as a scripter in Roblox Studio.

About the video:

  • My recorder doesn’t record my mic, but I wrote a command in console to print each 0.5 sec (or something like that) the actual AudioAnalyzer peak
  • When I was in silence, it reaches 0.0434198, usually less than 0.1.
  • When I start talking, it reaches 0.4, 0.7, or even 1.
  • I used many methods to try connecting to AudioEmitters, but only the AudioAnalyzer could properly work.
    But lemme explain it properly, lets go:

I was testing a radio system for voice chat using Roblox’s new audio API, and everything was working fine. I tested it on a baseplate (let’s call it Place Alpha, just to stay organized). Everything was PERFECT. I tested it with several other players.

Okay? Okay!

Then, I decided to adapt another place (Place Gamma) to use it.

But I noticed something:

No matter what I did

The voice chat, when using Roblox’s new audio API, could not be heard under ANY circumstances.

Here’s a list (about 90%) of the things I’ve tried:

Disabled DefaultVoice and manually created instances of MicInput, AudioEmitter, and Wire;

Changed DefaultDistanceAttenuation;

Modified settings in SoundService, even though it’s unrelated;

Tried listening to my own voice through different emitters;

Changed AutoLoadCharacter;

The voice chat without the new audio API works perfectly. The API itself is the problem in Place Gamma (the one where I wanted to implement the radio system);

I’ve Tried implementing the radio system. no one could hear the character or the radio;

I’ve Tested with multiple players simultaneously;

Okay, despite the fact that the new API works fine in one place and not in the other, let’s set that aside for now.

Well, look at this:

So I decided to add an AudioAnalyzer and connected it to my MicInput with a Wire

And I discovered that, as I speak, the AudioAnalyzer IS WORKING. Thats on the vid I showed you before!

However, I’ve tried everything I could imagine to connect my voice to an AudioEmitter. It just doesn’t work, for reasons I cant even begin to understand.

When I join the game, I can see that the microphone UI (with the green thing that jumps as you speak) is working perfectly.

However, I can’t hear any of my testers, and vice versa. Sometimes, their voice chat appears in their head, but no green marker. And it quickly disappears (something like 400 ms)

I even tried connecting the players MicInputs to a Part on the map to see if we could hear anything.

Nothing. ABSOLUTELY NOTHING.

So, even though the AudioAnalyzer is picking up my voice,

And everyone’s voice is being captured properly,

NO ONE CAN HEAR ANYONE ELSE!

And no, it’s not a communication issue between testers. I confirmed it beyond doubt. I tested it again and again and couldn’t even come up with a possible solution.

It’s the only time I’ve ever seen this. I even searched using Ctrl+Shift+F to see if any script was modifying VoiceChat or changing the Allow property of MicInput. Nothing. Absolutely nothing.

I’ve also checked for many basic things (max of < 50 players on server limit, etc), and everything seemed fine.

So, HOW is this happening? Is there a way to solve it?

I believe firmly that anyone who can figure this out (IF ITS EVEN POSSIBLE), based on just my information and this text, would instantly be so much more advanced as scripter than I.

uhhh, if the game first person disable audio collision on accessories

Hate to break it to ya, but I’m pretty sure Roblox doesn’t allow you to alter the voice track of another player.
So, I tried testing a small script where it simply takes my device input, distorts it, and plays it back. Guess what? Absolutely nothing came back!

I think it’s mainly a privacy reason since you can indeed record audio from surroundings within a game and do whatnot to it, including replaying from another place.

EDIT: MY BAD! After doing a bit more research, It seems that this could indeed be possible, by using the ‘UseAudioAPI’ toggle. I’ll do a bit of testing to see how you could maybe use this. Here’s a link to the page on the docs too: VoiceChatService’s Docs Page

Edit#2: Like bleh said, you do indeed need an output. Your best bet could probably be to link and unlink the audioemitters from the player’s voice source to make that walkie-talkie-like sound system, whilst also retaining a small-range audio (Aka, People near you, Over the radio AND near the radio can hear you). Additionally, I saw that AudioEmitters need to be parented to an attachment, camera or PVInstance (mentioned here) to play a sound, so also try to do that too. But all in all, Good luck!

When using the new audio api you need to make sure that you have first enabled the audio api under sound service which in my understanding you did. However I never see any mentions of connecting a audio listener to an audio device output. Now, enabling the api does that by default, but destroying the default camera or clearing it’s children will delete the listener. So make sure you have an audio listener wired to an audio device output and that the listener is in the same audio group as the emitter.