Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Nota
Esse recurso está atualmente em versão prévia 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 ter recursos restritos. Para obter mais informações, consulte Supplemental Terms of Use for Microsoft Azure Previews.
A LlM Speech é uma API no Microsoft Foundry. Um LLM (modelo de linguagem grande) aprimora um modelo de fala, fornecendo qualidade aprimorada, compreensão contextual profunda, suporte multilíngue e recursos de ajuste de prompt. Ele usa a aceleração de GPU para inferência ultra-rápida, tornando-a ideal para uma ampla gama de cenários. Por exemplo, use a LLM Speech para gerar legendas e legendas ocultas a partir de arquivos de áudio, resumir anotações de reunião, auxiliar os agentes de call center e transcrever correios de voz.
Disponibilidade de funcionalidades
Esta tabela mostra os recursos de transcrição que a API de transcrição rápida suporta, com e sem LLM Speech.
| Recurso | Transcrição rápida (padrão) | Fala LLM (aprimorada) | MAI-transcribe |
|---|---|---|---|
| Transcrição | ✅ (modelos de transcrição de fala) | ✅ (modelo multimodal) | ✅ (modelo multimodal) |
| Tradução | ❌ | ✅ (modelo multimodal) | ❌ |
| Diarização | ✅ | ✅ | ❌ |
| Canal (estéreo) | ✅ | ✅ | ✅ |
| Filtragem de linguagem ofensiva | ✅ | ✅ | ✅ |
| Especificar localidade | ✅ | ❌ 1 | ✅ |
| Solicitação personalizada | ❌ | ✅ | ❌ |
| Lista de frases | ✅ | ❌ 1 | ❌ |
1Para o LLM Speech, use solicitações para guiar o estilo de saída em vez de usar listas de frases ou localidades explícitas.
Você pode experimentar a LlM Speech em Microsoft Foundry sem escrever nenhum código.
Pré-requisitos
Uma assinatura Azure. Crie um gratuitamente.
Um projeto do Foundry. Se você precisar criar um projeto, consulte Criar um projeto Microsoft Foundry.
Experimente a Fala do LLM
-
Entre no Microsoft Foundry. Verifique se o botão New Foundry está ativado. Essas etapas referem-se ao Foundry (novo).
No menu superior direito, selecione Compilar.
No painel esquerdo, selecione Modelos.
A guia Serviços de IA mostra os modelos do Foundry que você pode usar no portal do Foundry. Selecione Azure Speech – Conversão de fala em texto.
Na lista suspensa, selecione LLM speech.
Opcionalmente, use a seção Parâmetros para alterar o idioma, a política de palavrões e outras configurações. Você também pode adicionar instruções especiais para a LLM.
Use a seção Carregar arquivos para selecionar o arquivo de áudio. Em seguida, selecione Iniciar.
Exiba a saída de transcrição na guia Transcrição . Opcionalmente, exiba a saída de resposta da API bruta na guia JSON .
Vá para a aba Código para obter o código de exemplo para usar a fala LLM em seu aplicativo.
Pré-requisitos
Um recurso de Fala Azure em Ferramentas Fundimento em uma das regiões em que a API de Fala LLM está disponível. Para obter a lista atual de regiões com suporte, consulte as regiões do serviço de Fala.
Um arquivo de áudio com menos de cinco horas de duração e menos de 500 MB de tamanho. O arquivo de áudio deve estar 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 ou SPEEX. Para obter mais informações sobre formatos de áudio com suporte, consulte os formatos de áudio com suporte.
Utilizar a API de Fala do LLM
As próximas seções fornecem detalhes sobre como usar essa API.
Idiomas com suporte
Atualmente, há suporte para os seguintes idiomas para ambas as tarefas transcribe e translate: English, Chinese, German, French, Italian, Japanese, Spanish, Portuguese e Korean.
Carregar áudio
Você pode fornecer dados de áudio das seguintes maneiras:
Passe dados de áudio embutidos.
--form 'audio=@"YourAudioFile"'Carregar um arquivo de áudio de um
audioUrlpúblico.--form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
Dica
Para arquivos de áudio longos, recomendamos que você carregue de uma URL pública.
Neste artigo, usamos o upload de áudio embutido como exemplo.
Chamar a API de Fala do LLM
Em sua solicitação POST para o transcriptions endpoint, use o tipo de conteúdo multipart/form-data com o arquivo de áudio e as propriedades do corpo do pedido.
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
YourSpeechResoureKeypela chave de recurso de fala. - Substitua
YourServiceRegionpor sua região de recurso de Reconhecimento de Fala. - Substitua
YourAudioFilepelo caminho para o arquivo de áudio.
Importante
Para a autenticação sem chave recomendada com Microsoft Entra ID, 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 controle de acesso baseado em função .
Transcrever um áudio usando LLM Speech
Você pode transcrever áudio no idioma de entrada sem especificar um código de localidade. O modelo detecta e seleciona automaticamente o idioma apropriado com base no conteúdo de áudio.
curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={
"enhancedMode": {
"enabled": true,
"task": "transcribe"
}
}'
Usar o LLM Speech para traduzir um arquivo de áudio
Você pode converter áudio em um idioma de destino especificado. Para habilitar a tradução, você deve fornecer o código de idioma de destino na solicitação.
curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={
"enhancedMode": {
"enabled": true,
"task": "translate",
"targetLanguage": "ko"
}
}'
Usar o prompt-tuning para alterar o desempenho
Você pode fornecer um texto opcional para orientar o estilo de saída da tarefa transcribe ou da tarefa translate.
curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={
"enhancedMode": {
"enabled": true,
"task": "transcribe",
"prompt": ["Output must be in lexical format."]
}
}'
Aqui estão algumas práticas recomendadas para prompts:
Os prompts têm um comprimento máximo de 4.096 caracteres.
Os prompts devem, preferencialmente, ser escritos em inglês.
Os prompts podem guiar a formatação de saída. Por padrão, as respostas usam um formato de exibição otimizado para legibilidade. Para impor a formatação lexical, inclua:
Output must be in lexical format.Os prompts podem ampliar a saliência de frases ou acrônimos específicos, melhorando a probabilidade de reconhecimento. Use:
Pay attention to *phrase1*, *phrase2*, …. Para obter melhores resultados, limite o número de frases por prompt.Os prompts que não estão relacionados a tarefas de fala (por exemplo,
Tell me a story.) normalmente são desconsiderados.
Mais opções de configuração
Você pode combinar opções de configuração extras com transcrição rápida para habilitar recursos aprimorados, como diarization, profanityFilterModee channels.
curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={
"enhancedMode": {
"enabled": true,
"task": "transcribe",
"prompt": ["Output must be in lexical format."]
},
"diarization": {
"maxSpeakers": 2,
"enabled": true
},
"profanityFilterMode": "Masked"
}'
Algumas opções de configuração, como locales e phraseLists, não são necessárias ou não são aplicáveis à Fala LLM. Você pode omitir essas opções da solicitação. Saiba mais nas opções de configuração de transcrição rápida.
Usar o modelo de MAI-Transcribe (versão prévia)
Você também pode usar o modelo MAI-Transcribe-1 fornecido pela Microsoft IA (MAI) com a API de Fala LLM.
Para obter a lista atual de regiões em que esse modelo tem suporte, consulte as regiões do serviço de Fala.
Atualmente, há suporte para os seguintes idiomas no modelo mai-transcribe-1: Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Thai, Turkish, e Vietnamese
Para usar o modelo MAI-Transcribe-1, defina a model propriedade adequadamente na solicitação.
curl --location 'https://<YourServiceRegion>.api.cognitive.microsoft.com/speechtotext/transcriptions:transcribe?api-version=2025-10-15' \
--header 'Content-Type: multipart/form-data' \
--header 'Ocp-Apim-Subscription-Key: <YourSpeechResourceKey>' \
--form 'audio=@"YourAudioFile.wav"' \
--form 'definition={
"enhancedMode": {
"enabled": true,
"model":"mai-transcribe-1"
}
}'
Ao usar esse modelo, lembre-se das seguintes limitações:
O arquivo de áudio deve ter menos de 70 MB de tamanho.
Não há suporte para a diarização.
Resposta de exemplo
Na resposta JSON, a combinedPhrases propriedade contém o texto transcrito ou traduzido completo e a phrases propriedade contém detalhes de nível de segmento e de palavra.
{
"durationMilliseconds": 57187,
"combinedPhrases": [
{
"text": "With custom speech,you can evaluate and improve the microsoft speech to text accuracy for your applications and products 现成的语音转文本,利用通用语言模型作为一个基本模型,使用microsoft自有数据进行训练,并反映常用的口语。此基础模型使用那些代表各常见领域的方言和发音进行了预先训练。 Quand vous effectuez une demande de reconnaissance vocale, le modèle de base le plus récent pour chaque langue prise en charge est utilisé par défaut. Le modèle de base fonctionne très bien dans la plupart des scénarios de reconnaissance vocale. A custom model can be used to augment the base model to improve recognition of domain specific vocabulary specified to the application by providing text data to train the model. It can also be used to improve recognition based for the specific audio conditions of the application by providing audio data with reference transcriptions."
}
],
"phrases": [
{
"offsetMilliseconds": 80,
"durationMilliseconds": 6960,
"text": "With custom speech,you can evaluate and improve the microsoft speech to text accuracy for your applications and products.",
"words": [
{
"text": "with",
"offsetMilliseconds": 80,
"durationMilliseconds": 160
},
{
"text": "custom",
"offsetMilliseconds": 240,
"durationMilliseconds": 480
},
{
"text": "speech",
"offsetMilliseconds": 720,
"durationMilliseconds": 360
},,
// More transcription results...
// Redacted for brevity
],
"locale": "en-us",
"confidence": 0
},
{
"offsetMilliseconds": 8000,
"durationMilliseconds": 8600,
"text": "现成的语音转文本,利用通用语言模型作为一个基本模型,使用microsoft自有数据进行训练,并反映常用的口语。此基础模型使用那些代表各常见领域的方言和发音进行了预先训练。",
"words": [
{
"text": "现",
"offsetMilliseconds": 8000,
"durationMilliseconds": 40
},
{
"text": "成",
"offsetMilliseconds": 8040,
"durationMilliseconds": 40
},
// More transcription results...
// Redacted for brevity
{
"text": "训",
"offsetMilliseconds": 16400,
"durationMilliseconds": 40
},
{
"text": "练",
"offsetMilliseconds": 16560,
"durationMilliseconds": 40
},
],
"locale": "zh-cn",
"confidence": 0
// More transcription results...
// Redacted for brevity
{
"text": "with",
"offsetMilliseconds": 54720,
"durationMilliseconds": 200
},
{
"text": "reference",
"offsetMilliseconds": 54920,
"durationMilliseconds": 360
},
{
"text": "transcriptions.",
"offsetMilliseconds": 55280,
"durationMilliseconds": 1200
}
],
"locale": "en-us",
"confidence": 0
}
]
}
O formato de resposta é consistente com outras saídas de conversão de fala em texto existentes, como transcrição rápida e transcrição em lote. Lembre-se das seguintes diferenças:
Nível de palavra
durationMillisecondseoffsetMillisecondsnão tem suporte para a tarefatranslate.Não há suporte para a diarização para a
translatetarefa. Somente ospeaker1rótulo é retornado.confidencenão está disponível e está sempre0.
Documentação de referência | Pacote (PyPi) | Exemplos do GitHub
Pré-requisitos
Uma assinatura Azure. Crie um gratuitamente.
Python versão 3.9 ou posterior. Se você não tiver uma versão adequada do Python instalado, poderá seguir as instruções no tutorial Visual Studio Code Python. Este tutorial mostra a maneira mais fácil de instalar Python em seu sistema operacional.
Um recurso Microsoft Foundry criado em uma das regiões com suporte. Para obter mais informações sobre a disponibilidade da região, consulte o suporte à região.
Um arquivo de áudio de exemplo
.wava ser transcrito.
Microsoft Entra ID pré-requisitos
Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:
Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
Atribua a função de usuário dos Serviços Cognitivos à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Configurar o ambiente
Crie uma nova pasta nomeada
llm-speech-quickstarte vá para a pasta com o seguinte comando:mkdir llm-speech-quickstart && cd llm-speech-quickstartPara instalar os pacotes necessários para este artigo, crie e ative um ambiente de Python virtual. Recomendamos que você sempre use um ambiente virtual ou conda ao instalar Python pacotes. Caso contrário, você poderá interromper a instalação global de Python. Se você já tiver Python 3.9 ou posterior instalado, crie um ambiente virtual usando os seguintes comandos:
Quando você ativa o ambiente de Python, executar
pythonoupipda linha de comando usa o interpretador de Python na pasta.venvdo aplicativo. Use o comandodeactivatepara sair do ambiente virtual Python. Você pode reativar mais tarde, quando necessário.Criar um arquivo chamado requirements.txt. Adicione os seguintes pacotes ao arquivo:
azure-ai-transcription azure-identityInstale os pacotes:
pip install -r requirements.txt
Definir variáveis de ambiente
Você precisa recuperar o endpoint de recurso e a chave de API para autenticação.
Entre no portal do Foundry (clássico).
Selecione o Centro de Gerenciamento no menu à esquerda.
Selecione Recursos conectados e localize o recurso Microsoft Foundry (ou adicione uma conexão se não estiver lá). Em seguida, copie os valores de Chave de API e Destino (ponto de extremidade). Use esses valores para definir variáveis de ambiente.
Defina as seguintes variáveis de ambiente:
Nota
Para autenticação Microsoft Entra ID (recomendado para produção), instale azure-identity. Configure a autenticação conforme descrito na seção Microsoft Entra ID pré-requisitos.
Transcrever áudio com o LLM Speech
A LLM Speech usa a classe EnhancedModeProperties para habilitar a transcrição aprimorada por um grande modelo de linguagem. O modelo detecta automaticamente o idioma em seu áudio.
Crie um arquivo nomeado
llm_speech_transcribe.pycom o seguinte código:import os from dotenv import load_dotenv from azure.core.credentials import AzureKeyCredential from azure.ai.transcription import TranscriptionClient load_dotenv() from azure.ai.transcription.models import ( TranscriptionContent, TranscriptionOptions, EnhancedModeProperties, ) # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] # Optional: we recommend using role based access control (RBAC) for production scenarios api_key = os.environ["AZURE_SPEECH_API_KEY"] if api_key: credential = AzureKeyCredential(api_key) else: from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential() # Create the transcription client client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file (replace with your own file path) audio_file_path = "<path-to-your-audio-file.wav>" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: # Create enhanced mode properties for LLM Speech transcription enhanced_mode = EnhancedModeProperties( task="transcribe", prompt=[], ) # Create transcription options with enhanced mode options = TranscriptionOptions(enhanced_mode=enhanced_mode) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) # Transcribe the audio result = client.transcribe(request_content) # Print the transcription result print(f"Transcription: {result.combined_phrases[0].text}") # Print detailed phrase information if result.phrases: print("\nDetailed phrases:") for phrase in result.phrases: print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}")Para obter mais informações, consulte as seguintes referências: TranscriptionClient, TranscriptionContent, TranscriptionOptions e EnhancedModeProperties.
Substitua
<path-to-your-audio-file.wav>pelo caminho para o arquivo de áudio. O serviço dá suporte a WAV, MP3, FLAC, OGG e outros formatos de áudio comuns.Rode o script Python.
python llm_speech_transcribe.py
Saída de transcrição
O script imprime o resultado da transcrição no console:
Transcription: Hi there. This is a sample voice recording created for speech synthesis testing. The quick brown fox jumps over the lazy dog. Just a fun way to include every letter of the alphabet. Numbers, like one, two, three, are spoken clearly. Let's see how well this voice captures tone, timing, and natural rhythm. This audio is provided by samplefiles.com.
Detailed phrases:
[40ms]: Hi there.
[800ms]: This is a sample voice recording created for speech synthesis testing.
[5440ms]: The quick brown fox jumps over the lazy dog.
[9040ms]: Just a fun way to include every letter of the alphabet.
[12720ms]: Numbers, like one, two, three, are spoken clearly.
[17200ms]: Let's see how well this voice captures tone, timing, and natural rhythm.
[22480ms]: This audio is provided by samplefiles.com.
Traduzir áudio com LLM Speech
Você também pode usar a LlM Speech para traduzir áudio em um idioma de destino. Defina o task para translate, e especifique o target_language.
Use o código acima, mas especifique o
taskcomotranslatee adicione otarget_languagenoEnhancedModeProperties.# Open and read the audio file with open(audio_file_path, "rb") as audio_file: # Create enhanced mode properties for LLM Speech translation # Translate to another language enhanced_mode = EnhancedModeProperties( task="translate", target_language="de", prompt=[ "Translate the following audio to German.", "Convert number words to numbers." ], # Optional prompts to guide the enhanced mode ) # Create transcription options with enhanced mode options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode)Para obter mais informações, consulte as seguintes referências: TranscriptionClient e EnhancedModeProperties.
Substitua
<path-to-your-audio-file.wav>pelo caminho para o arquivo de áudio.Rode o script Python.
python llm_speech_translate.py
Usar o ajuste de prompt
Você pode fornecer um prompt opcional para orientar o estilo de saída para tarefas de transcrição ou tradução. Substitua o valor prompt no objeto EnhancedModeProperties.
# Open and read the audio file
with open(audio_file_path, "rb") as audio_file:
# Create enhanced mode properties for LLM Speech transcription
enhanced_mode = EnhancedModeProperties(
task="transcribe",
prompt=[
"Create lexical output only,",
"Convert number words to numbers."
], # Optional prompts to guide the enhanced mode, prompt="Create lexical transcription.")
)
Práticas recomendadas para prompts
Os prompts têm um comprimento máximo de 4.096 caracteres.
Os prompts devem, preferencialmente, ser escritos em inglês.
Use
Output must be in lexical format.para impor a formatação lexical em vez do formato de exibição padrão.Use
Pay attention to *phrase1*, *phrase2*, …para melhorar o reconhecimento de frases ou acrônimos específicos.
Para obter mais informações, consulte a seguinte referência: EnhancedModeProperties.
Saída
O script imprime o resultado da transcrição no console:
Transcription: Hello, this is a test of the LLM Speech transcription service.
Detailed phrases:
[0ms]: Hello, this is a test
[1500ms]: of the LLM Speech transcription service.
Documentação de referência | Pacote (NuGet) | Exemplos no GitHub
Pré-requisitos
Uma assinatura Azure. Crie um gratuitamente.
.NET SDK 8.0 ou posterior.
Um recurso Microsoft Foundry criado em uma das regiões com suporte. Para obter mais informações sobre a disponibilidade da região, consulte o suporte à região.
Um arquivo de áudio de exemplo
.wava ser transcrito.
Microsoft Entra ID pré-requisitos
Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:
Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
Entre com o CLI do Azure executando
az login.Atribua a função de usuário dos Serviços Cognitivos à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Configurar o projeto
Crie um novo aplicativo de console com a CLI do .NET:
dotnet new console -n llm-speech-quickstart cd llm-speech-quickstartInstale os pacotes necessários:
dotnet add package Azure.AI.Speech.Transcription --prerelease dotnet add package Azure.Identity
Recuperar informações do recurso
Você precisa obter o endpoint de recurso para autenticação.
Acesse o portal do Foundry.
Selecione o Centro de Gerenciamento no menu à esquerda. Em Recursos conectados, selecione seu recurso de Fala ou multisserviço.
Selecione Chaves e Endpoint.
Copie o valor do ponto de extremidade e defina-o como uma variável de ambiente:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Transcrever áudio com a tecnologia LLM de fala
A LLM Speech usa a classe EnhancedModeProperties para habilitar a transcrição aprimorada por um grande modelo de linguagem. Ao criar uma EnhancedModeProperties instância, você habilita automaticamente o modo aprimorado. O modelo detecta automaticamente o idioma em seu áudio.
Substitua o conteúdo de Program.cs pelo seguinte código:
using System;
using System.ClientModel;
using System.Linq;
using System.Threading.Tasks;
using Azure.AI.Speech.Transcription;
using Azure.Identity;
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("AZURE_SPEECH_ENDPOINT")
?? throw new InvalidOperationException("Set the AZURE_SPEECH_ENDPOINT environment variable."));
// Use DefaultAzureCredential for keyless authentication (recommended).
// To use an API key instead, replace with:
// ApiKeyCredential credential = new ApiKeyCredential("<your-api-key>");
var credential = new DefaultAzureCredential();
TranscriptionClient client = new TranscriptionClient(endpoint, credential);
string audioFilePath = "<path-to-your-audio-file.wav>";
using FileStream audioStream = File.OpenRead(audioFilePath);
// Create enhanced mode properties for LLM Speech transcription
TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
EnhancedMode = new EnhancedModeProperties
{
Task = "transcribe"
}
};
ClientResult<TranscriptionResult> response = await client.TranscribeAsync(options);
// Print combined transcription
foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
Console.WriteLine($"Transcription: {combinedPhrase.Text}");
}
// Print detailed phrase information
foreach (var channel in response.Value.PhrasesByChannel)
{
Console.WriteLine("\nDetailed phrases:");
foreach (var phrase in channel.Phrases)
{
Console.WriteLine($" [{phrase.Offset}] ({phrase.Locale}): {phrase.Text}");
}
}
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio. O serviço dá suporte a WAV, MP3, FLAC, OGG e outros formatos de áudio comuns.
Execute o aplicativo:
dotnet run
Para obter mais informações, consulte as seguintes referências: TranscriptionClient e EnhancedModeProperties.
Traduzir áudio com LLM Speech
Você também pode usar a LlM Speech para traduzir áudio em um idioma de destino. Defina o Task para translate, e especifique o TargetLanguage.
using System;
using System.ClientModel;
using System.Linq;
using System.Threading.Tasks;
using Azure.AI.Speech.Transcription;
using Azure.Identity;
Uri endpoint = new Uri(Environment.GetEnvironmentVariable("AZURE_SPEECH_ENDPOINT")
?? throw new InvalidOperationException("Set the AZURE_SPEECH_ENDPOINT environment variable."));
var credential = new DefaultAzureCredential();
TranscriptionClient client = new TranscriptionClient(endpoint, credential);
string audioFilePath = "<path-to-your-audio-file.wav>";
using FileStream audioStream = File.OpenRead(audioFilePath);
// Create enhanced mode properties for LLM Speech translation
TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
EnhancedMode = new EnhancedModeProperties
{
Task = "translate",
TargetLanguage = "de"
}
};
ClientResult<TranscriptionResult> response = await client.TranscribeAsync(options);
// Print translation result
foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
Console.WriteLine($"Translation: {combinedPhrase.Text}");
}
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio.
Para obter mais informações, consulte a seguinte referência: EnhancedModeProperties.
Usar o ajuste de prompt
Você pode fornecer um prompt opcional para orientar o estilo de saída para tarefas de transcrição ou tradução:
TranscriptionOptions options = new TranscriptionOptions(audioStream)
{
EnhancedMode = new EnhancedModeProperties
{
Task = "transcribe",
Prompt = { "Output must be in lexical format." }
}
};
ClientResult<TranscriptionResult> response = await client.TranscribeAsync(options);
foreach (var combinedPhrase in response.Value.CombinedPhrases)
{
Console.WriteLine($"Transcription: {combinedPhrase.Text}");
}
Práticas recomendadas para prompts
Os prompts têm um comprimento máximo de 4.096 caracteres.
Os prompts devem, preferencialmente, ser escritos em inglês.
Use
Output must be in lexical format.para impor a formatação lexical em vez do formato de exibição padrão.Use
Pay attention to *phrase1*, *phrase2*, …para melhorar o reconhecimento de frases ou acrônimos específicos.
Para obter mais informações, consulte a seguinte referência: EnhancedModeProperties.
Limpar recursos
Ao concluir o início rápido, exclua a pasta do projeto:
Remove-Item -Recurse -Force llm-speech-quickstart
Documentação de referência | Pacote (npm) | Amostras do GitHub
Pré-requisitos
Uma assinatura Azure. Crie um gratuitamente.
Node.js LTS instalado.
Um recurso Microsoft Foundry criado em uma região que suporta o LLM Speech. Para obter mais informações sobre a disponibilidade da região, consulte o suporte à região.
Um arquivo de áudio de exemplo
.wava ser transcrito.
Microsoft Entra ID pré-requisitos
Para a autenticação sem chave recomendada com Microsoft Entra ID, você precisa:
Instale o CLI do Azure usado para autenticação sem chave com Microsoft Entra ID.
Entre com o CLI do Azure executando
az login.Atribua a função de usuário dos Serviços Cognitivos à sua conta de usuário. Você pode atribuir funções no portal do Azure em Controle de acesso (IAM)>Adicionar atribuição de função.
Configurar o projeto
Crie uma nova pasta chamada
llm-speech-quickstarte vá para a pasta:mkdir llm-speech-quickstart && cd llm-speech-quickstartInicialize um projeto Node.js e instale os pacotes necessários:
npm init -y npm install @azure/ai-speech-transcription @azure/identity
Recuperar informações do recurso
Você precisa obter o endpoint de recurso para autenticação.
Entre no portal do Foundry.
Selecione o Centro de Gerenciamento no menu à esquerda. Em Recursos conectados, selecione seu recurso de Fala ou multisserviço.
Selecione Chaves e Endpoint.
Copie o valor do ponto de extremidade e defina-o como uma variável de ambiente:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Transcrever áudio com o LLM Speech
A LlM Speech usa a opção enhancedMode para habilitar a transcrição aprimorada por um modelo de linguagem grande. O modelo detecta automaticamente o idioma em seu áudio.
Crie um arquivo nomeado index.js com o seguinte código:
const {
TranscriptionClient,
} = require("@azure/ai-speech-transcription");
const { DefaultAzureCredential } = require("@azure/identity");
const fs = require("fs");
async function main() {
const endpoint = process.env.AZURE_SPEECH_ENDPOINT;
if (!endpoint) {
throw new Error(
"Set the AZURE_SPEECH_ENDPOINT environment variable."
);
}
// Use DefaultAzureCredential for keyless authentication
// (recommended). To use an API key instead, replace with:
// const { AzureKeyCredential } = require("@azure/core-auth");
// const credential = new AzureKeyCredential("<your-api-key>");
const credential = new DefaultAzureCredential();
const client = new TranscriptionClient(endpoint, credential);
const audioFilePath = "<path-to-your-audio-file.wav>";
const audioFile = fs.readFileSync(audioFilePath);
// Use enhancedMode for LLM speech transcription
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "transcribe",
},
});
// Print the combined transcription text
console.log("Transcription:", result.combinedPhrases[0]?.text);
// Print detailed phrase information
for (const phrase of result.phrases) {
console.log(
` [${phrase.offsetMilliseconds}ms]`
+ ` (${phrase.locale}): ${phrase.text}`
);
}
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio. O serviço dá suporte a WAV, MP3, FLAC, OGG e outros formatos de áudio comuns.
Execute o aplicativo:
node index.js
Dica
Se você obtiver o resultado Enhanced mode is currently not supported yet, verifique se o endpoint está em uma região que dá suporte ao LLM Speech.
Para obter mais informações, consulte a seguinte referência: TranscriptionClient.
Saída de transcrição
O aplicativo imprime o resultado da transcrição no console:
Transcription: Hi there. This is a sample voice recording created for speech synthesis testing. The quick brown fox jumps over the lazy dog. Just a fun way to include every letter of the alphabet. Numbers, like one, two, three, are spoken clearly. Let's see how well this voice captures tone, timing, and natural rhythm. This audio is provided by samplefiles.com.
[40ms] (en-US): Hi there.
[800ms] (en-US): This is a sample voice recording created for speech synthesis testing.
[5440ms] (en-US): The quick brown fox jumps over the lazy dog.
[9040ms] (en-US): Just a fun way to include every letter of the alphabet.
[12720ms] (en-US): Numbers, like one, two, three, are spoken clearly.
[17200ms] (en-US): Let's see how well this voice captures tone, timing, and natural rhythm.
[22480ms] (en-US): This audio is provided by samplefiles.com.
Traduzir áudio com LLM Speech
Você também pode usar a LlM Speech para traduzir áudio para um idioma de destino. Defina task como translatee, em seguida, especifique :targetLanguage
const {
TranscriptionClient,
} = require("@azure/ai-speech-transcription");
const { DefaultAzureCredential } = require("@azure/identity");
const fs = require("fs");
async function main() {
const endpoint = process.env.AZURE_SPEECH_ENDPOINT;
if (!endpoint) {
throw new Error(
"Set the AZURE_SPEECH_ENDPOINT environment variable."
);
}
const credential = new DefaultAzureCredential();
const client = new TranscriptionClient(endpoint, credential);
const audioFilePath = "<path-to-your-audio-file.wav>";
const audioFile = fs.readFileSync(audioFilePath);
// Translate audio using enhanced mode
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "translate",
targetLanguage: "de", // Translate to German
},
});
console.log("Translation:", result.combinedPhrases[0]?.text);
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio.
Para obter mais informações, consulte a seguinte referência: TranscriptionClient.
Usar o ajuste de prompt
Você pode fornecer um prompt opcional para orientar o estilo de saída para tarefas de transcrição ou tradução:
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "transcribe",
prompt: ["Output must be in lexical format."],
},
});
console.log("Transcription:", result.combinedPhrases[0]?.text);
Práticas recomendadas para prompts
Os prompts têm um comprimento máximo de 4.096 caracteres.
Os prompts devem, preferencialmente, ser escritos em inglês.
Use
Output must be in lexical format.para impor a formatação lexical em vez do formato de exibição padrão.Use
Pay attention to *phrase1*, *phrase2*, …para melhorar o reconhecimento de frases ou acrônimos específicos.
Saída
O aplicativo imprime o resultado da transcrição no console:
Transcription: Hello this is a test of the LLM speech transcription service.
Para obter mais informações, consulte a seguinte referência: TranscriptionClient.
Documentação de referência | Package (Maven) | Exemplos do GitHub
Pré-requisitos
Uma assinatura Azure. Crie um gratuitamente.
Apache Maven para gerenciamento de dependência e criação do projeto.
Um recurso de Fala em uma das regiões com suporte. Para obter mais informações sobre a disponibilidade da região, consulte as regiões com suporte do serviço de Fala.
Um arquivo de áudio de exemplo
.wava ser transcrito.
Configurar o ambiente
Crie uma nova pasta chamada
llm-speech-quickstarte vá para ela:mkdir llm-speech-quickstart && cd llm-speech-quickstartCrie um
pom.xmlarquivo na raiz do diretório do projeto com o seguinte conteúdo:<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>transcription-quickstart</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <name>Speech Transcription Quickstart</name> <description>Quickstart sample for Azure Speech Transcription client library.</description> <url>https://github.com/Azure/azure-sdk-for-java</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencies> <dependency> <groupId>com.azure</groupId> <artifactId>azure-ai-speech-transcription</artifactId> <version>1.0.0-beta.2</version> </dependency> <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.18.1</version> </dependency> </dependencies> <build> <sourceDirectory>.</sourceDirectory> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.11.0</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.1.0</version> <configuration> <mainClass>TranscriptionQuickstart</mainClass> </configuration> </plugin> </plugins> </build> </project>Nota
A configuração
<sourceDirectory>.</sourceDirectory>informa ao Maven para procurar arquivos de origem Java no diretório atual em vez da estrutura padrãosrc/main/java. Essa alteração de configuração permite uma estrutura de projeto mais simples e plana.Instale as dependências:
mvn clean install
Definir variáveis de ambiente
Seu aplicativo deve ser autenticado para acessar Azure Fala. O SDK dá suporte à chave de API e à autenticação Microsoft Entra ID. Ele detecta automaticamente qual método usar com base nas variáveis de ambiente definidas.
Primeiro, configure o endpoint para o recurso de Fala. Substitua <your-speech-endpoint> pelo nome real do recurso.
Em seguida, escolha um dos métodos de autenticação a seguir.
Autenticação de chave de API (recomendada para introdução)
Defina a variável de ambiente de chave de API:
Autenticação Microsoft Entra ID (recomendada para produção)
Em vez de definir AZURE_SPEECH_API_KEY, configure uma das seguintes fontes de credencial:
CLI do Azure: execute
az loginem seu computador de desenvolvimento.Identidade gerenciada: Para aplicativos em execução no Azure (Serviço de Aplicativo do Azure, Azure Functions, máquinas virtuais).
Variáveis de ambiente: Definir
AZURE_TENANT_ID,AZURE_CLIENT_IDeAZURE_CLIENT_SECRET.Visual Studio Code ou IntelliJ: entre por meio do IDE.
Você também precisa atribuir a função de Usuário dos Serviços Cognitivos à sua identidade:
az role assignment create --assignee <your-identity> \
--role "Cognitive Services User" \
--scope /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<speech-resource-name>
Nota
Depois de definir variáveis de ambiente em Windows, reinicie todos os programas em execução que precisam lê-las, incluindo a janela do console. No Linux ou macOS, execute source ~/.bashrc (ou seu arquivo de configuração de shell equivalente) para tornar as alterações efetivas.
Transcrever áudio com o LLM Speech
A LLM Speech usa a classe EnhancedModeOptions para habilitar a transcrição aprimorada por um grande modelo de linguagem. Ao criar uma EnhancedModeOptions instância, você habilita automaticamente o modo aprimorado. O modelo detecta automaticamente o idioma em seu áudio.
Crie um arquivo nomeado LlmSpeechQuickstart.java no diretório do projeto com o seguinte código:
import com.azure.ai.speech.transcription.TranscriptionClient;
import com.azure.ai.speech.transcription.TranscriptionClientBuilder;
import com.azure.ai.speech.transcription.models.AudioFileDetails;
import com.azure.ai.speech.transcription.models.EnhancedModeOptions;
import com.azure.ai.speech.transcription.models.TranscriptionOptions;
import com.azure.ai.speech.transcription.models.TranscriptionResult;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import com.azure.identity.DefaultAzureCredentialBuilder;
import java.nio.file.Files;
import java.nio.file.Paths;
public class LlmSpeechQuickstart {
public static void main(String[] args) {
try {
// Get credentials from environment variables
String endpoint = System.getenv("AZURE_SPEECH_ENDPOINT");
String apiKey = System.getenv("AZURE_SPEECH_API_KEY");
// Create client with API key or Entra ID authentication
TranscriptionClientBuilder builder = new TranscriptionClientBuilder()
.endpoint(endpoint);
TranscriptionClient client;
if (apiKey != null && !apiKey.isEmpty()) {
// Use API key authentication
client = builder.credential(new KeyCredential(apiKey)).buildClient();
} else {
// Use Entra ID authentication
client = builder.credential(new DefaultAzureCredentialBuilder().build()).buildClient();
}
// Load audio file
String audioFilePath = "<path-to-your-audio-file.wav>";
byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath));
// Create audio file details
AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData));
// Create enhanced mode options for LLM speech transcription
// Enhanced mode is automatically enabled when you create EnhancedModeOptions
EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
.setTask("transcribe");
// Create transcription options with enhanced mode
TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
.setEnhancedModeOptions(enhancedModeOptions);
// Transcribe the audio
TranscriptionResult result = client.transcribe(options);
// Print result
System.out.println("Transcription:");
result.getCombinedPhrases().forEach(phrase ->
System.out.println(phrase.getText())
);
// Print detailed phrase information
if (result.getPhrases() != null) {
System.out.println("\nDetailed phrases:");
result.getPhrases().forEach(phrase ->
System.out.println(String.format(" [%dms] (%s): %s",
phrase.getOffset(),
phrase.getLocale(),
phrase.getText()))
);
}
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio. O serviço dá suporte a WAV, MP3, FLAC, OGG e outros formatos de áudio comuns.
Executar o aplicativo
Execute o aplicativo usando o Maven:
mvn compile exec:java
Traduzir áudio usando a LlM Speech
Você também pode usar a LlM Speech para traduzir áudio em um idioma de destino. Modifique a configuração EnhancedModeOptions para definir a tarefa em translate e, em seguida, especifique o idioma de destino.
Crie um arquivo nomeado LlmSpeechTranslate.java com o seguinte código:
import com.azure.ai.speech.transcription.TranscriptionClient;
import com.azure.ai.speech.transcription.TranscriptionClientBuilder;
import com.azure.ai.speech.transcription.models.AudioFileDetails;
import com.azure.ai.speech.transcription.models.EnhancedModeOptions;
import com.azure.ai.speech.transcription.models.TranscriptionOptions;
import com.azure.ai.speech.transcription.models.TranscriptionResult;
import com.azure.core.credential.KeyCredential;
import com.azure.core.util.BinaryData;
import java.nio.file.Files;
import java.nio.file.Paths;
public class LlmSpeechTranslate {
public static void main(String[] args) {
try {
// Get credentials from environment variables
String endpoint = System.getenv("AZURE_SPEECH_ENDPOINT");
String apiKey = System.getenv("AZURE_SPEECH_API_KEY");
// Create client
TranscriptionClient client = new TranscriptionClientBuilder()
.endpoint(endpoint)
.credential(new KeyCredential(apiKey))
.buildClient();
// Load audio file
String audioFilePath = "<path-to-your-audio-file.wav>";
byte[] audioData = Files.readAllBytes(Paths.get(audioFilePath));
// Create audio file details
AudioFileDetails audioFileDetails = new AudioFileDetails(BinaryData.fromBytes(audioData));
// Create enhanced mode options for LLM speech translation
// Translate to Korean (supported languages: en, zh, de, fr, it, ja, es, pt, ko)
EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
.setTask("translate")
.setTargetLanguage("ko");
// Create transcription options with enhanced mode
TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
.setEnhancedModeOptions(enhancedModeOptions);
// Translate the audio
TranscriptionResult result = client.transcribe(options);
// Print translation result
System.out.println("Translation:");
result.getCombinedPhrases().forEach(phrase ->
System.out.println(phrase.getText())
);
} catch (Exception e) {
System.err.println("Error: " + e.getMessage());
e.printStackTrace();
}
}
}
Substitua <path-to-your-audio-file.wav> pelo caminho para o arquivo de áudio.
Para executar o exemplo de tradução, atualize a pom.xml configuração da classe principal ou execute:
mvn exec:java -Dexec.mainClass="LlmSpeechTranslate"
Usar o ajuste de prompt
Você pode fornecer um prompt opcional para orientar o estilo de saída para tarefas de transcrição ou tradução.
import java.util.Arrays;
// Create enhanced mode options with prompt-tuning
EnhancedModeOptions enhancedModeOptions = new EnhancedModeOptions()
.setTask("transcribe")
.setPrompts(Arrays.asList("Output must be in lexical format."));
// Create transcription options with enhanced mode
TranscriptionOptions options = new TranscriptionOptions(audioFileDetails)
.setEnhancedModeOptions(enhancedModeOptions);
Práticas recomendadas para prompts
Os prompts têm um comprimento máximo de 4.096 caracteres.
Os prompts devem, preferencialmente, ser escritos em inglês.
Use
Output must be in lexical format.para impor a formatação lexical em vez do formato de exibição padrão.Use
Pay attention to *phrase1*, *phrase2*, …para melhorar o reconhecimento de frases ou acrônimos específicos.
Limpar recursos
Ao concluir o início rápido, exclua a pasta do projeto:
rm -rf llm-speech-quickstart
Tratamento de erros de transcrição
Ao chamar a API de transcrição rápida, implemente a lógica de repetição para lidar com erros transitórios e limitação de taxa. A API impõe limites de taxa, o que pode resultar em um erro durante operações de alta simultaneidade.
Configuração de repetição recomendada
Tente novamente até cinco vezes em erros transitórios.
Use a retirada exponencial: 2 segundos, 4 segundos, 8 s, 16 s, 32 segundos.
Tempo total de retirada: 62 segundos.
Essa configuração fornece tempo suficiente para que a API se recupere durante janelas de limitação de taxa, especialmente quando você executa operações em lote com vários trabalhadores simultâneos.
Quando usar a lógica de repetição
Implemente a lógica de repetição para as seguintes categorias de erro:
Erros HTTP - Tente novamente em:
- HTTP 429 (limite de requisições)
- HTTP 500, 502, 503, 504 (erros de servidor)
-
status_code=None(downloads de resposta incompletos)
SDK do Azure erros de rede – tente novamente:
ServiceRequestErrorServiceResponseError
Esses erros encapsulam exceções de rede de baixo nível, como
urllib3.exceptions.ReadTimeoutError, redefinições de conexão e falhas de TLS.Python exceções de rede - Tente novamente:
ConnectionErrorTimeoutErrorOSError
Não tente novamente os seguintes erros, pois eles indicam problemas do lado do cliente que exigem correção:
- HTTP 400 (solicitação incorreta)
- HTTP 401 (não autorizado)
- HTTP 422 (entidade não processável)
- Outros erros de cliente (códigos de status 4xx)
Notas de implementação
Redefina o fluxo de arquivo de áudio (
seek(0)) antes de cada tentativa de repetição.Quando você usa trabalhadores simultâneos, o tempo limite de leitura HTTP padrão (300 segundos) pode ser excedido sob limitação de taxa pesada.
A API pode aceitar uma solicitação, mas pode exceder o tempo limite durante a geração da resposta. Essa condição pode aparecer como um erro de rede encapsulado em SDK em vez de um erro HTTP padrão.