Bird
Raised Fist0
SciPydata~20 mins

WAV audio file handling in SciPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
WAV Audio Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
Output of reading WAV file sample rate
What is the output of this code snippet that reads a WAV file's sample rate?
SciPy
from scipy.io import wavfile
sample_rate, data = wavfile.read('example.wav')
print(sample_rate)
A44100
Bdata array
Cwavfile.read object
DError: file not found
Attempts:
2 left
💡 Hint
The first value returned by wavfile.read is the sample rate as an integer.
data_output
intermediate
2:00remaining
Shape of data array from stereo WAV file
If you read a stereo WAV file with 1000 samples using scipy.io.wavfile.read, what is the shape of the data array?
SciPy
from scipy.io import wavfile
sample_rate, data = wavfile.read('stereo.wav')
print(data.shape)
A(2, 1000)
B(1000, 2)
C(1000,)
D(2000,)
Attempts:
2 left
💡 Hint
Stereo audio has two channels, so the data array has two columns.
🔧 Debug
advanced
2:00remaining
Error when writing WAV file with float data
What error will this code raise when trying to write a WAV file with float data using scipy.io.wavfile.write?
SciPy
from scipy.io import wavfile
import numpy as np
sample_rate = 44100
data = np.array([0.1, 0.2, 0.3], dtype=float)
wavfile.write('output.wav', sample_rate, data)
ATypeError: data type not supported
BSyntaxError
CNo error, file written successfully
DValueError: data must be integer type
Attempts:
2 left
💡 Hint
scipy.io.wavfile.write expects integer data types for PCM WAV files.
🚀 Application
advanced
2:00remaining
Normalize WAV audio data to range -1 to 1
Which code snippet correctly normalizes 16-bit PCM WAV data to float values between -1 and 1?
SciPy
from scipy.io import wavfile
sample_rate, data = wavfile.read('audio.wav')
# Normalize data here
Anormalized = data / 65535.0
Bnormalized = data / 32768.0
Cnormalized = data.astype(float) / 32767.0
Dnormalized = data / 32767.0
Attempts:
2 left
💡 Hint
16-bit signed PCM ranges from -32768 to 32767; normalization uses max positive value.
🧠 Conceptual
expert
2:00remaining
Effect of changing sample rate when writing WAV file
If you read a WAV file at 44100 Hz and write it back with a sample rate of 22050 Hz without changing data, what happens when playing the new file?
AAudio plays at half speed and one octave lower
BAudio plays normally with no change
CAudio plays at double speed and one octave higher
DAudio file is corrupted and won't play
Attempts:
2 left
💡 Hint
Lowering sample rate without changing data affects playback speed and pitch.

Practice

(1/5)
1. What does the function scipy.io.wavfile.read return when you load a WAV audio file?
easy
A. The file size and duration
B. Only the audio data as a list
C. The sample rate and the audio data as a NumPy array
D. The audio format and bit depth

Solution

  1. Step 1: Understand the function purpose

    scipy.io.wavfile.read is designed to load WAV files and extract audio information.
  2. Step 2: Identify the returned values

    It returns two things: the sample rate (how many samples per second) and the audio data as a NumPy array.
  3. Final Answer:

    The sample rate and the audio data as a NumPy array -> Option C
  4. Quick Check:

    read() returns (rate, data) [OK]
Hint: Remember read() gives rate and data array [OK]
Common Mistakes:
  • Thinking it returns only audio data
  • Confusing sample rate with file size
  • Expecting metadata like format or bit depth
2. Which of the following is the correct way to import the WAV file reading function from scipy?
easy
A. from scipy.io import wavfile
B. import scipy.wavfile.read
C. from scipy import wavfile.read
D. import wavfile from scipy.io

Solution

  1. Step 1: Recall correct import syntax

    Python imports use 'from module import function_or_submodule' format.
  2. Step 2: Match with scipy structure

    The correct way is to import the wavfile submodule from scipy.io as from scipy.io import wavfile.
  3. Final Answer:

    from scipy.io import wavfile -> Option A
  4. Quick Check:

    Correct import syntax = from scipy.io import wavfile [OK]
Hint: Use 'from scipy.io import wavfile' to access read/write [OK]
Common Mistakes:
  • Trying to import read directly
  • Using dot notation incorrectly in import
  • Swapping import order
3. What will be the output shape of the data array when you read a stereo WAV file with 44100 samples per channel using scipy.io.wavfile.read?
medium
A. (88200,)
B. (44100, 2)
C. (44100,)
D. (2, 44100)

Solution

  1. Step 1: Understand stereo audio data shape

    Stereo audio has two channels, so data shape is (samples, channels).
  2. Step 2: Calculate shape for 44100 samples

    With 44100 samples per channel and 2 channels, shape is (44100, 2).
  3. Final Answer:

    (44100, 2) -> Option B
  4. Quick Check:

    Stereo shape = (samples, 2) [OK]
Hint: Stereo data shape is (samples, 2) always [OK]
Common Mistakes:
  • Confusing channels and samples order
  • Assuming shape is (2, samples)
  • Thinking stereo data is flattened
4. You try to save a NumPy array with float values using scipy.io.wavfile.write but get an error. What is the likely cause?
medium
A. The file path is incorrect
B. The sample rate is missing
C. The array shape is (samples, 2) instead of (2, samples)
D. The array must be integer type, not float

Solution

  1. Step 1: Check data type requirements for write()

    scipy.io.wavfile.write expects integer arrays (e.g., int16) for audio data.
  2. Step 2: Identify error cause

    Using float arrays causes errors because WAV format stores integers, so conversion is needed.
  3. Final Answer:

    The array must be integer type, not float -> Option D
  4. Quick Check:

    write() needs int arrays [OK]
Hint: Convert floats to int before writing WAV [OK]
Common Mistakes:
  • Ignoring data type and writing floats directly
  • Forgetting sample rate argument
  • Misunderstanding array shape requirements
5. You want to double the speed of a WAV audio file using scipy.io.wavfile. Which approach correctly achieves this?
hard
A. Double the sample rate value and write the original data unchanged
B. Read the file, then write only every second sample to a new file
C. Halve the sample rate value and write the original data unchanged
D. Reverse the audio data array and write it with the original sample rate

Solution

  1. Step 1: Understand speed and sample rate relation

    Speed changes by adjusting sample rate: doubling sample rate doubles playback speed.
  2. Step 2: Apply correct method

    Keep audio data unchanged but write with double the original sample rate to speed up playback.
  3. Final Answer:

    Double the sample rate value and write the original data unchanged -> Option A
  4. Quick Check:

    Speed ∝ sample rate, double rate doubles speed [OK]
Hint: Change sample rate to speed up audio, not data length [OK]
Common Mistakes:
  • Skipping samples instead of changing sample rate
  • Halving sample rate to speed up (actually slows down)
  • Reversing data does not change speed