Sous-titrage avec reconnaissance vocale

Dans ce guide, vous allez apprendre à créer des sous-titres avec la reconnaissance vocale. Le sous-titrage consiste à convertir le contenu audio d’une diffusion télévisée, d’une diffusion web, d’un film, d’une vidéo, d’un événement en direct ou d’une autre production en texte, puis d’afficher le texte sur un écran, un moniteur ou un autre système d’affichage visuel.

Les concepts présentés incluent la façon de synchroniser les sous-titres avec votre audio d’entrée, d’appliquer des filtres de vulgarité, d’obtenir des résultats partiels, d’appliquer des personnalisations et d’identifier les langues parlées pour les scénarios multilingues. Ce guide traite du sous-titrage de la voix, mais il n’inclut pas l’ID de l’orateur ou des effets sonores tels que le tintement de cloches.

Voici quelques scénarios de sous-titrage courants :

  • Cours en ligne et vidéos de démonstration
  • Événements sportifs
  • Appels vocaux et vidéo

Voici quelques aspects à prendre en compte lors de l’utilisation du sous-titrage :

  • Informez votre audience que des sous-titres sont générés par un service automatisé.
  • Centrez les sous-titres horizontalement sur l’écran, dans une police de grande taille et lisible.
  • Déterminez s’il faut utiliser des résultats partiels, quand commencer à afficher des sous-titres et combien de mots afficher à la fois.
  • Découvrez les protocoles de sous-titrage tels que SMPTE-TT.
  • Envisagez les formats de sortie tels que SRT (SubRip Text) et WebVTT (Web Video Text Tracks). Ceux-ci peuvent être chargés sur la plupart des lecteurs vidéo tels que VLC, avec un ajout automatique des sous-titres à votre vidéo.

Conseil

Essayez Speech Studio et choisissez un exemple de clip vidéo pour afficher les résultats de sous-titrage traités en temps réel ou hors connexion.

Essayez Azure AI Video Indexer pour voir comment obtenir des sous-titres pour les vidéos que vous chargez.

Le sous-titrage peut accompagner une voix en temps réel ou préenregistrée. Que vous affichiez des sous-titres en temps réel ou avec un enregistrement, vous pouvez utiliser le SDK Speech ou l’interface CLI Speech pour effectuer la reconnaissance vocale et obtenir les transcriptions. Vous pouvez également utiliser l’API de transcription Batch pour une vidéo préenregistrée.

Format de sortie de sous-titre

Le service Speech prend en charge les formats de sortie tels que SRT (SubRip Text) et WebVTT (Web Video Text Tracks). Ceux-ci peuvent être chargés sur la plupart des lecteurs vidéo tels que VLC, avec un ajout automatique des sous-titres à votre vidéo.

Conseil

Le service Speech fournit des options de filtre de profanité. Vous pouvez spécifier s’il faut masquer, supprimer ou afficher les termes vulgaires.

Le format de sortie d’intervalle de temps SRT (SubRip Text) est hh:mm:ss,fff.

1
00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

Le format de sortie d’intervalle de temps WebVTT (Web Video Text Tracks) est hh:mm:ss.fff.

WEBVTT

00:00:00.180 --> 00:00:03.230
Welcome to applied Mathematics course 201.
{
  "ResultId": "8e89437b4b9349088a933f8db4ccc263",
  "Duration": "00:00:03.0500000"
}

Entrer des données audio dans le service Speech

Pour le sous-titrage en temps réel, utilisez un microphone ou un flux d’entrée audio plutôt qu’une entrée de fichier. Pour obtenir des exemples de reconnaissance vocale à partir d’un microphone, consultez le Guide de démarrage rapide sur la reconnaissance vocale et la documentation sur la façon d’effectuer la reconnaissance vocale. Pour plus d’informations sur le streaming, consultez le Guide pratique pour utiliser le flux d’entrée audio.

Pour le sous-titrage d’un préenregistrement, envoyez une entrée de fichier au service Speech. Pour plus d’informations, consultez Utilisation de l’audio d’entrée compressée.

Synchronisation des sous-titres et des données audio

Vous devez synchroniser les sous-titres avec la piste audio, qu’elle soit en temps réel ou préenregistrée.

Le service Speech retourne le décalage et la durée de la reconnaissance vocale.

  • Décalage : décalage dans le flux audio reconnu, exprimé sous forme de durée. Le décalage est mesuré en cycles, à partir de 0 (zéro) cycle, associé au premier octet audio traité par le kit SDK. Par exemple, le décalage commence lorsque vous démarrez la reconnaissance, car c’est le moment où le kit SDK démarre le traitement du flux audio. Un cycle représente cent nanosecondes ou un dix-millionième de seconde.
  • Durée : durée de l’énoncé reconnu. La durée des cycles n’inclut pas le silence de fin ou de début.

Pour plus d’informations, consultez Obtenir les résultats de la reconnaissance vocale.

Obtenir des résultats partiels

