Ce que change la préversion multilingue de Post-Stream Refinement
Jusqu'à présent, Post-Stream Refinement dans Azure AI Speech (Microsoft Foundry) imposait une contrainte forte : il fallait déclarer une locale unique avant d'ouvrir le flux audio. Cette exigence est désormais levée. La Multilingual Post-Stream Refinement entre en préversion publique et permet, pour la première fois, qu'un seul flux temps réel reconnaisse plusieurs langues au sein d'une même session, sans liste de candidats ni déclaration de locale préalable.
Le moteur détecte automatiquement la langue parlée, gère le code-switching à l'intérieur d'un même énoncé, et produit une transcription finale affinée. La latence des résultats partiels (premier token) reste inchangée — seul le segment final bénéficie de la passe de raffinement.

Contexte fonctionnel
Post-Stream Refinement combine la réactivité du streaming temps réel et la précision d'un modèle de raffinement appliqué sur le transcript final. La variante multilingue étend ce pipeline à la détection automatique de langue, sans modifier le contrat de latence des résultats intermédiaires.
Prérequis avant de commencer
Avant d'activer la fonctionnalité en production, vérifiez que votre environnement remplit les conditions suivantes :
- Speech SDK version 1.50 ou ultérieure — les versions antérieures ne supportent pas le chemin multilingue. Mettez à jour le package Python :
pip install azure-cognitiveservices-speech>=1.50.0. - Ressource Azure AI Speech déployée dans l'une des régions compatibles (voir section dédiée ci-dessous).
- Clé d'abonnement ou identité managée avec le rôle
Cognitive Services Speech Userau minimum sur la ressource. - Aucune liste de langues candidates à fournir : la configuration
AutoDetectSourceLanguageConfig()s'instancie sans argument.
Version du SDK
Si vous utilisez Speech SDK < 1.50, l'appel à AutoDetectSourceLanguageConfig() sans arguments combiné avec PostRefinement retournera une erreur SPXERR_INVALID_ARG. Vérifiez la version installée avec pip show azure-cognitiveservices-speech avant tout déploiement.
Langues et régions supportées en préversion
La préversion couvre 25 langues détectées automatiquement, réparties sur 29 locales de marché. N'importe quelle combinaison de ces langues peut apparaître dans un même flux sans configuration supplémentaire.

La fonctionnalité est disponible dans les six régions Azure suivantes :

| Région Azure | Nom interne |
|---|---|
| East US | eastus |
| West US | westus |
| North Europe | northeurope |
| Central India | centralindia |
| Southeast Asia | southeastasia |
| Japan East | japaneast |
Disponibilité régionale
Si votre ressource Speech est hébergée dans une région hors de cette liste (par exemple francecentral ou westeurope), la passe de raffinement multilingue ne sera pas disponible. Vous devrez créer une nouvelle ressource dans l'une des six régions supportées ou rediriger votre trafic.
Impact qualité mesuré
Les évaluations internes et partenaires sur les locales Tier-1 montrent les gains suivants :
- Réduction du Word Error Rate (WER) d'environ 10 % en moyenne sur les locales Tier-1.
- Réductions à deux chiffres sur les cas difficiles : énoncés longs, noms propres et entités nommées, discours mixte ou code-switchant.
- Latence des résultats partiels inchangée — seule la latence du segment final peut augmenter légèrement.
Ces chiffres sont des améliorations relatives par rapport au modèle temps réel standard. Ils varient selon la langue, les conditions acoustiques et le type de contenu.
Cas d'usage prioritaires
Le raffinement apporte le plus de valeur aux pipelines qui conservent la transcription finale : notes de réunion, analyse de centre d'appels, archivage de conformité, résumé automatique par IA. Si votre application n'exploite que les résultats partiels pour un affichage temps réel et les écarte ensuite, l'expérience utilisateur reste identique, mais tout transcript persisté bénéficiera de la précision améliorée.
Activation pas à pas
Installer ou mettre à jour le Speech SDK
Vérifiez la version installée, puis mettez à jour si nécessaire.
1# Vérification de la version actuelle2pip show azure-cognitiveservices-speech3 4# Mise à jour vers la version minimale requise5pip install --upgrade "azure-cognitiveservices-speech>=1.50.0"Résultat attendu : Version: 1.50.x ou supérieur dans la sortie de pip show.
Récupérer la clé et la région de votre ressource Speech
Depuis le portail Azure, naviguez vers votre ressource Speech > Clés et point de terminaison. Copiez KEY 1 et la valeur Emplacement/Région (format court, ex. eastus).
Alternativement, via Azure CLI :
1# Lister les ressources Speech du tenant2az cognitiveservices account list `3 --query "[?kind=='SpeechServices'].{name:name, region:location, rg:resourceGroup}" `4 --output table5 6# Récupérer la clé primaire7az cognitiveservices account keys list `8 --name "<NomRessource>" `9 --resource-group "<NomRG>" `10 --query "key1" `11 --output tsvPermission minimum requise : Cognitive Services Speech User sur la ressource, ou Reader + Cognitive Services Speech User.
Configurer et instancier le recognizer multilingue
Voici le code Python complet, prêt à l'emploi, avec tous les paramètres nommés :
1import azure.cognitiveservices.speech as speechsdk2 3# --- Configuration de base ---4speech_config = speechsdk.SpeechConfig(5 subscription="YourSpeechKey",6 region="YourSpeechRegion") # ex. "eastus"7 8# --- 1) Activer la passe de raffinement post-stream ---9speech_config.set_property(10 speechsdk.PropertyId.SpeechServiceResponse_PostProcessingOption,11 "PostRefinement")12 13# --- 2) Détection automatique multilingue (aucune liste de candidats) ---14auto_detect_config = speechsdk.languageconfig.AutoDetectSourceLanguageConfig()15 16# --- Source audio : microphone par défaut (remplacer par AudioConfig(filename=...) pour un fichier) ---17audio_config = speechsdk.AudioConfig(use_default_microphone=True)18 19# --- Instanciation du recognizer ---20recognizer = speechsdk.SpeechRecognizer(21 speech_config=speech_config,22 auto_detect_source_language_config=auto_detect_config,23 audio_config=audio_config)24 25# --- Reconnaisance continue avec callbacks ---26def on_recognized(evt):27 result = evt.result28 lang = result.properties.get(29 speechsdk.PropertyId.SpeechServiceConnection_AutoDetectSourceLanguageResult,30 "unknown")31 print(f"[{lang}] {result.text}")32 33recognizer.recognized.connect(on_recognized)34recognizer.start_continuous_recognition()35 36input("Appuyez sur Entrée pour arrêter...\n")37recognizer.stop_continuous_recognition()La propriété SpeechServiceConnection_AutoDetectSourceLanguageResult retourne le code BCP-47 de la langue détectée (ex. fr-FR, en-US) dans chaque résultat final.
Vérifier que la passe de raffinement est active
Pour confirmer que PostRefinement est bien appliqué, activez la journalisation détaillée du SDK :
1import azure.cognitiveservices.speech as speechsdk2 3speech_config = speechsdk.SpeechConfig(4 subscription="YourSpeechKey",5 region="YourSpeechRegion")6 7# Activer le log SDK dans un fichier local8speech_config.set_property(9 speechsdk.PropertyId.Speech_LogFilename,10 "speech_sdk.log")11 12speech_config.set_property(13 speechsdk.PropertyId.SpeechServiceResponse_PostProcessingOption,14 "PostRefinement")Dans le fichier speech_sdk.log, recherchez la chaîne PostRefinement pour confirmer que l'option est transmise au service. L'absence de cette chaîne indique que la propriété n'a pas été correctement définie ou que la version du SDK est trop ancienne.

