Créer une transcription par lots

Avec les transcriptions par lots, vous envoyez des données audio dans un lot. Le service transcrit les données audio et stocke les résultats dans un conteneur de stockage. Vous pouvez ensuite récupérer les résultats à partir du conteneur de stockage.

Important

De nouveaux tarifs sont en vigueur pour la transcription par lots via l'API REST Conversion de parole en texte v3.2. Pour plus d’informations, consultez le guide de tarification.

Prérequis

Créer un travail de transcription

Pour créer une transcription, utilisez l’opération Transcriptions_Create de l’API REST de reconnaissance vocale. Construisez le corps de la requête conformément aux instructions suivantes :

  • Vous devez définir la propriété contentContainerUrl ou contentUrls. Pour plus d’informations sur le service Stockage Blob Azure dans le cadre d’une transcription par lots, consultez Rechercher des fichiers audio pour la transcription par lots.
  • Définissez la propriété requise locale. Cette valeur doit correspondre aux paramètres régionaux attendus des données audio à transcrire. Vous ne pouvez pas modifier les paramètres régionaux ultérieurement.
  • Définissez la propriété requise displayName. Choisissez un nom de transcription auquel vous pourrez vous référer ultérieurement. Le nom de transcription ne doit pas nécessairement être unique et pourra être modifié ultérieurement.
  • Si vous souhaitez utiliser un modèle autre que le modèle de base, définissez la propriété model sur l’ID de modèle. Pour plus d’informations, consultez Utiliser un modèle personnalisé et Utiliser un modèle Whisper.
  • Vous pouvez éventuellement affecter à la propriété wordLevelTimestampsEnabled la valeur true pour activer les horodatages au niveau du mot dans les résultats de la transcription. La valeur par défaut est false. Pour les modèles Whisper, définissez plutôt la propriété displayFormWordLevelTimestampsEnabled. Whisper étant un modèle d’affichage uniquement, le champ lexical n’est pas rempli dans la transcription.
  • Si vous le souhaitez, définissez la propriété languageIdentification. 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. Si vous définissez la languageIdentification propriété, vous devez également définir languageIdentification.candidateLocales avec les paramètres régionaux candidats.

Pour plus d’informations, consultez Options de configuration de demande.

Effectuez une requête HTTP POST qui utilise l’URI, comme illustré dans l’exemple Transcriptions_Create suivant.

  • Remplacez YourSubscriptionKey par votre clé de ressource Speech.
  • Remplacez YourServiceRegion par la région de votre ressource Speech.
  • Définissez les propriétés du corps de la requête comme décrit précédemment.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": null,
  "properties": {
    "wordLevelTimestampsEnabled": true,
    "languageIdentification": {
      "candidateLocales": [
        "en-US", "de-DE", "es-ES"
      ],
    }
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"

Vous devriez recevoir un corps de réponse au format suivant :

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": true,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked",
    "languageIdentification": {
      "candidateLocales": [
        "en-US",
        "de-DE",
        "es-ES"
      ]
    }
  },
  "lastActionDateTime": "2022-10-21T14:18:06Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:18:06Z",
  "locale": "en-US",
  "displayName": "My Transcription"
}

La propriété self de niveau supérieur dans le corps de la réponse est l’URI de la transcription. Utilisez cet URI pour obtenir des détails tels que l’URI des transcriptions et des fichiers de rapport de transcription. Vous utilisez également cet URI pour mettre à jour ou supprimer une transcription.

Vous pouvez interroger l’état de vos transcriptions avec l’opération Transcriptions_Get.

Appelez régulièrement Transcriptions_Delete à partir du service après avoir récupéré les résultats. Vous pouvez aussi définir la propriété timeToLive pour garantir la suppression définitive des résultats.

Pour créer une transcription, utilisez la commande spx batch transcription create. Construisez les paramètres de la requête conformément aux instructions suivantes :

  • Définissez le paramètre requis content. Vous pouvez spécifier une liste de fichiers individuels délimités par des points-virgules, ou l’URL d’un conteneur entier. Pour plus d’informations sur le service Stockage Blob Azure dans le cadre d’une transcription par lots, consultez Rechercher des fichiers audio pour la transcription par lots.
  • Définissez la propriété requise language. Cette valeur doit correspondre aux paramètres régionaux attendus des données audio à transcrire. Vous ne pouvez pas modifier les paramètres régionaux ultérieurement. Le paramètre language CLI Speech correspond à la propriété locale dans la requête et la réponse JSON.
  • Définissez la propriété requise name. Choisissez un nom de transcription auquel vous pourrez vous référer ultérieurement. Le nom de transcription ne doit pas nécessairement être unique et pourra être modifié ultérieurement. Le paramètre name CLI Speech correspond à la propriété displayName dans la requête et la réponse JSON.

