Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
LlM Speech — это API в Microsoft Foundry. Большая языковая модель (LLM) улучшает модель речи, обеспечивая улучшенное качество, глубокое контекстное понимание, многоязычную поддержку и возможности настройки запросов. Он использует ускорение GPU для ультра-быстрого вывода, что делает его идеальным для широкого спектра сценариев. Например, используйте llM Speech для создания подписей и субтитров из аудиофайлов, суммирования заметок собрания, помощи агентам центра вызовов и транскрибирования голосовых сообщений.
Доступность компонентов
В этой таблице показаны функции транскрибирования, поддерживаемые API быстрой транскрибирования, с речью LLM и без нее:
| Функция | Быстрое транскрибирование (по умолчанию) | Речь LLM (расширенная) | MAI-transcribe |
|---|---|---|---|
| Транскрипция | ✅ (модели транскрибирования речи) | ✅ (многомодальная модель) | ✅ (многомодальная модель) |
| Перевод | ❌ | ✅ (многомодальная модель) | ❌ |
| Диаризация | ✅ | ✅ | ❌ |
| Канал (стерео) | ✅ | ✅ | ❌ |
| Фильтрация ненормативной лексики | ✅ | ✅ | ✅ |
| Указать региональные настройки | ✅ | ✅ | ✅ |
| Пользовательский запрос | ❌ | ✅ | ❌ |
| Список фраз | ✅ | ✅ | ✅ |
| Временные метки на уровне сегментов | ✅ | ✅ | ✅ |
| Метки времени на уровне Word | ✅ | ✅ | ✅ |
Поддерживаемые языки
Для задач транскрибирования и перевода поддерживаются следующие языки ввода: Arabic, ChineseCzechDanishDutchEnglishFinnishFrenchGermanGreekHebrewHindiHungarianIndonesianItalianJapaneseKoreanNorwegian BokmålPolishPortugueseRussianSpanishSwedishThaiTurkish
Сервис по умолчанию работает в многоязычном режиме, поэтому вам не нужно указывать локаль языка ввода. При необходимости, чтобы ориентировать распознавание на определенный языковой стандарт, можно задать параметр locales с помощью поддерживаемого кода языкового стандарта (например, en-us). Дополнительные сведения о поддерживаемых языковых параметрах см. в разделе Поддерживаемые языки.
Вы можете попробовать распознавание речи LLM в Microsoft Foundry без написания кода.
Необходимые условия
Подписка Azure. Создайте его бесплатно.
Проект Foundry. Если вам нужно создать проект, см. раздел Создание проекта Microsoft Foundry.
Попробуйте распознавание речи LLM
Перейдите на страницу функции "Речь в текст " и нажмите кнопку "Открыть на детской площадке".
В верхнем раскрывающемся списке выберите LLM-говорение.
При необходимости используйте раздел "Параметры " для изменения языка, политики ненормативной лексики и других параметров. Вы также можете добавить специальные инструкции для LLM.
Используйте раздел "Отправить файлы ", чтобы выбрать звуковой файл. Затем нажмите кнопку "Пуск".
Просмотрите выходные данные транскрибирования на вкладке "Расшифровка ". При необходимости просмотрите выходные данные необработанного ответа API на вкладке JSON .
Перейдите на вкладку "Код" , чтобы получить пример кода для использования речи LLM в приложении.
Необходимые условия
Ресурс Azure speech in Foundry Tools в одном из регионов, где доступен API распознавания речи LLM. Для актуального списка поддерживаемых регионов см. в разделе "Регионы службы речевых технологий".
Размер звукового файла меньше пяти часов и меньше 500 МБ. Звуковой файл должен находиться в одном из форматов и кодеков, поддерживаемых API пакетной транскрибирования: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW в контейнере WAV, MULAW в контейнере WAV, AMR, WebM или SPEEX. Дополнительные сведения о поддерживаемых аудиоформатах см. в поддерживаемых аудиоформатах.
Использование API распознавания речи LLM
В следующих нескольких разделах содержатся сведения об использовании этого API.
Отправка звука
Звуковые данные можно предоставлять следующим образом:
Передайте встроенные звуковые данные.
--form 'audio=@"YourAudioFile"'Загрузите аудиофайл из общедоступного
audioUrl.--form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
Совет
Для длинных звуковых файлов рекомендуется отправлять из общедоступного URL-адреса.
В этой статье мы используем загрузку аудио непосредственно в интерфейсе в качестве примера.
Вызов API распознавания речи LLM
В запросе POST к конечной точке transcriptions используйте тип содержимого с несколькими частями и формами данных с звуковым файлом и свойствами текста запроса.
В следующем примере показано, как транскрибировать аудиофайл с указанной локалью. Если вы знаете локаль аудиофайла, вы можете указать её, чтобы повысить точность транскрипции и свести к минимуму задержку.
- Замените
YourSpeechResoureKeyключом ресурса "Речь". - замените
YourResourceNameна имя ресурса службы "Речь". - Замените
YourAudioFileпуть к звуковому файлу.
Важно
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID замените --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' на --header "Authorization: Bearer YourAccessToken". Дополнительные сведения о проверке подлинности без ключа см. в руководстве по управлению доступом на основе ролей .
Использование функции распознавания речи LLM для транскрибирования звукового файла
Вы можете транскрибировать звук на языке ввода, не указывая языковой код. Модель автоматически обнаруживает и выбирает соответствующий язык на основе звукового содержимого.
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"
}
}'
Используйте LLM Speech для перевода аудиофайла
Вы можете перевести звук на указанный целевой язык. Чтобы включить перевод, необходимо указать целевой языковой код в запросе.
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"
}
}'
Поддержка следующих целевых языков осуществляется в targetLanguage через указание соответствующего языкового кода:
| Языковой код | Язык |
|---|---|
de |
Немецкий |
en |
Английский |
es |
Испанский |
fr |
Французский |
it |
Итальянский |
ko |
Корейский |
ja |
Японский |
pt |
Португальский |
zh |
Китайский |
Использование подстройки подсказок для изменения производительности
Вы можете указать необязательный текст для указания стиля вывода для transcribe задачи или 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."]
}
}'
Вот некоторые лучшие практики для работы с подсказками:
Запросы имеют максимальную длину 20 000 символов.
Запросы должны быть написаны на английском языке.
Запросы могут направлять форматирование выходных данных. По умолчанию ответы используют формат отображения, оптимизированный для удобства чтения. Чтобы применить лексическое форматирование, включите:
Output must be in lexical format.Запросы, которые не связаны с задачами речи (например,
Tell me a story.обычно игнорируются).
Дополнительные параметры конфигурации
Вы можете использовать дополнительные параметры конфигурации вместе с быстрой транскрибацией, чтобы использовать расширенные функции, такие как diarization, phraseList, locales, profanityFilterMode и 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
},
"phraseList":{
"phrases":["Kenichi Kumatani","John McDonough"]
},
"locales":[],
"profanityFilterMode": "Masked"
}'
Пример ответа
В ответе JSON свойство combinedPhrases содержит полностью транскрибированный или переведенный текст, а свойство phrases содержит информацию о сегментном и словном уровне.
{
"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
}
]
}
Формат отклика согласуется с другими существующими выходными данными речи в текст, такими как быстрое транскрибирование и пакетное транскрибирование. Помните о следующих различиях:
Word уровня
durationMillisecondsиoffsetMillisecondsне поддерживаются для задачиtranslate.Диаризация для задачи
translateне поддерживается. Только меткаspeaker1возвращается.confidenceнедоступен и всегда0.
Справочная документация | Пакет (PyPi) | Примеры на GitHub
Необходимые условия
Подписка Azure. Создайте его бесплатно.
Python версии 3.9 или более поздней. Если у вас нет подходящей версии Python, следуйте инструкциям в руководстве Visual Studio Code Python. В этом руководстве описан самый простой способ установки Python в операционной системе.
Ресурс Microsoft Foundry создан в одном из поддерживаемых регионов. Дополнительные сведения о доступности регионов см. в разделе "Поддержка регионов".
Пример
.wavзвукового файла для транскрибации.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
Установите Azure CLI, используемый для бесключевой аутентификации с Microsoft Entra ID.
Назначьте роль пользователя службы Cognitive Services вашей учетной записи. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка среды
Создайте новую папку с именем
llm-speech-quickstartи перейдите в папку с помощью следующей команды:mkdir llm-speech-quickstart && cd llm-speech-quickstartЧтобы установить пакеты, необходимые для этой статьи, создайте и активируйте виртуальную среду Python. Мы рекомендуем всегда использовать виртуальную или конда-среду при установке пакетов Python. В противном случае можно разорвать глобальную установку Python. Если вы уже установили Python 3.9 или более поздней версии, создайте виртуальную среду с помощью следующих команд:
При активации среды Python выполнение
pythonилиpipиз командной строки использует интерпретатор Python в папке.venvприложения. Используйте командуdeactivateдля выхода из виртуальной среды Python. При необходимости его можно повторно активировать.Создайте файл с именемrequirements.txt. Добавьте в файл следующие пакеты:
azure-ai-transcription azure-identityУстановите пакеты:
pip install -r requirements.txt
Установка переменных среды
Для проверки подлинности необходимо получить конечную точку ресурса и ключ API.
Войдите на портал Foundry (классический).
Выберите центр управления в меню слева.
Выберите Соединяемые ресурсы и найдите ресурс Microsoft Foundry (или добавьте подключение, если он отсутствует). Затем скопируйте значения ключа API и целевой (конечной точки). Используйте эти значения для задания переменных среды.
Задайте следующие переменные среды:
Примечание
Для проверки подлинности Microsoft Entra ID (рекомендуется для использования в рабочей среде), установите azure-identity. Настройте аутентификацию, как описано в разделе предварительных требований Microsoft Entra ID.
Транскрибируйте аудио с помощью LLM Speech
Функция "LLM Речь" использует EnhancedModeProperties класс для осуществления транскрибирования, которое улучшено с использованием одной большой языковой модели. Модель автоматически обнаруживает язык в звуке.
Создайте файл с именем
llm_speech_transcribe.pyсо следующим кодом: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}")Дополнительные сведения см. в следующих ссылках: TranscriptionClient, TranscriptionContent, TranscriptionOptions и EnhancedModeProperties.
Замените
<path-to-your-audio-file.wav>путь к звуковому файлу. Служба поддерживает WAV, MP3, FLAC, OGG и другие распространенные звуковые форматы.Запустите скрипт Python.
python llm_speech_transcribe.py
Выходные данные транскрибирования
Скрипт выводит результат транскрибирования в консоль:
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.
Перевод аудио с помощью LLM Speech
Вы также можете использовать распознавание речи LLM для перевода звука на целевой язык. Установите task на translate, и укажите target_language.
Используйте приведенный выше код, но укажите
taskкакtranslateи добавьте егоtarget_languageвEnhancedModeProperties:# 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)Дополнительные сведения см. в следующих ссылках: TranscriptionClient и EnhancedModeProperties.
Замените
<path-to-your-audio-file.wav>путь к звуковому файлу.Запустите скрипт Python.
python llm_speech_translate.py
Используйте prompt-тюнинг
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода. Замените значение prompt в объекте 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.")
)
Рекомендации по лучшим практикам для подсказок
Запросы имеют максимальную длину 4096 символов.
Запросы должны быть написаны на английском языке.
Используется
Output must be in lexical format.для применения лексического форматирования вместо формата отображения по умолчанию.Используйте
Pay attention to *phrase1*, *phrase2*, …для улучшения распознавания определенных фраз или акронимов.
Дополнительные сведения см. в следующей ссылке: EnhancedModeProperties.
Выход
Скрипт выводит результат транскрибирования в консоль:
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.
Справочная документация | Пакет (NuGet) | Примеры GitHub
Необходимые условия
Подписка Azure. Создайте его бесплатно.
SDK-пакет .NET 8.0 или более поздней версии.
Ресурс Microsoft Foundry создан в одном из поддерживаемых регионов. Дополнительные сведения о доступности регионов см. в разделе "Поддержка регионов".
Пример
.wavзвукового файла для транскрибации.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
Установите Azure CLI, используемый для бесключевой аутентификации с Microsoft Entra ID.
Войдите с помощью Azure CLI, выполнив
az login.Назначьте роль пользователя службы Cognitive Services вашей учетной записи. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка проекта
Создайте консольное приложение с помощью интерфейса командной строки .NET:
dotnet new console -n llm-speech-quickstart cd llm-speech-quickstartУстановите необходимые пакеты:
dotnet add package Azure.AI.Speech.Transcription dotnet add package Azure.Identity
Получение сведений о ресурсе
Для аутентификации необходимо получить конечную точку вашего ресурса.
Войдите на портал Foundry.
Выберите центр управления в меню слева. В разделе Подключенные ресурсы выберите ресурс "Речь" или "Мультисервис".
Выберите ключи и конечную точку.
Скопируйте значение конечной точки и задайте его в качестве переменной среды:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Транскрибирование звука с помощью речи LLM
Функция "LLM Речь" использует EnhancedModeProperties класс для осуществления транскрибирования, которое улучшено с использованием одной большой языковой модели. При создании экземпляра EnhancedModeProperties расширенный режим включается автоматически. Модель автоматически обнаруживает язык в звуке.
Замените содержимое Program.cs следующим кодом:
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}");
}
Замените <path-to-your-audio-file.wav> путь к звуковому файлу. Служба поддерживает WAV, MP3, FLAC, OGG и другие распространенные звуковые форматы.
Запустите приложение:
dotnet run
Дополнительные сведения см. в следующих ссылках: TranscriptionClient и EnhancedModeProperties.
Перевод аудио с помощью LLM Speech
Вы также можете использовать распознавание речи LLM для перевода звука на целевой язык. Задайте для Tasktranslateпараметра значение , а затем укажите 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}");
}
Замените <path-to-your-audio-file.wav> путь к звуковому файлу.
Дополнительные сведения см. в следующей ссылке: EnhancedModeProperties
Используйте prompt-тюнинг
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода:
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}");
}
Рекомендации по лучшим практикам для подсказок
Запросы имеют максимальную длину 4096 символов.
Запросы должны быть написаны на английском языке.
Используется
Output must be in lexical format.для применения лексического форматирования вместо формата отображения по умолчанию.Используйте
Pay attention to *phrase1*, *phrase2*, …для улучшения распознавания определенных фраз или акронимов.
Дополнительные сведения см. в следующей ссылке: EnhancedModeProperties
Очистка ресурсов
После завершения быстрого старта удалите папку проекта.
Remove-Item -Recurse -Force llm-speech-quickstart
Справочная документация | Пакет (npm) | Примеры на GitHub
Необходимые условия
Подписка Azure. Создайте его бесплатно.
Ресурс Microsoft Foundry создан в регионе, поддерживающем распознавание речи LLM. Дополнительные сведения о доступности регионов см. в разделе "Поддержка регионов".
Пример
.wavзвукового файла для транскрибации.
предварительные требования Microsoft Entra ID
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID необходимо:
Установите Azure CLI, используемый для бесключевой аутентификации с Microsoft Entra ID.
Войдите с помощью Azure CLI, выполнив
az login.Назначьте роль пользователя службы Cognitive Services вашей учетной записи. Роли можно назначить на портале Azure в разделе Access control (IAM)>Add role assignment.
Настройка проекта
Создайте новую папку с именем
llm-speech-quickstart, а затем перейдите в папку:mkdir llm-speech-quickstart && cd llm-speech-quickstartИнициализировать проект Node.js и установить необходимые пакеты:
npm init -y npm install @azure/ai-speech-transcription @azure/identity
Получение сведений о ресурсе
Для аутентификации необходимо получить конечную точку вашего ресурса.
Войдите на портал Foundry.
Выберите центр управления в меню слева. В разделе Подключенные ресурсы выберите ресурс "Речь" или "Мультисервис".
Выберите ключи и конечную точку.
Скопируйте значение конечной точки и задайте его в качестве переменной среды:
$env:AZURE_SPEECH_ENDPOINT="<your-speech-endpoint>"
Транскрибируйте аудио с помощью LLM Speech
Функция "Речь LLM" использует enhancedMode для активации транскрибирования, которое улучшается крупной языковой моделью. Модель автоматически обнаруживает язык в звуке.
Создайте файл с именем index.js со следующим кодом:
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);
});
Замените <path-to-your-audio-file.wav> путь к звуковому файлу. Служба поддерживает WAV, MP3, FLAC, OGG и другие распространенные звуковые форматы.
Запустите приложение:
node index.js
Совет
Если вы получите результат Enhanced mode is currently not supported yet, убедитесь, что конечная точка находится в регионе, поддерживающем технологии распознавания и синтеза речи с помощью LLM.
Дополнительные сведения см. в следующей ссылке: TranscriptionClient
Выходные данные транскрибирования
Приложение выводит результат транскрибирования в консоль:
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.
Перевод аудио с помощью LLM Speech
Вы также можете использовать распознавание речи LLM для перевода звука на целевой язык. Установите task на translate, а затем укажите 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);
});
Замените <path-to-your-audio-file.wav> путь к звуковому файлу.
Дополнительные сведения см. в следующей ссылке: TranscriptionClient
Используйте prompt-тюнинг
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода:
const result = await client.transcribe(audioFile, {
enhancedMode: {
task: "transcribe",
prompt: ["Output must be in lexical format."],
},
});
console.log("Transcription:", result.combinedPhrases[0]?.text);
Рекомендации по лучшим практикам для подсказок
Запросы имеют максимальную длину 4096 символов.
Запросы должны быть написаны на английском языке.
Используется
Output must be in lexical format.для применения лексического форматирования вместо формата отображения по умолчанию.Используйте
Pay attention to *phrase1*, *phrase2*, …для улучшения распознавания определенных фраз или акронимов.
Выход
Приложение выводит результат транскрибирования в консоль:
Transcription: Hello this is a test of the LLM speech transcription service.
Дополнительные сведения см. в следующей ссылке: TranscriptionClient
Справочная документация | Пакет (Maven) | Примеры GitHub
Необходимые условия
Подписка Azure. Создайте его бесплатно.
Java комплект средств разработки (JDK) 8 или более поздней версии.
Apache Maven для управления зависимостями и создания проекта.
Ресурс "Речь" в одном из поддерживаемых регионов. Для получения дополнительной информации о доступности по регионам см. раздел «Поддерживаемые регионы службы речевых технологий».
Пример
.wavзвукового файла для транскрибации.
Настройка среды
Создайте новую папку с именем
llm-speech-quickstart, а затем перейдите к ней:mkdir llm-speech-quickstart && cd llm-speech-quickstartpom.xmlСоздайте файл в корневом каталоге проекта со следующим содержимым:<?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>Примечание
Конфигурация
<sourceDirectory>.</sourceDirectory>указывает Maven искать Java исходные файлы в текущем каталоге вместо структурыsrc/main/javaпо умолчанию. Это изменение конфигурации позволяет упростить структуру проекта.Установите зависимости:
mvn clean install
Установка переменных среды
Приложение должно пройти проверку подлинности, чтобы получить доступ к Azure Speech. Пакет SDK поддерживает как аутентификацию по ключу API, так и по идентификатору Microsoft Entra. Он автоматически определяет метод, используемый на основе заданных переменных среды.
Сначала задайте конечную точку для ресурса "Речь". Замените <your-speech-endpoint> фактическим именем ресурса.
Затем выберите один из следующих методов проверки подлинности.
Проверка подлинности ключа API (рекомендуется приступить к работе)
Задайте переменную среды ключа API:
проверка подлинности Microsoft Entra ID (рекомендуется для рабочей среды)
Вместо параметра AZURE_SPEECH_API_KEYнастройте один из следующих источников учетных данных:
Azure CLI: запустите
az loginна компьютере разработки.Managed identity: для приложений, работающих в Azure (Служба приложений Azure, Функции Azure, виртуальных машинах).
Переменные среды: установите
AZURE_TENANT_ID,AZURE_CLIENT_ID, иAZURE_CLIENT_SECRET.Visual Studio Code или IntelliJ: войдите через интегрированную среду разработки.
Вам также необходимо назначить роль пользователя Cognitive Services вашему идентификатору.
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>
Примечание
После установки переменных среды в Windows перезапустите все запущенные программы, которые должны читать их, включая окно консоли. В Linux или macOS запустите source ~/.bashrc (или эквивалентный файл конфигурации оболочки), чтобы внести изменения в силу.
Транскрибируйте аудио с помощью LLM Speech
Функция "LLM Речь" использует EnhancedModeOptions класс для осуществления транскрибирования, которое улучшено с использованием одной большой языковой модели. При создании экземпляра EnhancedModeOptions расширенный режим включается автоматически. Модель автоматически обнаруживает язык в звуке.
Создайте файл с именем LlmSpeechQuickstart.java в каталоге проекта с помощью следующего кода:
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();
}
}
}
Замените <path-to-your-audio-file.wav> путь к звуковому файлу. Служба поддерживает WAV, MP3, FLAC, OGG и другие распространенные звуковые форматы.
Запуск приложения
Запустите приложение с помощью Maven:
mvn compile exec:java
Перевод звука с помощью функции "Речь LLM"
Вы также можете использовать распознавание речи LLM для перевода звука на целевой язык. Измените EnhancedModeOptions конфигурацию, чтобы задать для задачи translateзначение, а затем укажите целевой язык.
Создайте файл с именем LlmSpeechTranslate.java со следующим кодом:
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();
}
}
}
Замените <path-to-your-audio-file.wav> путь к звуковому файлу.
Чтобы запустить пример перевода, обновите конфигурацию основного класса или выполните следующую pom.xml команду:
mvn exec:java -Dexec.mainClass="LlmSpeechTranslate"
Используйте prompt-тюнинг
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода.
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);
Рекомендации по лучшим практикам для подсказок
Запросы имеют максимальную длину 4096 символов.
Запросы должны быть написаны на английском языке.
Используется
Output must be in lexical format.для применения лексического форматирования вместо формата отображения по умолчанию.Используйте
Pay attention to *phrase1*, *phrase2*, …для улучшения распознавания определенных фраз или акронимов.
Очистка ресурсов
После завершения быстрого старта удалите папку проекта.
rm -rf llm-speech-quickstart
Обработка ошибок транскрибирования
При вызове API быстрого транскрибирования реализуйте логику повторных попыток для обработки временных ошибок и ограничения скорости. API применяет ограничения скорости, что может привести к ошибке во время операций с высоким параллелизмом.
Рекомендуемая конфигурация повторных попыток
Повторите попытку до пяти раз при временных ошибках.
Используйте экспоненциальный отступ: 2 секунды, 4 с, 8 с, 16 с, 32 с.
Общее время отката: 62 с.
Эта конфигурация обеспечивает достаточно времени для восстановления API во время окна ограничения скорости, особенно при выполнении пакетных операций с несколькими параллельными рабочими.
Когда следует использовать логику повторных попыток
Реализуйте логику повторных попыток для следующих категорий ошибок:
Ошибки HTTP — повторите попытку в:
- HTTP 429 (ограничение скорости)
- HTTP 500, 502, 503, 504 (ошибки сервера)
-
status_code=None(неполные загрузки ответов)
Azure SDK сетевые ошибки — повторите попытку:
ServiceRequestErrorServiceResponseError
Эти ошибки обрабатывают исключения сети низкого уровня, такие как
urllib3.exceptions.ReadTimeoutError, сбросы подключений и сбои TLS.Python сетевые исключения — повторите попытку:
ConnectionErrorTimeoutErrorOSError
Не повторяйте следующие ошибки, так как они указывают на проблемы на стороне клиента, требующие исправления:
- HTTP 400 (недопустимый запрос)
- HTTP 401 (несанкционированный)
- HTTP 422 (необрабатываемая сущность)
- Другие ошибки клиента (коды состояния 4xx)
Заметки о реализации
Сбросить поток аудиофайла (
seek(0)) перед каждой попыткой повтора.При использовании параллельных рабочих ролей время ожидания чтения HTTP по умолчанию (300 секунд) может быть превышено при ограничении высокой скорости.
API может принять запрос, но может истечь время ожидания при создании ответа. Это условие может отображаться как ошибка, упаковаемая в пакет SDK, а не стандартная ошибка HTTP.