Dépannage des erreurs courantes
Cause la plus fréquente : version du SDK inférieure à 1.50. Vérifiez avec pip show azure-cognitiveservices-speech. Si la version est correcte, vérifiez que AutoDetectSourceLanguageConfig() est instancié sans arguments (la liste de candidats doit être absente pour le mode multilingue ouvert).
Assurez-vous que la propriété SpeechServiceConnection_AutoDetectSourceLanguageResult est lue depuis result.properties et non depuis result.language (champ distinct). Vérifiez également que la région de votre ressource figure dans la liste des six régions supportées.
Vérifiez dans les logs que la chaîne PostRefinement apparaît bien. Si vous ne consommez que les événements recognizing (résultats partiels), le raffinement n'est visible que sur les événements recognized (résultat final). Adaptez vos callbacks en conséquence.
Le compte utilisé ne dispose pas du rôle Cognitive Services Speech User sur la ressource. Assignez ce rôle via le portail Azure > votre ressource Speech > Contrôle d'accès (IAM) > Ajouter une attribution de rôle, ou via PowerShell : New-AzRoleAssignment -ObjectId <PrincipalId> -RoleDefinitionName 'Cognitive Services Speech User' -Scope <ResourceId>.
Considérations pour un déploiement en production
Préversion publique : SLA et stabilité
Cette fonctionnalité est en préversion publique. Elle n'est pas couverte par un SLA de production Microsoft. Ne l'activez pas sur des flux de conformité réglementaire ou des archives légales sans valider au préalable les résultats sur votre corpus audio réel.
Points à anticiper avant un passage en production :
- Délai sur le segment final : la passe de raffinement ajoute une latence au dernier résultat de chaque énoncé. Mesurez cet écart sur vos données audio représentatives avant de fixer vos SLO applicatifs.
- Quota et tarification : la Multilingual Post-Stream Refinement s'appuie sur la même ressource Speech que vos autres appels. Vérifiez vos quotas dans le portail Azure > votre ressource > Métriques. La tarification applicable à la préversion est documentée sur la page de tarification Azure AI Speech.
- Disponibilité résidentielle (data residency) : si vos exigences de conformité imposent que les données audio restent dans une géographie spécifique, vérifiez que la région cible figure dans la liste des six régions supportées et correspond à votre périmètre réglementaire.
- Diarisation incluse : la passe multilingue intègre la diarisation (identification des locuteurs). Aucune configuration supplémentaire n'est requise, mais vérifiez que vos pipelines aval sont capables de consommer ce champ si vous en avez besoin.



