Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание
Эта функция сейчас доступна в общедоступной предварительной версии. Эта версия предварительного просмотра предоставляется без соглашения об уровне обслуживания и не рекомендуется для продуктивной эксплуатации. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
LlM Speech — это API в Microsoft Foundry. Большая языковая модель (LLM) улучшает модель речи, обеспечивая улучшенное качество, глубокое контекстное понимание, многоязычную поддержку и возможности настройки запросов. Он использует ускорение GPU для ультра-быстрого вывода, что делает его идеальным для широкого спектра сценариев. Например, используйте llM Speech для создания подписей и субтитров из аудиофайлов, суммирования заметок собрания, помощи агентам центра вызовов и транскрибирования голосовых сообщений.
Доступность компонентов
В этой таблице показаны функции транскрибирования, поддерживаемые API быстрого транскрибирования и без функции распознавания речи LLM (расширенный режим):
| Функция | Быстрое транскрибирование (по умолчанию) | Речь LLM (улучшенная) |
|---|---|---|
| Транскрипция | ✅ (модели транскрибирования речи) | ✅ (многомодальная модель) |
| Перевод | ❌ | ✅ (многомодальная модель) |
| Диаризация | ✅ | ✅ |
| Канал (стерео) | ✅ | ✅ |
| Фильтрация ненормативной лексики | ✅ | ✅ |
| Задать локаль | ✅ | ❌ (используйте запрос для реализации) |
| Пользовательская подсказка | ❌ | ✅ |
| Список фраз | ✅ | ❌ (используйте запрос для реализации) |
Для LLM-речи используйте побуждение для направления стиля выхода вместо использования конкретных локалей или списков фраз.
Вы можете попробовать распознавание речи LLM в Microsoft Foundry без написания кода.
Необходимые условия
Подписка Azure. Создайте его бесплатно.
Проект Foundry. Если вам нужно создать проект, см. раздел Создание проекта Microsoft Foundry.
Попробуйте функцию LLM для распознавания речи
-
Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry включен. Эти действия относятся к Foundry (new).
В правом верхнем меню выберите Сборка.
В левой области выберите "Модели".
На вкладке "Службы искусственного интеллекта " показаны модели Foundry, которые можно использовать на портале Foundry. Выберите Azure Speech — Речь в текст.
В раскрывающемся списке выберите речь LLM.
При необходимости используйте раздел "Параметры " для изменения языка, политики ненормативной лексики и других параметров. Вы также можете добавить специальные инструкции для LLM.
Используйте раздел "Отправить файлы ", чтобы выбрать звуковой файл. Затем нажмите кнопку "Пуск".
Просмотрите выходные данные транскрибирования на вкладке "Расшифровка ". При необходимости просмотрите выходные данные необработанного ответа API на вкладке JSON .
Перейдите на вкладку "Код" , чтобы получить пример кода для использования речи LLM в приложении.
Необходимые условия
Ресурс Azure Speech в Foundry Tools в одном из регионов, где доступен LLM Speech API. Текущий список поддерживаемых регионов смотрите в разделе регионов службы "Речь".
Размер звукового файла меньше пяти часов и меньше 500 МБ. Звуковой файл должен находиться в одном из форматов и кодеков, поддерживаемых API пакетной транскрибирования: WAV, MP3, OPUS/OGG, FLAC, WMA, AAC, ALAW в контейнере WAV, MULAW в контейнере WAV, AMR, WebM или SPEEX. Дополнительные сведения о поддерживаемых аудиоформатах см. в поддерживаемых аудиоформатах.
Использование API распознавания речи LLM
В следующих нескольких разделах содержатся сведения об использовании этого API.
Поддерживаемые языки
В настоящее время для обоих задач поддерживаются transcribetranslate следующие языки: English, Chinese, German, French, Italian, JapaneseSpanishPortuguese, и Korean.
Отправка звука
Звуковые данные можно предоставлять следующим образом:
Передайте встроенные звуковые данные.
--form 'audio=@"YourAudioFile"'Загрузите аудиофайл из общедоступного
audioUrl.--form 'definition": "{\"audioUrl\": \"https://crbn.us/hello.wav"}"'
Совет
Для длинных звуковых файлов рекомендуется отправлять из общедоступного URL-адреса.
В этой статье мы используем интегрированную загрузку аудио в качестве примера.
Вызов API распознавания речи LLM
В вашем POST-запросе к эндпоинту transcriptions используйте тип содержимого multipart/form-data с аудиофайлом и свойствами тела запроса.
В следующем примере показано, как транскрибировать аудиофайл с указанной локалью. Если вы знаете языковую локаль звукового файла, вы можете указать её, чтобы повысить точность транскрибирования и уменьшить задержку.
- Замените
YourSpeechResoureKeyключом ресурса распознавания речи. - Замените
YourServiceRegionрегион ресурсов службы "Речь". - Замените
YourAudioFileпуть к звуковому файлу.
Важно
Для рекомендуемой проверки подлинности без ключа с помощью Microsoft Entra ID замените --header 'Ocp-Apim-Subscription-Key: YourSpeechResoureKey' на --header "Authorization: Bearer YourAccessToken". Дополнительные сведения о проверке подлинности без ключа см. в руководстве по управлению доступом на основе ролей .
Использование функции распознавания речи LLM для транскрибирования звука
Вы можете транскрибировать звук на языке ввода, не указывая код локали. Модель автоматически обнаруживает и выбирает соответствующий язык на основе звукового содержимого.
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"
}
}'
Используйте функцию "Речь LLM" для перевода аудиофайла
Вы можете перевести звук на указанный целевой язык. Чтобы включить перевод, необходимо указать целевой языковой код в запросе.
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"
}
}'
Настройка параметров запроса для изменения производительности
Вы можете указать необязательный текст для указания стиля вывода для transcribe задачи или 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."]
}
}'
Ниже приведены лучшие практики для составления запросов:
Запросы имеют максимальную длину 4096 символов.
Запросы должны быть написаны на английском языке.
Запросы могут направлять форматирование выходных данных. По умолчанию ответы используют формат отображения, оптимизированный для удобства чтения. Чтобы применить лексическое форматирование, включите:
Output must be in lexical format.Запросы могут усилить заметность определенных фраз или акронимов, улучшая вероятность их распознавания. Используйте:
Pay attention to *phrase1*, *phrase2*, …. Для получения наилучших результатов ограничьте количество фраз на запрос.Запросы, которые не связаны с задачами речи (например,
Tell me a story.обычно игнорируются).
Дополнительные параметры конфигурации
Вы можете объединить дополнительные параметры конфигурации с быстрым транскрибированием , чтобы включить расширенные функции, такие как diarization, profanityFilterModeи 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"
}'
Некоторые параметры конфигурации, такие как locales и phraseLists, не являются обязательными или неприменимыми к функции "Речь LLM". Эти параметры можно опустить из запроса. Дополнительные сведения о параметрах конфигурации быстрого транскрибирования.
Использование модели MAI-Transcribe (предварительная версия)
Вы также можете использовать модель MAI-Transcribe-1, предоставляемую Microsoft AI (MAI) с API распознавания речи LLM.
Текущий список регионов, где поддерживается эта модель, см. в разделе "Регионы службы "Речь".
В настоящее время для модели 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, и Vietnamese.
Чтобы использовать модель MAI-Transcribe-1, задайте model свойство соответствующим образом в запросе.
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"
}
}'
При использовании этой модели помните о следующих ограничениях:
Размер аудиофайла должен быть менее 70 МБ.
Диаризация не поддерживается.
Пример ответа
В ответе 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 в объекте 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.
справочная документация
Необходимые условия
Подписка Azure. Создайте его бесплатно.
набор инструментов разработки .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 --prerelease 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
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}");
}
}
Замените <path-to-your-audio-file.wav> путь к звуковому файлу. Служба поддерживает WAV, MP3, FLAC, OGG и другие распространенные звуковые форматы.
Запустите приложение:
dotnet run
Дополнительные сведения см. в следующих ссылках: TranscriptionClient и EnhancedModeProperties.
Перевод звука с помощью технологии LLM Speech
Вы также можете использовать распознавание речи LLM для перевода звука на целевой язык. Задайте параметру Task значение translate, а затем укажите 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
Использование настройки запроса
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода:
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
Использование настройки запроса
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода:
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-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>Примечание
Конфигурация
<sourceDirectory>.</sourceDirectory>указывает Maven искать Java исходные файлы в текущем каталоге вместо структурыsrc/main/javaпо умолчанию. Это изменение конфигурации позволяет упростить структуру проекта.Установите зависимости:
mvn clean install
Установка переменных среды
Приложение должно пройти проверку подлинности, чтобы получить доступ к службе Azure Speech. Пакет SDK поддерживает как проверку подлинности с помощью ключа API, так и Microsoft Entra ID. Он автоматически определяет метод, используемый на основе заданных переменных среды.
Сначала задайте конечную точку для ресурса распознавания речи. Замените <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: войдите через интегрированную среду разработки.
Вам также необходимо назначить роль пользователя Службы когнитивных услуг вашему удостоверению.
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 Speech
Вы также можете использовать распознавание речи 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"
Использование настройки запроса
Вы можете указать необязательный запрос, чтобы указать стиль вывода для задач транскрибирования или перевода.
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.