16Khz mono audio on a SD card. Suppressing noise while creating file

Hi Guys,

I have an Arduino which plays audio from an SD card.
The audio files are in 16Khz, Mono and are created/transformed by Audacity, from an 8Khz mono audio file (from my digital Voicemail device).
The quality is somewhat poor and quite noisy.
I created the file by exporting it as a 16Khz, mono channel, saved as “other device without compression” in a WAVEX(Microsoft) Header, and “Unsigned 8 bits PCM” Coding.

I truly do not know what it all means, but I found it on the Internet while looking for possibilities to play sounds on an Arduino. :slight_smile:

Is there a way to save audio sounds in better quality with enough noise suppressed?
The quality might be old “telephone” audio, which in fact it is.
An old telephone giving the impression one is actually calling and talking on the phone.
(Altzheimer/Dementia person).

Do you have any advice on enhancing the audio quality?

Regards…
Talking Head.

Most Arduino’s don’t have a DAC (digital-to-analog converter) so there’s no true analog-output and the quality will be limited. And depending on the library you’re using you may be limited to 8-bits. If you have one of the faster Arduino’s with a DAC, or if you have an add-on audio shield you can get better quality.

If you are starting with low-resolution audio you can’t increase the sound quality by increasing the bit depth or sample rate (KHz). You have to start with higher-quality audio.

With 8-bits you can hear quantization noise. That’s a “fuzz-like” noise that rides on top of the signal. There 8-bit formats that are better but with regular (linear PCM) WAV files you get quantization noise. Like any regular noise it’s most noticeable with quiet sounds, but unlike analog noise it goes-away completely when there is digital silence.

The audio is limited to half of the sample rate, so at an 8kHz sample rate the audio is limited to 4kHz. That’s about “telephone quality” for “speech communication” but you won’t get high-quality voice, and it’s no good for music. :frowning:

16-bits and 16kHz will give you better quality (CDs are 16-bits and 44.1kHz) but of course you have to use something the Arduino supports.

The Arduino may have additional noise or distortion issues. :frowning:

If you are limited to 8-bit depth, companding can squeeze out more quality …
https://en.wikipedia.org/wiki/Companding#Applications

I will look into it and keep you guys informed.
Thanks so far. :slight_smile:

I will look into it and keep you guys informed

Of course the decoding (“expanding”) will have to be done by the Arduino. That’s going to be a challenge and I don’t know if has enough processing power to decode in real-time while playing the audio.