Voici un exemple de commande Cli Speech qui crée un travail de transcription :

spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav

Vous devriez recevoir un corps de réponse au format suivant :

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": false,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked"
  },
  "lastActionDateTime": "2022-10-21T14:21:59Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:21:59Z",
  "locale": "en-US",
  "displayName": "My Transcription",
  "description": ""
}

La propriété self de niveau supérieur dans le corps de la réponse est l’URI de la transcription. Utilisez cet URI pour obtenir des détails tels que l’URI des transcriptions et des fichiers de rapport de transcription. Vous utilisez également cet URI pour mettre à jour ou supprimer une transcription.

Pour obtenir de l’aide sur l’interface CLI Speech en lien avec les transcription, exécutez la commande suivante :

spx help batch transcription

Options de configuration de demande

Voici quelques options de propriété que vous pouvez utiliser pour configurer une transcription lorsque vous appelez l’opération Transcriptions_Create.

Propriété Description
channels Tableau de numéros de canaux à traiter. Les canaux 0 et 1 sont transcrits par défaut.
contentContainerUrl Vous pouvez envoyer des fichiers audio individuels ou un conteneur de stockage entier.

Vous devez spécifier l’emplacement des données audio en utilisant la propriété contentContainerUrl ou contentUrls. Pour plus d’informations sur le service Stockage Blob Azure dans le cadre d’une transcription par lots, consultez Rechercher des fichiers audio pour la transcription par lots.

Cette propriété n’est pas retournée dans la réponse.
contentUrls Vous pouvez envoyer des fichiers audio individuels ou un conteneur de stockage entier.

Vous devez spécifier l’emplacement des données audio en utilisant la propriété contentContainerUrl ou contentUrls. Pour plus d’informations, consultez Rechercher des fichiers audio pour la transcription par lots.

Cette propriété n’est pas retournée dans la réponse.
destinationContainerUrl Le résultat peut être stocké dans un conteneur Azure. Si vous ne spécifiez pas de conteneur, le service Speech stocke les résultats dans un conteneur de stockage géré par Microsoft. La suppression du travail de transcription a également pour effet de supprimer les données du résultat de la transcription. Si vous souhaitez en savoir, par exemple sur les scénarios de sécurité pris en charge, veuillez consulter la rubrique Spécifier une URL du conteneur de destination.
diarization Indique que le service Speech doit tenter une analyse de diarisation sur l’entrée, qui est censée être un canal mono qui contient plusieurs voix. La fonctionnalité n’est pas disponible avec des enregistrements stéréo.

La diarisation est le processus consistant à séparer des orateurs dans des données audio. Le pipeline de traitement par lots peut reconnaître et séparer plusieurs orateurs sur des enregistrements de canal mono.

Spécifiez les nombres minimal et maximal de personnes qui pourraient parler. Vous devez également définir la propriété diarizationEnabled sur true. Le fichier de transcription contient une entrée speaker pour chaque phrase transcrite.

Vous devez utiliser cette propriété lorsque vous attendez au moins trois locuteurs. Pour deux orateurs, la définition de la propriété diarizationEnabled sur true est suffisante. Pour obtenir un exemple d’utilisation des propriétés, consultez Transcriptions_Create.

Le nombre maximal d’orateurs pour la diarisation doit être inférieur à 36 et supérieur ou égal à la propriété minSpeakers. Pour obtenir un exemple, consultez Transcriptions_Create.

Lorsque cette propriété est sélectionnée, la longueur de l’audio source ne peut pas dépasser 240 minutes par fichier.

Remarque : cette propriété n’est disponible qu’avec l’API REST de reconnaissance vocale version 3.1 et versions ultérieures. Si vous définissez cette propriété avec n’importe quelle version précédente, comme la version 3.0, elle est ignorée et seuls deux orateurs sont identifiés.
diarizationEnabled Spécifie que le service Speech doit tenter une analyse de diarisation sur l’entrée, qui est censée être un canal mono qui contient deux voix. La valeur par défaut est false.

Pour trois voix ou plus, vous devez également utiliser la propriété diarization. À utiliser uniquement avec la version 3.1 ou ultérieure de l’API REST de reconnaissance vocale.

Lorsque cette propriété est sélectionnée, la longueur de l’audio source ne peut pas dépasser 240 minutes par fichier.
displayName Nom de la transcription par lots. Choisissez un nom auquel vous pourrez vous référer ultérieurement. Le nom d’affichage ne doit pas obligatoirement être unique.

