Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Nota
Questa funzionalità è attualmente disponibile in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliata per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero avere funzionalità limitate. Per altre informazioni, vedere Condizioni aggiuntive di utilizzo per le anteprime di Microsoft Azure.
LLM Speech è un'API in Microsoft Foundry. Un modello linguistico di grandi dimensioni (LLM) migliora un modello di riconoscimento vocale, offrendo una migliore qualità, una comprensione contestuale approfondita, un supporto multilingue e funzionalità di ottimizzazione delle richieste. Usa l'accelerazione GPU per l'inferenza ultra veloce, rendendola ideale per un'ampia gamma di scenari. Ad esempio, usare LLM Speech per generare sottotitoli e sottotitoli da file audio, riepilogare le note delle riunioni, assistere gli agenti del call center e trascrivere i messaggi vocali.
Disponibilità delle funzionalità
Questa tabella mostra le funzionalità di trascrizione supportate dall'API di trascrizione rapida, con e senza riconoscimento vocale LLM (modalità avanzata):
| Funzionalità | Trascrizione rapida (impostazione predefinita) | Elaborazione vocale LLM (potenziato) |
|---|---|---|
| Trascrizione | ✅ (modelli di riconoscimento vocale) | ✅ (modello multimodale) |
| Traduzione | ❌ | ✅ (modello multimodale) |
| Diarizzazione | ✅ | ✅ |
| Canale (stereo) | ✅ | ✅ |
| Filtro anti-profanità | ✅ | ✅ |
| Specificare le impostazioni locali | ✅ | ❌ (usare il prompting per implementare) |
| Richiesta personalizzata | ❌ | ✅ |
| Elenco frasi | ✅ | ❌ (usare il prompting per implementare) |
Per la tecnologia LLM per il riconoscimento vocale, utilizzare i suggerimenti per guidare lo stile di output invece di usare impostazioni locali o elenchi di frasi espliciti.
È possibile provare LLM Speech in Microsoft Foundry senza scrivere codice.
Prerequisiti
Sottoscrizione Azure. Crearne uno gratuitamente.
Progetto Foundry. Se è necessario creare un progetto, vedere Creare un progetto Foundry di Microsoft.
Prova il riconoscimento vocale LLM
-
Accedere a Microsoft Foundry. Assicurarsi che l'interruttore New Foundry sia attivato. Questi passaggi fanno riferimento a Foundry (nuovo).These steps refer to Foundry (new).
Nel menu in alto a destra selezionare Compila.
Nel riquadro sinistro selezionare Modelli.
La scheda Servizi di intelligenza artificiale mostra i modelli foundry che è possibile usare nel portale foundry. Selezionare Azure Speech - Da voce a testo.
Nell'elenco a discesa, selezionare LLM speech.
Facoltativamente, usare la sezione Parametri per modificare la lingua, i criteri di volgarità e altre impostazioni. È anche possibile aggiungere istruzioni speciali per LLM.
Usare la sezione Carica file per selezionare il file audio. Selezionare quindi Avvia.
Visualizzare l'output della trascrizione nella scheda Trascrizione. Facoltativamente, visualizzare l'output della risposta API non elaborata nella scheda JSON.
Passare alla scheda Codice per ottenere il codice di esempio per l'uso della voce LLM nell'applicazione.
Prerequisiti
Una risorsa Azure Speech in Foundry Tools in una delle aree in cui è disponibile l'API Riconoscimento vocale LLM. Per l'elenco corrente delle aree supportate, vedere Aree del servizio Voce.
Un file audio di dimensioni inferiori a cinque ore e inferiore a 500 MB. Il file audio deve essere in uno dei formati e codec supportati dall'API di trascrizione batch: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW in contenitore WAV, MULAW in contenitore WAV, AMR, WebM o SPEEX. Per altre informazioni sui formati audio supportati, vedi Formati audio supportati.
Usare l'API Vocale LLM
Le sezioni successive forniscono informazioni dettagliate su come usare questa API.
Lingue supportate
Le lingue seguenti sono attualmente supportate per entrambe le attività transcribe e translate: English, Chinese, German, French, Italian, Japanese, Spanish, Portuguese, e Korean.
Caricare l'audio
È possibile fornire dati audio nei modi seguenti:
Trasmetti dati audio in linea.
--form 'audio=@"YourAudioFile"'Carica un file audio da un oggetto pubblico
audioUrl.--form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
Suggerimento
Per file audio lunghi, è consigliabile caricare da un URL pubblico.
In questo articolo viene usato il caricamento audio inline come esempio.
Chiamare l'API di riconoscimento vocale LLM
Nella richiesta POST all'endpoint transcriptions, usa il tipo di contenuto multipart/form-data con il file audio e le proprietà del corpo della richiesta.
L'esempio seguente illustra come trascrivere un file audio con impostazioni locali specificate. Se si conoscono le impostazioni locali del file audio, è possibile specificarlo per migliorare l'accuratezza della trascrizione e ridurre al minimo la latenza.
- Sostituire
YourSpeechResoureKeycon la chiave della risorsa Speech. - Sostituire
YourServiceRegioncon la regione del servizio di riconoscimento vocale. - Sostituire
YourAudioFilecon il percorso del file audio.
Importante
Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, sostituire --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' con --header "Authorization: Bearer YourAccessToken". Per altre informazioni sull'autenticazione senza chiave, vedere la guida al controllo degli accessi in base al ruolo .
Usare il riconoscimento vocale LLM per trascrivere un audio
È possibile trascrivere l'audio nella lingua di input senza specificare un codice locale. Il modello rileva e seleziona automaticamente la lingua appropriata in base al contenuto audio.
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"
}
}'
Usare il riconoscimento vocale LLM per tradurre un file audio
Puoi tradurre l'audio in una lingua di destinazione specificata. Per abilitare la traduzione, è necessario specificare il codice della lingua di destinazione nella richiesta.
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"
}
}'
Usare l'ottimizzazione prompt per modificare le prestazioni
È possibile fornire un testo facoltativo per guidare lo stile di output per l'attività transcribe o 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."]
}
}'
Ecco alcune migliori pratiche per i prompt:
Le richieste hanno una lunghezza massima di 4.096 caratteri.
Le richieste devono essere preferibilmente scritte in inglese.
I prompt possono guidare la formattazione dell'output. Per impostazione predefinita, le risposte usano un formato di visualizzazione ottimizzato per la leggibilità. Per applicare la formattazione lessicale, includere:
Output must be in lexical format.Le richieste possono amplificare la salienza di frasi o acronimi specifici, migliorando la probabilità di riconoscimento. Usare:
Pay attention to *phrase1*, *phrase2*, …. Per ottenere risultati ottimali, limitare il numero di frasi per richiesta.Le richieste che non sono correlate alle attività vocali ( ad esempio ,
Tell me a story.) vengono in genere ignorate.
Altre opzioni di configurazione
È possibile combinare opzioni di configurazione aggiuntive con la trascrizione rapida per abilitare funzionalità avanzate, ad esempio 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"
}'
Alcune opzioni di configurazione, ad esempio locales e phraseLists, non sono obbligatorie o non applicabili con Riconoscimento vocale LLM. È possibile omettere queste opzioni dalla richiesta. Altre informazioni sulle opzioni di configurazione della trascrizione rapida.
Usare il modello di MAI-Transcribe (anteprima)
È anche possibile usare il modello MAI-Transcribe-1 fornito da Microsoft AI (MAI) con l'API Riconoscimento vocale LLM.
Per l'elenco corrente delle aree in cui è supportato questo modello, vedere Aree del servizio Voce.
I seguenti linguaggi sono attualmente supportati per il modello 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.
Per usare il modello MAI-Transcribe-1, impostare di conseguenza la proprietà model nella richiesta.
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"
}
}'
Quando si usa questo modello, tenere presenti le limitazioni seguenti:
Il file audio deve avere dimensioni inferiori a 70 MB.
La diarizzazione non è supportata.
Risposta di esempio
Nella risposta JSON la combinedPhrases proprietà contiene il testo completo trascritto o tradotto e la phrases proprietà contiene dettagli a livello di segmento e a livello di parola.
{
"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
}
]
}
Il formato della risposta è coerente con altri output di sintesi vocale esistenti, ad esempio trascrizione rapida e trascrizione batch. Tenere presente le differenze seguenti:
A livello di parola
durationMillisecondseoffsetMillisecondsnon sono supportati per l'attivitàtranslate.La diarizzazione non è supportata per il compito
translate. Viene restituita solo l'etichettaspeaker1.confidencenon è disponibile ed è sempre0.
Documentazione di riferimento | Pacchetto (PyPi) | Esempi GitHub
Prerequisiti
Sottoscrizione Azure. Crearne uno gratuitamente.
Python versione 3.9 o successiva. Se non hai una versione appropriata di Python installata, puoi seguire le istruzioni nel tutorial Visual Studio Code Python. Questa esercitazione illustra il modo più semplice per installare Python nel sistema operativo.
Una risorsa Microsoft Foundry creata in una delle aree supportate. Per altre informazioni sulla disponibilità dell'area, vedere Supporto per aree.
File audio di esempio
.wavda trascrivere.
Microsoft Entra ID prerequisiti
Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:
Installare il interfaccia della riga di comando di Azure usato per l'autenticazione senza chiave con Microsoft Entra ID.
Assegna il ruolo utente di Servizi Cognitivi al tuo account utente. È possibile assegnare ruoli nel portale di Azure in Access control (IAM)>Aggiungi assegnazione di ruolo.
Configurare l'ambiente
Creare una nuova cartella denominata
llm-speech-quickstarte quindi passare alla cartella con il comando seguente:mkdir llm-speech-quickstart && cd llm-speech-quickstartPer installare i pacchetti necessari per questo articolo, creare e attivare un ambiente di Python virtuale. È consigliabile usare sempre un ambiente virtuale o conda quando si installano pacchetti Python. In caso contrario, è possibile interrompere l'installazione globale di Python. Se è già installato Python versione 3.9 o successiva, creare un ambiente virtuale usando i comandi seguenti:
Quando si attiva l'ambiente di Python, l'esecuzione di
pythonopipdalla riga di comando usa l'interprete Python nella cartella.venvdell'applicazione. Usare il comandodeactivateper uscire dall'ambiente virtuale Python. È possibile riattivarlo in un secondo momento quando necessario.Creare un file denominato requirements.txt. Aggiungere i pacchetti seguenti al file:
azure-ai-transcription azure-identityInstallare i pacchetti:
pip install -r requirements.txt
Impostare le variabili di ambiente
È necessario recuperare l'endpoint della risorsa e la chiave API per l'autenticazione.
Accedere al portale di Foundry (versione classica).
Selezionare Centro di gestione dal menu a sinistra.
Selezionare Risorse connesse e trovare la risorsa Microsoft Foundry oppure aggiungere una connessione se non è presente. Copiare quindi i valori di Chiave API e Destinazione (endpoint). Usare questi valori per impostare le variabili di ambiente.
Impostare le variabili di ambiente seguenti:
Nota
Per l'autenticazione Microsoft Entra ID (consigliata per l'ambiente di produzione), installare azure-identity. Configurare l'autenticazione come descritto nella sezione Microsoft Entra ID prerequisiti.
Trascrivi audio con LLM Speech
LLM Speech usa la classe EnhancedModeProperties per abilitare la trascrizione migliorata grazie a un modello linguistico di grandi dimensioni. Il modello rileva automaticamente la lingua nell'audio.
Creare un file denominato
llm_speech_transcribe.pycon il codice seguente: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}")Per altre informazioni, vedere i riferimenti seguenti: TranscriptionClient, TranscriptionContent, TranscriptionOptions e EnhancedModeProperties.
Sostituire
<path-to-your-audio-file.wav>con il percorso del file audio. Il servizio supporta WAV, MP3, FLAC, OGG e altri formati audio comuni.Eseguire lo script di Python.
python llm_speech_transcribe.py
Output della trascrizione
Lo script stampa il risultato della trascrizione nella 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.
Tradurre l'audio con riconoscimento vocale LLM
È anche possibile usare il riconoscimento vocale LLM per tradurre l'audio in una lingua di destinazione. Impostare il task su translate e specificare il target_language.
Usare il codice precedente, ma specificare il
taskcometranslatee aggiungeretarget_languageinEnhancedModeProperties:# 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)Per altre informazioni, vedere i riferimenti seguenti: TranscriptionClient e EnhancedModeProperties.
Sostituire
<path-to-your-audio-file.wav>con il percorso del file audio.Eseguire lo script di Python.
python llm_speech_translate.py
Usare il prompt-tuning
È possibile fornire un prompt facoltativo per guidare lo stile di output per le attività di trascrizione o traduzione. Sostituire il valore prompt nell'oggetto 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.")
)
Procedure consigliate per i prompt
Le richieste hanno una lunghezza massima di 4.096 caratteri.
Le richieste devono essere preferibilmente scritte in inglese.
Usare
Output must be in lexical format.per applicare la formattazione lessicale anziché il formato di visualizzazione predefinito.Usare
Pay attention to *phrase1*, *phrase2*, …per migliorare il riconoscimento di frasi o acronimi specifici.
Per altre informazioni, vedere le informazioni di riferimento seguenti: EnhancedModeProperties.
Output
Lo script stampa il risultato della trascrizione nella 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.
documentazione di riferimento | Package (NuGet) | esempi GitHub
Prerequisiti
Sottoscrizione Azure. Crearne uno gratuitamente.
.NET 8.0 SDK o versione successiva.
Una risorsa Microsoft Foundry creata in una delle aree supportate. Per altre informazioni sulla disponibilità dell'area, vedere Supporto per aree.
File audio di esempio
.wavda trascrivere.
Microsoft Entra ID prerequisiti
Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:
Installare il interfaccia della riga di comando di Azure usato per l'autenticazione senza chiave con Microsoft Entra ID.
Accedere con il interfaccia della riga di comando di Azure eseguendo
az login.Assegna il ruolo utente di Servizi Cognitivi al tuo account utente. È possibile assegnare ruoli nel portale di Azure in Access control (IAM)>Aggiungi assegnazione di ruolo.
Configurare il progetto
Creare una nuova applicazione console con l'interfaccia della riga di comando di .NET:
dotnet new console -n llm-speech-quickstart cd llm-speech-quickstartInstallare i pacchetti necessari:
dotnet add package Azure.AI.Speech.Transcription --prerelease dotnet add package Azure.Identity
Recuperare le informazioni sulle risorse
È necessario recuperare l'endpoint della risorsa per l'autenticazione.
Accedere al portale Foundry.
Selezionare Centro di gestione dal menu a sinistra. In Risorse connesse selezionare la risorsa Voce o multiservizio.
Selezionare Chiavi ed Endpoint.
Copiare il valore endpoint e impostarlo come variabile di ambiente:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Trascrivere audio con riconoscimento vocale LLM
LLM Speech usa la classe EnhancedModeProperties per abilitare la trascrizione migliorata grazie a un modello linguistico di grandi dimensioni. Quando si crea un'istanza EnhancedModeProperties , si abilita automaticamente la modalità avanzata. Il modello rileva automaticamente la lingua nell'audio.
Sostituire il contenuto di Program.cs con il codice seguente:
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}");
}
}
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio. Il servizio supporta WAV, MP3, FLAC, OGG e altri formati audio comuni.
Eseguire l'applicazione:
dotnet run
Per altre informazioni, vedere i riferimenti seguenti: TranscriptionClient e EnhancedModeProperties.
Tradurre l'audio con riconoscimento vocale LLM
È anche possibile usare il riconoscimento vocale LLM per tradurre l'audio in una lingua di destinazione. Impostare il Task su translate e specificare il 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}");
}
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio.
Per altre informazioni, vedere il riferimento seguente: EnhancedModeProperties.
Usare il prompt-tuning
È possibile fornire un prompt facoltativo per guidare lo stile di output per le attività di trascrizione o traduzione:
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}");
}
Procedure consigliate per i prompt
Le richieste hanno una lunghezza massima di 4.096 caratteri.
Le richieste devono essere preferibilmente scritte in inglese.
Usare
Output must be in lexical format.per applicare la formattazione lessicale anziché il formato di visualizzazione predefinito.Usare
Pay attention to *phrase1*, *phrase2*, …per migliorare il riconoscimento di frasi o acronimi specifici.
Per altre informazioni, vedere il riferimento seguente: EnhancedModeProperties.
Pulire le risorse
Al termine dell'avvio rapido, eliminare la cartella del progetto:
Remove-Item -Recurse -Force llm-speech-quickstart
Documentazione di riferimento | Package (npm) | Esempi GitHub
Prerequisiti
Sottoscrizione Azure. Crearne uno gratuitamente.
Node.js LTS installato.
Una risorsa Microsoft Foundry creata in una regione che supporta funzionalità vocale LLM. Per altre informazioni sulla disponibilità dell'area, vedere Supporto per aree.
File audio di esempio
.wavda trascrivere.
Microsoft Entra ID prerequisiti
Per l'autenticazione senza chiave consigliata con Microsoft Entra ID, è necessario:
Installare il interfaccia della riga di comando di Azure usato per l'autenticazione senza chiave con Microsoft Entra ID.
Accedere con il interfaccia della riga di comando di Azure eseguendo
az login.Assegna il ruolo utente di Servizi Cognitivi al tuo account utente. È possibile assegnare ruoli nel portale di Azure in Access control (IAM)>Aggiungi assegnazione di ruolo.
Configurare il progetto
Creare una nuova cartella denominata
llm-speech-quickstarte quindi passare alla cartella :mkdir llm-speech-quickstart && cd llm-speech-quickstartInizializzare un progetto Node.js e installare i pacchetti necessari:
npm init -y npm install @azure/ai-speech-transcription @azure/identity
Recuperare le informazioni sulle risorse
È necessario recuperare l'endpoint della risorsa per l'autenticazione.
Accedere al portale Foundry.
Selezionare Centro di gestione dal menu a sinistra. In Risorse connesse selezionare la risorsa Voce o multiservizio.
Selezionare Chiavi ed Endpoint.
Copiare il valore endpoint e impostarlo come variabile di ambiente:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Trascrivi audio con LLM Speech
LLM Vocabolario utilizza l'opzione enhancedMode per abilitare la trascrizione migliorata da un grande modello linguistico. Il modello rileva automaticamente la lingua nell'audio.
Creare un file denominato index.js con il codice seguente:
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);
});
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio. Il servizio supporta WAV, MP3, FLAC, OGG e altri formati audio comuni.
Eseguire l'applicazione:
node index.js
Suggerimento
Se si ottiene il risultato Enhanced mode is currently not supported yet, verificare che l'endpoint si trovi in un'area che supporta riconoscimento vocale LLM.
Per altre informazioni, vedere il riferimento seguente: TranscriptionClient.
Output della trascrizione
L'applicazione stampa il risultato della trascrizione nella 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.
Tradurre l'audio con riconoscimento vocale LLM
È anche possibile usare il riconoscimento vocale LLM per tradurre l'audio in una lingua di destinazione. Impostare task su translate, quindi specificare 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);
});
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio.
Per altre informazioni, vedere il riferimento seguente: TranscriptionClient.
Usare il prompt-tuning
È possibile fornire un prompt facoltativo per guidare lo stile di output per le attività di trascrizione o traduzione:
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "transcribe",
prompt: ["Output must be in lexical format."],
},
});
console.log("Transcription:", result.combinedPhrases[0]?.text);
Procedure consigliate per i prompt
Le richieste hanno una lunghezza massima di 4.096 caratteri.
Le richieste devono essere preferibilmente scritte in inglese.
Usare
Output must be in lexical format.per applicare la formattazione lessicale anziché il formato di visualizzazione predefinito.Usare
Pay attention to *phrase1*, *phrase2*, …per migliorare il riconoscimento di frasi o acronimi specifici.
Output
L'applicazione stampa il risultato della trascrizione nella console:
Transcription: Hello this is a test of the LLM speech transcription service.
Per altre informazioni, vedere il riferimento seguente: TranscriptionClient.
Documentazione di riferimento | Package (Maven) | GitHub campioni
Prerequisiti
Sottoscrizione Azure. Crearne uno gratuitamente.
Apache Maven per la gestione delle dipendenze e la compilazione del progetto.
Una risorsa di sintesi vocale in una delle aree supportate. Per altre informazioni sulla disponibilità dell'area, vedere Aree supportate dal servizio Voce.
File audio di esempio
.wavda trascrivere.
Configurare l'ambiente
Creare una nuova cartella denominata
llm-speech-quickstarte quindi passare a questa cartella:mkdir llm-speech-quickstart && cd llm-speech-quickstartCreare un
pom.xmlfile nella radice della directory del progetto con il contenuto seguente:<?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
La configurazione
<sourceDirectory>.</sourceDirectory>indica a Maven di cercare i file di origine Java nella directory corrente anziché la struttura predefinitasrc/main/java. Questa modifica di configurazione consente una struttura di progetto più semplice e piatta.Installare le dipendenze:
mvn clean install
Impostare le variabili di ambiente
L'applicazione deve essere autenticata per accedere Azure Voce. L'SDK supporta sia la chiave API che l'autenticazione Microsoft Entra ID. Rileva automaticamente il metodo da usare in base alle variabili di ambiente impostate.
Prima di tutto, impostare l'endpoint per la risorsa Voce. Sostituire <your-speech-endpoint> con il nome effettivo della risorsa.
Scegliere quindi uno dei metodi di autenticazione seguenti.
Autenticazione con chiave API (consigliata per iniziare)
Impostare la variabile di ambiente della chiave API:
autenticazione Microsoft Entra ID (consigliata per l'ambiente di produzione)
Anziché impostare AZURE_SPEECH_API_KEY, configurare una delle origini credenziali seguenti:
interfaccia della riga di comando di Azure: eseguire
az loginnel computer di sviluppo.Managed Identity: Per applicazioni in esecuzione su Azure (Servizio app di Azure, Funzioni di Azure, Virtual Machines).
Variabili di ambiente: impostare
AZURE_TENANT_ID,AZURE_CLIENT_IDeAZURE_CLIENT_SECRET.Visual Studio Code o IntelliJ: accedere tramite l'IDE.
È anche necessario assegnare il ruolo Utente ai Servizi Cognitivi all'identità:
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
Dopo aver impostato le variabili di ambiente in Windows, riavviare tutti i programmi in esecuzione che devono leggerli, inclusa la finestra della console. In Linux o macOS eseguire source ~/.bashrc (o il file di configurazione della shell equivalente) per rendere effettive le modifiche.
Trascrivi audio con LLM Speech
LLM Speech usa la classe EnhancedModeOptions per abilitare la trascrizione migliorata grazie a un modello linguistico di grandi dimensioni. Quando si crea un'istanza EnhancedModeOptions , si abilita automaticamente la modalità avanzata. Il modello rileva automaticamente la lingua nell'audio.
Creare un file denominato LlmSpeechQuickstart.java nella directory del progetto con il codice seguente:
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();
}
}
}
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio. Il servizio supporta WAV, MP3, FLAC, OGG e altri formati audio comuni.
Eseguire l'applicazione
Eseguire l'applicazione usando Maven:
mvn compile exec:java
Tradurre l'audio utilizzando LLM per la voce
È anche possibile usare il riconoscimento vocale LLM per tradurre l'audio in una lingua di destinazione. Modificare la EnhancedModeOptions configurazione per impostare l'attività su translatee quindi specificare la lingua di destinazione.
Creare un file denominato LlmSpeechTranslate.java con il codice seguente:
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();
}
}
}
Sostituire <path-to-your-audio-file.wav> con il percorso del file audio.
Per eseguire l'esempio di traduzione, aggiornare la pom.xml configurazione della classe principale o eseguire:
mvn exec:java -Dexec.mainClass="LlmSpeechTranslate"
Usare il prompt-tuning
È possibile fornire un prompt facoltativo per guidare lo stile di output per le attività di trascrizione o traduzione.
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);
Procedure consigliate per i prompt
Le richieste hanno una lunghezza massima di 4.096 caratteri.
Le richieste devono essere preferibilmente scritte in inglese.
Usare
Output must be in lexical format.per applicare la formattazione lessicale anziché il formato di visualizzazione predefinito.Usare
Pay attention to *phrase1*, *phrase2*, …per migliorare il riconoscimento di frasi o acronimi specifici.
Pulire le risorse
Al termine dell'avvio rapido, eliminare la cartella del progetto:
rm -rf llm-speech-quickstart
Gestione degli errori di trascrizione
Quando chiami l'API di trascrizione rapida, implementa la logica di ripetizione dei tentativi per gestire gli errori temporanei e la limitazione della frequenza. L'API applica limiti di frequenza, che possono causare un errore durante le operazioni di concorrenza elevata.
Configurazione consigliata dei tentativi di ripetizione
Riprovare fino a cinque volte in caso di errori temporanei.
Usa il backoff esponenziale: 2 sec, 4 sec, 8 sec, 16 sec, 32 sec.
Tempo totale di backoff: 62 sec.
Questa configurazione offre tempo sufficiente per il ripristino dell'API durante le finestre di limitazione della frequenza, soprattutto quando si eseguono operazioni batch con più ruoli di lavoro simultanei.
Quando usare la logica di ripetizione dei tentativi
Implementare la logica di ripetizione dei tentativi per le categorie di errore seguenti:
Errori HTTP - Riprovare:
- HTTP 429 (limite di velocità)
- HTTP 500, 502, 503, 504 (errori del server)
-
status_code=None(scaricamenti di risposta incompleti)
Azure SDK errori di rete - Riprovare:
ServiceRequestErrorServiceResponseError
Questi errori incapsulano eccezioni di rete di basso livello, ad esempio
urllib3.exceptions.ReadTimeoutError, reimpostazioni della connessione e errori TLS.Python eccezioni di rete - Riprova su:
ConnectionErrorTimeoutErrorOSError
Non riprovare sugli errori seguenti, perché indicano problemi sul lato client che richiedono la correzione:
- HTTP 400 (richiesta non valida)
- HTTP 401 (non autorizzato)
- HTTP 422 (entità non elaborabile)
- Altri errori client (codici di stato 4xx)
Note sull'implementazione
Reimpostare il flusso di file audio (
seek(0)) prima di ogni tentativo.Quando si utilizzano lavoratori simultanei, il timeout di lettura HTTP predefinito (300 secondi) potrebbe essere superato sotto severe limitazioni del tasso.
L'API potrebbe accettare una richiesta ma scadere durante la generazione della risposta. Questa condizione può essere visualizzata come errore di rete avvolto dall'SDK anziché come un errore HTTP standard.