Partager via


Utiliser l’API de transcription rapide (préversion) avec Azure AI Speech

Remarque

Cette fonctionnalité est actuellement disponible en préversion publique. Cette préversion est fournie sans contrat de niveau de service et n’est pas recommandée pour les charges de travail de production. Certaines fonctionnalités peuvent être limitées ou non prises en charge. Pour plus d’informations, consultez Conditions d’Utilisation Supplémentaires relatives aux Évaluations Microsoft Azure.

L’API de transcription rapide est disponible uniquement via la version 2024-05-15-preview de l’API REST de reconnaissance vocale. Cette préversion est susceptible de changer et n’est pas recommandée à des fins de production. Elle sera mise hors service sans préavis 90 jours après la publication d’une préversion ou la disponibilité générale de l’API.

L’API de transcription rapide permet de transcrire des fichiers audio avec des résultats renvoyés de manière synchronisé et beaucoup plus rapide que l’audio en temps réel. Utilisez la transcription rapide dans les scénarios où vous avez besoin de la transcription d’un enregistrement audio le plus rapidement possible avec une latence prévisible, par exemple :

  • Transcription audio ou vidéo rapide, sous-titres et modification.
  • Traduction vidéo

Conseil

Essayez une transcription rapide dans Azure AI Studio.

Prérequis

  • Une ressource Azure AI Speech dans l’une des régions où l’API de transcription rapide est disponible. Les régions prises en charge son : Australie Est, Brésil Sud, Inde Centre, USA Est, USA Est 2, France Centre, Japon Est, USA Centre Nord, Europe Nord, USA Centre Sud, Asie Sud-Est, Suède Centre, Europe Ouest, USA Ouest, USA Ouest 2, USA Ouest 3. Pour plus d’informations sur les régions prises en charge pour d’autres fonctionnalités de Speech Services, consultez Régions de Speech Service.

  • Un fichier audio (moins de 2 heures et moins de 200 Mo) dans l’un des formats et codecs pris en charge par l’API de transcription par lot. Pour plus d’informations sur les formats audio pris en charge, consultez Formats audio pris en charge.

Utiliser l’API de transcription rapide

L’API de transcription rapide est une API REST qui utilise des données multipart/form-data pour soumettre des fichiers audio à la transcription. L’API retourne les résultats de transcription de façon synchrone.

