Freigeben über


Verwenden der API für schnelle Transkription (Vorschau) mit Azure KI Speech

Hinweis

Dieses Feature ist zurzeit als öffentliche Preview verfügbar. Diese Vorschau wird ohne Vereinbarung zum Servicelevel bereitgestellt und nicht für Produktionsworkloads empfohlen. Manche Features werden möglicherweise nicht unterstützt oder sind nur eingeschränkt verwendbar. Weitere Informationen finden Sie unter Zusätzliche Nutzungsbestimmungen für Microsoft Azure-Vorschauen.

Die API für schnelle Transkription ist nur über die Sprachausgabe für die Text-REST-API Version 2024-05-15-preview verfügbar. Diese Vorschauversion kann geändert werden und wird nicht für die Produktionsverwendung empfohlen. Sie wird 90 Tage nach einer Nachfolgervorschauversion oder der allgemeinen Verfügbarkeit (GA) der API ohne vorherige Ankündigung eingestellt.

Die API für schnelle Transkription wird verwendet, um Audiodateien synchron und viel schneller als Echtzeitaudio zu transkribieren. Verwenden Sie schnelle Transkription in den Szenarien, in denen Sie die Transkription einer Audioaufzeichnung so schnell wie möglich mit vorhersagbarer Latenz benötigen, z. B.:

  • Schnelle Audio- oder Videotranskription, Untertitel und Bearbeitung.
  • Videoübersetzung

Tipp

Testen Sie die schnelle Transkription in Azure KI Studio.

Voraussetzungen

  • Eine Azure KI Speech-Ressource in einer der Regionen, in denen die API für schnelle Transkription verfügbar ist. Die unterstützten Regionen sind: Zentralindien, Ost-USA, Südostasien und Westeuropa. Weitere Informationen zu Regionen, die für andere Sprachdienstfeatures unterstützt werden, finden Sie unter Sprachdienstregionen.
  • Eine Audiodatei (weniger als 2 Stunden lang und kleiner als 200 MB) in einem der Formate und Codecs, die von der Batchtranskriptions-API unterstützt werden. Weitere Informationen zu unterstützten Audioformaten finden Sie unter unterstützte Audioformate.

Verwenden der API für schnelle Transkription

Die API für schnelle Transkription ist eine REST-API, die mehrteilige/Formulardaten zum Senden von Audiodateien für die Transkription verwendet. Die API gibt die Transkriptionsergebnisse synchron zurück.

Erstellen Sie den Anforderungstext gemäß den folgenden Anweisungen:

  • Legen Sie die erforderliche locales-Eigenschaft fest. Dieser Wert sollte mit dem erwarteten Gebietsschema der Audiodaten übereinstimmen, die Sie transkribieren möchten. Die unterstützten Gebietsschemas sind: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR und zh-CN. Weitere Informationen finden Sie unter Unterstützte Sprachen im Sprachdienst. Sie können die neuesten unterstützten Sprachen über die REST-API Transkriptionen – Unterstützte Gebietsschemas auflisten abrufen.
  • Legen Sie optional die profanityFilterMode-Eigenschaft fest, um anzugeben, wie Profanität in Erkennungsergebnissen behandelt werden soll. Zulässige Werte sind: None (deaktiviert den Obszönitätenfilter), Masked (Obszönitäten werden durch Sternchen ersetzt), Removed (Obszönitäten werden aus dem Ergebnis entfernt) und Tags (fügt Tags für Obszönitäten ein). Der Standardwert ist Masked. Die profanityFilterMode-Eigenschaft funktioniert genauso wie über die Batchtranskription-API.
  • Legen Sie optional die channels-Eigenschaft fest, um die nullbasierten Indizes der Kanäle anzugeben, die separat transkribiert werden sollen. Wenn nicht angegeben, werden mehrere Kanäle zusammengeführt und gemeinsam transkribiert. Es werden nur bis zu zwei Kanäle unterstützt. Wenn Sie die Kanäle aus einer Stereo-Audiodatei separat transkribieren möchten, müssen Sie [0,1] hier angeben. Andernfalls wird Stereoaudio mit Mono zusammengeführt, Mono-Audio bleibt erhalten, und nur ein einzelner Kanal wird transkribiert. In beiden letzteren Fällen verfügt die Ausgabe über keine Kanalindizes für den transkribierten Text, da nur ein einzelner Audiodatenstrom transkribiert wird.
  • Legen Sie optional die diarizationSettings-Eigenschaft fest, um in Monokanalaudiodateien mehrere Sprecher zu erkennen und zu trennen. Sie müssen die Mindest- und Maximalanzahl von Personen angeben, die in der Audiodatei sprechen. Geben Sie z. B. "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4} an. Die Transkriptionsdatei enthält dann einen speaker-Eintrag für jeden transkribierten Ausdruck. Das Feature ist nicht für Stereoaudio verfügbar, wenn Sie die Eigenschaft channels auf [0,1] festlegen.

Erstellen Sie eine mehrteilige/form-data POST-Anforderung an den transcriptions-Endpunkt mit der Audiodatei und den Anforderungstexteigenschaften. Das folgende Beispiel zeigt, wie Sie eine Transkription mithilfe der API für schnelle Transkription erstellen.

  • Ersetzen Sie YourSubscriptionKey durch Ihren Speech-Ressourcenschlüssel.
  • Ersetzen Sie YourServiceRegion durch Ihre Sprachressourcenregion.
  • Ersetzen Sie YourAudioFile durch den Pfad zu Ihrer Audiodatei.
  • Legen Sie die Formulardefinitionseigenschaften wie zuvor beschrieben fest.
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]}"'

Die Antwort enthält duration, channel und vieles mehr. Die combinedPhrases-Eigenschaft enthält die vollständigen Transkriptionen für jeden Kanal separat. So befindet sich beispielsweise alles, was der erste Sprecher gesagt hat, im ersten Element des combinedPhrases-Arrays, und alles, was der zweite Sprecher gesagt hat, befindet sich im zweiten Element des Arrays.

{
	"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
        // {...},
	]
}