I don’t really use Skype at home that often. Today I did, and I ran into a problem which I remembered having a long time ago: the voice call audio from me to others sounds lower in pitch, like Darth Vader, or one of those “voice altered to protect the identity” things on TV.
This time, I was arsed enough to fix the Skype issue.
The cause is quite simple: Skype’s SILK voice codec wants to record audio in 24 kHz. However, my HD Audio using Realtek ALC883 chip does not support that sampling rate. Instead, it defaults to 44.1 kHz. The result sounds interesting, but useless for talking over Skype.
So how to fix this? Theory of operation: whatever sampling rate Skype asks you for, just say yes, record in whatever the hardware supports, then rate convert to the sampling rate asked by Skype. This will solve the problem.
To do this in practise, using ALSA, is as follows. First, quit Skype. Don’t just log out, quit the whole thing.
Then, let’s add a software SRC into the proper point in the voice audio uplink path (nerdy!) by adding the following to your ~/.asoundrc:
pcm.skype {
type plug
slave {
# normal ALC883
pcm "hw:0,0"
# skype wants 24 kHz recording input,
# but ALC883 doesn't support that.
# do a rate conversion on the fly.
rate 48000
}
}
Note: change the pcm “hw:0,0″ line to whatever is your device – this one uses the default.
To test your new .asoundrc, you can use the command arecord -f S16_LE -c 2 -r 24000 -D skype -d 20 test.wav
If the recording gave no errors, play it back with aplay test.wav. If it sounds OK, you’re good to go.
Next, start Skype. Then go to Options, and set the recording audio device to be “(plug) skype”.
It worked for me, testing using Skype’s echo123 service yields crystal clear audio!