Construisez le corps de la requête conformément aux instructions suivantes :

  • Définissez la propriété requise locales. Cette valeur doit correspondre aux paramètres régionaux attendus des données audio à transcrire. Les paramètres régionaux pris en charge sont : de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR et zh-CN. En savoir plus sur le support linguistique du service Speech. Vous pouvez obtenir les dernières langues prises en charge via l'API REST Transcriptions - Liste des paramètres régionaux pris en charge
  • Si vous le souhaitez, vous pouvez définir la propriété profanityFilterModeen précisant comment gérer la profanité dans les résultats de 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. La propriété profanityFilterMode fonctionne de la même façon que par l’intermédiaire de l’API de transcription par lot.
  • Si vous le souhaitez, vous pouvez définir la propriété channels en spécifiant les index de base zéro des canaux à transcrire séparément. Si rien n’est spécifié, plusieurs canaux sont fusionnés et transcrits conjointement. Un maximum de deux canaux sont pris en charge. Si vous souhaitez transcrire les canaux à partir d’un fichier audio stéréo séparément, vous devez spécifier [0,1] ici. Sinon, l’audio stéréo sera fusionné en mono, l’audio mono sera laissé tel quel, et seul un canal sera transcrit. Dans l’un des derniers cas, la sortie ne dispose pas d’index de canal pour le texte transcrit, car un seul flux audio est transcrit.
  • En option, la propriété diarizationSettings permet de reconnaître et de séparer plusieurs locuteurs dans un fichier audio à canal mono. Vous devez spécifier le nombre minimal et maximal de personnes qui peuvent parler dans le fichier audio (par exemple, spécifier "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}). Ensuite, le fichier de transcription contiendra une entrée speaker pour chaque phrase transcrite. La fonctionnalité n’est pas disponible avec l’audio stéréo lorsque vous définissez la channelspropriété comme [0,1].

Effectuez une demande d’autotest de mise sous tension (POST) multipart/form-data sur le point de terminaison transcriptions avec le fichier audio et les propriétés du corps de la demande. L’exemple suivant montre comment créer une transcription à l’aide de l’API de transcription rapide.

  • Remplacez YourSubscriptionKey par votre clé de ressource Speech.
  • Remplacez YourServiceRegion par la région de votre ressource Speech.
  • Remplacez YourAudioFile par le chemin d’accès à votre fichier audio.
  • Paramétrez les propriétés de définition de formulaire comme décrit précédemment.
curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-05-15-preview' \
--header 'Content-Type: multipart/form-data' \
--header 'Accept: application/json' \
--header 'Ocp-Apim-Subscription-Key: YourSubscriptionKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    \"locales\":[\"en-US\"], 
    \"profanityFilterMode\": \"Masked\", 
    \"channels\": [0,1]}"'

La réponse inclut duration, channelet bien plus encore. La propriété combinedPhrases contient les transcriptions complètes pour chaque canal distinct. Par exemple, tout ce que le premier intervenant a dit se trouve dans le premier élément du tableau combinedPhrases, et tout ce que le deuxième intervenant a dit se trouve dans le deuxième élément du tableau.

{
	"duration": 185079,
	"combinedPhrases": [
		{
			"channel": 0,
			"text": "Hello. Thank you for calling Contoso. Who am I speaking with today? Hi, Mary. Are you calling because you need health insurance? Great. If you can answer a few questions, we can get you signed up in the Jiffy. So what's your full name? Got it. And what's the best callback number in case we get disconnected? Yep, that'll be fine. Got it. So to confirm, it's 234-554-9312. Excellent. Let's get some additional information for your application. Do you have a job? OK, so then you have a Social Security number as well. OK, and what is your Social Security number please? Sorry, what was that, a 25 or a 225? You cut out for a bit. Alright, thank you so much. And could I have your e-mail address please? Great. Uh That is the last question. So let me take your information and I'll be able to get you signed up right away. Thank you for calling Contoso and I'll be able to get you signed up immediately. One of our agents will call you back in about 24 hours or so to confirm your application. Absolutely. If you need anything else, please give us a call at 1-800-555-5564, extension 123. Thank you very much for calling Contoso. Uh Yes, of course. So the default is a digital membership card, but we can send you a physical card if you prefer. Uh, yeah. Absolutely. I've made a note on your file. You're very welcome. Thank you for calling Contoso and have a great day."
		},
		{
			"channel": 1,
			"text": "Hi, my name is Mary Rondo. I'm trying to enroll myself with Contuso. Yes, yeah, I'm calling to sign up for insurance. Okay. So Mary Beth Rondo, last name is R like Romeo, O like Ocean, N like Nancy D, D like Dog, and O like Ocean again. Rondo. I only have a cell phone so I can give you that. Sure, so it's 234-554 and then 9312. Yep, that's right. Uh Yes, I am self-employed. Yes, I do. Uh Sure, so it's 412256789. It's double two, so 412, then another two, then five. Yeah, it's maryrondo@gmail.com. So my first and last name at gmail.com. No periods, no dashes. That was quick. Thank you. Actually, so I have one more question. I'm curious, will I be getting a physical card as proof of coverage? uh Yes. Could you please mail it to me when it's ready? I'd like to have it shipped to, are you ready for my address? So it's 2660 Unit A on Maple Avenue SE, Lansing, and then zip code is 48823. Awesome. Thanks so much."
		}
	],
	"phrases": [
		{
			"channel": 0,
			"offset": 720,
			"duration": 480,
			"text": "Hello.",
			"words": [
				{
					"text": "Hello.",
					"offset": 720,
					"duration": 480
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
		{
			"channel": 0,
			"offset": 1200,
			"duration": 1120,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offset": 1200,
					"duration": 200
				},
				{
					"text": "you",
					"offset": 1400,
					"duration": 80
				},
				{
					"text": "for",
					"offset": 1480,
					"duration": 120
				},
				{
					"text": "calling",
					"offset": 1600,
					"duration": 240
				},
				{
					"text": "Contoso.",
					"offset": 1840,
					"duration": 480
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
		{
			"channel": 0,
			"offset": 2320,
			"duration": 1120,
			"text": "Who am I speaking with today?",
			"words": [
				{
					"text": "Who",
					"offset": 2320,
					"duration": 160
				},
				{
					"text": "am",
					"offset": 2480,
					"duration": 80
				},
				{
					"text": "I",
					"offset": 2560,
					"duration": 80
				},
				{
					"text": "speaking",
					"offset": 2640,
					"duration": 320
				},
				{
					"text": "with",
					"offset": 2960,
					"duration": 160
				},
				{
					"text": "today?",
					"offset": 3120,
					"duration": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.9177142
		},
        // More transcription results removed for brevity
        // {...},
		{
			"channel": 1,
			"offset": 4480,
			"duration": 1600,
			"text": "Hi, my name is Mary Rondo.",
			"words": [
				{
					"text": "Hi,",
					"offset": 4480,
					"duration": 400
				},
				{
					"text": "my",
					"offset": 4880,
					"duration": 120
				},
				{
					"text": "name",
					"offset": 5000,
					"duration": 120
				},
				{
					"text": "is",
					"offset": 5120,
					"duration": 160
				},
				{
					"text": "Mary",
					"offset": 5280,
					"duration": 240
				},
				{
					"text": "Rondo.",
					"offset": 5520,
					"duration": 560
				}
			],
			"locale": "en-US",
			"confidence": 0.8989456
		},
		{
			"channel": 1,
			"offset": 6080,
			"duration": 1920,
			"text": "I'm trying to enroll myself with Contuso.",
			"words": [
				{
					"text": "I'm",
					"offset": 6080,
					"duration": 160
				},
				{
					"text": "trying",
					"offset": 6240,
					"duration": 200
				},
				{
					"text": "to",
					"offset": 6440,
					"duration": 80
				},
				{
					"text": "enroll",
					"offset": 6520,
					"duration": 200
				},
				{
					"text": "myself",
					"offset": 6720,
					"duration": 360
				},
				{
					"text": "with",
					"offset": 7080,
					"duration": 120
				},
				{
					"text": "Contuso.",
					"offset": 7200,
					"duration": 800
				}
			],
			"locale": "en-US",
			"confidence": 0.8989456
		},
        // More transcription results removed for brevity
        // {...},
	]
}