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.
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à della funzionalità
Questa tabella mostra le funzionalità di trascrizione supportate dall'API di trascrizione rapida, con e senza riconoscimento vocale LLM:
| Feature | Trascrizione rapida (impostazione predefinita) | Voce LLM (potenziata) | MAI-transcribe |
|---|---|---|---|
| Trascrizione | ✅ (modelli di linguaggio per trascrizione) | ✅ (modello multimodale) | ✅ (modello multimodale) |
| Traduzione | ❌ | ✅ (modello multimodale) | ❌ |
| Diarizzazione | ✅ | ✅ | ❌ |
| Canale (stereo) | ✅ | ✅ | ❌ |
| Filtro per le espressioni volgari | ✅ | ✅ | ✅ |
| Specificare le impostazioni locali | ✅ | ✅ | ✅ |
| Richiesta personalizzata | ❌ | ✅ | ❌ |
| Elenco di frasi | ✅ | ❌ 1 | ❌ |
| Marche temporali a livello di segmento | ✅ | ✅ | ✅ |
| Timestamp a livello di parola | ✅ | ✅ | ❌ |
1Per il parlato LLM, usa i prompt per guidare lo stile dell'output invece di un elenco esplicito di frasi.
Lingue disponibili
Le seguenti lingue di input sono supportate sia per le attività di trascrizione che di traduzione: Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Greek, Hebrew, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese, Russian, Spanish, Swedish, Thai, Turkish.
Il servizio funziona in modalità multilingue per impostazione predefinita, quindi non è necessario specificare le impostazioni locali della lingua di input. Facoltativamente, per guidare il riconoscimento verso impostazioni locali specifiche della lingua, è possibile impostare il locales parametro usando un codice delle impostazioni locali supportato (ad esempio, en-us). Per altre informazioni sulle impostazioni locali della lingua supportate, vedere lingue supportate.
È possibile provare LLM Speech in Microsoft Foundry senza scrivere codice.
Prerequisiti
Sottoscrizione Azure. Creane uno gratis.
Un progetto di Foundry. Se è necessario creare un progetto, vedere Creare un progetto Foundry 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.
Visualizza l'output della trascrizione nella scheda Trascrizione. Opzionalmente, visualizza 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, vedere Formati audio supportati.
Usare l'API Vocale LLM
Le sezioni successive forniscono informazioni dettagliate su come usare questa API.
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 Voce. - sostituire
YourResourceNamecon il nome della risorsa Speech. - 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 file 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://YourResourceName.cognitiveservices.azure.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://YourResourceName.cognitiveservices.azure.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"
}
}'
Le lingue di destinazione seguenti sono supportate in targetLanguage specificando il codice della lingua corrispondente:
| Codice lingua | Language |
|---|---|
de |
Tedesco |
en |
English |
es |
Spagnolo |
fr |
Francese |
it |
Italiano |
ko |
Coreano |
ja |
Giapponese |
pt |
Portoghese |
zh |
Cinese |
Usare l'ottimizzazione richieste per modificare le prestazioni
È possibile fornire un testo facoltativo per guidare lo stile di output per l'attività transcribe o translate .
curl --location 'https://YourResourceName.cognitiveservices.azure.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 suggerimenti:
Le richieste hanno una lunghezza massima di 20.000 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 a meno di 2.000 parole o frasi.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://YourResourceName.cognitiveservices.azure.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.
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:
durationMillisecondseoffsetMillisecondsa livello di parola non 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 su GitHub
Prerequisiti
Sottoscrizione Azure. Creane uno gratis.
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 di Utente dei 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 seguenti variabili di ambiente:
Annotazioni
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.
Trascrivere audio con LLM Speech
LLM Speech utilizza la classe EnhancedModeProperties per abilitare la trascrizione migliorata da un grande modello linguistico. 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 LLM per il linguaggio parlato
È 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 l'ottimizzazione dei prompt
È possibile fornire un prompt facoltativo per guidare lo stile di output per le attività di trascrizione o traduzione. Sostituisci 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 le richieste
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.
Risultato
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 di GitHub
Prerequisiti
Sottoscrizione Azure. Creane uno gratis.
.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 di Utente dei 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 dotnet add package Azure.Identity
Recuperare le informazioni sulle risorse
È necessario recuperare l'endpoint della risorsa per l'autenticazione.
Accedere al portale di 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 utilizza la classe EnhancedModeProperties per abilitare la trascrizione migliorata da un grande modello linguistico. 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
Console.WriteLine("\nDetailed phrases:");
foreach (var phrase in response.Value.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 LLM per il linguaggio parlato
È 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 l'ottimizzazione dei prompt
È 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 le richieste
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. Creane uno gratis.
Node.js LTS installato.
Risorsa di Microsoft Foundry creata in un'area che supporta il riconoscimento vocale tramite 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 di Utente dei 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.
Accedi 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 LLM Speech
LLM Speech 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 LLM per il linguaggio parlato
È 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 l'ottimizzazione dei prompt
È 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 le richieste
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.
Risultato
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 | |
Prerequisiti
Sottoscrizione Azure. Creane uno gratis.
Apache Maven per la gestione delle dipendenze e la compilazione del progetto.
Una risorsa 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</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>Annotazioni
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 di 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>
Annotazioni
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.
Trascrivere audio con LLM Speech
LLM Speech utilizza la classe EnhancedModeOptions per abilitare la trascrizione migliorata da un grande modello linguistico. 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 l'ottimizzazione dei prompt
È 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 le richieste
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 di ritentativo consigliata
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(download incompleti della risposta)
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.