How to beginner · 3 min read

How to build meeting transcription app with Whisper

Quick answer
Use OpenAI's whisper-1 model via the openai Python SDK to transcribe meeting audio files. Upload audio in supported formats (mp3, wav, m4a), call client.audio.transcriptions.create(), and extract the text transcript for your app.

PREREQUISITES

  • Python 3.8+
  • OpenAI API key (free tier works)
  • pip install openai>=1.0

Setup

Install the openai Python package and set your OpenAI API key as an environment variable.

  • Install package: pip install openai
  • Set environment variable in your shell:
    export OPENAI_API_KEY='your_api_key_here'
bash
pip install openai

Step by step

This example shows how to transcribe a local meeting audio file using the Whisper API. It uploads the file, calls the transcription endpoint, and prints the transcript text.

python
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

def transcribe_meeting(audio_path: str) -> str:
    with open(audio_path, "rb") as audio_file:
        transcript = client.audio.transcriptions.create(
            model="whisper-1",
            file=audio_file
        )
    return transcript.text

if __name__ == "__main__":
    audio_file_path = "meeting_recording.mp3"  # Replace with your audio file path
    text = transcribe_meeting(audio_file_path)
    print("Transcription output:")
    print(text)
output
Transcription output:
Good morning everyone, let's start the meeting with the project updates...

Common variations

You can use different audio formats supported by Whisper such as WAV, M4A, or MP4. For real-time transcription, stream audio chunks and call the API incrementally (requires custom buffering). You can also use the openai-whisper local package for offline transcription.

python
import asyncio
from openai import OpenAI

client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

async def async_transcribe(audio_path: str):
    with open(audio_path, "rb") as f:
        transcript = await client.audio.transcriptions.acreate(
            model="whisper-1",
            file=f
        )
    print(transcript.text)

if __name__ == "__main__":
    asyncio.run(async_transcribe("meeting_recording.wav"))
output
Good morning everyone, let's start the meeting with the project updates...

Troubleshooting

  • If you get a FileNotFoundError, verify the audio file path is correct.
  • If transcription is inaccurate, ensure audio quality is clear and in a supported format.
  • For AuthenticationError, check your OPENAI_API_KEY environment variable is set properly.
  • Large audio files may require chunking or trimming to fit API limits.

Key Takeaways

  • Use OpenAI's whisper-1 model with the official openai Python SDK for meeting transcription.
  • Supported audio formats include mp3, wav, m4a, and mp4; ensure good audio quality for best results.
  • Set your API key securely via environment variables and handle large files by chunking if needed.
Verified 2026-04 · whisper-1
Verify ↗