Bird
Raised Fist0
Signal Processingdata~10 mins

Pitch detection algorithm in Signal Processing - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to calculate the autocorrelation of the signal.

Signal Processing
autocorr = np.correlate(signal, signal, mode=[1])
Drag options to blanks, or click blank then click option'
A"same"
B"full"
C"valid"
D"auto"
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using 'full' mode which returns a longer output.
Using 'valid' mode which returns a shorter output.
2fill in blank
medium

Complete the code to find the first minimum lag to ignore zero lag in autocorrelation.

Signal Processing
start = [1]
Drag options to blanks, or click blank then click option'
A0
B1
Clen(autocorr)//2
D-1
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Starting from zero lag which is always the highest peak.
Using negative index which is invalid here.
3fill in blank
hard

Fix the error in the code to find the pitch period from autocorrelation peaks.

Signal Processing
pitch_period = np.argmax(autocorr[[1]:]) + [1]
Drag options to blanks, or click blank then click option'
Alen(autocorr)//2
B0
Cstart
D1
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using 0 as start index which includes zero lag peak.
Using half length which may miss the correct peak.
4fill in blank
hard

Fill both blanks to compute the pitch frequency from the pitch period and sampling rate.

Signal Processing
pitch_freq = [1] / [2]
Drag options to blanks, or click blank then click option'
Afs
Bpitch_period
Clen(signal)
Dautocorr.max()
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using signal length instead of pitch period.
Using maximum autocorrelation value instead of pitch period.
5fill in blank
hard

Fill all three blanks to create a dictionary of pitch frequencies for multiple frames.

Signal Processing
pitch_dict = {frame: [1] / [2] for frame, [3] in frames.items()}
Drag options to blanks, or click blank then click option'
Afs
Bpitch_period
Dsignal
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Mixing variable names in the comprehension.
Using signal instead of pitch_period for frequency calculation.

Practice

(1/5)
1. What is the main goal of a pitch detection algorithm in signal processing?
easy
A. To find the main frequency or tone in a sound signal
B. To remove noise from a sound signal
C. To increase the volume of a sound signal
D. To convert sound into text

Solution

  1. Step 1: Understand pitch detection purpose

    Pitch detection algorithms analyze sound to find the fundamental frequency or main tone.
  2. Step 2: Compare options to definition

    Only To find the main frequency or tone in a sound signal describes finding the main frequency, which matches pitch detection's goal.
  3. Final Answer:

    To find the main frequency or tone in a sound signal -> Option A
  4. Quick Check:

    Pitch detection = main frequency [OK]
Hint: Pitch detection finds the main tone frequency [OK]
Common Mistakes:
  • Confusing pitch detection with noise removal
  • Thinking pitch detection changes volume
  • Mixing pitch detection with speech-to-text
2. Which of the following is the correct Python syntax to compute the autocorrelation of a signal array x using numpy?
easy
A. np.autocorr(x)
B. np.correlate(x, x, mode='full')
C. np.correlation(x, x)
D. np.correlate(x)

Solution

  1. Step 1: Recall numpy autocorrelation syntax

    Autocorrelation uses np.correlate with the same array twice and mode='full' for full result.
  2. Step 2: Check options for correct function and parameters

    Only np.correlate(x, x, mode='full') uses np.correlate(x, x, mode='full'), which is correct syntax.
  3. Final Answer:

    np.correlate(x, x, mode='full') -> Option B
  4. Quick Check:

    Autocorrelation = np.correlate(x, x, 'full') [OK]
Hint: Use np.correlate(x, x, mode='full') for autocorrelation [OK]
Common Mistakes:
  • Using non-existent function np.autocorr
  • Missing second argument in np.correlate
  • Wrong function name like np.correlation
3. Given the following Python code snippet for pitch detection using autocorrelation, what is the output of pitch_period?
import numpy as np
x = np.array([0, 1, 0, -1, 0, 1, 0, -1])
correlation = np.correlate(x, x, mode='full')
mid = len(correlation) // 2
pitch_period = np.argmax(correlation[mid+1:]) + 1
print(pitch_period)
medium
A. 2
B. 3
C. 1
D. 4

Solution

  1. Step 1: Understand autocorrelation output length and midpoint

    Input length is 8, so correlation length is 15, midpoint at index 7.
  2. Step 2: Find max correlation lag after midpoint

    Correlation peaks at lag 4 (pattern repeats every 4 samples), so np.argmax(correlation[8:]) + 1 = 4.
  3. Final Answer:

    4 -> Option D
  4. Quick Check:

    Pitch period = 4 samples [OK]
Hint: Pitch period = lag with highest autocorrelation after zero lag [OK]
Common Mistakes:
  • Choosing zero lag as pitch period
  • Off-by-one error in indexing
  • Misunderstanding correlation midpoint
4. The following code attempts to find the pitch period but gives incorrect results. What is the main error?
import numpy as np
x = np.array([0, 1, 0, -1, 0, 1, 0, -1])
correlation = np.correlate(x, x, mode='full')
pitch_period = np.argmax(correlation)  # Incorrect line
print(pitch_period)
medium
A. It should use np.min instead of np.argmax
B. It uses the wrong input array for correlation
C. It finds the max correlation over full range including negative lags
D. It misses normalizing the correlation

Solution

  1. Step 1: Analyze np.argmax usage on full correlation

    Using np.argmax on full correlation finds max at zero lag (center), not pitch period lag.
  2. Step 2: Correct approach is to find max after midpoint

    Pitch period is lag > 0 with max correlation, so search only after midpoint.
  3. Final Answer:

    It finds the max correlation over full range including negative lags -> Option C
  4. Quick Check:

    Max correlation at zero lag is not pitch period [OK]
Hint: Search max correlation only after zero lag index [OK]
Common Mistakes:
  • Taking max correlation at zero lag as pitch
  • Ignoring lag indexing after midpoint
  • Confusing normalization with lag selection
5. You have a recorded audio signal sampled at 8000 Hz. Using autocorrelation, you find the pitch period is 160 samples. What is the pitch frequency in Hz? How would you calculate it?
hard
A. 50 Hz, calculated as sample_rate / pitch_period
B. 160 Hz, calculated as pitch_period / sample_rate
C. 8000 Hz, the sample rate itself
D. 0.02 Hz, calculated as pitch_period * sample_rate

Solution

  1. Step 1: Understand pitch frequency formula

    Pitch frequency = sample rate divided by pitch period (in samples).
  2. Step 2: Calculate pitch frequency

    Pitch frequency = 8000 / 160 = 50 Hz.
  3. Final Answer:

    50 Hz, calculated as sample_rate / pitch_period -> Option A
  4. Quick Check:

    Frequency = 8000 / 160 = 50 Hz [OK]
Hint: Pitch frequency = sample rate รท pitch period [OK]
Common Mistakes:
  • Dividing pitch period by sample rate instead
  • Using sample rate as frequency directly
  • Multiplying pitch period by sample rate
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