Usar a API de transcrição rápida (visualização) com o Azure AI Speech
Nota
Esta funcionalidade está atualmente em pré-visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
A API de transcrição rápida só está disponível através da versão 2024-05-15-preview da API REST de fala para texto. Esta versão de pré-visualização está sujeita a alterações e não é recomendada para utilização em produção. Ele será retirado sem aviso prévio 90 dias após uma versão de visualização sucessora ou a disponibilidade geral (GA) da API.
A API de transcrição rápida é usada para transcrever arquivos de áudio com resultados de retorno de forma síncrona e muito mais rápida do que o áudio em tempo real. Use a transcrição rápida nos cenários em que você precisa da transcrição de uma gravação de áudio o mais rápido possível com latência previsível, como:
- Transcrição rápida de áudio ou vídeo, legendas e edição.
- Tradução de vídeo
Gorjeta
Experimente a transcrição rápida no Azure AI Studio.
Pré-requisitos
Um recurso de Fala do Azure AI em uma das regiões onde a API de transcrição rápida está disponível. As regiões suportadas são: Leste da Austrália, Sul do Brasil, Índia Central, Leste dos EUA, Leste dos EUA 2, Centro Francês, Leste do Japão, Centro-Norte dos EUA, Europa do Norte, Centro-Sul dos EUA, Sudeste Asiático, Suécia Central, Europa Ocidental, Oeste dos EUA, Oeste dos EUA 2, Oeste dos EUA 3. Para obter mais informações sobre regiões com suporte para outros recursos do serviço de Fala, consulte Regiões do serviço de Fala.
Um arquivo de áudio (menos de 2 horas de duração e menos de 200 MB de tamanho) em um dos formatos e codecs suportados pela API de transcrição em lote. Para obter mais informações sobre formatos de áudio suportados, consulte Formatos de áudio suportados.
Use a API de transcrição rápida
A API de transcrição rápida é uma API REST que usa dados de várias partes/formulários para enviar arquivos de áudio para transcrição. A API retorna os resultados da transcrição de forma síncrona.
Construa o corpo da solicitação de acordo com as seguintes instruções:
- Defina a propriedade necessária
locales
. Esse valor deve corresponder à localidade esperada dos dados de áudio a serem transcritos. As localidades suportadas são: de-DE, en-IN, en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR e zh-CN. Saiba mais em Suporte ao idioma do serviço de fala. Você pode obter os idiomas suportados mais recentes por meio da API Rest Transcriptions - List Supported Locales - Opcionalmente, defina a
profanityFilterMode
propriedade para especificar como lidar com palavrões nos resultados de reconhecimento. Os valores aceites sãoNone
desativar a filtragem de palavrões,Masked
substituir palavrões por asteriscos,Removed
remover todos os palavrões do resultado ouTags
adicionar etiquetas de palavrões. O valor predefinido éMasked
. AprofanityFilterMode
propriedade funciona da mesma forma que através da API de transcrição em lote. - Opcionalmente, defina a
channels
propriedade para especificar os índices baseados em zero dos canais a serem transcritos separadamente. Se não for especificado, vários canais são mesclados e transcritos conjuntamente. Apenas até dois canais são suportados. Se você quiser transcrever os canais de um arquivo de áudio estéreo separadamente, você precisa especificar[0,1]
aqui. Caso contrário, o áudio estéreo será mesclado ao mono, o áudio mono será deixado como está e apenas um único canal será transcrito. Em qualquer um dos últimos casos, a saída não tem índices de canal para o texto transcrito, uma vez que apenas um único fluxo de áudio é transcrito. - Opcionalmente, defina a
diarizationSettings
propriedade para reconhecer e separar vários alto-falantes no arquivo de áudio monocanal. Você precisa especificar o número mínimo e máximo de pessoas que podem estar falando no arquivo de áudio (por exemplo, especificar"diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}
). Em seguida, o arquivo de transcrição conterá umaspeaker
entrada para cada frase transcrita. O recurso não está disponível com áudio estéreo quando você define achannels
propriedade como[0,1]
.
Faça uma solicitação POST de várias partes/dados de formulário para o transcriptions
ponto de extremidade com o arquivo de áudio e as propriedades do corpo da solicitação. O exemplo a seguir mostra como criar uma transcrição usando a API de transcrição rápida.
- Substitua
YourSubscriptionKey
pela chave de recurso de fala. - Substitua
YourServiceRegion
pela região de recursos de Fala. - Substitua
YourAudioFile
pelo caminho para o arquivo de áudio. - Defina as propriedades de definição do formulário conforme descrito anteriormente.
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]}"'
A resposta incluirá duration
, channel
, e muito mais. A combinedPhrases
propriedade contém as transcrições completas para cada canal separadamente. Por exemplo, tudo o que o primeiro orador disse está no primeiro elemento da combinedPhrases
matriz, e tudo o que o segundo orador disse está no segundo elemento da matriz.
{
"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
// {...},
]
}