Используйте REST API для преобразования речи в текст для коротких аудиозаписей.

Используйте REST API преобразования речи в текст для короткого звука только когда вы не можете использовать SDK для распознавания речи или API быстрого транскрибирования.

Прежде чем использовать REST API преобразования речи в текст для короткого звука, рассмотрите следующие ограничения:

  • Запросы, использующие REST API для короткого звука и передачи звука, могут содержать не более 60 секунд звука. Для оценки произношения продолжительность звука не должна превышать 30 секунд. Входные форматы звука являются более ограниченными по сравнению с пакетом SDK службы "Речь".
  • REST API для короткого звука возвращает только окончательные результаты. Он не предоставляет частичные результаты.
  • Перевод речи не поддерживается через REST API для короткого звука. Необходимо использовать Speech SDK.
  • Пакетное транскрибирование и настраиваемая речь не поддерживаются через REST API для короткого звука. Для пакетного транскрибирования и пользовательской речи всегда следует использовать REST API преобразования речи в текст.

Прежде чем использовать REST API распознавания речи для коротких аудиофайлов, необходимо выполнить обмен токенами в рамках аутентификации для доступа к службе. Дополнительные сведения см. в разделе "Проверка подлинности".

Регионы и конечные точки

Конечная точка REST API для короткого звука имеет следующий формат:

https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1

Замените YourResourceName именем вашего ресурса Speech.

Примечание

Сведения о Azure для государственных организаций и Microsoft Azure, конечных точках, управляемых компанией 21Vianet, см. в статье о суверенных облаках.

Форматы звука

Звук отправляется в тексте HTTP-запроса POST . Он должен находиться в одном из форматов в этой таблице:

Формат Кодек Скорость передачи битов Частота выборки
WAV PCM 256 кб/с 16 кГц, моно
OGG OPUS 256 кб/с 16 кГц, моно

Примечание

Следующие форматы поддерживаются через REST API для короткого аудио и WebSockets в службе распознавания речи. Пакет SDK службы "Речь" поддерживает формат WAV с кодеком PCM, а также другими форматами.

Заголовки запросов

В этой таблице перечислены обязательные и необязательные заголовки для преобразования речи в текстовые запросы:

Заголовка Описание Обязательный или необязательный
Ocp-Apim-Subscription-Key Ключ ресурса для службы "Речь". Этот заголовок или Authorization обязательный.
Authorization Маркер авторизации, предшествующий слову Bearer. Дополнительные сведения см. в разделе "Проверка подлинности". Этот заголовок или Ocp-Apim-Subscription-Key обязательный.
Pronunciation-Assessment Задает параметры для отображения показателей произношения в результатах распознавания. Эти оценки оценивают качество произношения входных данных речи с такими индикаторами, как точность, беглость и полнота.

Этот параметр представляет собой JSON в кодировке Base64, содержащий несколько подробных параметров. Сведения о создании этого заголовка см. в разделе "Параметры оценки произношения".
Необязательный
Content-type Описывает формат и кодек предоставленных звуковых данных. Допустимые значения: audio/wav; codecs=audio/pcm; samplerate=16000 и audio/ogg; codecs=opus. Обязательно
Transfer-Encoding Указывает, что отправляются звуковые данные, разбитые на части, а не один файл. Используйте этот заголовок, только если вы блокируете аудиоданные. Необязательный
Expect Если вы используете фрагментированную передачу, отправьте сообщение Expect: 100-continue. Служба распознавания речи подтверждает первоначальный запрос и ожидает дополнительных данных. Требуется, если вы отправляете порционированные звуковые данные.
Accept Если это указано, оно должно быть application/json. Служба "Речь" предоставляет результаты в формате JSON. Некоторые платформы запросов предоставляют несовместимое значение по умолчанию. Рекомендуется всегда включать Accept. Необязательно, но рекомендуется.

Параметры запроса

Эти параметры могут быть включены в строку запроса REST- запроса.

Примечание

Чтобы избежать получения ошибки HTTP 4xx, необходимо добавить параметр языка к URL-адресу. Например, язык, заданный для английского языка США, имеет следующий формат: https://YourResourceName.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US

Параметр Описание Обязательный или необязательный
language Идентифицирует распознаваемый язык. См. раздел "Поддерживаемые языки". Обязательно
format Задает формат результата. Допустимые значения: simple и detailed. Простые результаты включают RecognitionStatus, DisplayTextи OffsetDuration. Подробные ответы включают четыре различных представления отображаемого текста. Значение по умолчанию — simple. Необязательный
profanity Указывает способ обработки ненормативной лексики в результатах распознавания. Допустимые значения:

