Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota
Esta característica está actualmente en versión preliminar pública. Esta versión preliminar se proporciona sin un contrato de nivel de servicio y no se recomienda para cargas de trabajo de producción. Es posible que algunas características no se admitan o que tengan funcionalidades restringidas. Para obtener más información, vea Supplemental Terms of Use for Microsoft Azure Previews.
LLM Speech es una API en Microsoft Foundry. Un modelo de lenguaje grande (LLM) mejora un modelo de voz, ofrece una calidad mejorada, comprensión contextual profunda, compatibilidad multilingüe y funcionalidades de ajuste rápido. Usa la aceleración de GPU para la inferencia ultra rápida, lo que lo convierte en ideal para una amplia gama de escenarios. Por ejemplo, use LLM Speech para generar subtítulos y subtítulos a partir de archivos de audio, resumir notas de reunión, ayudar a los agentes del centro de llamadas y transcribir correos de voz.
Disponibilidad de funcionalidades
En esta tabla se muestran las características de transcripción que admite la API de transcripción rápida, con y sin voz LLM:
| Característica | Transcripción rápida (valor predeterminado) | Voz LLM mejorada | MAI-transcribe |
|---|---|---|---|
| Transcripción | ✅ (modelos de transcripción de voz) | ✅ (modelo multimodal) | ✅ (modelo multimodal) |
| Traducción | ❌ | ✅ (modelo multimodal) | ❌ |
| Diarización | ✅ | ✅ | ❌ |
| Canal (estéreo) | ✅ | ✅ | ✅ |
| Filtrado de lenguaje ofensivo | ✅ | ✅ | ✅ |
| Especificar localización | ✅ | ❌ 1 | ✅ |
| Invitación personalizada | ❌ | ✅ | ❌ |
| Lista de frases | ✅ | ❌ 1 | ❌ |
1Para LLM Speech, usa la solicitud para guiar el estilo de salida en lugar de usar listas de frases o configuraciones regionales explícitas.
Puede probar LLM Speech en Microsoft Foundry sin escribir ningún código.
Requisitos previos
Una suscripción Azure. Cree uno gratis.
Un proyecto de fundición. Si necesita crear un proyecto, consulte Crear un proyecto de Microsoft Foundry.
Prueba de LLM Speech
-
Inicie sesión en Microsoft Foundry. Asegúrese de que el interruptor New Foundry esté activado. Estos pasos se refieren a Foundry (new).
En el menú superior derecho, seleccione Compilar.
En el panel izquierdo, seleccione Modelos.
En la pestaña Servicios de IA se muestran los modelos foundry que puede usar en el portal de Foundry. Seleccione Azure Speech - Speech to text.
En la lista desplegable, seleccione VOZ LLM.
Opcionalmente, use la sección Parámetros para cambiar el idioma, la directiva de palabras soeces y otras configuraciones. También puede agregar instrucciones especiales para LLM.
Use la sección Cargar archivos para seleccionar el archivo de audio. A continuación, seleccione Iniciar.
Vea la salida de transcripción en la pestaña Transcripción . Opcionalmente, vea la salida de respuesta de API sin procesar en la pestaña JSON .
Cambie a la pestaña Código para obtener código de ejemplo para usar voz LLM en la aplicación.
Requisitos previos
Un recurso de Azure Speech en las herramientas de Foundry en una de las regiones donde la API de voz de LLM está disponible. Para obtener la lista actual de regiones admitidas, consulte Regiones de servicio de voz.
Un archivo de audio inferior a cinco horas y menos de 500 MB de tamaño. El archivo de audio debe estar en uno de los formatos y códecs admitidos por la API de transcripción por lotes: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW en el contenedor WAV, MULAW en el contenedor WAV, AMR, WebM o SPEEX. Para obtener más información sobre los formatos de audio admitidos, consulte formatos de audio admitidos.
Uso de LLM Speech API
En las siguientes secciones se proporcionan detalles sobre cómo usar esta API.
Idiomas admitidos
Actualmente se admiten los siguientes idiomas para las tareas transcribe y translate: English, Chinese, German, French, Italian, Japanese, Spanish, Portuguese, y Korean.
Carga de audio
Puede proporcionar datos de audio de las maneras siguientes:
Pase los datos de audio en línea.
--form 'audio=@"YourAudioFile"'Suba un archivo de audio desde una fuente pública
audioUrl.--form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
Propina
Para archivos de audio largos, se recomienda cargar desde una dirección URL pública.
En este artículo, usamos la carga de audio en línea como ejemplo.
Llamada a LLM Speech API
En su solicitud POST al endpoint transcriptions, utilice el tipo de contenido multipart/form-data con el archivo de audio y las propiedades del cuerpo de la solicitud.
En el ejemplo siguiente se muestra cómo transcribir un archivo de audio con una configuración regional especificada. Si conoce la configuración regional del archivo de audio, puede especificarla para mejorar la precisión de la transcripción y minimizar la latencia.
- Reemplace
YourSpeechResoureKeycon su clave de recurso de voz. - Reemplace
YourServiceRegionpor la región de su recurso de voz. - Reemplace por
YourAudioFilela ruta de acceso al archivo de audio.
Importante
Para la autenticación sin clave recomendada con Microsoft Entra ID, reemplace --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' por --header "Authorization: Bearer YourAccessToken". Para obtener más información sobre la autenticación sin claves, consulte la guía de control de acceso basado en rol .
Uso de LLM Speech para transcribir un audio
Puede transcribir audio en el idioma de entrada sin especificar un código de configuración regional. El modelo detecta y selecciona automáticamente el idioma adecuado en función del contenido de 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"
}
}'
Uso de LLM Speech para traducir un archivo de audio
Puede traducir audio en un idioma de destino especificado. Para habilitar la traducción, debe proporcionar el código de idioma de destino en la solicitud.
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"
}
}'
Utiliza ajuste por indicaciones para modificar el rendimiento
Puede proporcionar un texto opcional para guiar el estilo de salida de la transcribe tarea 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."]
}
}'
Estas son algunas mejores prácticas para las indicaciones:
Las indicaciones tienen una longitud máxima de 4096 caracteres.
Los avisos deben escribirse preferiblemente en inglés.
Las indicaciones pueden guiar el formato de salida. De forma predeterminada, las respuestas usan un formato de presentación optimizado para mejorar la legibilidad. Para aplicar el formato léxico, incluya:
Output must be in lexical format.Las indicaciones pueden amplificar la aparición de frases o acrónimos específicos, lo que mejora la probabilidad de reconocimiento. Usar:
Pay attention to *phrase1*, *phrase2*, …. Para obtener los mejores resultados, limite el número de frases por mensaje.Las indicaciones que no están relacionadas con las tareas de voz (por ejemplo,
Tell me a story.) suelen omitirse.
Más opciones de configuración
Puede combinar opciones de configuración adicionales con transcripción rápida para habilitar características mejoradas, como diarization, profanityFilterModey 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"
}'
Algunas opciones de configuración, como locales y phraseLists, no son necesarias o no son aplicables con voz LLM. Puede omitir estas opciones de la solicitud. Obtenga más información sobre las opciones de configuración de la transcripción rápida.
Uso del modelo de MAI-Transcribe (versión preliminar)
También puede usar el modelo MAI-Transcribe-1 proporcionado por Microsoft AI (MAI) con LLM Speech API.
Para obtener la lista actual de regiones en las que se admite este modelo, consulte Regiones de servicio de voz.
Actualmente se admiten los siguientes lenguajes para el modelo mai-transcribe-1: Arabic, Chinese, Czech, Danish, Dutch, English, Finnish, French, German, Hindi, Hungarian, Indonesian, Italian, Japanese, Korean, Norwegian Bokmål, Polish, Portuguese, Romanian, Russian, Spanish, Swedish, Thai, Turkish y Vietnamese.
Para usar el modelo MAI-Transcribe-1, establezca la model propiedad en consecuencia en la solicitud.
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"
}
}'
Al usar este modelo, tenga en cuenta las siguientes limitaciones:
El archivo de audio debe tener un tamaño inferior a 70 MB.
No se admite la diarización.
Respuesta de ejemplo
En la respuesta JSON, la combinedPhrases propiedad contiene el texto completo transcrito o traducido, y la phrases propiedad contiene detalles de nivel de segmento y de nivel de palabra.
{
"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
}
]
}
El formato de respuesta es coherente con otras salidas de voz a texto existentes, como la transcripción rápida y la transcripción por lotes. Tenga en cuenta las siguientes diferencias:
A nivel de palabra,
durationMillisecondsyoffsetMillisecondsno son compatibles con la tareatranslate.No se admite la diarización para la tarea
translate. Solo se devuelve laspeaker1etiqueta.confidenceno está disponible y siempre0es.
documentación de referencia | Paquete (PyPi) | Ejemplos de GitHub
Requisitos previos
Una suscripción Azure. Cree uno gratis.
Python 3.9 o posterior. Si no tiene instalada una versión adecuada de Python, puede seguir las instrucciones del tutorial Visual Studio Code Python. En este tutorial se muestra la manera más fácil de instalar Python en el sistema operativo.
Un recurso Microsoft Foundry creado en una de las regiones admitidas. Para obtener más información sobre la disponibilidad de regiones, consulte Compatibilidad con regiones.
Archivo de audio de ejemplo
.wavque se va a transcribir.
requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe:
Instale el CLI de Azure usado para la autenticación sin claves con Microsoft Entra ID.
Asigne el rol de usuario de Cognitive Services a su cuenta de usuario. Puede asignar roles en el portal de Azure en Access control (IAM)>Agregar asignación de roles.
Configuración del entorno
Cree una nueva carpeta denominada
llm-speech-quickstarty, a continuación, vaya a la carpeta con el siguiente comando:mkdir llm-speech-quickstart && cd llm-speech-quickstartPara instalar los paquetes que necesita para este artículo, cree y active un entorno de Python virtual. Se recomienda usar siempre un entorno virtual o conda al instalar paquetes Python. De lo contrario, puede interrumpir la instalación global de Python. Si ya tiene instalado Python 3.9 o posterior, cree un entorno virtual mediante los siguientes comandos:
Al activar el entorno de Python, la ejecución de
pythonopipdesde la línea de comandos usa el intérprete de Python en la carpeta.venvde la aplicación. Use el comandodeactivatepara salir del entorno virtual de Python. Puede reactivarlo más adelante cuando sea necesario.Cree un archivo denominado requirements.txt. Agregue los siguientes paquetes al archivo:
azure-ai-transcription azure-identityInstale los paquetes:
pip install -r requirements.txt
Establecimiento de variables de entorno
Debe recuperar el punto de conexión del recurso y la clave de API para la autenticación.
Inicie sesión en el portal de Foundry (clásico).
Seleccione Centro de administración en el menú de la izquierda.
Seleccione Recursos conectados y busque el recurso Microsoft Foundry (o agregue una conexión si no está allí). A continuación, copie los valores clave de API y destino (punto de conexión). Use estos valores para establecer variables de entorno.
Establezca las siguientes variables de entorno:
Nota
Para la autenticación de Microsoft Entra ID (recomendada para producción), instale azure-identity. Configura la autenticación tal como se describe en la sección requisitos previos de Microsoft Entra ID.
Transcribir audio con LLM Speech
LLM Speech utiliza la clase EnhancedModeProperties para habilitar una transcripción que está mejorada por un modelo de lenguaje extenso. El modelo detecta automáticamente el idioma en el audio.
Cree un archivo denominado
llm_speech_transcribe.pycon el código siguiente:import os from dotenv import load_dotenv from azure.core.credentials import AzureKeyCredential from azure.ai.transcription import TranscriptionClient load_dotenv() from azure.ai.transcription.models import ( TranscriptionContent, TranscriptionOptions, EnhancedModeProperties, ) # Get configuration from environment variables endpoint = os.environ["AZURE_SPEECH_ENDPOINT"] # Optional: we recommend using role based access control (RBAC) for production scenarios api_key = os.environ["AZURE_SPEECH_API_KEY"] if api_key: credential = AzureKeyCredential(api_key) else: from azure.identity import DefaultAzureCredential credential = DefaultAzureCredential() # Create the transcription client client = TranscriptionClient(endpoint=endpoint, credential=credential) # Path to your audio file (replace with your own file path) audio_file_path = "<path-to-your-audio-file.wav>" # Open and read the audio file with open(audio_file_path, "rb") as audio_file: # Create enhanced mode properties for LLM Speech transcription enhanced_mode = EnhancedModeProperties( task="transcribe", prompt=[], ) # Create transcription options with enhanced mode options = TranscriptionOptions(enhanced_mode=enhanced_mode) # Create the request content request_content = TranscriptionContent(definition=options, audio=audio_file) # Transcribe the audio result = client.transcribe(request_content) # Print the transcription result print(f"Transcription: {result.combined_phrases[0].text}") # Print detailed phrase information if result.phrases: print("\nDetailed phrases:") for phrase in result.phrases: print(f" [{phrase.offset_milliseconds}ms]: {phrase.text}")Para obtener más información, consulte las siguientes referencias: TranscriptionClient, TranscriptionContent, TranscriptionOptions y EnhancedModeProperties.
Reemplace por
<path-to-your-audio-file.wav>la ruta de acceso al archivo de audio. El servicio es compatible con WAV, MP3, FLAC, OGG y otros formatos de audio comunes.Ejecute el script de Python.
python llm_speech_transcribe.py
Salida de transcripción
El script imprime el resultado de la transcripción en la consola:
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.
Traducción de audio con voz LLM
También puede usar LLM Speech para traducir audio en un idioma de destino. Establezca el task en translate y especifique el target_language.
Utilice el código anterior, pero especifique el
taskcomotranslatey agregue eltarget_languageen elEnhancedModeProperties.# Open and read the audio file with open(audio_file_path, "rb") as audio_file: # Create enhanced mode properties for LLM Speech translation # Translate to another language enhanced_mode = EnhancedModeProperties( task="translate", target_language="de", prompt=[ "Translate the following audio to German.", "Convert number words to numbers." ], # Optional prompts to guide the enhanced mode ) # Create transcription options with enhanced mode options = TranscriptionOptions(locales=["en-US"], enhanced_mode=enhanced_mode)Para obtener más información, consulte las referencias siguientes: TranscriptionClient y EnhancedModeProperties.
Reemplace por
<path-to-your-audio-file.wav>la ruta de acceso al archivo de audio.Ejecute el script de Python.
python llm_speech_translate.py
Uso del ajuste de 'prompt'
Puede proporcionar un aviso opcional para guiar el estilo de salida para las tareas de transcripción o traducción. Reemplace el valor de prompt en el objeto EnhancedModeProperties.
# Open and read the audio file
with open(audio_file_path, "rb") as audio_file:
# Create enhanced mode properties for LLM Speech transcription
enhanced_mode = EnhancedModeProperties(
task="transcribe",
prompt=[
"Create lexical output only,",
"Convert number words to numbers."
], # Optional prompts to guide the enhanced mode, prompt="Create lexical transcription.")
)
Mejores prácticas para indicaciones
Las indicaciones tienen una longitud máxima de 4096 caracteres.
Los avisos deben escribirse preferiblemente en inglés.
Use
Output must be in lexical format.para aplicar formato léxico en lugar del formato de presentación predeterminado.Se usa
Pay attention to *phrase1*, *phrase2*, …para mejorar el reconocimiento de frases o acrónimos específicos.
Para obtener más información, consulte la siguiente referencia: EnhancedModeProperties.
Salida
El script imprime el resultado de la transcripción en la consola:
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.
Reference documentation | Package (NuGet) | GitHub samples
Requisitos previos
Una suscripción Azure. Cree uno gratis.
.NET SDK 8.0 o posterior.
Un recurso Microsoft Foundry creado en una de las regiones admitidas. Para obtener más información sobre la disponibilidad de regiones, consulte Compatibilidad con regiones.
Archivo de audio de ejemplo
.wavque se va a transcribir.
requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe:
Instale el CLI de Azure usado para la autenticación sin claves con Microsoft Entra ID.
Inicie sesión con el CLI de Azure ejecutando
az login.Asigne el rol de usuario de Cognitive Services a su cuenta de usuario. Puede asignar roles en el portal de Azure en Access control (IAM)>Agregar asignación de roles.
Configuración del proyecto
Cree una aplicación de consola con la CLI de .NET:
dotnet new console -n llm-speech-quickstart cd llm-speech-quickstartInstale los paquetes necesarios:
dotnet add package Azure.AI.Speech.Transcription --prerelease dotnet add package Azure.Identity
Recuperación de información de recursos
Necesita recuperar el punto de conexión de su recurso para la autenticación.
Inicie sesión en el portal de Foundry.
Seleccione Centro de administración en el menú de la izquierda. En Recursos conectados, seleccione el recurso voz o multiservicio.
Seleccione Claves y punto de conexión.
Copie el valor del punto de conexión y establézcalo como una variable de entorno:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Transcribir audio con voz LLM
LLM Speech utiliza la clase EnhancedModeProperties para habilitar transcripciones mejoradas por un modelo de lenguaje extenso. Al crear una EnhancedModeProperties instancia, se habilita automáticamente el modo mejorado. El modelo detecta automáticamente el idioma en el audio.
Reemplace el contenido de Program.cs por el código siguiente:
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}");
}
}
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio. El servicio es compatible con WAV, MP3, FLAC, OGG y otros formatos de audio comunes.
Ejecute la aplicación:
dotnet run
Para obtener más información, vea las referencias siguientes: TranscriptionClient y EnhancedModeProperties.
Traducción de audio con voz LLM
También puede usar LLM Speech para traducir audio en un idioma de destino. Establezca el Task en translate, y especifique el 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}");
}
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio.
Para obtener más información, vea la referencia siguiente: EnhancedModeProperties.
Uso del ajuste de 'prompt'
Puede proporcionar una solicitud opcional para guiar el estilo de salida para las tareas de transcripción o traducción:
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}");
}
Mejores prácticas para indicaciones
Las indicaciones tienen una longitud máxima de 4096 caracteres.
Los avisos deben escribirse preferiblemente en inglés.
Use
Output must be in lexical format.para aplicar formato léxico en lugar del formato de presentación predeterminado.Se usa
Pay attention to *phrase1*, *phrase2*, …para mejorar el reconocimiento de frases o acrónimos específicos.
Para obtener más información, vea la referencia siguiente: EnhancedModeProperties.
Limpieza de recursos
Cuando termine el inicio rápido, elimine la carpeta del proyecto:
Remove-Item -Recurse -Force llm-speech-quickstart
Reference documentation | Package (npm) | GitHub samples
Requisitos previos
Una suscripción Azure. Cree uno gratis.
Node.js LTS instalado.
Un recurso Microsoft Foundry creado en una región que admita LLM Speech. Para obtener más información sobre la disponibilidad de regiones, consulte Compatibilidad con regiones.
Archivo de audio de ejemplo
.wavque se va a transcribir.
requisitos previos de Microsoft Entra ID
Para la autenticación sin clave recomendada con Microsoft Entra ID, debe:
Instale el CLI de Azure usado para la autenticación sin claves con Microsoft Entra ID.
Inicie sesión con el CLI de Azure ejecutando
az login.Asigne el rol de usuario de Cognitive Services a su cuenta de usuario. Puede asignar roles en el portal de Azure en Access control (IAM)>Agregar asignación de roles.
Configuración del proyecto
Cree una carpeta denominada
llm-speech-quickstarty, a continuación, vaya a la carpeta :mkdir llm-speech-quickstart && cd llm-speech-quickstartInicialice un proyecto de Node.js e instale los paquetes necesarios:
npm init -y npm install @azure/ai-speech-transcription @azure/identity
Recuperación de información de recursos
Necesita recuperar el punto de conexión de su recurso para la autenticación.
Inicie sesión en el portal de Foundry.
Seleccione Centro de administración en el menú de la izquierda. En Recursos conectados, seleccione el recurso voz o multiservicio.
Seleccione Claves y punto de conexión.
Copie el valor del punto de conexión y establézcalo como una variable de entorno:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Transcribir audio con LLM Speech
LLM Speech utiliza la opción enhancedMode para habilitar una transcripción mejorada por un modelo de lenguaje grande. El modelo detecta automáticamente el idioma en el audio.
Cree un archivo denominado index.js con el código siguiente:
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);
});
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio. El servicio es compatible con WAV, MP3, FLAC, OGG y otros formatos de audio comunes.
Ejecute la aplicación:
node index.js
Propina
Si obtiene el resultado Enhanced mode is currently not supported yet, compruebe que el punto de conexión esté en una región que admita voz LLM.
Para obtener más información, vea la referencia siguiente: TranscriptionClient.
Salida de transcripción
La aplicación imprime el resultado de la transcripción en la consola:
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.
Traducción de audio con voz LLM
También puede usar LLM Speech para traducir audio a un idioma de destino. Establezca task en translatey, a continuación, especifique :targetLanguage
const {
TranscriptionClient,
} = require("@azure/ai-speech-transcription");
const { DefaultAzureCredential } = require("@azure/identity");
const fs = require("fs");
async function main() {
const endpoint = process.env.AZURE_SPEECH_ENDPOINT;
if (!endpoint) {
throw new Error(
"Set the AZURE_SPEECH_ENDPOINT environment variable."
);
}
const credential = new DefaultAzureCredential();
const client = new TranscriptionClient(endpoint, credential);
const audioFilePath = "<path-to-your-audio-file.wav>";
const audioFile = fs.readFileSync(audioFilePath);
// Translate audio using enhanced mode
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "translate",
targetLanguage: "de", // Translate to German
},
});
console.log("Translation:", result.combinedPhrases[0]?.text);
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
process.exit(1);
});
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio.
Para obtener más información, vea la referencia siguiente: TranscriptionClient.
Uso del ajuste de 'prompt'
Puede proporcionar una solicitud opcional para guiar el estilo de salida para las tareas de transcripción o traducción:
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "transcribe",
prompt: ["Output must be in lexical format."],
},
});
console.log("Transcription:", result.combinedPhrases[0]?.text);
Mejores prácticas para indicaciones
Las indicaciones tienen una longitud máxima de 4096 caracteres.
Los avisos deben escribirse preferiblemente en inglés.
Use
Output must be in lexical format.para aplicar formato léxico en lugar del formato de presentación predeterminado.Se usa
Pay attention to *phrase1*, *phrase2*, …para mejorar el reconocimiento de frases o acrónimos específicos.
Salida
La aplicación imprime el resultado de la transcripción en la consola:
Transcription: Hello this is a test of the LLM speech transcription service.
Para obtener más información, vea la referencia siguiente: TranscriptionClient.
Documentación de referencia | Package (Maven) | ejemplos de GitHub
Requisitos previos
Una suscripción Azure. Cree uno gratis.
Apache Maven para la administración de dependencias y la compilación del proyecto.
Un recurso de Voz en una de las regiones admitidas. Para más información sobre la disponibilidad de regiones, consulte Regiones compatibles con el servicio voz.
Archivo de audio de ejemplo
.wavque se va a transcribir.
Configuración del entorno
Cree una carpeta denominada
llm-speech-quickstarty, a continuación, vaya a ella:mkdir llm-speech-quickstart && cd llm-speech-quickstartCree un
pom.xmlarchivo en la raíz del directorio del proyecto con el siguiente contenido:<?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 configuración de
<sourceDirectory>.</sourceDirectory>indica a Maven que busque archivos fuente Java en el directorio actual en vez de la estructura predeterminadasrc/main/java. Este cambio de configuración permite una estructura de proyecto más sencilla y plana.Instale las dependencias:
mvn clean install
Establecimiento de variables de entorno
La aplicación debe autenticarse para acceder a Azure Voz. El SDK admite tanto la clave de API como la autenticación Microsoft Entra ID. Detecta automáticamente qué método usar en función de las variables de entorno establecidas.
En primer lugar, configure el punto de conexión para el recurso de voz. Reemplace por <your-speech-endpoint> el nombre real del recurso.
A continuación, elija uno de los métodos de autenticación siguientes.
Autenticación de clave de API (recomendado para empezar)
Establezca la variable de entorno para la clave API:
Autenticación de Microsoft Entra ID (recomendada para entornos de producción)
En lugar de establecer AZURE_SPEECH_API_KEY, configure uno de los siguientes orígenes de credenciales:
CLI de Azure: ejecute
az loginen la máquina de desarrollo.Administrar identidad: para las aplicaciones que se ejecutan en Azure (Azure App Service, Azure Functions, máquinas virtuales).
Variables de entorno: establezca
AZURE_TENANT_ID,AZURE_CLIENT_IDyAZURE_CLIENT_SECRET.Visual Studio Code o IntelliJ: inicie sesión a través del IDE.
También debe asignar el rol de usuario de Cognitive Services a su identidad:
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
Después de establecer variables de entorno en Windows, reinicie los programas en ejecución que necesiten leerlas, incluida la ventana de la consola. En Linux o macOS, ejecute source ~/.bashrc (o su archivo de configuración de shell equivalente) para hacer efectivos los cambios.
Transcribir audio con LLM Speech
LLM Speech usa la clase EnhancedModeOptions para habilitar la transcripción mejorada por un modelo de lenguaje extenso. Al crear una EnhancedModeOptions instancia, se habilita automáticamente el modo mejorado. El modelo detecta automáticamente el idioma en el audio.
Cree un archivo denominado LlmSpeechQuickstart.java en el directorio del proyecto con el código siguiente:
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();
}
}
}
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio. El servicio es compatible con WAV, MP3, FLAC, OGG y otros formatos de audio comunes.
Ejecución de la aplicación
Ejecute la aplicación mediante Maven:
mvn compile exec:java
Traducción de audio mediante LLM Speech
También puede usar LLM Speech para traducir audio en un idioma de destino. Modifique la configuración de EnhancedModeOptions para establecer la tarea en translate, y luego especifique el idioma de destino.
Cree un archivo denominado LlmSpeechTranslate.java con el código siguiente:
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();
}
}
}
Reemplace por <path-to-your-audio-file.wav> la ruta de acceso al archivo de audio.
Para ejecutar el ejemplo de traducción, actualice la configuración de la pom.xml clase principal o ejecute:
mvn exec:java -Dexec.mainClass="LlmSpeechTranslate"
Uso del ajuste de 'prompt'
Puede proporcionar un aviso opcional para guiar el estilo de salida para las tareas de transcripción o traducción.
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);
Mejores prácticas para indicaciones
Las indicaciones tienen una longitud máxima de 4096 caracteres.
Los avisos deben escribirse preferiblemente en inglés.
Use
Output must be in lexical format.para aplicar formato léxico en lugar del formato de presentación predeterminado.Se usa
Pay attention to *phrase1*, *phrase2*, …para mejorar el reconocimiento de frases o acrónimos específicos.
Limpieza de recursos
Cuando termine el inicio rápido, elimine la carpeta del proyecto:
rm -rf llm-speech-quickstart
Control de errores de transcripción
Al llamar a la API de transcripción rápida, implemente la lógica de reintento para controlar errores transitorios y limitación de velocidad. La API aplica límites de velocidad, lo que puede producir un error durante las operaciones de alta simultaneidad.
Configuración de reintento recomendada
Reintente hasta cinco veces en caso de errores transitorios.
Use retroceso exponencial: 2 segundos, 4 segundos, 8 s, 16 s, 32 s.
Tiempo total de retroceso: 62 s.
Esta configuración proporciona tiempo suficiente para que la API se recupere durante las ventanas de limitación de velocidad, especialmente cuando se ejecutan operaciones por lotes con varios trabajos simultáneos.
Cuándo usar la lógica de reintento
Implemente la lógica de reintento para las siguientes categorías de error:
Errores HTTP : reintento en:
- HTTP 429 (límite de velocidad)
- HTTP 500, 502, 503, 504 (errores de servidor)
-
status_code=None(descargas de respuesta incompletas)
SDK de Azure errores de red - Volver a intentar en:
ServiceRequestErrorServiceResponseError
Estos errores encapsulan excepciones de red de bajo nivel, como
urllib3.exceptions.ReadTimeoutError, restablecimientos de conexión y errores de TLS.Excepciones de red en Python - Reintentar en:
ConnectionErrorTimeoutErrorOSError
No vuelva a intentar los errores siguientes, ya que indican problemas del lado cliente que requieren corrección:
- HTTP 400 (solicitud incorrecta)
- HTTP 401 (no autorizado)
- HTTP 422 (entidad no procesada)
- Otros errores de cliente (códigos de estado 4xx)
Notas de implementación
Restablezca la secuencia de archivos de audio (
seek(0)) antes de cada reintento.Cuando se usan trabajos simultáneos, el tiempo de espera de lectura HTTP predeterminado (300 segundos) puede superarse con una limitación de velocidad intensiva.
La API puede aceptar una solicitud pero agotar el tiempo de espera al generar la respuesta. Esta condición puede aparecer como un error de red ajustado por el SDK en lugar de un error HTTP estándar.