Déterminer quand commencer à afficher des sous-titres et le nombre de mots à afficher à la fois. Les résultats de la reconnaissance vocale sont susceptibles de changer pendant qu’un énoncé est encore en cours de reconnaissance. Des résultats partiels sont retournés à chaque événement Recognizing. À mesure que chaque mot est traité, le service Speech réévalue un énoncé dans le nouveau contexte et retourne à nouveau le meilleur résultat. Il n’est pas garanti que le nouveau résultat sera identique au résultat précédent. La transcription complète et finale d’un énoncé est retournée avec l’événement Recognized.

Remarque

La ponctuation des résultats partiels n’est pas disponible.

Pour le sous-titrage d’une voix préenregistrée ou chaque fois que la latence n’est pas un problème, vous pouvez attendre la transcription complète de chaque énoncé avant d’afficher des mots. Compte tenu du décalage final et de la durée de chaque mot dans un énoncé, vous savez quand afficher les mots suivants au rythme de la bande sonore.

Le sous-titrage en temps réel présente des compromis en ce qui concerne la latence et l’exactitude. Vous pouvez afficher le texte de chaque événement Recognizing dès que possible. Toutefois, si vous pouvez accepter une certaine latence, vous pouvez améliorer l’exactitude du sous-titre en affichant le texte à partir de l’événement Recognized. Il y a aussi un juste milieu, qui est appelé « résultats partiels stables ».

Vous pouvez demander que le service Speech retourne moins d’événements Recognizing mais qui présentent une plus grande exactitude. Pour ce faire, définissez la propriété SpeechServiceResponse_StablePartialResultThreshold sur une valeur comprise entre 0 et 2147483647. La valeur que vous définissez est le nombre de fois où un mot doit être reconnu avant que le service Speech retourne un événement Recognizing. Par exemple, si vous affectez la valeur 5 à la propriété SpeechServiceResponse_StablePartialResultThreshold, le service Speech confirme la reconnaissance d’un mot au moins cinq fois avant de vous retourner les résultats partiels avec un événement Recognizing.

speechConfig.SetProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig->SetProperty(PropertyId::SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.SetProperty(common.SpeechServiceResponseStablePartialResultThreshold, 5)
speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.setProperty(sdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
[self.speechConfig setPropertyTo:5 byId:SPXSpeechServiceResponseStablePartialResultThreshold];
self.speechConfig!.setPropertyTo(5, by: SPXPropertyId.speechServiceResponseStablePartialResultThreshold)
speech_config.set_property(property_id = speechsdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, value = 5)
spx recognize --file caption.this.mp4 --format any --property SpeechServiceResponse_StablePartialResultThreshold=5 --output vtt file - --output srt file -

La demande de résultats partiels plus stables réduit le « scintillement » ou le changement du texte, mais elle peut augmenter la latence lorsque vous attendez des résultats d’un niveau de confiance plus élevé.

Exemple de seuil partiel stable

Dans la séquence de reconnaissance suivante sans définir de seuil partiel stable, « math » est reconnu comme un mot, mais le texte final est « mathematics » (mathématiques). À un autre moment, « course 2 » (cours 2) est reconnu, mais le texte final est « course 201 » (cours 201).

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied math
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZING: Text=welcome to applied mathematics course 2
RECOGNIZING: Text=welcome to applied mathematics course 201
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

Dans l’exemple précédent, les transcriptions étaient additives et aucun texte n’a été retiré. Mais à d’autres cas, vous pourriez trouver que les résultats partiels étaient inexacts. Dans l’un ou l’autre cas, les résultats partiels instables peuvent paraître « scintillants » lorsqu’ils sont affichés.

Pour cet exemple, si le seuil de résultat partiel stable est défini sur 5, aucun mot n’est modifié ou ne fait l’objet d’un retour en arrière.

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

Identification de la langue

Si la langue de l’audio peut changer, utilisez l’identification de la langue en continu. L’identification de la langue est utilisée pour identifier les langues parlées en audio par rapport à une liste de langues prises en charge. Vous fournissez au maximum 10 langues candidates, dont au moins une est attendue dans l’audio. Le service Speech retourne la langue la plus probable de l’audio.

Personnalisations pour améliorer l’exactitude

Une liste d’expressions est une liste de mots ou d’expressions que vous fournissez juste avant de commencer la reconnaissance vocale. L’ajout d’une expression à une liste d’expressions augmente son importance, ce qui la rend plus susceptible d’être reconnue.

Voici quelques exemples d’expressions :

  • Noms
  • Emplacements géographiques
  • Homonymes
  • Mots ou acronymes propres à votre secteur ou à votre organisation

Dans certains cas, l’entraînement d’un modèle personnalisé est probablement la meilleure option pour améliorer l’exactitude. Par exemple, si vous sous-titrez des conférences d’orthodontie, vous pouvez entraîner un modèle personnalisé avec les données du domaine correspondant.

Étapes suivantes