masked, который заменяет ненормативность звездочками.
removed, который удаляет всю ненормативную лексику из текста.
raw, который включает ненормативную лексику в результатах.

Значение по умолчанию — masked.
Необязательный

Параметры оценки произношения

В этой таблице перечислены обязательные и необязательные параметры для оценки произношения:

Параметр Описание Обязательный или необязательный
ReferenceText Текст, по которому оценивается произношение. Обязательно
GradingSystem Система точек для калибровки показателей. Система FivePoint дает оценку с плавающей запятой 0-5 и HundredMark дает оценку с плавающей запятой 0-100. По умолчанию: FivePoint. Необязательный
Granularity Степень детализации оценки. Допустимые значения:

Phoneme, который показывает оценку на уровнях полнотекстового текста, слова и фонемы.
Word, который показывает оценку на полнотекстовых и word уровнях.
FullText, который показывает оценку только на полнотекстовом уровне.

Значение по умолчанию — Phoneme.
Необязательный
Dimension Определяет критерии вывода. Допустимые значения:

Basic, который показывает только оценку точности.
Comprehensive, который показывает оценки по дополнительным измерениям (например, оценка беглости и полноты на полнотекстовом уровне, а также тип ошибки на уровне слова).

Чтобы просмотреть определения различных измерений оценок и видов ошибок слова, см. раздел "Свойства ответа". Значение по умолчанию — Basic.
Необязательный
EnableMiscue Включает расчёт отклонений. Если этот параметр включен, то выраженные слова сравниваются с ссылочным текстом. Они отмечены упущением или вставкой на основе сравнения. Допустимые значения: False и True. Значение по умолчанию — False. Необязательный
EnableProsodyAssessment Позволяет осуществлять оценку просодии для оценки вашего произношения. Эта функция оценивает такие аспекты, как стресс, интонация, скорость речи и ритм. Эта функция предоставляет аналитические сведения о естественности и экспрессивности вашей речи.

Если для этого свойства задано значение True, возвращается значение результата ProsodyScore.
Необязательный
ScenarioId GUID, указывающий настраиваемую систему точек. Необязательный

Ниже приведен пример JSON, содержащий параметры оценки произношения:

{
  "ReferenceText": "Good morning.",
  "GradingSystem": "HundredMark",
  "Granularity": "Word",
  "Dimension": "Comprehensive",
  "EnableProsodyAssessment": "True"
}

В следующем примере кода показано, как создать параметры оценки произношения в заголовке Pronunciation-Assessment :

var pronAssessmentParamsJson = $"{{\"ReferenceText\":\"Good morning.\",\"GradingSystem\":\"HundredMark\",\"Granularity\":\"Word\",\"Dimension\":\"Comprehensive\",\"EnableProsodyAssessment\":\"True\"}}";
var pronAssessmentParamsBytes = Encoding.UTF8.GetBytes(pronAssessmentParamsJson);
var pronAssessmentHeader = Convert.ToBase64String(pronAssessmentParamsBytes);

Настоятельно рекомендуется передавать потоковую передачу (фрагментированную передачу) во время публикации звуковых данных, что может значительно снизить задержку. См. пример кода на различных языках программирования, чтобы узнать, как включить потоковую передачу.

Примечание

Дополнительные сведения см. в оценке произношения.

Пример запроса

В следующем примере содержатся имя узла и обязательные заголовки. Важно отметить, что служба также ожидает звуковые данные, которые не включены в этот пример. Как упоминалось ранее, использование чанкинга рекомендуется, но не является обязательным.

POST speech/recognition/conversation/cognitiveservices/v1?language=en-US&format=detailed HTTP/1.1
Accept: application/json;text/xml
Content-Type: audio/wav; codecs=audio/pcm; samplerate=16000
Ocp-Apim-Subscription-Key: YOUR_RESOURCE_KEY
Host: YourResourceName.cognitiveservices.azure.com
Transfer-Encoding: chunked
Expect: 100-continue

Чтобы включить оценку произношения, можно добавить следующий заголовок. Сведения о создании этого заголовка см. в разделе "Параметры оценки произношения".

Pronunciation-Assessment: eyJSZWZlcm...

Коды состояния HTTP

Код состояния HTTP для каждого ответа указывает на успешность или распространенные ошибки.

