Audio compression is the process of reducing the size of digital audio files without losing any significant audio quality. This process is useful for storing and transmitting audio files efficiently, especially when dealing with limited storage space or low bandwidth networks. Wavelets are an effective technique for audio compression as they can efficiently remove redundant information while retaining the essential audio features. In this article, we will discuss audio compression using wavelets in MATLAB with all the steps for programming.
What are wavelets?
Wavelets are mathematical functions that can be used to analyze and compress data. They are similar to Fourier transforms but have the ability to analyze data at different scales, making them more effective for data compression. Wavelets are used in various fields, including signal processing, image processing, and audio compression.
Steps for audio compression using wavelets in MATLAB
Step 1: Load audio file
The first step is to load the audio file that we want to compress. MATLAB provides various functions for reading audio files, such as audioread(). In this example, we will load a sample audio file called "speech.wav".
[x, Fs] = audioread('speech.wav');
Here, "x" is the audio signal, and "Fs" is the sampling frequency.
Step 2: Apply wavelet transform
The next step is to apply the wavelet transform to the audio signal. In MATLAB, we can use the "wavedec()" function to apply the wavelet transform. This function decomposes the signal into different frequency bands, with each band representing a different scale. We can then discard the high-frequency bands to reduce the size of the signal.
wname ='db4'; % Wavelet typz
nlevels = 4; % Number of levels
[c, l]= wavedec(x, nlevels, wname);
Here, "wname" is the type of wavelet, and "nlevels" is the number of levels of decomposition. The "wavedec()" function returns two outputs: "c" contains the coefficients of the wavelet transform, and "l" contains the length of each coefficient vector.
Step 3: Thresholding
After applying the wavelet transform, we need to apply a threshold to the wavelet coefficients to remove the noise and redundant information. In this example, we will use the soft thresholding technique, which sets all coefficients below a certain threshold to zero.
[threshold = 0.1; % Threshold value cnew = wthresh(c, 's', threshold);
Here, "threshold" is the threshold value, and "cnew" contains the thresholded coefficients.
Step 4: Reconstruct audio signal
The next step is to reconstruct the audio signal from the thresholded coefficients. In MATLAB, we can use the "waverec()" function to reconstruct the signal from the wavelet coefficients.
[xnew = waverec(cnew, l, wname);
Here, "xnew" is the reconstructed audio signal.
Step 5: Calculate compression ratio
Finally, we can calculate the compression ratio of the audio signal by comparing the sizes of the original and compressed audio files.
original_size = numel(x)*8; % Original size in bits compressed_size = numel(cnew)*8; % Compressed size in bits compression_ratio = original_size/compressed_size;
Here, "original_size" is the size of the original audio signal in bits, "compressed_size" is the size of the compressed audio signal in bits, and "compression_ratio" is the compression ratio.
Conclusion
Audio compression is a useful technique for storing and transmitting audio files efficiently.