Använda API:et för snabb transkription (förhandsversion) med Azure AI Speech

Kommentar

Den här funktionen är för närvarande i allmänt tillgänglig förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och rekommenderas inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

API för snabb transkription är endast tillgängligt via tal till text REST API version 2024-05-15-preview. Den här förhandsversionen kan komma att ändras och rekommenderas inte för produktionsanvändning. Den kommer att dras tillbaka utan föregående meddelande 90 dagar efter en efterföljande förhandsversion eller den allmänna tillgängligheten (GA) för API:et.

API för snabb transkription används för att transkribera ljudfiler med resultat som returneras synkront och mycket snabbare än realtidsljud. Använd snabb transkription i scenarier där du behöver avskriften av en ljudinspelning så snabbt som möjligt med förutsägbar svarstid, till exempel:

  • Snabb transkription av ljud eller video, undertexter och redigering.
  • Videoöversättning

Dricks

Prova snabb transkription i Azure AI Studio.

Förutsättningar

  • En Azure AI Speech-resurs i en av de regioner där API:et för snabb transkription är tillgängligt. De regioner som stöds är: Australien, östra, Brasilien, södra, Indien, centrala, USA, östra, USA, östra 2, franska centrala, Japan, östra, USA, norra centrala, Europa, norra, USA, södra centrala, Asien, sydöstra, Sverige, centrala, Europa, västra, USA, västra, USA, västra 2, USA, västra 3. Mer information om regioner som stöds för andra speech-tjänstfunktioner finns i Speech Service-regioner.

  • En ljudfil (mindre än 2 timmar lång och mindre än 200 MB i storlek) i något av de format och codecs som stöds av batch-transkriptions-API:et. Mer information om ljudformat som stöds finns i ljudformat som stöds.

Använda API:et för snabb transkription

API:et för snabb transkription är ett REST-API som använder multipart-/formulärdata för att skicka ljudfiler för transkription. API:et returnerar transkriptionsresultatet synkront.

Skapa begärandetexten enligt följande instruktioner:

  • Ange den obligatoriska locales egenskapen. Det här värdet ska matcha det förväntade språket för ljuddata som transkriberas. De språk som stöds är: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR och zh-CN. Läs mer om språkstöd för Speech-tjänsten. Du kan hämta de senaste språken som stöds via Rest API-transkriptioner – Lista språk som stöds
  • Du kan också ange egenskapen profanityFilterMode för att ange hur du ska hantera svordomar i igenkänningsresultat. Godkända värden är None att inaktivera filtrering av svordomar, Masked ersätta svordomar med asterisker, Removed ta bort alla svordomar från resultatet eller Tags lägga till svordomstaggar. Standardvärdet är Masked. Egenskapen profanityFilterMode fungerar på samma sätt som via batch-transkriptions-API:et.
  • Du kan också ange channels egenskapen för att ange nollbaserade index för de kanaler som ska transkriberas separat. Om det inte anges sammanfogas och transkriberas flera kanaler gemensamt. Endast upp till två kanaler stöds. Om du vill transkribera kanalerna från en stereoljudfil separat måste du ange [0,1] här. I annat fall sammanfogas stereoljud till monoljud, monoljud lämnas som det är och endast en enda kanal transkriberas. I något av de senare fallen har utdata inga kanalindex för den transkriberade texten, eftersom endast en enda ljudström transkriberas.
  • Du kan också ange egenskapen så att den diarizationSettings känner igen och separerar flera högtalare i en kanals ljudfil. Du måste ange det lägsta och högsta antalet personer som kan tala i ljudfilen (till exempel ange "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}). Sedan innehåller transkriptionsfilen en speaker post för varje transkriberad fras. Funktionen är inte tillgänglig med stereoljud när du anger egenskapen channels som [0,1].

Gör en POST-begäran för flera delar/formulärdata till transcriptions slutpunkten med ljudfilen och egenskaperna för begärandetexten. I följande exempel visas hur du skapar en transkription med hjälp av API:et för snabb transkription.

  • Ersätt YourSubscriptionKey med din Speech-resursnyckel.
  • Ersätt YourServiceRegion med din Speech-resursregion.
  • Ersätt YourAudioFile med sökvägen till ljudfilen.
  • Ange egenskaperna för formulärdefinitionen enligt beskrivningen ovan.
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]}"'

Svaret kommer att innehålla duration, channeloch mycket mer. Egenskapen combinedPhrases innehåller de fullständiga transkriptionerna för varje kanal separat. Till exempel är allt som den första talaren sa i det första elementet i matrisen combinedPhrases , och allt som den andra talaren sa finns i det andra elementet i matrisen.

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