MumbleSharp icon indicating copy to clipboard operation
MumbleSharp copied to clipboard

Audio Source other than Mic results in distorted audio

Open pboyd04 opened this issue 5 years ago • 3 comments

I'm trying to take a PCM stream from another source and pipe it to Mumble. However, I get weird sort of sped up audio when I do this despite the fact that the audio is in 48kHz format. I've managed to get sample code pretty small:

WaveFileReader wfr = new WaveFileReader("c:\\temp\\mumble.wav");
byte[] data = new byte[wfr.Length];
wfr.Read(data, 0, data.Length);
protocol.LocalUser.Channel.SendVoice(new ArraySegment<byte>(data, 0, data.Length));
wfr.Close();

The source file is here: http://pboyd.org/mumble.wav What it sounds like when I get it out of another mumble client is this: http://pboyd.org/result.wav

According to the data in the wav file it's PCM, 16-bit samples, 48000 Hz, and 1 channel which seems to match all the defaults in the Constants file. So what am I doing wrong?

pboyd04 avatar May 17 '20 06:05 pboyd04

I'm not sure how mumble will handle trying to send a large amount of audio in a single packet - usually it's sent in small packets (960 samples at a time, or 20ms). It might be that causing the issue.

martindevans avatar May 17 '20 23:05 martindevans

If I try dividing it up into 20ms segments it doesn't help. Any other ideas?

pboyd04 avatar May 20 '20 01:05 pboyd04

Possibly the file is in the wrong endianness. I'm not sure what byte order WaveFileReader provides or what Mumble needs, but it should be easy enough to just try swapping the 2 bytes in each 16 bit sample to see if it makes a difference.

martindevans avatar May 20 '20 03:05 martindevans