Compartilhar via


Usar a API de transcrição rápida com o Serviço de Voz com IA do Azure

A API de Transcrição Rápida é usada para transcrever arquivos de áudio com resultados de forma síncrona e mais rápida do que 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

Ao contrário da API de transcrição em lote, a API de transcrição rápida só produz transcrições no formato de exibição (não lexical). O formulário de exibição é uma forma mais legível da transcrição que inclui pontuação e uso de maiúsculas.

Pré-requisitos

  • Um recurso de IA de Fala 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: Leste da Austrália, Sul do Brasil, Índia Central, Leste dos EUA, Leste dos EUA 2, França Central, Leste do Japão, Centro-Norte dos EUA, Norte da Europa, Centro-Sul dos EUA, Sudeste da Ásia, Suécia Central, Sul do Reino Unido, Oeste da Europa, Oeste dos EUA, Oeste dos EUA 2, Oeste dos EUA 3. 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 e menos de 300 MB de tamanho) em um dos formatos e codecs compatíveis com a API de transcrição em lote: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW no contêiner WAV, MULAW no contêiner WAV, AMR, WebM e SPEEX. 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

Dica

Experimente a Transcrição Rápida no portal do Azure AI Foundry.

Aprendemos a usar a API de transcrição rápida (por meio de Transcrições – Transcrever) nos seguintes cenários:

  • Localidade conhecida especificada: transcrever um arquivo de áudio com uma localidade especificada. Se você souber a localidade do arquivo de áudio, poderá especificá-la para melhorar a precisão da transcrição e minimizar a latência.
  • Identificação de idioma ativa: transcrever um arquivo de áudio com a identificação de idioma ativa. Se você não tiver certeza sobre a localidade do arquivo de áudio, poderá ativar a identificação do idioma para permitir que o serviço de Fala identifique a localidade (uma localidade por áudio).
  • Transcrição multilíngue (versão prévia): transcreva um arquivo de áudio com o modelo de transcrição de fala multilíngue mais recente. Se o áudio contiver conteúdo multilíngue que você deseja transcrever de forma contínua e precisa, você poderá usar o modelo de transcrição de fala multilíngue mais recente sem especificar os códigos de localidade.
  • Diarização ativada: transcrever um arquivo de áudio com a diarização ativada. A diarização faz a distinção de diferentes oradores na conversa. O Serviço de fala fornece informações sobre qual orador estava falando uma parte específica da fala transcrita.
  • Multicanais ativados: transcrever um arquivo de áudio que tem um ou dois canais. Transcrições multicanais são úteis para arquivos de áudio com multicanais, como arquivos de áudio com vários oradores ou arquivos de áudio com ruído em segundo plano. Por padrão, a API de transcrição rápida mescla todos os canais de entrada em um único canal e executa a transcrição. Se isso não for desejável, os canais poderão ser transcritos independentemente sem mesclagem.

Faça uma solicitação POST multipart/form-data para o endpoint transcriptions com o arquivo de áudio e as propriedades do corpo da solicitação.

O exemplo a seguir mostra como transcrever um arquivo de áudio com uma localidade especificada. Se você souber a localidade do arquivo de áudio, poderá especificá-la para melhorar a precisão da transcrição e minimizar a latência.

  • Substitua YourSpeechResoureKey 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.

Importante

Para a autenticação sem chave recomendada com a ID do Microsoft Entra, substitua --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' por --header "Authorization: Bearer YourAccessToken". Para obter mais informações sobre autenticação sem chave, consulte o guia de instruções do controle de acesso baseado em função .

curl --location 'https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2024-11-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' \
--form 'audio=@"YourAudioFile"' \
--form 'definition="{
    "locales":["en-US"]}"'

Construa a definição do formulário de acordo com as seguintes instruções:

  • Defina a propriedade opcional (mas recomendada) locales que deve corresponder à localidade esperada dos dados de áudio a serem transcritos. Neste exemplo, a localidade é definida como en-US. Para obter mais informações sobre as localidades com suporte, consulte idiomas com suporte de fala em texto.

Para obter mais informações sobre locales e outras propriedades para a API de transcrição rápida, consulte a seção de opções de configuração de solicitação mais adiante neste guia.

A resposta inclui durationMilliseconds, offsetMilliseconds e muito mais. A propriedade combinedPhrases contém as transcrições completas de todos os oradores.

{
	"durationMilliseconds": 182439,
	"combinedPhrases": [
		{
			"text": "Good afternoon. This is Sam. Thank you for calling Contoso. How can I help? Hi there. My name is Mary. I'm currently living in Los Angeles, but I'm planning to move to Las Vegas. I would like to apply for a loan. Okay. I see you're currently living in California. Let me make sure I understand you correctly. Uh You'd like to apply for a loan even though you'll be moving soon. Is that right? Yes, exactly. So I'm planning to relocate soon, but I would like to apply for the loan first so that I can purchase a new home once I move there. And are you planning to sell your current home? Yes, I will be listing it on the market soon and hopefully it'll sell quickly. That's why I'm applying for a loan now, so that I can purchase a new house in Nevada and close on it quickly as well once my current home sells. I see. Would you mind holding for a moment while I take your information down? Yeah, no problem. Thank you for your help. Mm-hmm. Just one moment. All right. Thank you for your patience, ma'am. May I have your first and last name, please? Yes, my name is Mary Smith. Thank you, Ms. Smith. May I have your current address, please? Yes. So my address is 123 Main Street in Los Angeles, California, and the zip code is 90923. Sorry, that was a 90 what? 90923. 90923 on Main Street. Got it. Thank you. May I have your phone number as well, please? Uh Yes, my phone number is 504-529-2351 and then yeah. 2351. Got it. And do you have an e-mail address we I can associate with this application? uh Yes, so my e-mail address is mary.a.sm78@gmail.com. Mary.a, was that a S-N as in November or M as in Mike? M as in Mike. Mike78, got it. Thank you. Ms. Smith, do you currently have any other loans? Uh Yes, so I currently have two other loans through Contoso. So my first one is my car loan and then my other is my student loan. They total about 1400 per month combined and my interest rate is 8%. I see. And you're currently paying those loans off monthly, is that right? Yes, of course I do. OK, thank you. Here's what I suggest we do. Let me place you on a brief hold again so that I can talk with one of our loan officers and get this started for you immediately. In the meantime, it would be great if you could take a few minutes and complete the remainder of the secure application online at www.contosoloans.com. Yeah, that sounds good. I can go ahead and get started. Thank you for your help. Thank you."
		}
	],
	"phrases": [
		{
			"offsetMilliseconds": 960,
			"durationMilliseconds": 640,
			"text": "Good afternoon.",
			"words": [
				{
					"text": "Good",
					"offsetMilliseconds": 960,
					"durationMilliseconds": 240
				},
				{
					"text": "afternoon.",
					"offsetMilliseconds": 1200,
					"durationMilliseconds": 400
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 1600,
			"durationMilliseconds": 640,
			"text": "This is Sam.",
			"words": [
				{
					"text": "This",
					"offsetMilliseconds": 1600,
					"durationMilliseconds": 240
				},
				{
					"text": "is",
					"offsetMilliseconds": 1840,
					"durationMilliseconds": 120
				},
				{
					"text": "Sam.",
					"offsetMilliseconds": 1960,
					"durationMilliseconds": 280
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 2240,
			"durationMilliseconds": 1040,
			"text": "Thank you for calling Contoso.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 2240,
					"durationMilliseconds": 200
				},
				{
					"text": "you",
					"offsetMilliseconds": 2440,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 2520,
					"durationMilliseconds": 120
				},
				{
					"text": "calling",
					"offsetMilliseconds": 2640,
					"durationMilliseconds": 200
				},
				{
					"text": "Contoso.",
					"offsetMilliseconds": 2840,
					"durationMilliseconds": 440
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 3280,
			"durationMilliseconds": 640,
			"text": "How can I help?",
			"words": [
				{
					"text": "How",
					"offsetMilliseconds": 3280,
					"durationMilliseconds": 120
				},
				{
					"text": "can",
					"offsetMilliseconds": 3440,
					"durationMilliseconds": 120
				},
				{
					"text": "I",
					"offsetMilliseconds": 3560,
					"durationMilliseconds": 40
				},
				{
					"text": "help?",
					"offsetMilliseconds": 3600,
					"durationMilliseconds": 320
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 5040,
			"durationMilliseconds": 400,
			"text": "Hi there.",
			"words": [
				{
					"text": "Hi",
					"offsetMilliseconds": 5040,
					"durationMilliseconds": 240
				},
				{
					"text": "there.",
					"offsetMilliseconds": 5280,
					"durationMilliseconds": 160
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		{
			"offsetMilliseconds": 5440,
			"durationMilliseconds": 800,
			"text": "My name is Mary.",
			"words": [
				{
					"text": "My",
					"offsetMilliseconds": 5440,
					"durationMilliseconds": 80
				},
				{
					"text": "name",
					"offsetMilliseconds": 5520,
					"durationMilliseconds": 120
				},
				{
					"text": "is",
					"offsetMilliseconds": 5640,
					"durationMilliseconds": 80
				},
				{
					"text": "Mary.",
					"offsetMilliseconds": 5720,
					"durationMilliseconds": 520
				}
			],
			"locale": "en-US",
			"confidence": 0.93554276
		},
		// More transcription results...
	    // Redacted for brevity
		{
			"offsetMilliseconds": 180320,
			"durationMilliseconds": 680,
			"text": "Thank you for your help.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 180320,
					"durationMilliseconds": 160
				},
				{
					"text": "you",
					"offsetMilliseconds": 180480,
					"durationMilliseconds": 80
				},
				{
					"text": "for",
					"offsetMilliseconds": 180560,
					"durationMilliseconds": 120
				},
				{
					"text": "your",
					"offsetMilliseconds": 180680,
					"durationMilliseconds": 120
				},
				{
					"text": "help.",
					"offsetMilliseconds": 180800,
					"durationMilliseconds": 200
				}
			],
			"locale": "en-US",
			"confidence": 0.92022026
		},
		{
			"offsetMilliseconds": 181960,
			"durationMilliseconds": 280,
			"text": "Thank you.",
			"words": [
				{
					"text": "Thank",
					"offsetMilliseconds": 181960,
					"durationMilliseconds": 200
				},
				{
					"text": "you.",
					"offsetMilliseconds": 182160,
					"durationMilliseconds": 80
				}
			],
			"locale": "en-US",
			"confidence": 0.92022026
		}
	]
}

Observação

O serviço de Fala é um serviço elástico. Se você receber um código de erro 429 (muitas solicitações), siga as práticas recomendadas para reduzir a limitação durante o dimensionamento automático.

Solicitar opções de configuração

Aqui temos algumas opções de propriedades para configurar uma transcrição quando você chama a operação Transcrições – Transcrever.

Propriedade Descrição Obrigatório ou opcional
channels A lista de índices com base em zero dos canais a serem transcritos separadamente. Há suporte para até dois canais, a menos que a diarização esteja habilitada. Por padrão, a API de transcrição rápida mescla todos os canais de entrada em um único canal e executa a transcrição. Se isso não for desejável, os canais poderão ser transcritos independentemente sem mesclagem.

Se desejar transcrever separadamente os canais de um arquivo de áudio em estéreo, você precisará especificar [0,1], [0] ou [1]. Caso contrário, o áudio estéreo será mesclado ao mono e apenas um único canal será transcrito.

Se o áudio for estéreo e a diarização estiver habilitada, você não poderá definir a propriedade channels como [0,1]. O serviço de Fala não dá suporte à diarização de multicanais.

Para áudio mono, a propriedade channels é ignorada e o áudio sempre é transcrito como um único canal.
Opcional
diarization A configuração da diarização. A diarização é o processo de reconhecer e separar vários oradores em um canal de áudio. Por exemplo, especifique "diarization": {"maxSpeakers": 2, "enabled": true}. Em seguida, o arquivo de transcrição contém entradas de speaker (como "speaker": 0 ou "speaker": 1) para cada frase transcrita. Opcional
locales A lista de localidades que devem corresponder à localidade esperada dos dados de áudio para transcrever.

Se você souber a localidade do arquivo de áudio, poderá especificá-la para melhorar a precisão da transcrição e minimizar a latência. Se uma única localidade for especificada, essa localidade será usada para transcrição.

Mas se você não tiver certeza sobre a localidade, poderá especificar várias localidades para usar a identificação de idioma. A identificação de idioma pode ser mais precisa com uma lista mais precisa de localidades candidatas.

Se você não especificar nenhuma localidade, o serviço de Fala usará o modelo multilíngue mais recente para identificar a localidade e transcrever continuamente.

Você pode obter os idiomas com suporte mais recentes por meio do uso da API REST Transcrições – Listar Localidades com Suporte (versão 2024-11-15 ou mais recente). Para obter mais informações sobre localizações, consulte a documentação sobre o suporte a idiomas do serviço de fala.
Opcional, mas recomendado se você souber a localidade esperada.
profanityFilterMode Especifica como lidar com palavras ofensivas em 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. Opcional