Compartilhar via


Usar a API de transcrição rápida (versão prévia) com a Fala de IA do Azure

Observação

Esse recurso está atualmente em visualização pública. Essa versão prévia é fornecida sem um contrato de nível de serviço e não é recomendada para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

A API de Transcrição Rápida só está disponível por meio da API REST da conversão de fala em texto versão 2024-05-15-preview. Essa versão prévia está sujeita a alterações e não é recomendada para uso em produção. Será desativada sem aviso prévio 90 dias após a API ser sucedida por uma nova versão prévia ou entrar em disponibilidade geral (GA).

A API de Transcrição Rápida é usada para transcrever arquivos de áudio com o retorno síncrono e muito mais rápido dos resultados do que com o áudio em tempo real. Use a Transcrição Rápida nos cenários de 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, legendas e edição rápidas de áudio ou vídeo.
  • Tradução de vídeo

Dica

Experimente a transcrição rápida no Estúdio de IA do Azure.

Pré-requisitos

  • Um recurso da Fala de IA do Azure em uma das regiões em que a API de transcrição rápida está disponível. As regiões com suporte são: Índia Central, Leste dos EUA, Sudeste da Ásia e Oeste da Europa. Para obter mais informações sobre as regiões com suporte para outros recursos do serviço de Fala, confira regiões do serviço de Fala.
  • Um arquivo de áudio (com menos de 2 horas de duração e menos de 200 MB de tamanho) em um dos formatos e codecs compatíveis com a API de transcrição em lote. Para obter mais informações sobre formatos de áudio com suporte, confira formatos de áudio com suporte.

Usar a API de transcrição rápida

A API de transcrição rápida é uma API REST que usa multipart/form-data 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 locales obrigatória. Esse valor deve corresponder à localidade esperada dos dados de áudio a serem transcritos. As localidades com suporte são: en-US, es-ES, es-MX, fr-FR, hi-IN, it-IT, ja-JP, ko-KR, pt-BR e zh-CN. Você só pode especificar uma localidade por solicitação de transcrição.
  • Opcionalmente, defina a propriedade profanityFilterMode para especificar como lidar com blasfêmias nos resultados de reconhecimento. Os valores aceitos são None para desabilitar a filtragem de conteúdo ofensivo, Masked para substituir o conteúdo ofensivo por asteriscos, Removed para remover todo o conteúdo ofensivo do resultado ou Tags para adicionar marcas de conteúdo ofensivo. O valor padrão é Masked. A propriedade profanityFilterMode funciona da mesma maneira que a API de transcrição em lote.
  • Opcionalmente, defina a propriedade channels para especificar os números dos canais — a partir do zero — a serem transcritos separadamente. Se a propriedade não for especificada, vários canais serão mesclados e transcritos conjuntamente. Apenas um máximo de dois canais tem suporte. Se quiser transcrever separadamente os canais de um arquivo de áudio em estéreo, você precisará especificar [0,1] aqui. Caso contrário, o áudio em estéreo será mesclado ao mono, o áudio em mono será deixado como está e apenas um canal único será transcrito. Em qualquer dos casos supracitados, o resultado não tem números de canal para o texto transcrito, já que apenas um fluxo único de áudio é transcrito.
  • Opcionalmente, defina a propriedade diarizationSettings para reconhecer e separar vários oradores em um arquivo de áudio de canal mono. Você precisa especificar o número mínimo e máximo de pessoas que podem estar falando no arquivo de áudio (por exemplo, especifique "diarizationSettings": {"minSpeakers": 1, "maxSpeakers": 4}). O arquivo de transcrição conterá uma entrada speaker para cada frase transcrita. O recurso não está disponível com áudio estéreo quando você define a propriedade channels como [0,1].

Faça uma solicitação POST multipart/form-data para o ponto de extremidade transcriptions 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 do recurso de Fala.
  • Substitua YourServiceRegion pela região do Recurso de Fala.
  • Substitua YourAudioFile pelo caminho para o seu arquivo de áudio.
  • Defina as propriedades de definição de 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 outros. A propriedade combinedPhrases contém as transcrições completas para cada canal separadamente. Por exemplo, tudo o que a primeira pessoa disse estará no primeiro elemento da matriz combinedPhrases, e tudo o que a segundo pessoa disse estará 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
        // {...},
	]
}