Код состояния HTTP Описание Возможные причины
100 Продолжить Первоначальный запрос принимается. Перейдите к отправке остальных данных. (Этот код используется для потоковой передачи данных с разбиением на части.)
200 ХОРОШО Запрос выполнен успешно. Текст ответа — это объект JSON.
400 Недопустимый запрос Код языка не был указан, язык не поддерживается или звуковой файл недопустим (например).
401 Несанкционированный Ключ ресурса или маркер авторизации недопустим в указанном регионе или конечная точка является недопустимой.
403 Запрещено Отсутствует ключ ресурса или маркер авторизации.

Примеры ответов

Ниже приведен типичный ответ на simple распознавание:

{
  "RecognitionStatus": "Success",
  "DisplayText": "Remind me to buy 5 pencils.",
  "Offset": "1236645672289",
  "Duration": "1236645672289"
}

Ниже приведен типичный ответ на detailed распознавание:

{
  "RecognitionStatus": "Success",
  "Offset": "1236645672289",
  "Duration": "1236645672289",
  "NBest": [
    {
      "Confidence": 0.9052885,
      "Display": "What's the weather like?",
      "ITN": "what's the weather like",
      "Lexical": "what's the weather like",
      "MaskedITN": "what's the weather like"
    },
    {
      "Confidence": 0.92459863,
      "Display": "what is the weather like",
      "ITN": "what is the weather like",
      "Lexical": "what is the weather like",
      "MaskedITN": "what is the weather like"
    }
  ]
}

Ниже приведен типичный ответ на распознавание с помощью оценки произношения:

{
  "RecognitionStatus": "Success",
  "Offset": 700000,
  "Duration": 8400000,
  "DisplayText": "Good morning.",
  "SNR": 38.76819,
  "NBest": [
    {
      "Confidence": 0.98503506,
      "Lexical": "good morning",
      "ITN": "good morning",
      "MaskedITN": "good morning",
      "Display": "Good morning.",
      "AccuracyScore": 100.0,
      "FluencyScore": 100.0,
      "ProsodyScore": 87.8,
      "CompletenessScore": 100.0,
      "PronScore": 95.1,
      "Words": [
        {
          "Word": "good",
          "Offset": 700000,
          "Duration": 2600000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        },
        {
          "Word": "morning",
          "Offset": 3400000,
          "Duration": 5700000,
          "Confidence": 0.0,
          "AccuracyScore": 100.0,
          "ErrorType": "None",
          "Feedback": {
            "Prosody": {
              "Break": {
                "ErrorTypes": [
                  "None"
                ],
                "UnexpectedBreak": {
                  "Confidence": 3.5294118e-08
                },
                "MissingBreak": {
                  "Confidence": 1.0
                },
                "BreakLength": 0
              },
              "Intonation": {
                "ErrorTypes": [],
                "Monotone": {
                  "Confidence": 0.0,
                  "WordPitchSlopeConfidence": 0.0,
                  "SyllablePitchDeltaConfidence": 0.91385907
                }
              }
            }
          }
        }
      ]
    }
  ]
}

Свойства ответа

Результаты предоставляются в формате JSON. Формат simple включает следующие поля верхнего уровня:

Свойство Описание
RecognitionStatus Статус, например Success для успешного распознавания. См. следующую таблицу.
DisplayText Распознанный текст после капитализации, расстановки знаков препинания, инверсной нормализации текста и маскирования ненормативной лексики. Присутствует только при успешном выполнении. Обратная нормализация текста — это преобразование устного текста в более короткие формы, такие как 200 для "двести" или "д-р Смит" для "доктор Смит".
Offset Время (в 100-наносекундных единицах), с которого распознанная речь начинается в звуковом потоке.
Duration Длительность (в 100-наносекундах) распознанной речи в звуковом потоке.
SNR Коэффициент сигнала к шуму (SNR) распознанной речи в звуковом потоке.

Поле RecognitionStatus может содержать следующие значения:

Статус Описание
Success Распознавание прошло успешно, и DisplayText поле присутствует.
NoMatch Речь была обнаружена в звуковом потоке, но ни слова из целевого языка не были сопоставлены. Это состояние обычно означает, что язык распознавания отличается от языка, который говорит пользователь.
InitialSilenceTimeout Начало аудиопотока содержало только тишину, и время ожидания истекло во время ожидания начала речи.
BabbleTimeout Начало аудиопотока содержало только шум, и работа службы была прервана в ожидании речи.
Error Служба распознавания столкнулась с внутренней ошибкой и не могла продолжиться. Повторите попытку, если это возможно.

Примечание

