Compartilhar via


Usar a API de transcrição rápida com a Fala de 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 produz somente transcrições no formulário 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 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: 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, 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 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

Dica

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

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, é possível ativar a identificação do idioma para permitir que o serviço de Fala identifique a 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 ponto de extremidade 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 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.
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: YourSubscriptionKey' \
--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. Há suporte para os idiomas que podem ser especificados: 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.

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

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 da localidade, poderá especificar várias localidades. A identificação de idioma pode ser mais precisa com uma lista mais precisa de localidades candidatas.

Se você não especificar nenhuma localidade ou se as especificadas não estiverem no arquivo de áudio, o serviço de Fala ainda tentará identificar o idioma. Se o idioma não puder ser identificado, um erro será retornado.

Há suporte para os idiomas que podem ser especificados: 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. É possível saber quais são os idiomas suportados mais recentes por meio da API REST Transcrições – Listar locais com suporte. Para obter mais informações sobre localidades, consulte a documentação de Suporte de idiomas do serviço de Fala.
Opcional, mas recomendado se você souber a localidade esperada.
profanityFilterMode Especifica como lidar com palavrões 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