Bird
Raised Fist0
Signal Processingdata~5 mins

Audio compression basics in Signal Processing

Choose your learning style10 modes available
Introduction

Audio compression makes sound files smaller so they use less space and are easier to share.

When sending music files over the internet to save data.
When storing many audio recordings on a phone or computer with limited space.
When streaming podcasts or songs to reduce buffering time.
When recording audio and needing to save disk space.
When sharing voice messages quickly on messaging apps.
Syntax
Signal Processing
compressed_audio = compress(original_audio, method='mp3', bitrate=128)

compress is a function that reduces audio file size.

method chooses the compression type like 'mp3' or 'aac'.

Examples
Compress audio using MP3 format at 128 kbps bitrate.
Signal Processing
compressed_audio = compress(original_audio, method='mp3', bitrate=128)
Compress audio using AAC format at 256 kbps bitrate for better quality.
Signal Processing
compressed_audio = compress(original_audio, method='aac', bitrate=256)
Use WAV format which is uncompressed, so file size stays large.
Signal Processing
compressed_audio = compress(original_audio, method='wav')
Sample Program

This code creates a simple sound wave, then simulates compressing it by reducing the number of samples (downsampling). It prints the original and compressed lengths and shows a plot comparing the waveforms.

Signal Processing
import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile
from scipy.signal import resample

def compress(audio, method='mp3', bitrate=128):
    # Simulate compression by downsampling for simplicity
    if method == 'mp3':
        factor = max(1, len(audio) // (bitrate * 100))
        compressed = resample(audio, len(audio) // factor)
        return compressed.astype(np.int16)
    else:
        return audio

# Create a 1-second sine wave at 440 Hz
fs = 44100  # sample rate
seconds = 1
frequency = 440

t = np.linspace(0, seconds, fs * seconds, endpoint=False)
audio = (0.5 * np.sin(2 * np.pi * frequency * t) * 32767).astype(np.int16)

compressed_audio = compress(audio, method='mp3', bitrate=128)

print(f'Original length: {len(audio)} samples')
print(f'Compressed length: {len(compressed_audio)} samples')

plt.figure(figsize=(10, 4))
plt.plot(t[:1000], audio[:1000], label='Original')
plt.plot(np.linspace(0, seconds, len(compressed_audio))[:1000], compressed_audio[:1000], label='Compressed')
plt.legend()
plt.title('Audio Compression Example (Waveform)')
plt.xlabel('Time [seconds]')
plt.ylabel('Amplitude')
plt.tight_layout()
plt.show()
OutputSuccess
Important Notes

Real audio compression uses complex algorithms, but downsampling helps show the idea simply.

Lower bitrate means smaller files but lower sound quality.

Compression can be lossless (no quality loss) or lossy (some quality lost).

Summary

Audio compression reduces file size to save space and bandwidth.

It works by removing or simplifying sound data that is less noticeable.

Different methods and bitrates balance quality and size.

Practice

(1/5)
1. What is the main goal of audio compression?
easy
A. To reduce the file size while keeping sound quality acceptable
B. To increase the file size for better quality
C. To convert audio files into video files
D. To remove all background noise completely

Solution

  1. Step 1: Understand the purpose of audio compression

    Audio compression aims to make audio files smaller so they use less space and bandwidth.
  2. Step 2: Identify the correct goal

    The goal is to reduce size but keep the sound quality good enough for listening.
  3. Final Answer:

    To reduce the file size while keeping sound quality acceptable -> Option A
  4. Quick Check:

    Audio compression = smaller files with good quality [OK]
Hint: Compression means smaller size, not bigger [OK]
Common Mistakes:
  • Thinking compression increases file size
  • Confusing audio with video conversion
  • Assuming all noise is removed
2. Which of the following is a correct statement about lossy audio compression?
easy
A. It keeps all original audio data intact
B. It removes some audio data permanently to reduce size
C. It converts audio to text format
D. It increases the audio file size

Solution

  1. Step 1: Define lossy compression

    Lossy compression removes some audio data permanently to save space.
  2. Step 2: Compare options

    Only It removes some audio data permanently to reduce size correctly describes lossy compression; others are incorrect or unrelated.
  3. Final Answer:

    It removes some audio data permanently to reduce size -> Option B
  4. Quick Check:

    Lossy = data removed permanently [OK]
Hint: Lossy means some data is lost forever [OK]
Common Mistakes:
  • Confusing lossy with lossless compression
  • Thinking lossy keeps all data
  • Believing audio is converted to text
3. Consider this Python code snippet simulating audio compression bitrate calculation:
original_bitrate = 1411  # in kbps for CD quality
compression_ratio = 0.1
compressed_bitrate = original_bitrate * compression_ratio
print(int(compressed_bitrate))

What is the output of this code?
medium
A. 1411
B. 14
C. 141
D. 0

Solution

  1. Step 1: Calculate compressed bitrate

    Multiply original bitrate 1411 kbps by compression ratio 0.1: 1411 * 0.1 = 141.1
  2. Step 2: Convert to integer and print

    int(141.1) is 141, so the output is 141.
  3. Final Answer:

    141 -> Option C
  4. Quick Check:

    1411 * 0.1 = 141 [OK]
Hint: Multiply bitrate by ratio, then convert to int [OK]
Common Mistakes:
  • Forgetting to multiply by compression ratio
  • Confusing int conversion rounding
  • Printing original bitrate instead
4. This code tries to calculate compressed audio size but has an error:
file_size_mb = 50
compression_rate = 0.2
compressed_size = file_size_mb / compression_rate
print(compressed_size)

What is the error in this code?
medium
A. Division by zero error
B. Variable names are invalid
C. Missing import statement
D. It should multiply, not divide, by compression_rate

Solution

  1. Step 1: Understand compression calculation

    Compressed size should be original size multiplied by compression rate (fraction less than 1).
  2. Step 2: Identify the error in code

    The code divides file_size_mb by compression_rate, which increases size incorrectly.
  3. Final Answer:

    It should multiply, not divide, by compression_rate -> Option D
  4. Quick Check:

    Compression size = original size * rate [OK]
Hint: Compression reduces size, so multiply by rate [OK]
Common Mistakes:
  • Using division instead of multiplication
  • Assuming variable names cause error
  • Expecting import needed for math
5. You have a 100 MB audio file and want to compress it to about 25% of its size using lossy compression. Which bitrate should you choose if the original bitrate is 160 kbps?

Options:
A) 40 kbps
B) 80 kbps
C) 120 kbps
D) 160 kbps
hard
A. 40 kbps
B. 80 kbps
C. 120 kbps
D. 160 kbps

Solution

  1. Step 1: Calculate target bitrate for 25% size

    25% means 0.25 times original bitrate: 160 kbps * 0.25 = 40 kbps.
  2. Step 2: Choose bitrate matching target

    40 kbps is 40 kbps, which matches the target bitrate for 25% size.
  3. Final Answer:

    40 kbps -> Option A
  4. Quick Check:

    160 * 0.25 = 40 kbps [OK]
Hint: Multiply original bitrate by compression fraction [OK]
Common Mistakes:
  • Choosing bitrate higher than target size
  • Confusing percentage with absolute value
  • Ignoring lossy compression effect
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard