Increase Voice Chat - Audio Listener Volume

Hello, I am trying to edit the volume that is being received by a audio-listener.

When listening to other peoples voices they appear quite and I have a fader set to the max volume of 3.

Anyone know how I can increase the volume further?

1 Like

The only way I know of at the moment would be to route it through multiple AudioFaders before it reaches the end destination, as that will stack the volume increase.

As an example, if you have it as AudioDeviceInput → AudioFader → AudioEmitter at the moment, it could become AudioDeviceInput → AudioFader – AudioFader2 → AudioEmitter.

Or (I haven’t tested this one yet), but the AudioFaders might be able to be added in the chain after the AudioListener → AudioFader1 → AudioFader2 → AudioDeviceOutput if you’re trying to make a type of change where players can customize all of the incoming audio they’re hearing from other players.

It’s not the most elegant solution but it could be a viable option in the meantime. If you think the max volume for the AudioFader should be increased, consider making a feature request for it or suggesting it in the Audio API announcement thread since it’s in beta at the moment so features are still subject to change.


I personally have not encountered issues with the voice chat audio being too quiet with the new Audio API, so I would recommend:

  • Making sure that both the in-game volume and the volume mixer for the Roblox client (via the sound settings for your OS) is not set too low.

  • Making sure that the microphone input volume is not too low, too (if any of the people you were testing that with are willing to check that; whether through the microphone itself or via built-in OS sound settings).

1 Like

Hello, Thanks for the info - I’ve just tried it and it doesn’t seem to make a difference - If you have disc comms then I communicate easier?

1 Like

Anyone else got any ideas?

Hello This is to fill the comment :))

1 Like

How did you set it up? I just tested it with and without AudioFaders, routing the last pin within the chain to:

  • An AudioDeviceOutput so I could hear how loud I sounded
  • An AudioAnalyzer so I could keep track of the RMSLevel (mostly after the fact because it goes by in the Output so fast)

And each time I added another AudioFader to the chain, I could noticeably hear my voice getting louder, and the AudioAnalyzer ended up displaying larger numbers, including incredibly high RMSLevels of 2+ at some points.


Here’s an example you can test out in a solo playtest to see if it makes a difference:

(Note: Because the standard voice chat UI does not appear in solo playtests, make sure to manually go into the Players service and enable the “Active” property for your player’s AudioDeviceInput via the client-side. Otherwise, you can enable Team Create and run a “Team Test” and the voice chat UI that you would typically see in a live server should appear):

Script #1 (Server Script in ServerScriptService)

local Players = game:GetService("Players")

---

local numberOfAudioFadersToCreate = 0 -- Replace the number with how many AudioFaders you want to use

---

local function connectWires(source, destination)
	local wire = Instance.new("Wire")
	wire.SourceInstance = source
	wire.TargetInstance = destination
	wire.Parent = destination
end

local function onPlayerAdded(player)
	local audioDeviceInput = Instance.new("AudioDeviceInput")
	audioDeviceInput.Name = "AudioDeviceInput_VolumeTesting!"
	audioDeviceInput.Player = player
	audioDeviceInput.Parent = player
	
	local audioDeviceOutput = Instance.new("AudioDeviceOutput")
	audioDeviceOutput.Name = "AudioDeviceOutput_VolumeTesting!"
	audioDeviceOutput.Player = player
	audioDeviceOutput.Parent = player
	
-- Note: The RmsLevel of the AudioAnalyzer will need to be read from a client-sided script
	local audioAnalyzer = Instance.new("AudioAnalyzer")
	audioAnalyzer.Name = "AudioAnalyzer_VolumeTesting!"
	audioAnalyzer.Parent = player
	
	local function createAudioFaders(numberToCreate)
		
		if numberToCreate == 0 then
			warn("Not creating any AudioFaders")
			connectWires(audioDeviceInput, audioAnalyzer)
			connectWires(audioDeviceInput, audioDeviceOutput)
			return
		end
		
		local lastAudioFader
		
		for currentCount = 1, numberToCreate do
			local audioFader = Instance.new("AudioFader")
			audioFader.Name = "AudioFader"..currentCount.."_VolumeTesting!"
			audioFader.Volume = 3
			
			local previousAudioFader = audioDeviceInput:FindFirstChild("AudioFader"..(currentCount - 1).."_VolumeTesting!", true) -- Edit: Updated to include recursive search
			
			if previousAudioFader then
				connectWires(previousAudioFader, audioFader)
				audioFader.Parent = previousAudioFader
			else
				connectWires(audioDeviceInput, audioFader)
				audioFader.Parent = audioDeviceInput
			end
			
			lastAudioFader = audioFader
			print(currentCount)
		end
		
		connectWires(lastAudioFader, audioAnalyzer)
		connectWires(lastAudioFader, audioDeviceOutput)
		warn("Done")
	end
	
	createAudioFaders(numberOfAudioFadersToCreate)
end

Players.PlayerAdded:Connect(onPlayerAdded)
for _, player in Players:GetPlayers() do
	task.spawn(onPlayerAdded, player)
end

Script #2 (LocalScript in StarterPlayerScripts)

local Players = game:GetService("Players")
local player = Players.LocalPlayer

local audioAnalyzer = player:WaitForChild("AudioAnalyzer_VolumeTesting!")
print("Starting audio analysis")

task.wait(5)
while true do
	task.wait()
			
	print(audioAnalyzer.RmsLevel)
end
1 Like