REST API преобразования текста в речь
Служба "Речь" позволяет преобразовывать текст в синтезированную речь и получать список поддерживаемых голосов для региона с помощью интерфейсов REST API. В этой статье вы узнаете о параметрах авторизации, параметрах запросов, структуре запроса и интерпретации ответа.
Совет
Варианты использования текста для REST API речи ограничены. Используйте его только в тех случаях, когда нельзя использовать пакет SDK Речи. Например, с помощью пакета SDK службы "Речь" можно подписаться на события для получения дополнительных сведений о тексте для обработки речи и результатов.
Текст для речи REST API поддерживает нейронный текст для речи голоса во многих языковых стандартах. Каждая доступная конечная точка связана с регионом. Требуется ключ ресурса службы "Речь" для конечной точки или региона, который планируется использовать. Далее приведены ссылки для получения дополнительных сведений:
- Полный список голосов см. в разделе Поддержка языков и голосов в службе "Речь".
- Сведения о доступности по регионам см. в разделе Поддерживаемые регионы для службы "Речь".
- Сведения об Azure для государственных организаций и Microsoft Azure, управляемых конечными точками 21Vianet, см. в этой статье о национальных облаках.
Внимание
Затраты зависят от предварительно созданных нейронных голосов (называемых нейронными на странице цен) и пользовательских нейронных голосов (которые называются настраиваемыми нейронными на странице цен). Дополнительные сведения см. в разделе Цены на службы "Речь".
Прежде чем использовать текст для распознавания речи REST API, необходимо выполнить обмен маркерами в рамках проверки подлинности для доступа к службе. Дополнительные сведения см. в разделе Authenticate to the Speech API (Аутентификация в API речи).
Получение списка голосов
Вы можете использовать конечную точку tts.speech.microsoft.com/cognitiveservices/voices/list
для получения полного списка голосов для определенного региона или конечной точки. Префикс конечной точки списка голосов с регионом, чтобы получить список голосов для этого региона. Например, чтобы получить список голосов для westus
региона, используйте конечную точку https://westus.tts.speech.microsoft.com/cognitiveservices/voices/list
. Список всех поддерживаемых регионов см. в документации по регионам.
Примечание.
Голоса и стили в предварительной версии доступны только в трех регионах службы: восточная часть США, Западная Европа и Юго-Восточная Азия.
Заголовки запросов
В этой таблице перечислены обязательные и необязательные заголовки для текстовых запросов речи:
Верхний колонтитул | Description | Обязательно или необязательно |
---|---|---|
Ocp-Apim-Subscription-Key |
Ключ ресурса службы "Речь". | Обязательный, если не предоставлен заголовок Authorization . |
Authorization |
Маркеру авторизации предшествует слово Bearer . Дополнительные сведения см. в разделе Authenticate to the Speech API (Аутентификация в API речи). |
Обязательный, если не предоставлен заголовок Ocp-Apim-Subscription-Key . |
Текст запроса
Для запросов GET
к этой конечной точке текст запроса не требуется.
Образец запроса
Для этого запроса требуется только заголовок авторизации.
GET /cognitiveservices/voices/list HTTP/1.1
Host: westus.tts.speech.microsoft.com
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
Ниже приведен пример команды curl:
curl --location --request GET 'https://YOUR_RESOURCE_REGION.tts.speech.microsoft.com/cognitiveservices/voices/list' \
--header 'Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY'
Пример ответа
Вы должны получить ответ с текстом JSON, который включает все поддерживаемые языковые стандарты, голоса, пол, стили и другие сведения. Свойство WordsPerMinute
для каждого голоса можно использовать для оценки длины выходной речи. В этом примере JSON показаны частичные результаты для иллюстрации структуры ответа:
[
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyNeural)",
"DisplayName": "Jenny",
"LocalName": "Jenny",
"ShortName": "en-US-JennyNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"StyleList": [
"assistant",
"chat",
"customerservice",
"newscast",
"angry",
"cheerful",
"sad",
"excited",
"friendly",
"terrified",
"shouting",
"unfriendly",
"whispering",
"hopeful"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"ExtendedPropertyMap": {
"IsHighQuality48K": "True"
},
"WordsPerMinute": "152"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (en-US, JennyMultilingualNeural)",
"DisplayName": "Jenny Multilingual",
"LocalName": "Jenny Multilingual",
"ShortName": "en-US-JennyMultilingualNeural",
"Gender": "Female",
"Locale": "en-US",
"LocaleName": "English (United States)",
"SecondaryLocaleList": [
"de-DE",
"en-AU",
"en-CA",
"en-GB",
"es-ES",
"es-MX",
"fr-CA",
"fr-FR",
"it-IT",
"ja-JP",
"ko-KR",
"pt-BR",
"zh-CN"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "190"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (ga-IE, OrlaNeural)",
"DisplayName": "Orla",
"LocalName": "Orla",
"ShortName": "ga-IE-OrlaNeural",
"Gender": "Female",
"Locale": "ga-IE",
"LocaleName": "Irish (Ireland)",
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"WordsPerMinute": "139"
},
// Redacted for brevity
{
"Name": "Microsoft Server Speech Text to Speech Voice (zh-CN, YunxiNeural)",
"DisplayName": "Yunxi",
"LocalName": "云希",
"ShortName": "zh-CN-YunxiNeural",
"Gender": "Male",
"Locale": "zh-CN",
"LocaleName": "Chinese (Mandarin, Simplified)",
"StyleList": [
"narration-relaxed",
"embarrassed",
"fearful",
"cheerful",
"disgruntled",
"serious",
"angry",
"sad",
"depressed",
"chat",
"assistant",
"newscast"
],
"SampleRateHertz": "24000",
"VoiceType": "Neural",
"Status": "GA",
"RolePlayList": [
"Narrator",
"YoungAdultMale",
"Boy"
],
"WordsPerMinute": "293"
},
// Redacted for brevity
]
Коды состояния HTTP
Код состояния HTTP для каждого ответа указывает на успешное выполнение или возникновение распространенных ошибок.
Код состояния HTTP | Description | Возможная причина |
---|---|---|
200 | OK | Запрос выполнен успешно. |
400 | Недопустимый запрос | Обязательный параметр отсутствует, пустой или его значение равно нулю. Или переданное либо обязательному, либо необязательному параметру значение является недопустимым. Часто это связано с тем, что заголовок слишком длинный. |
401 | Не авторизовано | Запрос не авторизован. Убедитесь, что ключ ресурса или маркер действителен и в правильном регионе. |
429 | Слишком много запросов | Превышена квота или скорость запросов, разрешенных для ресурса. |
502 | Недопустимый шлюз | Существует проблема с сетью или на стороне сервера. Это состояние может также указывать на недопустимые заголовки. |
Преобразование текста в речь
Конечная точка cognitiveservices/v1
позволяет преобразовать текст в речь с помощью Языка разметки синтеза речи (SSML).
Регионы и конечные точки
Эти регионы поддерживаются для преобразования текста в речь через REST API. Обязательно выберите конечную точку, соответствующую региону ресурса службы "Речь".
Предварительно созданные нейронные голоса
Используйте эту таблицу, чтобы определить доступность нейронных голосов по регионам и конечным точкам.
Область/регион | Конечная точка |
---|---|
Восточная Австралия | https://australiaeast.tts.speech.microsoft.com/cognitiveservices/v1 |
Южная Бразилия | https://brazilsouth.tts.speech.microsoft.com/cognitiveservices/v1 |
Центральная Канада | https://canadacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
Центральная часть США | https://centralus.tts.speech.microsoft.com/cognitiveservices/v1 |
Восточная Азия | https://eastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
Восточная часть США | https://eastus.tts.speech.microsoft.com/cognitiveservices/v1 |
Восточная часть США 2 | https://eastus2.tts.speech.microsoft.com/cognitiveservices/v1 |
Центральная Франция | https://francecentral.tts.speech.microsoft.com/cognitiveservices/v1 |
Центрально-Западная Германия | https://germanywestcentral.tts.speech.microsoft.com/cognitiveservices/v1 |
Центральная Индия | https://centralindia.tts.speech.microsoft.com/cognitiveservices/v1 |
Восточная Япония | https://japaneast.tts.speech.microsoft.com/cognitiveservices/v1 |
Западная Япония | https://japanwest.tts.speech.microsoft.com/cognitiveservices/v1 |
Западная Индия Jio | https://jioindiawest.tts.speech.microsoft.com/cognitiveservices/v1 |
Республика Корея, центральный регион | https://koreacentral.tts.speech.microsoft.com/cognitiveservices/v1 |
Центрально-северная часть США | https://northcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
Северная Европа | https://northeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
Восточная Норвегия; | https://norwayeast.tts.speech.microsoft.com/cognitiveservices/v1 |
Центрально-южная часть США | https://southcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
Юго-Восточная Азия | https://southeastasia.tts.speech.microsoft.com/cognitiveservices/v1 |
Центральная Швеция | https://swedencentral.tts.speech.microsoft.com/cognitiveservices/v1 |
Северная Швейцария | https://switzerlandnorth.tts.speech.microsoft.com/cognitiveservices/v1 |
Западная Швейцария | https://switzerlandwest.tts.speech.microsoft.com/cognitiveservices/v1 |
Северная часть ОАЭ; | https://uaenorth.tts.speech.microsoft.com/cognitiveservices/v1 |
US Gov (Аризона) | https://usgovarizona.tts.speech.azure.us/cognitiveservices/v1 |
US Gov (Вирджиния) | https://usgovvirginia.tts.speech.azure.us/cognitiveservices/v1 |
южная часть Соединенного Королевства | https://uksouth.tts.speech.microsoft.com/cognitiveservices/v1 |
центрально-западная часть США | https://westcentralus.tts.speech.microsoft.com/cognitiveservices/v1 |
Западная Европа | https://westeurope.tts.speech.microsoft.com/cognitiveservices/v1 |
западная часть США | https://westus.tts.speech.microsoft.com/cognitiveservices/v1 |
западная часть США 2 | https://westus2.tts.speech.microsoft.com/cognitiveservices/v1 |
Западная часть США — 3 | https://westus3.tts.speech.microsoft.com/cognitiveservices/v1 |
Совет
Голоса в предварительной версии доступны только в следующих трех регионах: Восточная часть США, Западная Европа и Юго-Восточная Азия.
Пользовательские нейронные голоса
Если вы создали пользовательский нейронный голос, используйте созданную для него конечную точку. Также можно использовать следующие конечные точки. Замените {deploymentId}
на идентификатор развертывания для модели нейронных голосов.
Область/регион | Обучение | Развертывание | Конечная точка |
---|---|---|---|
Восточная Австралия | Да | Да | https://australiaeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Южная Бразилия | No | Да | https://brazilsouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центральная Канада | No | Да | https://canadacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центральная часть США | No | Да | https://centralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Восточная Азия | No | Да | https://eastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Восточная часть США | Да | Да | https://eastus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Восточная часть США 2 | Да | Да | https://eastus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центральная Франция | No | Да | https://francecentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центрально-Западная Германия | No | Да | https://germanywestcentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центральная Индия | Да | Да | https://centralindia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Восточная Япония | Да | Да | https://japaneast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Западная Япония | No | Да | https://japanwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Западная Индия Jio | No | Да | https://jioindiawest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Республика Корея, центральный регион | Да | Да | https://koreacentral.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центрально-северная часть США | No | Да | https://northcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Северная Европа | Да | Да | https://northeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Восточная Норвегия; | No | Да | https://norwayeast.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Северная часть ЮАР | No | Да | https://southafricanorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центрально-южная часть США | Да | Да | https://southcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Юго-Восточная Азия | Да | Да | https://southeastasia.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Северная Швейцария | No | Да | https://switzerlandnorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Западная Швейцария | No | Да | https://switzerlandwest.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Северная часть ОАЭ; | No | Да | https://uaenorth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
южная часть Соединенного Королевства | Да | Да | https://uksouth.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Центрально-западная часть США | No | Да | https://westcentralus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Западная Европа | Да | Да | https://westeurope.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
западная часть США | Да | Да | https://westus.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
западная часть США 2 | Да | Да | https://westus2.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Западная часть США — 3 | No | Да | https://westus3.voice.speech.microsoft.com/cognitiveservices/v1?deploymentId={deploymentId} |
Примечание.
Предыдущие регионы доступны для размещения модели нейронной речи и синтеза в режиме реального времени. Обучение пользовательских нейронных голосов доступно только в некоторых регионах. Однако пользователи могут легко скопировать модель нейронной речи из этих регионов в другие регионы в приведенном выше списке.
API длинного звука
API длинных аудиоматериалов доступен в нескольких регионах с уникальными конечными точками.
Область/регион | Конечная точка |
---|---|
Восточная Австралия | https://australiaeast.customvoice.api.speech.microsoft.com |
Восточная часть США | https://eastus.customvoice.api.speech.microsoft.com |
Центральная Индия | https://centralindia.customvoice.api.speech.microsoft.com |
Центрально-южная часть США | https://southcentralus.customvoice.api.speech.microsoft.com |
Юго-Восточная Азия | https://southeastasia.customvoice.api.speech.microsoft.com |
южная часть Соединенного Королевства | https://uksouth.customvoice.api.speech.microsoft.com |
Западная Европа | https://westeurope.customvoice.api.speech.microsoft.com |
Заголовки запросов
В этой таблице перечислены обязательные и необязательные заголовки для текстовых запросов речи:
Верхний колонтитул | Description | Обязательно или необязательно |
---|---|---|
Authorization |
Маркеру авторизации предшествует слово Bearer . Дополнительные сведения см. в разделе Authenticate to the Speech API (Аутентификация в API речи). |
Обязательное поле |
Content-Type |
Указывает тип контента для предоставленного текста. Допустимое значение: application/ssml+xml . |
Обязательное поле |
X-Microsoft-OutputFormat |
Указывает формат аудиосигнала. Полный список допустимых значений см. в разделе Аудиосигналы. | Обязательное поле |
User-Agent |
Имя приложения. Указанное значение должно содержать менее 255 символов. | Обязательное поле |
Текст запроса
Если применяется пользовательская нейронная модель речи, основной текст запроса можно отправить в формате обычного текста (ASCII или UTF-8). В противном случае текст каждого запроса POST
отправляется как SSML. SSML позволяет выбрать голос и язык синтезируемой речи, возвращаемой функцией преобразования текста в речь. Полный список поддерживаемых голосов см. в разделе Поддержка языков и голосов в службе "Речь".
Образец запроса
В этом HTTP-запросе используется SSML для указания голоса и языка. Если длина текста слишком велика и длительность полученной аудиодорожки превышает 10 минут, она усекается до 10 минут. Иными словами, длина аудиодорожки не может превышать 10 минут.
POST /cognitiveservices/v1 HTTP/1.1
X-Microsoft-OutputFormat: riff-24khz-16bit-mono-pcm
Content-Type: application/ssml+xml
Host: westus.tts.speech.microsoft.com
Content-Length: <Length>
Authorization: Bearer [Base64 access_token]
User-Agent: <Your application name>
<speak version='1.0' xml:lang='en-US'><voice xml:lang='en-US' xml:gender='Male'
name='en-US-ChristopherNeural'>
I'm excited to try text to speech!
</voice></speak>
* Для Content-Length следует использовать собственную длину содержимого. В большинстве случаев это значение вычисляется автоматически.
Коды состояния HTTP
Код состояния HTTP для каждого ответа указывает на успешное выполнение или возникновение распространенных ошибок.
Код состояния HTTP | Description | Возможная причина |
---|---|---|
200 | OK | Запрос выполнен успешно. Текст ответа представляет собой аудиофайл. |
400 | Недопустимый запрос | Обязательный параметр отсутствует, пустой или его значение равно нулю. Или переданное либо обязательному, либо необязательному параметру значение является недопустимым. Часто это связано с тем, что заголовок слишком длинный. |
401 | Не авторизовано | Запрос не авторизован. Убедитесь, что ключ ресурса службы "Речь" или токен действителен и в правильном регионе. |
415 | Неподдерживаемый тип мультимедиа | Возможно, указано неверное значение Content-Type . Для Content-Type необходимо задать application/ssml+xml . |
429 | Слишком много запросов | Превышена квота или скорость запросов, разрешенных для ресурса. |
502 | Недопустимый шлюз | Существует проблема с сетью или на стороне сервера. Это состояние может также указывать на недопустимые заголовки. |
Если состояние HTTP — 200 OK
, текст ответа содержит звуковой файл в затребованном формате. Этот файл можно воспроизводить при передаче, сохранении в буфер или сохранении в файл.
Аудиосигналы
Поддерживаемые форматы потоковой передачи и непотоковых звуковых форматов отправляются в каждом запросе в качестве заголовка X-Microsoft-OutputFormat
. Каждый формат включает значение скорости и типа кодирования. Служба "Речь" поддерживает выходные аудиоданные с частотой дискретизации 48, 24, 16 и 8 кГц. Каждая предварительно созданная нейронная голосовая модель доступна в 24 кбГц и высокой точности 48kГц.
amr-wb-16000hz
audio-16khz-16bit-32kbps-mono-opus
audio-16khz-32kbitrate-mono-mp3
audio-16khz-64kbitrate-mono-mp3
audio-16khz-128kbitrate-mono-mp3
audio-24khz-16bit-24kbps-mono-opus
audio-24khz-16bit-48kbps-mono-opus
audio-24khz-48kbitrate-mono-mp3
audio-24khz-96kbitrate-mono-mp3
audio-24khz-160kbitrate-mono-mp3
audio-48khz-96kbitrate-mono-mp3
audio-48khz-192kbitrate-mono-mp3
ogg-16khz-16bit-mono-opus
ogg-24khz-16bit-mono-opus
ogg-48khz-16bit-mono-opus
raw-8khz-8bit-mono-alaw
raw-8khz-8bit-mono-mulaw
raw-8khz-16bit-mono-pcm
raw-16khz-16bit-mono-pcm
raw-16khz-16bit-mono-truesilk
raw-22050hz-16bit-mono-pcm
raw-24khz-16bit-mono-pcm
raw-24khz-16bit-mono-truesilk
raw-44100hz-16bit-mono-pcm
raw-48khz-16bit-mono-pcm
webm-16khz-16bit-mono-opus
webm-24khz-16bit-24kbps-mono-opus
webm-24khz-16bit-mono-opus
Примечание.
Если выбрать формат выходных данных 48kHz, модель голосовой связи с высокой точностью с 48kГц будет вызываться соответствующим образом. Частоты выборки, отличные от 24 кГц и 48kГц, можно получить путем повышения или уменьшения скорости при синтезе, например, 44,1 кГц сокращается с 48 кГц.
Если у выбранного голоса и формата вывода будет разная скорость передачи звука, то при необходимости звук будет обработан повторно. Формат ogg-24khz-16bit-mono-opus
можно декодировать с помощью кодека Opus.
Проверка подлинности
Для каждого запроса требуется заголовок авторизации. В этой таблице показано, какие заголовки поддерживаются для каждого компонента.
Поддерживаемые заголовки авторизации | Преобразование речи в текст | Преобразование текста в речь |
---|---|---|
Ocp-Apim-Subscription-Key |
Да | Да |
Authorization: Bearer |
Да | Да |
При использовании заголовка Ocp-Apim-Subscription-Key
необходимо указать только ключ ресурса. Например:
'Ocp-Apim-Subscription-Key': 'YOUR_SUBSCRIPTION_KEY'
При использовании заголовка Authorization: Bearer
необходимо выполнить запрос к конечной точке issueToken
. В этом запросе вы обменяете ключом ресурса для маркера доступа, допустимого в течение 10 минут.
Другой вариант — использовать проверку подлинности Microsoft Entra, которая также использует Authorization: Bearer
заголовок, но с маркером, выданным с помощью идентификатора Microsoft Entra. См. статью "Использование проверки подлинности Microsoft Entra".
Как получить маркер доступа
Чтобы получить маркер доступа, необходимо запросить issueToken
конечную точку с помощью Ocp-Apim-Subscription-Key
ключа ресурса.
Конечная точка issueToken
имеет следующий формат:
https://<REGION_IDENTIFIER>.api.cognitive.microsoft.com/sts/v1.0/issueToken
Замените <REGION_IDENTIFIER>
идентификатором, соответствующим региону подписки.
Используйте эти примеры, чтобы создать запрос на получение маркера доступа.
Пример HTTP
Это простой HTTP-запрос для получения маркера. Замените YOUR_SUBSCRIPTION_KEY
ключом ресурса для службы "Речь". Если ваша подписка не находится в регионе "Западная часть США", замените заголовок Host
на имя узла в вашем регионе.
POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY
Host: eastus.api.cognitive.microsoft.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0
Тело ответа содержит маркер доступа в формате JSON Web Token (JWT).
Пример для PowerShell
Это простой сценарий PowerShell для получения маркера доступа. Замените YOUR_SUBSCRIPTION_KEY
ключом ресурса для службы "Речь". Обязательно используйте правильную конечную точку для региона, который соответствует вашей подписке. В этом примере используется конечная точка для западной части США.
$FetchTokenHeader = @{
'Content-type'='application/x-www-form-urlencoded';
'Content-Length'= '0';
'Ocp-Apim-Subscription-Key' = 'YOUR_SUBSCRIPTION_KEY'
}
$OAuthToken = Invoke-RestMethod -Method POST -Uri https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken
-Headers $FetchTokenHeader
# show the token received
$OAuthToken
Пример cURL
cURL — это программа командной строки, доступная в Linux (и в подсистеме Windows для Linux). Эта команда cURL показывает, как получить маркер доступа. Замените YOUR_SUBSCRIPTION_KEY
ключом ресурса для службы "Речь". Обязательно используйте правильную конечную точку для региона, который соответствует вашей подписке. В этом примере используется конечная точка для западной части США.
curl -v -X POST \
"https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken" \
-H "Content-type: application/x-www-form-urlencoded" \
-H "Content-Length: 0" \
-H "Ocp-Apim-Subscription-Key: YOUR_SUBSCRIPTION_KEY"
Пример на языке C#
Этот класс C# показывает, как получить маркер доступа. Передайте ключ ресурса для службы "Речь" при создании экземпляра класса. Если регион вашей подписки — не западная часть США, измените значение FetchTokenUri
в соответствии с регионом своей подписки.
public class Authentication
{
public static readonly string FetchTokenUri =
"https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken";
private string subscriptionKey;
private string token;
public Authentication(string subscriptionKey)
{
this.subscriptionKey = subscriptionKey;
this.token = FetchTokenAsync(FetchTokenUri, subscriptionKey).Result;
}
public string GetAccessToken()
{
return this.token;
}
private async Task<string> FetchTokenAsync(string fetchUri, string subscriptionKey)
{
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
UriBuilder uriBuilder = new UriBuilder(fetchUri);
var result = await client.PostAsync(uriBuilder.Uri.AbsoluteUri, null);
Console.WriteLine("Token Uri: {0}", uriBuilder.Uri.AbsoluteUri);
return await result.Content.ReadAsStringAsync();
}
}
}
Пример для Python
# Request module must be installed.
# Run pip install requests if necessary.
import requests
subscription_key = 'REPLACE_WITH_YOUR_KEY'
def get_token(subscription_key):
fetch_token_url = 'https://eastus.api.cognitive.microsoft.com/sts/v1.0/issueToken'
headers = {
'Ocp-Apim-Subscription-Key': subscription_key
}
response = requests.post(fetch_token_url, headers=headers)
access_token = str(response.text)
print(access_token)
Как использовать маркер доступа
Маркер доступа должен отправляться в службу в виде заголовка Authorization: Bearer <TOKEN>
. Каждый маркер доступа действителен в течение 10 минут. Вы можете получить новый маркер в любое время, но, чтобы уменьшить сетевой трафик и задержку, мы рекомендуем использовать один маркер в течение девяти минут.
Ниже приведен пример HTTP-запроса к API преобразования речи в текст REST API для короткого звука:
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
Использование проверки подлинности Microsoft Entra
Чтобы использовать проверку подлинности Microsoft Entra с помощью REST API преобразования речи в текст для короткого звука, необходимо создать маркер доступа. Действия по получению маркера доступа, состоящего из идентификатора ресурса и маркера доступа Microsoft Entra, совпадают с тем, что и при использовании пакета SDK службы "Речь". Выполните действия, описанные здесь , используйте проверку подлинности Microsoft Entra
- создавать ресурс службы "Речь";
- Настройка ресурса службы "Речь" для проверки подлинности Microsoft Entra
- Получение маркера доступа Microsoft Entra
- Получение идентификатора ресурса службы "Речь"
После получения идентификатора ресурса и маркера доступа Microsoft Entra фактический маркер доступа можно создать в следующем формате:
aad#YOUR_RESOURCE_ID#YOUR_MICROSOFT_ENTRA_ACCESS_TOKEN
Необходимо включить префикс "aad#" и разделитель "#" (хэш) между идентификатором ресурса и маркером доступа.
Ниже приведен пример HTTP-запроса к API преобразования речи в текст REST API для короткого звука:
POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: westus.stt.speech.microsoft.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive
// Message body here...
Дополнительные сведения о маркерах доступа Microsoft Entra, включая время существования маркеров, посетите маркеры доступа в платформа удостоверений Майкрософт.