If your meetings happen in Microsoft Teams, use the built-in transcript first, because it needs no code and keeps the data inside Microsoft 365. If you have recordings from other sources, or you need your own pipeline, choose between self-hosted Whisper, the OpenAI or Azure OpenAI transcription endpoints, and Azure AI Speech. The deciding factors are where the audio may be processed, file size, speaker labels and how much engineering you want to maintain.
Who this is for and what you will have
This is for IT administrators, operations leads and developers who need searchable meeting records, call transcripts or interview notes. By the end you will have a comparison of five routes, a decision guide, working command and API examples where the documentation provides them, and a list of pitfalls to check before you commit. Features, limits and model names change, so confirm the current documentation for anything you build on.
The five routes at a glance
| Route | Where audio is processed | Key limits from documentation | Speaker labels | Effort |
|---|---|---|---|---|
| Teams built-in transcription | Microsoft 365 (Teams service) | Live transcription on Teams desktop; transcript viewable in the meeting chat and Recap tab | Participants can hide their identity in captions and transcripts | None |
| Open-source Whisper | Your own machine or server | Model size depends on your hardware | Not a built-in feature | Medium to high |
| OpenAI API | OpenAI | 25 MB per file; formats mp3, mp4, mpeg, mpga, m4a, wav, webm | Via specific models; some are deprecated | Low |
| Azure OpenAI transcription | Your Azure resource | 25 MB per file | Check current model documentation | Low to medium |
| Azure AI Speech (fast and batch) | Your Azure Speech resource | Fast: under 5 hours and 500 MB; batch: files in storage | Diarization supported | Medium |
Route 1: Teams built-in transcription
For meetings that already run in Teams, this is the lowest-effort option. According to Microsoft's support documentation:
- Starting a recording starts transcription automatically. For transcription only, select More actions, then Transcribe, confirm the spoken language and select Confirm.
- Everyone in the meeting receives a notification.
- Organisers, co-organisers and presenters can stop and restart transcription.
- Transcripts are stored in the meeting organiser's OneDrive for Business and are available through the meeting chat and the Recap tab until the organiser deletes them.
- Organisers and co-organisers can download the transcript as .docx or .vtt. Same-organisation participants cannot download it directly unless the organiser configures download access in Stream. Participants from another tenant can view live transcription but cannot start or stop it, or view the transcript afterwards.
- Live transcription is only available on Teams for desktop, while mobile users can view the transcript after the meeting.
- Live translated transcription requires Teams Premium.
Admin policy affects what users can do, so if transcription is missing, check your organisation's Teams meeting policies. Where Copilot and Teams Premium are licensed, organisers can restrict who may record and transcribe.
Choose it when the meetings are in Teams, you want searchable records tied to the meeting, and you do not need to process the text in your own pipeline.
Route 2: Open-source Whisper on your own hardware
Whisper is OpenAI's open-source speech recognition model. The repository states that code and model weights are released under the MIT licence. Install it with pip and make sure the ffmpeg command-line tool is available:
pip install -U openai-whisper
whisper audio.flac audio.mp3 audio.wav --model turboThe repository lists six model sizes. Approximate VRAM needs and relative speeds are published, for example roughly 1 GB for tiny and base, about 2 GB for small, about 5 GB for medium, about 10 GB for large and about 6 GB for turbo, with turbo roughly eight times faster than large on an A100 GPU. The turbo model is an optimised version of large-v3 and is not trained for translation. For translating non-English speech into English, the repository advises using the medium or large models with --task translate.
Choose it when audio must not leave your environment, you have a large backlog and your own GPUs, or you want to control the whole pipeline. Plan for hardware, updates, storage and your own speaker identification, because the project does not describe speaker labelling as a built-in feature.
Route 3: OpenAI API transcription
OpenAI's speech-to-text guide describes the /v1/audio/transcriptions endpoint. Documented points include:
- A 25 MB limit per uploaded file. For larger recordings, use a compressed format or split the audio into chunks of 25 MB or less.
- Supported formats of mp3, mp4, mpeg, mpga, m4a, wav and webm.
- A
promptparameter, which can carry vocabulary hints. - Word or segment timestamps through
timestamp_granularities[], supported only forwhisper-1.
Model naming is moving. The guide currently recommends gpt-transcribe for recorded speech in its original language, and lists whisper-1, gpt-4o-transcribe, gpt-4o-mini-transcribe and gpt-4o-transcribe-diarize as deprecated with a shutdown date of February 26, 2027. The /v1/audio/translations endpoint is deprecated on the same date. Read the guide for the current names before writing code, and make the model name a configuration value so you can change it without redeploying.
Billing for the API is separate from any ChatGPT subscription. See OpenAI API vs ChatGPT subscription for how the two differ. For data handling, OpenAI states that API data is not used to train its models by default and that abuse-monitoring logs are kept for up to 30 days by default.
Choose it when you want the least engineering for audio you are permitted to send to a third-party API, and your files are short or easy to split.
Route 4: Azure OpenAI transcription
Microsoft's Azure OpenAI quickstart for speech-to-text uses a deployed transcription model in your own Azure resource, called with the deployment name in the SDK or REST call. The quickstart states that the file size limit is 25 MB, and that for larger files you should use the Azure Speech batch transcription API with a Whisper model.
Choose it when you want the OpenAI model family inside your Azure subscription, with Azure's identity, networking and compliance controls. Confirm which transcription models are available in your region and which deployment types they support. For general guidance on Azure deployment types and data processing locations, see Azure OpenAI deployment types compared.
Route 5: Azure AI Speech fast and batch transcription
Azure AI Speech offers two documented paths for audio files.
Fast transcription is a synchronous REST call. Microsoft's documentation says audio must be shorter than 5 hours and smaller than 500 MB, and lists WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW in WAV container, MULAW in WAV container, AMR, WebM and SPEEX. The request is multipart form data to your resource endpoint:
POST https://YourResourceName.cognitiveservices.azure.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15Authenticate with the Ocp-Apim-Subscription-Key header, or with a bearer token for Microsoft Entra ID. The definition part of the request can include locales, diarization, channels, phraseList and profanityFilterMode. To label speakers in a single-channel recording, enable diarization:
{
"locales": ["en-US"],
"diarization": { "maxSpeakers": 2, "enabled": true }
}The response adds a speaker value to each phrase. Diarization supports one channel only, so do not set channels to [0,1] for stereo audio when diarization is on.
Batch transcription is asynchronous. You submit audio from an Azure Blob Storage container or by URI, then retrieve results later. Microsoft states that batch jobs are scheduled on a best-effort basis: at peak hours a job can take up to 30 minutes to start and up to 24 hours to complete, and the 90th percentile latency is under 6 hours. Its guidance suggests submitting about 1,000 files in a single create request, spreading submissions over several hours, and checking job status about every 10 minutes rather than every few seconds. A Power Platform connector exists for low-code scenarios.
Choose it when you want diarization, longer files, large volumes processed from storage, or a managed Azure service with a clear sizing and throttling model.
How to choose
Work through these questions in order.
- Are the meetings in Teams and is a searchable transcript enough? Use Teams built-in transcription.
- Must audio stay in your own environment? Use self-hosted Whisper, or Azure services in a region and deployment type that meet your residency requirements.
- Do you need speaker labels on recordings from many sources? Look at Azure AI Speech diarization first.
- Are files under 25 MB, or easy to split? The OpenAI or Azure OpenAI endpoints are the quickest to integrate.
- Do you have thousands of hours to process? Compare self-hosted Whisper with Azure AI Speech batch transcription, then test cost and turnaround on a sample.
Pitfalls and troubleshooting
Upload fails because the file is too large. The OpenAI and Azure OpenAI limit is 25 MB per file. Compress the audio, split it at silence, or switch to Azure AI Speech.
429 errors from Azure AI Speech fast transcription. Microsoft's documentation points to its guidance on mitigating throttling during autoscaling. Add retries with backoff and spread requests over time.
Speaker labels are missing or wrong. For Azure AI Speech, confirm diarization is enabled and the audio is a single channel. Do not expect a plain transcription call to identify who said what.
Specialist terms are mistranscribed. Use the vocabulary or prompt features offered by the service, such as phraseList in Azure fast transcription or the prompt parameter at OpenAI, and then check names and numbers by hand.
Teams transcript is missing. Check that transcription was started, that it is permitted by meeting policy, and that you are looking in the organiser's meeting chat or Recap tab. Remember that attendees from other tenants cannot view the transcript afterwards.
Everything looks right but a quote is wrong. Automated transcripts contain errors. Review any text that will be quoted, attributed to a person or used in a decision. For the wider habit of checking machine output, see AI hallucinations at work: a verification checklist.
Privacy and consent checklist
- Tell participants when transcription is running. Teams notifies everyone automatically, but external tools do not.
- Check legal requirements for recording and transcribing in the countries involved.
- Decide where transcripts are stored, who can read them and when they are deleted.
- Confirm each service's training and retention terms before sending sensitive audio.
- Keep a record of which route and model processed each recording.
References
- Microsoft Support, Live transcription in Microsoft Teams meetings: https://support.microsoft.com/en-us/office/view-live-transcription-in-a-teams-meeting-dc1a8f23-2e20-4684-885e-2152e06a4a8b
- OpenAI, Speech to text guide: https://developers.openai.com/api/docs/guides/speech-to-text
- OpenAI Whisper repository: https://github.com/openai/whisper
- Microsoft Learn, Speech to text with transcription models in Azure OpenAI: https://learn.microsoft.com/en-us/azure/foundry/openai/whisper-quickstart
- Microsoft Learn, Batch transcription overview: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/batch-transcription
- Microsoft Learn, Fast transcription: https://learn.microsoft.com/en-us/azure/ai-services/speech-service/fast-transcription-create
- OpenAI, Data controls in the OpenAI platform: https://developers.openai.com/api/docs/guides/your-data
Comments
Questions and tips are welcome. Comments are checked by the EpiFive team before they appear; please do not share passwords, phone numbers or other private details.