I'm not the most experienced with Steam implementation (Or C# if that matters), but this little feature has been a dream of mine and I got a little stumped trying to figure out how to get it in! I can receive and playback the audio input from steam, and the playback loops pieces of the input constantly and sounds like static when played on my audiostreamplayer, spent days trying to fix it but this attempt was as clear sounding as I could get it. I expect this post to go overlooked because its so specific but if anyone knows anything or can give me and sort of pointer or idea lemme know!

`using Steamworks;
using System;
using System.IO;
using Godot;

public partial class VoiceControls : Node
{
[Export]
private AudioStreamPlayer3D source;

private MemoryStream output;
private MemoryStream input;

private uint optimalRate;
private byte[] clipBuffer;

private AudioStreamWav wavStream;

public override void _Ready()
{
    optimalRate = SteamUser.OptimalSampleRate;

    output = new MemoryStream();
    input = new MemoryStream();

    clipBuffer = new byte[optimalRate]; 

    wavStream = new AudioStreamWav
    {
        MixRate = (int)optimalRate,
        Format = AudioStreamWav.FormatEnum.Format16Bits
    };
    source.Stream = wavStream;

    SteamUser.VoiceRecord = true; 
}

public override void _PhysicsProcess(double delta)
{
     

    if (SteamUser.HasVoiceData)
    {
        int bytesWritten = SteamUser.ReadVoiceData(input);
        byte[] tempBuffer = new byte[SteamUser.OptimalSampleRate * 10];

  
        if (bytesWritten > 0)
        {
            input.Write(tempBuffer, 0, bytesWritten);
            input.Position = 0;

            int decompressed = SteamUser.DecompressVoice(input, bytesWritten, output);
            input.Position = 0; 

            if (decompressed > 0)
            {
                output.Position = 0;
                output.Read(clipBuffer, 0, decompressed);
                output.Position = 0; 

                wavStream.Data = clipBuffer; 
                if (!source.Playing)
                {
                    source.Play();
                }
            }
        }
    }
}

}`