Если звук состоит только из ненормативной лексики, а profanity параметр запроса имеет removeзначение, служба не возвращает результат речи.

Формат detailed содержит больше форм распознанных результатов. При использовании формата detailed, DisplayText предоставляется как Display для каждого результата в списке NBest.

Объект в списке NBest может включать:

Свойство Описание
Confidence Оценка достоверности записи с 0,0 (нет уверенности) до 1,0 (полная уверенность).
Lexical Лексическая форма распознанного текста: фактические слова, распознанные.
ITN Инвертированная текстовая нормализация (ITN) или каноническая форма распознанного текста, с номерами телефонов, числами, аббревиатурами (например, "доктор смит" до "дp смит") и другими преобразованиями.
MaskedITN Форма ITN с маскированием ненормативной лексики, примененная по запросу.
Display Отображаемая форма распознанного текста с добавленными знаками препинания и заглавной буквы. Этот параметр совпадает с тем, что предоставляет DisplayText, при установке формата simple.
AccuracyScore Точность произношения речи. Точность указывает, насколько тесно фонемы соответствуют произношению носителя языка. Оценка точности на уровне слова и полнотекстовых уровней агрегируется из оценки точности на уровне фонемы.
FluencyScore Беглость предоставленной речи. Плавность речи указывает на то, насколько ближе её использование к тому, как носители языка делают паузы между словами.
ProsodyScore Просодия данной речи. Prosody указывает, насколько естественно данное речь, включая стресс, интонацию, скорость речи и ритм.

Сведения о определениях результатов оценки просодии см. в разделе "Параметры результата".
CompletenessScore Полнота речи, определяемая вычислением соотношения произнесенных слов к словам в эталонном тексте.
PronScore Общая оценка, указывающая качество произношения предоставленной речи. Эта оценка агрегируется из AccuracyScore, FluencyScore и CompletenessScore, учитывая вес.
ErrorType Значение, указывающее, опущено ли слово, вставлено или неправильно произнесено по сравнению с ReferenceText. Возможные значения: None (что означает отсутствие ошибки в этом слове), Omission, Insertion и Mispronunciation.

Фрагментированные передачи

Фрагментированные передачи (Transfer-Encoding: chunked) могут помочь уменьшить задержку распознавания. Она позволяет службе "Речь" начать обработку звукового файла во время передачи. REST API для короткого звука не предоставляет частичные или промежуточные результаты.

В следующем примере кода показано, как отправлять звук в блоках. Только первый блок должен содержать заголовок звукового файла. request — это объект, подключенный HttpWebRequest к соответствующей конечной точке REST. audioFile — это путь к звуковому файлу на диске.

var request = (HttpWebRequest)HttpWebRequest.Create(requestUri);
request.SendChunked = true;
request.Accept = @"application/json;text/xml";
request.Method = "POST";
request.ProtocolVersion = HttpVersion.Version11;
request.Host = host;
request.ContentType = @"audio/wav; codecs=audio/pcm; samplerate=16000";
request.Headers["Ocp-Apim-Subscription-Key"] = "YOUR_RESOURCE_KEY";
request.AllowWriteStreamBuffering = false;

using (var fs = new FileStream(audioFile, FileMode.Open, FileAccess.Read))
{
    // Open a request stream and write 1,024-byte chunks in the stream one at a time.
    byte[] buffer = null;
    int bytesRead = 0;
    using (var requestStream = request.GetRequestStream())
    {
        // Read 1,024 raw bytes from the input audio file.
        buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
        while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
        {
            requestStream.Write(buffer, 0, bytesRead);
        }

        requestStream.Flush();
    }
}

Проверки подлинности

Для каждого запроса требуется заголовок авторизации. В этой таблице показано, какие заголовки поддерживаются для каждой функции:

Поддерживаемый заголовок авторизации Речь в текст Преобразование текста в речь
Ocp-Apim-Subscription-Key Да Да
Authorization: Bearer Да Да

При использовании заголовка Ocp-Apim-Subscription-Key необходимо указать только ключ ресурса. Например:

'Ocp-Apim-Subscription-Key': 'YourSpeechResourceKey'

Если вы используете поток токена-носителя STS с Authorization: Bearer, сначала отправьте запрос к конечной точке issueToken. В этом запросе вы обменяете ключ ресурса на токен доступа, действительный в течение 10 минут.

Другим вариантом является использование аутентификации Microsoft Entra, при которой также применяется заголовок Authorization: Bearer, но с токеном, выданным через Microsoft Entra ID. См. раздел Use Microsoft Entra authentication.