Cette propriété est requise.
displayFormWordLevelTimestampsEnabled Spécifie s’il faut inclure des horodatages au niveau du mot dans la forme d’affichage des résultats de la transcription. Les résultats sont retournés dans la propriété displayWords du fichier de transcription. La valeur par défaut est false.

Remarque : cette propriété n’est disponible qu’avec l’API REST de reconnaissance vocale version 3.1 et versions ultérieures.
languageIdentification 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.

Si vous définissez la languageIdentification propriété, vous devez également définir sa propriété entourée candidateLocales .
languageIdentification.candidateLocales Paramètres régionaux candidats pour l’identification de la langue, tels que "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}}. Un minimum de deux et un maximum de dix paramètres régionaux candidats, y compris les paramètres régionaux principaux pour la transcription, sont pris en charge.
locale Paramètres régionaux de la transcription par lots. Cette valeur doit correspondre aux paramètres régionaux attendus des données audio à transcrire. Vous ne pourrez plus changer de paramètres régionaux.

Cette propriété est requise.
model Vous pouvez définir la propriété model pour utiliser un modèle de base spécifique ou un modèle vocal personnalisé. Si vous ne spécifiez pas de model, le modèle de base par défaut pour les paramètres régionaux est utilisé. Pour plus d’informations, consultez Utiliser un modèle personnalisé et Utiliser un modèle Whisper.
profanityFilterMode Spécifie comment traiter la vulgarité dans les résultats de la reconnaissance. Les valeurs acceptées sont None pour désactiver le filtrage des grossièretés, Masked pour remplacer les grossièretés par des astérisques, Removed pour supprimer toutes les grossièretés du résultat ou Tags pour ajouter des étiquettes de grossièretés. La valeur par défaut est Masked.
punctuationMode Spécifie comment traiter la ponctuation dans les résultats de la reconnaissance. Les valeurs acceptées sont None pour désactiver la ponctuation, Dictated pour indiquer une ponctuation explicite (parlée), Automatic pour permettre au décodeur de traiter la ponctuation ou DictatedAndAutomatic pour utiliser la ponctuation dictée et automatique. La valeur par défaut est DictatedAndAutomatic.

Cette propriété ne s’applique pas aux modèles Whisper.
timeToLive Durée après la création de la tâche de transcription, indiquant quand les résultats de la transcription seront automatiquement supprimés. La valeur est une durée encodée selon la norme ISO 8601. Par exemple, spécifiez PT12H pour 12 heures. Vous pouvez également appeler Transcriptions_Delete régulièrement après avoir récupéré les résultats de la transcription.
wordLevelTimestampsEnabled Spécifie si des horodateurs au niveau des mots devraient être ajoutés à la sortie. La valeur par défaut est false.

Cette propriété ne s’applique pas aux modèles Whisper. Whisper étant un modèle d’affichage uniquement, le champ lexical n’est pas rempli dans la transcription.

Pour obtenir de l’aide sur l’interface CLI Speech en lien avec les options de transcription, exécutez la commande suivante :

spx help batch transcription create advanced

Essayer un modèle personnalisé

La transcription par lots utilise le modèle de base par défaut pour les paramètres régionaux que vous spécifiez. Vous n’avez pas besoin de définir de propriétés pour utiliser le modèle de base par défaut.

Vous pouvez éventuellement modifier l’exemple de création de transcription précédent en définissant la propriété model, pour utiliser un modèle de base spécifique ou un modèle vocal personnalisé.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"

Pour utiliser un modèle vocal personnalisé pour la transcription par lots, vous avez besoin de l’URI du modèle. La propriété self de niveau supérieur dans le corps de la réponse est l’URI du modèle. Vous pouvez récupérer l’emplacement du modèle lorsque vous créez ou obtenez un modèle. Pour plus d’informations, consultez l’exemple de réponse JSON dans Créer un modèle.

Conseil

Un point de terminaison de déploiement hébergé n’est pas nécessaire pour utiliser Custom Speech avec le service de transcription par lots. Vous pouvez conserver des ressources si vous utilisez le modèle vocal personnalisé uniquement pour la transcription par lots.

Les demandes de transcription par lots pour les modèles expirés échouent avec une erreur 4xx. Définissez la propriété model sur un modèle de base ou un modèle personnalisé qui n’a pas expiré. Sinon, n’incluez pas la propriété model, afin de toujours utiliser le dernier modèle de base. Pour plus d’informations, consultez Choisir un modèle et Cycle de vie du modèle vocal personnalisé.

Utiliser un modèle Whisper

Azure AI Speech prend en charge le modèle Whisper d’OpenAI à l’aide de l’API de transcription par lots. Vous pouvez utiliser le modèle Whisper pour la transcription par lots.

