De snelle transcriptie-API (preview) gebruiken met Azure AI Speech
Notitie
Deze functie is momenteel beschikbaar als openbare preview-versie. Deze preview wordt aangeboden zonder service level agreement en wordt niet aanbevolen voor productieworkloads. Misschien worden bepaalde functies niet ondersteund of zijn de mogelijkheden ervan beperkt. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure-previews voor meer informatie.
Snelle transcriptie-API is alleen beschikbaar via de spraak-naar-tekst-REST API-versie 2024-05-15-preview. Deze preview-versie is onderhevig aan wijzigingen en wordt niet aanbevolen voor productiegebruik. Deze wordt buiten gebruik gesteld zonder kennisgeving 90 dagen na een opvolgende preview-versie of de algemene beschikbaarheid van de API.
Snelle transcriptie-API wordt gebruikt om audiobestanden te transcriberen met synchrone en veel snellere resultaten dan realtime audio. Gebruik snelle transcriptie in de scenario's waarin u het transcript van een audio-opname zo snel mogelijk nodig hebt met voorspelbare latentie, zoals:
- Snelle audio- of videotranscriptie, ondertitels en bewerken.
- Videovertaling
Tip
Probeer snelle transcriptie uit in Azure AI Studio.
Vereisten
Een Azure AI Speech-resource in een van de regio's waar de snelle transcriptie-API beschikbaar is. De ondersteunde regio's zijn: Australië - oost, Brazilië - zuid, India - centraal, VS - oost, VS - oost 2, Frans - centraal, Japan - oost, VS - noord-centraal, Europa - noord, VS - zuid-centraal, Azië - zuidoost, Zweden - centraal, Europa - west, VS - west 2, VS - west 3. Zie Speech-serviceregio's voor meer informatie over regio's die worden ondersteund voor andere functies van de Speech-service.
Een audiobestand (minder dan 2 uur lang en kleiner dan 200 MB) in een van de indelingen en codecs die worden ondersteund door de batchtranscriptie-API. Zie ondersteunde audio-indelingen voor meer informatie over ondersteunde audio-indelingen.
De snelle transcriptie-API gebruiken
De snelle transcriptie-API is een REST API die gebruikmaakt van multipart-/form-data voor het verzenden van audiobestanden voor transcriptie. De API retourneert de transcriptieresultaten synchroon.
Bouw de aanvraagbody volgens de volgende instructies:
- Stel de vereiste
locales
eigenschap in. Deze waarde moet overeenkomen met de verwachte landinstelling van de audiogegevens die moeten worden getranscribeerd. De ondersteunde landinstellingen zijn: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR en zh-CN. Meer informatie over taalondersteuning voor de Speech-service. U kunt de meest recente ondersteunde talen ophalen via de Rest API-transcripties - Ondersteunde landinstellingen weergeven - Stel desgewenst de
profanityFilterMode
eigenschap in om op te geven hoe grof taalgebruik moet worden verwerkt in herkenningsresultaten. Geaccepteerde waarden zijnNone
om grof taalgebruik uit te schakelen,Masked
grof taalgebruik te vervangen door sterretjes,Removed
om alle grof taalgebruik uit het resultaat te verwijderen ofTags
om grof taalgebruikslabels toe te voegen. De standaardwaarde isMasked
. DeprofanityFilterMode
eigenschap werkt op dezelfde manier als via de batchtranscriptie-API. - Stel desgewenst de
channels
eigenschap in om de op nul gebaseerde indexen van de kanalen op te geven die afzonderlijk moeten worden getranscribeerd. Indien niet opgegeven, worden meerdere kanalen samengevoegd en gezamenlijk getranscribeerd. Er worden slechts twee kanalen ondersteund. Als u de kanalen van een stereo-audiobestand afzonderlijk wilt transcriberen, moet u hier opgeven[0,1]
. Anders wordt stereogeluid samengevoegd met mono, monogeluid blijft ongewijzigd en wordt slechts één kanaal getranscribeerd. In beide laatste gevallen heeft de uitvoer geen kanaalindexen voor de getranscribeerde tekst, omdat slechts één audiostream wordt getranscribeerd. - Stel desgewenst de
diarizationSettings
eigenschap in op het herkennen en scheiden van meerdere luidsprekers op een monokanaalaudiobestand. U moet het minimum- en maximum aantal personen opgeven dat mogelijk in het audiobestand spreekt (bijvoorbeeld opgeven"diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}
). Vervolgens bevat het transcriptiebestand eenspeaker
vermelding voor elke getranscribeerde woordgroep. De functie is niet beschikbaar met stereogeluid wanneer u dechannels
eigenschap instelt als[0,1]
.
Maak een POST-aanvraag met meerdere onderdelen/formuliergegevens naar het transcriptions
eindpunt met het audiobestand en de eigenschappen van de aanvraagbody. In het volgende voorbeeld ziet u hoe u een transcriptie maakt met behulp van de snelle transcriptie-API.
- Vervang door
YourSubscriptionKey
uw Spraak-resourcesleutel. - Vervang door
YourServiceRegion
uw spraakresourceregio. - Vervang
YourAudioFile
door het pad naar uw audiobestand. - Stel de eigenschappen van de formulierdefinitie in zoals eerder beschreven.
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]}"'
Het antwoord bevat duration
, channel
en meer. De combinedPhrases
eigenschap bevat de volledige transcripties voor elk kanaal afzonderlijk. Alles wat de eerste spreker zei, bevindt zich bijvoorbeeld in het eerste element van de combinedPhrases
matrix en alles wat de tweede spreker zei, bevindt zich in het tweede element van de matrix.
{
"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
// {...},
]
}