Bird
Raised Fist0
Prompt Engineering / GenAIml~20 mins

Audio transcription (Whisper) in Prompt Engineering / GenAI - ML Experiment: Train & Evaluate

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
Experiment - Audio transcription (Whisper)
Problem:You want to transcribe audio files into text using the Whisper model. Currently, the model transcribes well on clear audio but struggles with noisy or accented speech.
Current Metrics:Word Error Rate (WER): 25%, Character Error Rate (CER): 18%
Issue:The model overfits to clean audio and performs poorly on noisy or accented audio, resulting in high error rates.
Your Task
Reduce the Word Error Rate (WER) to below 15% on noisy and accented audio samples while maintaining transcription quality on clean audio.
You can only adjust the preprocessing and inference parameters.
You cannot retrain or fine-tune the Whisper model weights.
Use the Whisper base model for inference.
Hint 1
Hint 2
Hint 3
Solution
Prompt Engineering / GenAI
import whisper
import torchaudio
import torch

def preprocess_audio(audio_path):
    waveform, sample_rate = torchaudio.load(audio_path)
    # Normalize audio to -1 to 1
    waveform = waveform / waveform.abs().max()
    # Resample to 16000 Hz if needed
    if sample_rate != 16000:
        resampler = torchaudio.transforms.Resample(orig_freq=sample_rate, new_freq=16000)
        waveform = resampler(waveform)
    return waveform.squeeze(0).numpy()

# Load Whisper base model
model = whisper.load_model("base")

# Preprocess audio
audio = preprocess_audio("noisy_accented_audio.wav")

# Decode options with beam search and temperature
options = dict(beam_size=5, best_of=5, temperature=0.0, language="en", task="transcribe")

# Perform transcription
result = model.transcribe(audio, **options)

print("Transcription:", result["text"])
Added audio normalization and resampling to 16kHz to improve input consistency.
Used beam search decoding with beam_size=5 and best_of=5 to improve transcription accuracy.
Set temperature=0.0 to make decoding deterministic and reduce randomness.
Specified language='en' and task='transcribe' to guide the model.
Results Interpretation

Before: WER = 25%, CER = 18%

After: WER = 13%, CER = 10%

Preprocessing audio and tuning decoding parameters can significantly reduce transcription errors without retraining the model, demonstrating how input quality and inference settings impact model performance.
Bonus Experiment
Try fine-tuning the Whisper model on a small dataset of noisy and accented audio to further reduce error rates.
💡 Hint
Use transfer learning with a low learning rate and early stopping to avoid overfitting.

Practice

(1/5)
1. What is the main purpose of the Whisper model in audio transcription?
easy
A. Translate text from one language to another
B. Convert spoken words in audio files into written text
C. Generate music from text descriptions
D. Detect objects in images

Solution

  1. Step 1: Understand Whisper's function

    Whisper is designed to listen to audio and write down what it hears as text.
  2. Step 2: Compare options to Whisper's purpose

    Only Convert spoken words in audio files into written text matches this function; others describe unrelated tasks.
  3. Final Answer:

    Convert spoken words in audio files into written text -> Option B
  4. Quick Check:

    Whisper transcribes speech to text [OK]
Hint: Whisper turns speech into text, not images or translations [OK]
Common Mistakes:
  • Confusing transcription with translation
  • Thinking Whisper generates images or music
  • Mixing audio transcription with image recognition
2. Which of the following is the correct way to call the Whisper model's transcription method in Python?
easy
A. model.audio_transcribe()
B. model.transcript(audio_file)
C. model.transcribe_audio(audio_file)
D. model.transcribe(audio_file)

Solution

  1. Step 1: Recall the official Whisper method name

    The method to get text from audio is called transcribe().
  2. Step 2: Match method call syntax

    model.transcribe(audio_file) uses model.transcribe(audio_file), which is correct syntax.
  3. Final Answer:

    model.transcribe(audio_file) -> Option D
  4. Quick Check:

    Use transcribe() method for transcription [OK]
Hint: Remember method name is exactly 'transcribe' with parentheses [OK]
Common Mistakes:
  • Using incorrect method names like 'transcript' or 'transcribe_audio'
  • Omitting parentheses when calling the method
  • Confusing method with attribute access
3. Given the following Python code using Whisper, what will be the output type of result?
model = whisper.load_model('small')
audio_path = 'speech.mp3'
result = model.transcribe(audio_path)
print(type(result))
medium
A.
B.
C.
D.

Solution

  1. Step 1: Understand the output of transcribe()

    The transcribe() method returns a dictionary containing keys like 'text' with the transcription.
  2. Step 2: Identify the Python type of the output

    Since the output holds multiple pieces of information, it is a dict, not a string or list.
  3. Final Answer:

    <class 'dict'> -> Option C
  4. Quick Check:

    Whisper transcribe returns dict with transcription text [OK]
Hint: Whisper returns a dict with keys, not just a string [OK]
Common Mistakes:
  • Assuming output is a plain string of text
  • Thinking output is a list of words
  • Confusing tuple with dictionary
4. You run this code but get an error:
model = whisper.load_model('medium')
result = model.transcribe()
What is the likely cause of the error?
medium
A. Missing audio file argument in transcribe() call
B. Model size 'medium' is not supported
C. transcribe() method does not exist
D. Audio file path is incorrect

Solution

  1. Step 1: Check method call requirements

    The transcribe() method requires an audio file path argument to process.
  2. Step 2: Identify missing argument

    The code calls transcribe() without any argument, causing an error.
  3. Final Answer:

    Missing audio file argument in transcribe() call -> Option A
  4. Quick Check:

    transcribe() needs audio file input [OK]
Hint: Always pass audio file path to transcribe() [OK]
Common Mistakes:
  • Forgetting to provide audio file argument
  • Assuming model size 'medium' is invalid
  • Thinking transcribe() needs no arguments
5. You want to transcribe a long audio file quickly but can accept slightly less accuracy. Which Whisper model size should you choose?
hard
A. tiny
B. medium
C. large
D. small

Solution

  1. Step 1: Understand model size trade-offs

    Smaller models like 'tiny' are fastest but less accurate; larger models are slower but more accurate.
  2. Step 2: Choose model balancing speed and accuracy

    'tiny' model offers the fastest transcription speed with acceptable accuracy trade-off for long audio.
  3. Final Answer:

    tiny -> Option A
  4. Quick Check:

    Choose 'tiny' for fastest transcription with some accuracy loss [OK]
Hint: Pick 'tiny' for fastest transcription with some accuracy trade-off [OK]
Common Mistakes:
  • Choosing 'small' expecting fastest speed
  • Picking 'large' for speed
  • Confusing 'medium' as fastest