Remarque

Azure OpenAI Service prend également en charge le modèle Whisper d’OpenAI pour la reconnaissance vocale avec une API REST synchrone. Pour plus d’informations, consultez Reconnaissance vocale avec le modèle Whisper Azure OpenAI. Pour plus d'informations sur l’utilisation d’Azure AI Speech par rapport à Azure OpenAI Service, consultez Qu’est-ce que le modèle Whisper ?

Pour utiliser un modèle Whisper pour la transcription par lots, vous devez définir la propriété model. Whisper étant un modèle d’affichage uniquement, le champ lexical n’est pas rempli dans la réponse.

Important

Pour les modèles Whisper, vous devez toujours utiliser version 3.2 de l’API de reconnaissance vocale.

Les modèles Whisper par transcription par lot sont pris en charge dans les régions Australie Est, USA Centre, USA Est, USA Centre Nord, USA Centre Sud, Asie Sud-Est et Europe Ouest.

Vous pouvez effectuer une requête Models_ListBaseModels pour obtenir les modèles de base disponibles pour tous les paramètres régionaux.

Effectuez une requête HTTP GET comme illustré dans l’exemple suivant pour la région eastus. Remplacez YourSubscriptionKey par votre clé de ressource Speech. Remplacez eastus si vous utilisez une autre région.

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

Par défaut, seuls les 100 modèles de base les plus anciens sont retournés. Utilisez les paramètres de requête skip et top pour parcourir les résultats. Par exemple, la requête suivante retourne les 100 modèles de base suivants après les 100 premiers.

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base?skip=100&top=100" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

Veillez à définir les variables de configuration d’une ressource Speech dans l’une des régions prises en charge. Vous pouvez exécuter la commande spx csr list --base pour obtenir les modèles de base disponibles pour tous les paramètres régionaux.

spx csr list --base --api-version v3.2-preview.2

La propriété displayName d’un modèle Whisper contient « Whisper », comme illustré dans cet exemple. Whisper étant un modèle d’affichage uniquement, le champ lexical n’est pas rempli dans la transcription.

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950",
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950/manifest"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2025-04-15T00:00:00Z",
      "transcriptionDateTime": "2026-04-15T00:00:00Z"
    },
    "features": {
      "supportsTranscriptions": true,
      "supportsEndpoints": false,
      "supportsTranscriptionsOnSpeechContainers": false,
      "supportsAdaptationsWith": [
        "Acoustic"
      ],
      "supportedOutputFormats": [
        "Display"
      ]
    },
    "chargeForAdaptation": true
  },
  "lastActionDateTime": "2024-02-29T15:53:28Z",
  "status": "Succeeded",
  "createdDateTime": "2024-02-29T15:46:07Z",
  "locale": "en-US",
  "displayName": "20240228 Whisper Large V2",
  "description": "OpenAI Whisper Model in Azure AI Speech (Whisper v2-large)"
},

Vous définissez l’URI de modèle complet comme indiqué dans cet exemple pour la région eastus. Remplacez YourSubscriptionKey par votre clé de ressource Speech. Remplacez eastus si vous utilisez une autre région.

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "contentUrls": [
    "https://crbn.us/hello.wav",
    "https://crbn.us/whatstheweatherlike.wav"
  ],
  "locale": "en-US",
  "displayName": "My Transcription",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/transcriptions"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav;https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6" --api-version v3.2-preview.2

Spécifier une URL de conteneur de destination

Le résultat de la transcription peut être stocké dans un conteneur Azure. Si vous ne spécifiez pas de conteneur, le service Speech stocke les résultats dans un conteneur de stockage géré par Microsoft. Dans ce cas, une fois le travail de transcription supprimé, les données de résultat de la transcription sont également supprimées.

Vous pouvez stocker les résultats d’une transcription par lots dans un conteneur Stockage Blob Azure accessible en écriture à l’aide de l’option destinationContainerUrl dans la demande de création de transcription par lots. Cette option utilise uniquement un URI SAP ad hoc et ne prend pas en charge le mécanisme de sécurité des services Azure approuvés. Cette option ne prend pas non plus en charge la SAP basée sur une stratégie d’accès. La ressource Compte de stockage du conteneur de destination doit autoriser la totalité du trafic externe.

Si vous souhaitez stocker les résultats de transcription dans un conteneur Stockage Blob Azure à l’aide du mécanisme de sécurité des services Azure approuvés, vous devez utiliser BYOS (apportez votre propre stockage). Pour plus d’informations, consultez Utiliser la ressource BYOS (Apportez votre propre stockage) Speech pour la reconnaissance vocale.