Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Вы отправляете звуковые данные в пакетном режиме транскрипции. Служба транскрибирует звуковые данные и сохраняет результаты в контейнере хранилища. Затем можно получить результаты из хранилища.
Выполнение пакетной транскрипции может занять от нескольких минут до нескольких часов в зависимости от размера звуковых данных и количества отправленных файлов. Даже один и тот же размер звуковых данных может занять разное время для транскрибирования в зависимости от нагрузки службы и других факторов. Служба не предоставляет способ оценить время, необходимое для транскрибирования пакета звуковых данных.
Совет
Если вам нужна согласованная скорость для аудиофайлов менее 2 часов и менее 300 МБ в размере, рассмотрите возможность использования API быстрого транскрибирования .
Предварительные требования
Вам нужен ресурс Microsoft Foundry для службы "Речь".
Создание задания транскрибирования
Чтобы создать задание пакетного распознавания, используйте операцию Transcriptions - Submit в REST API преобразования речи в текст. Создайте текст запроса в соответствии со следующими инструкциями:
- Необходимо задать либо свойство
contentContainerUrl, либо свойствоcontentUrls. Дополнительные сведения о хранилище объектов Blob Azure для пакетного транскрибирования см. в разделе Определение местоположения звуковых файлов для пакетного транскрибирования. - Задайте обязательное свойство
locale. Это значение должно соответствовать ожидаемой локализации звуковых данных для транскрипции. Вы не можете изменить локаль позже. - Задайте обязательное свойство
displayName. Выберите имя транскрибирования, к которому можно ссылаться позже. Имя транскрибирования не должно быть уникальным и может быть изменено позже. - Задайте обязательное свойство
timeToLiveHours. Это свойство указывает, сколько времени транскрибирование должно храниться в системе после его завершения. Кратчайшая поддерживаемая длительность составляет 6 часов, самая длинная поддерживаемая длительность — 31 дней. Рекомендуемое значение — 48 часов (два дня), когда данные используются напрямую. - При необходимости для использования модели, отличной от базовой, задайте идентификатор модели в свойстве
model. Дополнительные сведения см. в разделах Использование пользовательской модели и Использование модели Whisper. - При необходимости установите свойство
wordLevelTimestampsEnabled, чтобы включитьtrueметки времени на уровне слов в результатах транскрибирования. Значение по умолчанию —false. Для моделей Whisper вместо этого задайте свойствоdisplayFormWordLevelTimestampsEnabled. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании. - При необходимости задайте
languageIdentificationсвойство. Используется для определения языков, на которых говорят в аудиозаписях, при сравнении со списком поддерживаемых языков. Если задано свойствоlanguageIdentification, необходимо также задать локали кандидатов дляlanguageIdentification.candidateLocales.
Дополнительные сведения см. в разделе "Параметры конфигурации запроса".
Выполните HTTP-запрос POST, использующий URI, как показано в следующем примере Transcriptions - Submit.
- Замените
YourSpeechResoureKeyсвоим ключом ресурса Microsoft Foundry. - Замените
YourServiceRegionрегион ресурсов Microsoft Foundry. - Задайте свойства текста запроса, как описано ранее.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": null,
"properties": {
"wordLevelTimestampsEnabled": true,
"languageIdentification": {
"candidateLocales": [
"en-US", "de-DE", "es-ES"
],
"mode": "Continuous"
},
"timeToLiveHours": 48
}
}' "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:submit?api-version=2024-11-15"
Вы должны получить ответ в следующем формате:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/transcriptions/788a1f24-f980-4809-8978-e5cf41f77b35?api-version=2024-11-15",
"displayName": "My Transcription 2",
"locale": "en-US",
"createdDateTime": "2025-05-24T03:20:39Z",
"lastActionDateTime": "2025-05-24T03:20:39Z",
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/transcriptions/788a1f24-f980-4809-8978-e5cf41f77b35/files?api-version=2024-11-15"
},
"properties": {
"wordLevelTimestampsEnabled": true,
"displayFormWordLevelTimestampsEnabled": false,
"channels": [
0,
1
],
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked",
"timeToLiveHours": 48,
"languageIdentification": {
"candidateLocales": [
"en-US",
"de-DE",
"es-ES"
],
"mode": "Continuous"
}
},
"status": "NotStarted"
}
Свойство верхнего уровня self в тексте ответа — это URI транскрипции. Используйте этот URI для получения сведений, таких как URI файлов транскрипции и отчетов о транскрипции. Этот URI также используется для обновления или удаления транскрибирования.
Вы можете запросить статус ваших транскрипций с помощью операции Transcriptions - Get.
Вызов транскрибирования— регулярное удаление из службы после получения результатов. Кроме того, можно задать свойство timeToLive, чтобы обеспечить постепенное удаление результатов.
Совет
Вы также можете попробовать API пакетного транскрибирования с помощью Python, C#или Node.js в GitHub.
Чтобы создать транскрибирование, используйте spx batch transcription create команду. Создайте параметры запроса в соответствии со следующими инструкциями:
- Задайте обязательный параметр
content. Можно указать разделенный запятыми список отдельных файлов или URL-адрес для всего контейнера. Дополнительные сведения о хранилище объектов Blob Azure для пакетного транскрибирования см. в разделе Определение местоположения звуковых файлов для пакетного транскрибирования. - Задайте обязательное свойство
language. Это значение должно соответствовать ожидаемой локализации звуковых данных для транскрипции. Вы не можете изменить локаль позже. Параметрlanguageв речевом CLI соответствует свойствуlocaleв запросе и ответе JSON. - Задайте обязательное свойство
name. Выберите имя транскрибирования, к которому можно ссылаться позже. Имя транскрибирования не должно быть уникальным и может быть изменено позже. Параметрnameв речевом CLI соответствует свойствуdisplayNameв запросе и ответе JSON. - Задайте для требуемого
api-versionпараметраv3.2значение . Интерфейс командной строки службы "Речь" еще не поддерживает версию2024-11-15или более позднюю, поэтому необходимо использоватьv3.2.
Вот пример команды CLI для службы "Речь", которая создает задание на транскрипцию.
spx batch transcription create --api-version v3.2 --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav
Вы должны получить ответ в следующем формате:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/bbbbcccc-1111-dddd-2222-eeee3333ffff",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"
},
"links": {
"files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
},
"properties": {
"diarizationEnabled": false,
"wordLevelTimestampsEnabled": false,
"channels": [
0,
1
],
"punctuationMode": "DictatedAndAutomatic",
"profanityFilterMode": "Masked"
},
"lastActionDateTime": "2025-05-24T03:20:39Z",
"status": "NotStarted",
"createdDateTime": "2025-05-24T03:20:39Z",
"locale": "en-US",
"displayName": "My Transcription",
"description": ""
}
Свойство верхнего уровня self в тексте ответа — это URI транскрипции. Используйте этот универсальный код ресурса (URI) для получения сведений, таких как URI файлов транскрипций и отчетов о транскрипциях. Этот URI также используется для обновления или удаления транскрипции.
Для справки по CLI "Speech" для транскрипции выполните следующую команду:
spx help batch transcription
Параметры конфигурации запроса
Ниже приведены некоторые параметры свойств для настройки транскрибирования при вызове операции «Транскрибирование — отправка ». Дополнительные примеры можно найти на той же странице, например создание транскрибирования с идентификацией языка.
Текст запроса имеет два разных уровня. Неправильное расположение свойства приводит к тому, что служба молча игнорирует его или возвращает ошибку проверки.
-
Корневой уровень: метаданные, описывающие само задание транскрибирования (
displayName, ,locale,modelcontentUrls).contentContainerUrl -
Внутри
properties: параметры, управляющие поведением транскрибирования. Заключите их в объект"properties": { }.
Внимание
destinationContainerUrl должен находиться внутри объекта properties, а не на корневом уровне тела запроса. Размещение его в корне приводит к тому, что служба игнорирует ее, а результаты транскрибирования автоматически записываются в управляемый корпорацией Майкрософт контейнер.
В следующем примере показана правильная структура:
{
"contentUrls": ["https://..."],
"locale": "en-US",
"displayName": "My Transcription",
"model": null,
"properties": {
"destinationContainerUrl": "https://<storage>.blob.core.windows.net/<container>?<SAS>",
"wordLevelTimestampsEnabled": true,
"timeToLiveHours": 48
}
}
| Свойство | Расположение в тексте запроса | Описание |
|---|---|---|
contentContainerUrl |
Корневой уровень | Вы можете отправлять отдельные звуковые файлы или целый контейнер хранилища. Необходимо указать расположение звуковых данных с помощью contentContainerUrl свойства или contentUrls свойства. Дополнительные сведения о хранилище объектов Blob Azure для пакетного транскрибирования см. в разделе Определение местоположения звуковых файлов для пакетного транскрибирования.Это свойство не возвращается в ответе. |
contentUrls |
Корневой уровень | Вы можете отправлять отдельные звуковые файлы или целый контейнер хранилища. Необходимо указать расположение звуковых данных с помощью contentContainerUrl свойства или contentUrls свойства. Дополнительные сведения см. в разделе Поиск аудиофайлов для пакетной транскрипции.Это свойство не возвращается в ответе. |
displayName |
Корневой уровень | Имя пакетной транскрипции. Выберите имя, на которое можно ссылаться позже. Отображаемое имя не должно быть уникальным. Это обязательное свойство. |
locale |
Корневой уровень | Локаль пакетного транскрибирования. Это значение должно соответствовать ожидаемой локализации звуковых данных для транскрипции. Локаль нельзя будет изменить позже. Это обязательное свойство. |
model |
Корневой уровень | Свойство можно задать model для использования конкретной базовой модели или пользовательской модели речи . Если не указать model, будет использоваться базовая модель для локали. Дополнительные сведения см. в разделах Использование пользовательской модели и Использование модели Whisper. |
channels |
Внутри properties |
Массив номеров каналов для обработки. Каналы 0 и 1 по умолчанию транскрибируются. |
destinationContainerUrl |
Внутри properties |
Результат может храниться в контейнере Azure. Если контейнер не указан, служба "Речь" сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. При удалении задания транскрибирования данные результатов транскрибирования также удаляются. Дополнительные сведения, такие как поддерживаемые сценарии безопасности, см. в разделе "Указание URL-адреса целевого контейнера". |
diarization |
Внутри properties |
Указывает, что служба "Речь" должна пытаться выполнить анализ диаризации входных данных, который, как ожидается, будет монокананом, который содержит несколько голосов. Эта функция недоступна с стереозаписями. Диаризация — это процесс разделения динамиков в звуковых данных. Пакетный конвейер может распознавать и разделять несколько динамиков на записях моноканала. Укажите минимальное и максимальное количество людей, которые могут выступать. Необходимо также задать свойству diarizationEnabled значение true.
Файл транскрипции содержит speaker запись для каждой транскрибированной фразы.Это свойство необходимо использовать при ожидании трех или более динамиков. Для двух динамиков достаточно задать diarizationEnabled свойство true . Пример использования свойства см. в разделе "Транскрибирование — Отправка".Максимальное количество динамиков для диаризации должно быть меньше 36 и более или равно свойству minCount . Пример см. в разделе "Транскрибирование — Отправка".Если это свойство выбрано, длина исходного звука не может превышать 240 минут на файл. Примечание. Это свойство доступно только для преобразования речи в текст REST API версии 3.1 и более поздних версий. Если задать это свойство с любой предыдущей версией, например версией 3.0, она игнорируется и идентифицируются только два докладчика. |
diarizationEnabled |
Внутри properties |
Указывает, что служба распознавания речи должна попытаться выполнить анализ диаризации входного сигнала, который, как ожидается, будет моноканалом и содержать два голоса. Значение по умолчанию — false.Для трех или более голосов также необходимо использовать свойство diarization. Используйте только для преобразования речи в текст REST API версии 3.1 и более поздних версий.Если это свойство выбрано, длина исходного звука не может превышать 240 минут на файл. |
displayFormWordLevelTimestampsEnabled |
Внутри properties |
Указывает, следует ли включать метки времени уровня слова в отображаемую форму результатов транскрибирования. Результаты возвращаются в displayWords свойстве файла транскрибирования. Значение по умолчанию — false.Примечание. Это свойство доступно только для преобразования речи в текст REST API версии 3.1 и более поздних версий. |
languageIdentification |
Внутри properties |
Используется для определения языков, на которых говорят в аудиозаписях, при сравнении со списком поддерживаемых языков. Если задано languageIdentification свойство, необходимо также задать его закрытое candidateLocales свойство. |
languageIdentification.candidateLocales |
Внутри properties |
Локали-кандидаты для идентификации языка, например "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}}. Поддерживается не менее двух и не более десяти языков-кандидатов, включая основной языковой стандарт для транскрибирования. |
profanityFilterMode |
Внутри properties |
Указывает, как обрабатывать ненормативную лексику в результатах распознавания. Допустимые значения: None — отключает фильтрацию ненормативной лексики, Masked — заменяет ненормативную лексику звездочками, Removed — удаляет всю ненормативную лексику из результата, Tags — добавляет теги, указывающие на ненормативную лексику. Значение по умолчанию — Masked. |
punctuationMode |
Внутри properties |
Указывает, как обрабатывать знаки препинания в результатах распознавания. Допустимые значения: None — отключает пунктуацию, Dictated — указывает явный (произнесенный) знак пунктуации, Automatic — разрешает декодеру обрабатывать знаки препинания или DictatedAndAutomatic — позволяет использовать озвученную и автоматическую пунктуацию. Значение по умолчанию — DictatedAndAutomatic.Это свойство неприменимо для моделей Whisper. |
timeToLiveHours |
Внутри properties |
Это необходимое свойство указывает, сколько времени транскрибирование должно храниться в системе после его завершения. После того как транскрипция достигает срока жизни после завершения (успешно или неудачно), она автоматически удаляется. Кратчайшая поддерживаемая длительность составляет 6 часов, самая длинная поддерживаемая длительность — 31 дней. Рекомендуемое значение — 48 часов (два дня), когда данные используются напрямую. В качестве альтернативы можно регулярно вызывать Транскрипции — Удалить после получения результатов транскрипции. |
wordLevelTimestampsEnabled |
Внутри properties |
Указывает, следует ли включать метки времени на уровне слова в выходные данные. Значение по умолчанию — false.Это свойство неприменимо для моделей Whisper. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании. |
Для справки по Speech CLI с параметрами настройки транскрипции выполните следующую команду:
spx help batch transcription create advanced
Использование пользовательской модели
Пакетное транскрибирование использует базовую модель по умолчанию для указанной локали. Вам не нужно задавать какие-либо свойства для использования базовой модели по умолчанию.
При необходимости можно изменить предыдущий пример транскрибирования, задав model свойство для использования конкретной базовой модели или пользовательской модели речи .
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"
},
"properties": {
"wordLevelTimestampsEnabled": true,
}
}' "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/transcriptions:submit?api-version=2024-11-15"
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/base/ccccdddd-2222-eeee-3333-ffff4444aaaa"
Чтобы использовать пользовательскую модель речи для пакетного транскрибирования, вам потребуется URI модели. Свойство верхнего уровня self в тексте ответа представляет собой URI модели. Расположение модели можно получить, когда вы создаёте или получаете модель. Дополнительные сведения см. в примере ответа JSON в статье "Создание модели".
Совет
Для использования кастомной речи со службой пакетной транскрипции не требуется хостируемая конечная точка развертывания. Вы можете сохранять ресурсы, если вы используете настраиваемую модель речи только для пакетной транскрибирования.
Запросы пакетного транскрибирования для моделей с истекшим сроком действия завершаются ошибкой 4xx.
model Задайте для свойства базовую модель или пользовательскую модель, которая не истекла. В противном случае не указывайте свойство model, чтобы всегда использовать последнюю базовую модель. Дополнительные сведения см. в разделе "Выбор модели " и жизненного цикла пользовательской модели речи.
Идентификация языка
Чтобы определить языки с помощью REST API пакетного транскрибирования, используйте languageIdentification свойство в теле вашего транскрибирования — отправить запроса.
Предупреждение
Пакетное транскрибирование поддерживает только идентификацию языка для базовых моделей по умолчанию. Если в запросе транскрибирования указаны как идентификация языка, так и пользовательская модель, служба возвращается для использования базовых моделей для указанных языков-кандидатов. Это может привести к непредвиденным результатам распознавания.
Если для сценария преобразования речи в текст требуется определение языка и пользовательские модели, используйте режим преобразования речи в текст в реальном времени вместо пакетной транскрипции.
В следующем примере показано использование languageIdentification свойства с четырьмя языками кандидатов. Дополнительные сведения о свойствах запроса см. в разделе Создание пакетной транскрипции.
{
<...>
"properties": {
<...>
"languageIdentification": {
"candidateLocales": [
"en-US",
"ja-JP",
"zh-CN",
"hi-IN"
]
},
<...>
}
}
Использование модели Whisper
Azure Speech в инструментах Foundry поддерживает модель Whisper от OpenAI с помощью API пакетной транскрипции. Модель Whisper можно использовать для пакетной транскрипции.
Примечание.
Azure OpenAI в моделях Microsoft Foundry также поддерживает модель Whisper OpenAI для преобразования речи в текст с синхронным REST API. Дополнительные сведения см. в статье Преобразование речи в текст с помощью модели Azure OpenAI Whisper. Дополнительные сведения о том, когда использовать Azure Speech и Azure OpenAI в моделях Microsoft Foundry, см. в статье Что такое модель Whisper?
Чтобы использовать модель Whisper для пакетного транскрибирования, необходимо задать model свойство. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в ответе.
Внимание
Пакетное транскрибирование с помощью моделей Whisper доступно в подмножестве регионов, поддерживающих пакетное транскрибирование. Текущий список поддерживаемых регионов см. в таблице регионов службы "Речь". Обратите внимание, что поддержка модели Whisper может быть ограничена только теми регионами, которые поддерживают пакетную транскрипцию.
Вы можете сделать запрос Модели — Список базовых моделей, чтобы получить доступные базовые модели для всех локалей.
Выполните HTTP-запрос GET, как показано в следующем примере для eastus региона. Замените YourSpeechResoureKey своим ключом ресурса Microsoft Foundry. Замените eastus , если вы используете другой регион.
curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base?api-version=2024-11-15" -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey"
По умолчанию возвращаются только 100 старейших базовых моделей. Используйте параметры запроса skip и top для просмотра результатов. Например, следующий запрос возвращает следующие 100 базовых моделей после первых 100 моделей.
curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base?api-version=2024-11-15&skip=100&top=100" -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey"
Убедитесь, что вы задаете переменные конфигурации для ресурса Foundry для обработки речи в одном из поддерживаемых регионов. Для отображения доступных базовых моделей для всех локалей можно выполнить команду spx csr list --base.
Задайте для требуемого api-version параметра v3.2значение . Интерфейс командной строки службы "Речь" еще не поддерживает версию 2024-11-15 или более позднюю, поэтому необходимо использовать v3.2.
spx csr list --base --api-version v3.2
Свойство displayName модели Whisper содержит "Whisper", как показано в этом примере. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании.
{
"links": {
"manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base/69adf293-9664-4040-932b-02ed16332e00/manifest?api-version=2024-11-15"
},
"properties": {
"deprecationDates": {
"adaptationDateTime": "2025-04-15T00:00:00Z",
"transcriptionDateTime": "2026-04-15T00:00:00Z"
},
"features": {
"supportsAdaptationsWith": [
"Acoustic"
],
"supportsTranscriptionsSubmit": true,
"supportsTranscriptionsTranscribe": false,
"supportsEndpoints": false,
"supportsTranscriptionsOnSpeechContainers": false,
"supportedOutputFormats": [
"Display"
]
},
"chargeForAdaptation": true
},
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base/69adf293-9664-4040-932b-02ed16332e00?api-version=2024-11-15",
"displayName": "20240228 Whisper Large V2",
"description": "OpenAI Whisper Model in Azure Speech (Whisper v2-large)",
"locale": "en-US",
"createdDateTime": "2024-02-29T15:46:31Z",
"lastActionDateTime": "2024-02-29T15:51:53Z",
"status": "Succeeded"
},
Вы задаете полный URI модели, как показано в этом примере для eastus региона. Замените YourSpeechResoureKey своим ключом ресурса Microsoft Foundry. Замените eastus , если вы используете другой регион.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSpeechResoureKey" -H "Content-Type: application/json" -d '{
"contentUrls": [
"https://crbn.us/hello.wav",
"https://crbn.us/whatstheweatherlike.wav"
],
"locale": "en-US",
"displayName": "My Transcription",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base/69adf293-9664-4040-932b-02ed16332e00?api-version=2024-11-15"
},
"properties": {
"wordLevelTimestampsEnabled": true,
},
}' "https://eastus.api.cognitive.microsoft.com/speechtotext/transcriptions:submit?api-version=2024-11-15"
Вы задаете полный URI модели, как показано в этом примере для eastus региона. Замените eastus , если вы используете другой регион.
Задайте для требуемого api-version параметра v3.2значение . Интерфейс командной строки службы "Речь" еще не поддерживает версию 2024-11-15 или более позднюю, поэтому необходимо использовать v3.2.
spx batch transcription create --name "My Transcription" --language "en-US" --content https://crbn.us/hello.wav,https://crbn.us/whatstheweatherlike.wav --model "https://eastus.api.cognitive.microsoft.com/speechtotext/models/base/ddddeeee-3333-ffff-4444-aaaa5555bbbb" --api-version v3.2
Настройка уведомлений веб-перехватчика
Вместо опроса состояния транскрибирования можно зарегистрировать веб-перехватчик для получения уведомления после завершения задания транскрибирования (или достижения любого другого состояния терминала).
Используйте операцию Web hooks - Create для регистрации конечной точки веб-перехватчика. Служба Speech отправляет обратные вызовы HTTP POST в конечную точку для событий transcription.created, transcription.processing, transcription.succeeded, transcription.failed и transcription.deleted.
Требования к брандмауэру
Речевая служба инициирует исходящие вызовы HTTPS из управляемой инфраструктуры к вашему вебхуку. Чтобы принять эти вызовы, брандмауэр конечной точки или группа безопасности сети должна разрешить входящий трафик из тега CognitiveServicesManagementслужбы Azure.
Внимание
Если входящий трафик с CognitiveServicesManagement заблокирован, служба распознавания речи не может добраться до конечной точки. Регистрация вебхука завершается успешно, поскольку регистрация включает только исходящий вызов от клиента к API распознавания речи, но все последующие обратные вызовы событий незаметно завершаются ошибкой.
Для конечных точек, размещенных в Azure, добавьте правило входящего трафика в группу безопасности сети:
-
Источник: тег службы
CognitiveServicesManagement -
Порт назначения:
443(HTTPS) - Действие: Разрешить
Подтверждение проверки веб-перехватчика
При регистрации нового вебхука служба "Речь" немедленно отправляет запрос проверки, чтобы доказать, что конечная точка доступна и находится под вашим контролем. Ваша конечная точка должна правильно реагировать, иначе регистрация провалится.
Запрос проверки выглядит следующим образом:
POST https://your-endpoint.example.com/?validationToken=<token>
Основные сведения:
- Маркер поставляется как параметр строки запроса (
validationToken), а не в тексте запроса. - Конечная точка должна отвечать HTTP
200 OKи возвращать необработанную строку токена в виде обычного текста (Content-Type: text/plain). - Возврат JSON (например,
{"validationToken": "..."}) приводит к сбою проверки.
Внимание
Распространенная ошибка: Эхо маркера в виде JSON-объекта вместо обычного текста приводит к сбою регистрации веб-перехватчика, подразумевая отсутствие ясной ошибки от службы. Всегда возвращайте маркер как строку обычного текста.
Пример Python: обработчик проверки
В следующем примере показана минимальная конечная точка веб-перехватчика Python с помощью Flask. Он считывает validationToken из строки запроса и возвращает его в виде обычного текста.
import flask
import json
app = flask.Flask(__name__)
@app.route("/webhook", methods=["POST"])
def webhook():
# Validation handshake: Speech sends the token as a query parameter.
# Return it as plain text—do NOT return JSON.
validation_token = flask.request.args.get("validationToken")
if validation_token:
return flask.Response(validation_token, status=200, mimetype="text/plain")
# Normal event callback: parse the JSON body.
event = flask.request.get_json(silent=True) or {}
event_type = event.get("events", [{}])[0].get("kind", "")
if event_type == "TranscriptionSucceeded":
transcription_url = event.get("self", "")
print(f"Transcription completed: {transcription_url}")
# TODO: fetch results from transcription_url
return flask.Response(status=200)
if __name__ == "__main__":
app.run(port=5000)
-
Справочник:
flask.Request.args,flask.Response
Зарегистрируйте веб-перехватчик
После прохождения проверки конечной точки зарегистрируйте её используя операцию Web Hooks - Create.
curl -X POST \
-H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey" \
-H "Content-Type: application/json" \
-d '{
"displayName": "My Transcription Webhook",
"events": {
"transcriptionSucceeded": true,
"transcriptionFailed": true
},
"webUrl": "https://your-endpoint.example.com/webhook"
}' \
"https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/webhooks?api-version=2024-11-15"
- Замените
YourSpeechResourceKeyсвоим ключом ресурса Microsoft Foundry. - Замените
YourServiceRegionна регион вашего ресурса. - Замените
webUrlна ваш общедоступный URL-адрес конечной точки HTTPS.
Полный список поддерживаемых типов событий смотрите в справочнике по веб-перехватчикам.
Указание URL-адреса целевого контейнера
Результат транскрибирования может храниться в контейнере Azure. Если контейнер не указан, служба "Речь" сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. В этом случае при удалении задания транскрибирования данные результатов транскрибирования также удаляются.
Результаты записи пакетного транскрибирования можно хранить в записи контейнере хранилища BLOB-объектов Azure с помощью параметра
Если вы хотите сохранить результаты транскрипции в контейнере хранилища BLOB-объектов Azure с помощью механизма безопасности доверенных служб Azure, подумайте об использовании Bring-your-own-storage (BYOS). Дополнительные сведения см. в разделе "Использование собственного хранилища (BYOS) Microsoft Foundry для преобразования речи в текст".
Связанный контент
- Дополнительные сведения о пакетной транскрибировании
- Поиск аудиофайлов для пакетного транскрибирования
- Получение результата пакетного транскрибирования
- Примеры кода пакетной транскрипции см. на GitHub