Blog Post

Microsoft Foundry Blog
5 MIN READ

Post-Stream Refinement is now generally available in Microsoft Foundry

SolarRezaei's avatar
SolarRezaei
Icon for Microsoft rankMicrosoft
Jul 23, 2026

The second-pass refinement that sharpens your final transcript is now production-ready in Azure AI Speech, with diarization, phrase lists, and availability across 22 Azure regions.

When we introduced Post-Stream Refinement in public preview earlier this year, it closed the oldest trade-off in real-time speech: you could finally keep instant streaming results and get a highly accurate final transcript, with no penalty to first-token latency. A second recognition pass runs in parallel with streaming and replaces each final segment with a more accurate version once the utterance completes.

Today, Post-Stream Refinement reaches general availability for Azure AI Speech in Microsoft Foundry, backed by a production SLA. Just as important, it now ships with the capabilities production transcription actually depends on: diarization to preserve who said what, phrase lists for your product names and domain vocabulary, and a much wider footprint of 19 locales across 22 Azure regions.

Everything you already know about Post-Stream Refinement still applies. The real-time contract is unchanged, your partial results stream exactly as before, and you enable refinement by setting a single property on your existing SpeechConfig. What changes at GA is that the refined transcript is now production-grade and speaker-aware. šŸ“– Read the Documentation

 

What's new at general availability

If you have already used Post-Stream Refinement in preview, here is exactly what changes at GA, and what stays the same. The streaming path and SDK contract are untouched; the refinement pass is now production-ready and gains speaker and vocabulary features. 

What's new at GA versus the public preview release. Same real-time streaming contract; production-ready refinement with new speaker and vocabulary features.

How Post-Stream Refinement works

Real-time and final results serve different needs. Partial results must appear quickly so captions, voice interfaces, and agent turn-taking stay responsive. Final results need enough context to support storage, search, summarization, and business workflows. Post-Stream Refinement runs both at once: a fast streaming pass and a deeper refinement pass over the same audio, in parallel.

Both passes run in parallel — partial results stream immediately; final results are refined with broader audio context.

Because the two passes share one input stream, enabling refinement does not require a second transcription job or a separate client pipeline. Your existing recognition events and partial-result handling stay exactly as they are.

 

Speaker attribution with diarization

New at GA, diarization is supported on the Post-Stream Refinement path, so the refined final transcript keeps its speaker labels. That makes the release a strong fit for meetings, contact centers, interviews, and any workflow where the transcript needs to identify who spoke, not just what was said. The refinement pass improves the wording, including proper nouns and named entities, while every utterance stays attributed to the right speaker.

Phrase lists for your vocabulary

Phrase lists let the recognizer prioritize the names and terms that matter to your application: product catalogs, medical and technical vocabulary, organization names, and acronyms that general speech models might not recognize consistently. At GA you can pair phrase lists with refinement so the second pass has both broad audio context and your domain vocabulary to draw on, which is where the largest accuracy gains on named entities show up.

Quality impact

In internal testing and partner evaluations across supported locales, Post-Stream Refinement reduced final-transcript word error rate by double-digit relative percentages compared with standard real-time transcription, with the largest gains on the hardest content: long utterances, proper nouns, and domain-specific speech. Pairing phrase lists with refinement improves named-entity accuracy further. Partial-result latency is unchanged; only the final transcript is refined.

Relative improvement versus standard real-time transcription. Gains vary by locale, acoustic conditions, and content type.

The refined final result may add a small amount of latency to the final segment because refinement happens after the segment audio is received. Partial results are unaffected.

Supported languages and regions

General availability supports 19 locales. You declare one locale per session, so the service is tuned to the language you expect. Alongside the Tier-1 languages, GA adds Indic locales, including Bengali, Marathi, Punjabi, and Telugu.

19 supported locales at GA. Declare one locale per session.

Post-Stream Refinement is generally available in 22 Azure regions across the Americas, Europe, and Asia Pacific.

Generally available in 22 Azure regions across the Americas, Europe, and Asia Pacific.

Proven at Microsoft scale

The technology behind Post-Stream Refinement already powers meeting transcription and Microsoft 365 Copilot experiences in Microsoft Teams, serving millions of users across meetings, webinars, and live events every day. General availability brings the same quality bar to every Azure AI Speech customer through a supported SDK integration, not a research prototype.

Preview customers across industries, including automotive, consumer electronics, and aviation, reported positive gains in transcription quality, with the clearest improvements on the hardest content: proper nouns, long-form speech, and domain-specific audio. Several are now moving those workloads into production on the GA release.

Get started

Enabling Post-Stream Refinement is a small configuration change on your existing SpeechConfig. You will need:

  • Speech SDK 1.50 or later. Earlier versions do not support the refinement path.
  • Speech resource in one of the supported regions listed above.
  • The session locale you expect, set on the recognizer.

Set the post-processing option to PostRefinement. The example below also shows the optional phrase list for your domain vocabulary.

import azure.cognitiveservices.speech as speechsdk

speech_config = speechsdk.SpeechConfig(
    subscription="YourSpeechKey",
    region="YourSpeechRegion")

# Declare one locale for the session
speech_config.speech_recognition_language = "en-US"

# 1) Refine the final transcript (Post-Stream Refinement)
speech_config.set_property(
    speechsdk.PropertyId.SpeechServiceResponse_PostProcessingOption,
    "PostRefinement")

audio_config = speechsdk.AudioConfig(use_default_microphone=True)

recognizer = speechsdk.SpeechRecognizer(
    speech_config=speech_config,
    audio_config=audio_config)

# 2) (Optional) Phrase list for names, acronyms, and domain terms
phrase_list = speechsdk.PhraseListGrammar.from_recognizer(recognizer)
for term in ["Contoso", "Fabrikam", "Foundry", "OAuth"]:
    phrase_list.addPhrase(term)

Your existing recognition events and partial-result handling remain unchanged. For speaker attribution, enable diarization through the established real-time diarization path; refinement applies to the final transcript while speaker labels are preserved.

 

Choose the right release for your workload

Post-Stream Refinement now has two paths. They are the same product family with a different feature boundary, so match the path to what your customer needs.

 Monolingual PSR — generally availableMultilingual PSR — public preview
Language selectionOne locale declared per sessionAutomatic detection and code-switching in a single stream (open-range, no locale declared)
Supported locales19 locales, including Indic bn / mr / pa / te25 languages / 29 locales, auto-detected
Azure regions22 Azure regions across the Americas, Europe, and Asia Pacific6 Azure regions
Phrase lists & diarizationSupportedOnly diarization is supported

Working across languages? If a single stream needs to handle multiple languages or code-switching without a declared locale, use Multilingual Post-Stream Refinement, now in public preview. For a known session locale with phrase lists and diarization, monolingual GA is the right path.

 

Try Post-Stream Refinement Today

Turn on higher-accuracy, language-aware transcription in your Azure AI Speech applications with a single configuration change. 

šŸ“– Read the Documentation

We would love your feedback. Try Post-Stream Refinement in your applications and tell us how it improves your transcription quality.

Updated Jul 23, 2026
Version 1.0