Použití rozhraní API pro rychlý přepis (Preview) se službou Azure AI Speech

Poznámka:

Tato funkce je v současné době ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučuje se pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Rozhraní API pro rychlý přepis je dostupné jenom prostřednictvím rozhraní REST API pro převod řeči na text verze 2024-05-15-preview. Tato verze Preview se může změnit a nedoporučuje se pro produkční použití. Vyřadí se bez upozornění 90 dnů po následné verzi Preview nebo obecné dostupnosti (GA) rozhraní API.

Rozhraní API pro rychlý přepis se používá k přepisu zvukových souborů s synchronními a mnohem rychlejšími výsledky než zvuk v reálném čase. Používejte rychlý přepis ve scénářích, kdy potřebujete co nejrychleji přepis zvukového záznamu s předvídatelnou latencí, například:

  • Rychlý přepis zvuku nebo videa, titulky a úpravy
  • Překlad videa

Tip

Vyzkoušejte si rychlý přepis v Azure AI Studiu.

Požadavky

  • Prostředek Azure AI Speech v jedné z oblastí, ve kterých je k dispozici rozhraní API pro rychlý přepis. Podporované oblasti jsou: Austrálie – východ, Brazílie – jih, Indie – střed, USA – východ, USA – východ 2, Francie – střed, Japonsko – východ, USA – středosever, Severní Evropa, USA – středojiž, Jihovýchodní Asie, Švédsko – střed, Západní Evropa, USA – západ, USA – západ 2, USA – západ 3. Další informace o oblastech podporovaných pro jiné funkce služby Speech najdete v tématu Oblasti služby Speech.

  • Zvukový soubor (kratší než 2 hodiny a velikost menší než 200 MB) v jednom z formátů a kodeků podporovaných rozhraním API pro dávkový přepis. Další informace o podporovaných formátech zvuku najdete v tématu Podporované formáty zvuku.

Použití rozhraní API pro rychlý přepis

Rozhraní API pro rychlý přepis je rozhraní REST API, které k odesílání zvukových souborů k přepisu používá vícedílná data nebo data formulářů. Rozhraní API vrátí výsledky přepisu synchronně.

Sestavte tělo požadavku podle následujících pokynů:

  • Nastavte požadovanou locales vlastnost. Tato hodnota by měla odpovídat očekávanému národnímu prostředí zvukových dat, která se mají přepisovat. Podporovaná národní prostředí jsou: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR a zh-CN. Další informace najdete v podpoře jazyka služby Speech. Nejnovější podporované jazyky můžete získat prostřednictvím přepisů rozhraní REST API – seznam podporovaných národních prostředí
  • Volitelně můžete vlastnost nastavit profanityFilterMode tak, aby určovala způsob zpracování vulgárních výrazů ve výsledcích rozpoznávání. Přijaté hodnoty jsou None zakázání filtrování vulgárních výrazů, Masked nahrazení vulgárních výrazů hvězdičkami, Removed odebrání všech vulgárních výrazů z výsledku nebo Tags přidání značek vulgárních výrazů. Výchozí hodnota je Masked. Vlastnost profanityFilterMode funguje stejně jako rozhraní API pro dávkový přepis.
  • Volitelně můžete vlastnost nastavit channels tak, aby určila indexy na základě nuly kanálů, které se mají přepisovat samostatně. Pokud není zadáno, sloučí se více kanálů a přepisuje společně. Podporují se pouze dva kanály. Pokud chcete přepsat kanály ze stereo zvukového souboru samostatně, musíte zde zadat [0,1] . V opačném případě se stereo zvuk sloučí do monofonního zvuku, monofonní zvuk zůstane tak, jak je, a přepíše se jenom jeden kanál. V některém z těchto případů výstup nemá žádné indexy kanálu pro přepisovaný text, protože se přepisuje pouze jeden zvukový stream.
  • Volitelně můžete vlastnost nastavit diarizationSettings tak, aby rozpoznala a oddělil více reproduktorů ve zvukovém souboru monokanálového kanálu. Musíte zadat minimální a maximální počet lidí, kteří můžou mluvit ve zvukovém souboru (například zadat "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}). Soubor přepisu pak bude obsahovat speaker položku pro každou přepisovanou frázi. Funkce není k dispozici u stereofonního zvuku channels , když nastavíte vlastnost jako [0,1].

Vytvořte požadavek POST s více částmi nebo daty formulářů do koncového transcriptions bodu se zvukovým souborem a vlastnostmi textu požadavku. Následující příklad ukazuje, jak vytvořit přepis pomocí rozhraní API pro rychlý přepis.

  • Nahraďte YourSubscriptionKey klíčem prostředku služby Speech.
  • Nahraďte YourServiceRegion oblastí prostředků služby Speech.
  • Nahraďte YourAudioFile cestou ke zvukovému souboru.
  • Nastavte vlastnosti definice formuláře, jak jsme popsali dříve.
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]}"'

Odpověď bude obsahovat duration, channela další. Vlastnost combinedPhrases obsahuje úplné přepisy pro každý kanál samostatně. Například vše, co první mluvčí řekl, je v prvním prvku combinedPhrases pole a vše, co řekl druhý mluvčí, je ve druhém prvku pole.

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