Как получить токен доступа STS

Чтобы получить токен доступа STS, выполните запрос к конечной точке issueToken, используя Ocp-Apim-Subscription-Key и ключ ресурса.

Конечная issueToken точка имеет следующий формат:

https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken

Замените YourResourceName именем вашего ресурса Speech.

Примечание

Для этой конечной точки требуется, чтобы для вашего ресурса был настроен пользовательский поддомен. Для ресурсов без пользовательского домена вместо этого используйте региональную конечную точку доступа: https://<region>.api.cognitive.microsoft.com/sts/v1.0/issueToken. Замените <region> регионом Azure ресурса (например, eastus).

Используйте следующие примеры, чтобы создать запрос токена доступа.

Пример HTTP

Этот пример — простой HTTP-запрос для получения токена. Замените YourSpeechResourceKey ключом ресурса для службы "Речь". Замените YourResourceName именем вашего ресурса Speech.

POST /sts/v1.0/issueToken HTTP/1.1
Ocp-Apim-Subscription-Key: YourSpeechResourceKey
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/x-www-form-urlencoded
Content-Length: 0

Текст ответа содержит маркер доступа в формате веб-маркера JSON (JWT).

Пример PowerShell

В этом примере используется простой скрипт PowerShell для получения токена доступа. Замените YourSpeechResourceKey ключом ресурса для службы "Речь". Замените YourResourceName именем вашего ресурса Speech.

$FetchTokenHeader = @{
  'Content-type'='application/x-www-form-urlencoded';
  'Content-Length'= '0';
  'Ocp-Apim-Subscription-Key' = 'YourSpeechResourceKey'
}

$OAuthToken = Invoke-RestMethod -Method POST `
    -Uri https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken `
    -Headers $FetchTokenHeader

# show the token received
$OAuthToken

Пример cURL

cURL — это средство командной строки, доступное в Linux (и в подсистема Windows для Linux). Эта команда cURL иллюстрирует получение токена доступа. Замените YourSpeechResourceKey ключом ресурса для службы "Речь". Замените YourResourceName именем вашего ресурса Speech.

curl -v -X POST \
 "https://YourResourceName.cognitiveservices.azure.com/sts/v1.0/issueToken" \
 -H "Content-type: application/x-www-form-urlencoded" \
 -H "Content-Length: 0" \
 -H "Ocp-Apim-Subscription-Key: YourSpeechResourceKey"

Пример C#

Этот класс C# демонстрирует, как получить токен доступа. Передайте ключ ресурса для службы Speech при создании экземпляра класса. Замените YourResourceName именем вашего ресурса Speech.

public class Authentication
{
    public static readonly string FetchTokenUri =
        "https://YourResourceName.cognitiveservices.azure.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://YourResourceName.cognitiveservices.azure.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 минут. Вы можете получить новый маркер в любое время, но чтобы свести к минимуму сетевой трафик и задержку, рекомендуется использовать один и тот же маркер в течение девяти минут.

Important

Токены Bearer ограничены конечной точкой, которая их выдала. Маркер, полученный от YourResourceName.cognitiveservices.azure.com, работает только для запросов к тому же хосту. Токен из <region>.api.cognitive.microsoft.com работает только с региональными конечными точками Speech. Если при использовании токена Bearer возникает ошибка 401, используйте вместо него Ocp-Apim-Subscription-Key с вашим ключом ресурса, так как этот вариант работает со всеми форматами конечных точек.

Ниже приведен пример HTTP-запроса к API преобразования речи в текст REST API для короткого звука:

POST /cognitiveservices/v1 HTTP/1.1
Authorization: Bearer YOUR_ACCESS_TOKEN
Host: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Используйте аутентификацию Microsoft Entra

Чтобы использовать проверку подлинности Microsoft Entra с помощью REST API преобразования речи в текст для короткого звука, необходимо создать маркер доступа. Действия по получению токена доступа, состоящего из идентификатора ресурса и токена доступа Microsoft Entra, такие же, как при использовании пакета SDK службы Speech. Выполните действия, описанные здесь Use Microsoft Entra authentication

  • Создать ресурс Foundry для обработки речи
  • Настройка ресурса службы речи для аутентификации в 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: YourResourceName.cognitiveservices.azure.com
Content-type: application/ssml+xml
Content-Length: 199
Connection: Keep-Alive

// Message body here...

Дополнительные сведения о токенах доступа Microsoft Entra, включая срок их действия, см. в разделе Токены доступа в платформе идентификации Microsoft.