Создание пакетного транскрибирования

С помощью пакетных транскрибирования вы отправляете звуковые данные в пакет. Служба транскрибирует звуковые данные и сохраняет результаты в контейнере хранилища. Затем можно получить результаты из контейнера хранилища.

Внимание

Новая цена действует для пакетной транскрибирования с помощью преобразования речи в текст REST API версии 3.2. Дополнительные сведения см. в руководстве по ценам.

Необходимые компоненты

  • Установленный пакет SDK службы "Речь".
  • Стандартный ресурс службы "Речь" (S0). Бесплатные ресурсы (F0) не поддерживаются.

Создание задания транскрибирования

Чтобы создать транскрибирование, используйте операцию Transcriptions_Create преобразования речи в текстовый REST API. Создайте текст запроса в соответствии со следующими инструкциями:

  • Необходимо задать либо свойство, contentUrls либо contentContainerUrl свойство. Дополнительные сведения о хранилище BLOB-объектов Azure для пакетной транскрибирования см. в статье "Поиск аудиофайлов для пакетной транскрибирования".
  • Задайте обязательное свойство locale. Это значение должно соответствовать ожидаемому языковому стандарту звуковых данных для транскрибирования. Вы не можете изменить языковой стандарт позже.
  • Задайте обязательное свойство displayName. Выберите имя транскрибирования, к которому можно ссылаться позже. Имя транскрибирования не должно быть уникальным и может быть изменено позже.
  • При необходимости для использования модели, отличной от базовой модели, задайте model для свойства идентификатор модели. Дополнительные сведения см. в разделе "Использование пользовательской модели " и "Использование модели Whisper".
  • При необходимости задайте wordLevelTimestampsEnabled свойство, чтобы true включить метки времени на уровне слова в результатах транскрибирования. Значение по умолчанию — false. Для моделей Whisper задайте displayFormWordLevelTimestampsEnabled вместо него свойство. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании.
  • При необходимости задайте languageIdentification свойство. Используется для определения языков, на которых говорят в аудиозаписях, при сравнении со списком поддерживаемых языков. Если задано languageIdentification свойство, необходимо также задать languageIdentification.candidateLocales языковые стандарты кандидатов.

Дополнительные сведения см. в разделе "Параметры конфигурации запроса".

Выполните HTTP-запрос POST, использующий URI, как показано в следующем Transcriptions_Create примере.

  • Замените YourSubscriptionKey ключом ресурса службы речи.
  • Замените YourServiceRegion регион ресурсов службы "Речь".
  • Задайте свойства текста запроса, как описано ранее.
curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -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"
      ],
    }
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"

Вы должны получить ответ в следующем формате:

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/db474955-ab85-4c6c-ba6e-3bfe63d041ba/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": true,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked",
    "languageIdentification": {
      "candidateLocales": [
        "en-US",
        "de-DE",
        "es-ES"
      ]
    }
  },
  "lastActionDateTime": "2022-10-21T14:18:06Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:18:06Z",
  "locale": "en-US",
  "displayName": "My Transcription"
}

Свойство верхнего уровня self в тексте ответа — это универсальный код ресурса (URI) транскрибирования. Используйте этот универсальный код ресурса (URI) для получения сведений, таких как URI файлов транскрибирования и отчетов транскрибирования. Этот URI также используется для обновления или удаления транскрибирования.

Вы можете запросить состояние транскрибирования с помощью операции Transcriptions_Get .

Регулярно вызывайте Transcriptions_Delete из службы после получения результатов. Кроме того, можно задать свойство timeToLive, чтобы обеспечить постепенное удаление результатов.

Чтобы создать транскрибирование, используйте spx batch transcription create команду. Создайте параметры запроса в соответствии со следующими инструкциями:

  • Задайте обязательный параметр content. Вы можете указать список отдельных файлов с разделителями с запятой или URL-адрес для всего контейнера. Дополнительные сведения о хранилище BLOB-объектов Azure для пакетной транскрибирования см. в статье "Поиск аудиофайлов для пакетной транскрибирования".
  • Задайте обязательное свойство language. Это значение должно соответствовать ожидаемому языковому стандарту звуковых данных для транскрибирования. Вы не можете изменить языковой стандарт позже. Параметр language интерфейса командной строки речевой службы соответствует свойству locale в запросе и ответе JSON.
  • Задайте обязательное свойство name. Выберите имя транскрибирования, к которому можно ссылаться позже. Имя транскрибирования не должно быть уникальным и может быть изменено позже. Параметр name интерфейса командной строки речевой службы соответствует свойству displayName в запросе и ответе JSON.

Ниже приведен пример команды ИНТЕРФЕЙСА командной строки службы "Речь", которая создает задание транскрибирования:

spx batch transcription create --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.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/base/13fb305e-09ad-4bce-b3a1-938c9124dda3"
  },
  "links": {
    "files": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions/7f4232d5-9873-47a7-a6f7-4a3f00d00dc0/files"
  },
  "properties": {
    "diarizationEnabled": false,
    "wordLevelTimestampsEnabled": false,
    "channels": [
      0,
      1
    ],
    "punctuationMode": "DictatedAndAutomatic",
    "profanityFilterMode": "Masked"
  },
  "lastActionDateTime": "2022-10-21T14:21:59Z",
  "status": "NotStarted",
  "createdDateTime": "2022-10-21T14:21:59Z",
  "locale": "en-US",
  "displayName": "My Transcription",
  "description": ""
}

Свойство верхнего уровня self в тексте ответа — это универсальный код ресурса (URI) транскрибирования. Используйте этот универсальный код ресурса (URI) для получения сведений, таких как URI файлов транскрибирования и отчетов транскрибирования. Этот URI также используется для обновления или удаления транскрибирования.

Для справки по интерфейсу командной строки службы "Речь" для транскрибирования выполните следующую команду:

spx help batch transcription

Параметры конфигурации запроса

Ниже приведены некоторые параметры свойств, которые можно использовать для настройки транскрибирования при вызове операции Transcriptions_Create .

Свойство Description
channels Массив номеров каналов для обработки. Каналы 0 и 1 по умолчанию транскрибируются.
contentContainerUrl Вы можете отправлять отдельные звуковые файлы или целый контейнер хранилища.

Необходимо указать расположение звуковых данных с помощью contentContainerUrl свойства или contentUrls свойства. Дополнительные сведения о хранилище BLOB-объектов Azure для пакетной транскрибирования см. в статье "Поиск аудиофайлов для пакетной транскрибирования".

Это свойство не возвращается в ответе.
contentUrls Вы можете отправлять отдельные звуковые файлы или целый контейнер хранилища.

Необходимо указать расположение звуковых данных с помощью contentContainerUrl свойства или contentUrls свойства. Дополнительные сведения см. в разделе "Поиск аудиофайлов для пакетной транскрибирования".

Это свойство не возвращается в ответе.
destinationContainerUrl Результат может храниться в контейнере Azure. Если контейнер не указан, служба "Речь" сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. При удалении задания транскрибирования данные результатов транскрибирования также удаляются. Дополнительные сведения, такие как поддерживаемые сценарии безопасности, см. в разделе "Указание URL-адреса целевого контейнера".
diarization Указывает, что служба "Речь" должна пытаться выполнить анализ диаризации входных данных, который, как ожидается, будет монокананом, который содержит несколько голосов. Эта функция недоступна с стереозаписями.

Диаризация — это процесс разделения динамиков в звуковых данных. Пакетный конвейер может распознавать и разделять несколько динамиков на записях моноканала.

Укажите минимальное и максимальное количество людей, которые могут выступать. Необходимо также задать diarizationEnabled для trueсвойства значение . Файл транскрибирования содержит запись для каждой speaker транскрибированного фразы.

Это свойство необходимо использовать при ожидании трех или более динамиков. Для двух динамиков достаточно задать diarizationEnabled свойство true . Пример использования свойства см. в Transcriptions_Create.

Максимальное количество динамиков для диаризации должно быть меньше 36 и более или равно свойству minSpeakers . Пример см. в разделе Transcriptions_Create.

Если это свойство выбрано, длина исходного звука не может превышать 240 минут на файл.

Примечание. Это свойство доступно только для преобразования речи в текст REST API версии 3.1 и более поздних версий. Если задать это свойство с любой предыдущей версией, например версией 3.0, она игнорируется и идентифицируются только два докладчика.
diarizationEnabled Указывает, что служба "Речь" должна пытаться выполнить анализ диаризации входных данных, который, как ожидается, будет монокананом, который содержит два голоса. Значение по умолчанию — false.

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

Если это свойство выбрано, длина исходного звука не может превышать 240 минут на файл.
displayName Имя пакетного транскрибирования. Выберите имя, на которое можно ссылаться позже. Отображаемое имя не должно быть уникальным.

Это обязательное свойство.
displayFormWordLevelTimestampsEnabled Указывает, следует ли включать метки времени уровня слова в отображаемую форму результатов транскрибирования. Результаты возвращаются в displayWords свойстве файла транскрибирования. Значение по умолчанию — false.

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

Если задано languageIdentification свойство, необходимо также задать его закрытое candidateLocales свойство.
languageIdentification.candidateLocales Кандидаты локали для идентификации языка, например "properties": { "languageIdentification": { "candidateLocales": ["en-US", "de-DE", "es-ES"]}}. Поддерживается не менее двух и не более десяти языков-кандидатов, включая основной языковой стандарт для транскрибирования.
locale Языковой стандарт пакетной транскрибирования. Это значение должно соответствовать ожидаемому языковому стандарту звуковых данных для транскрибирования. Языковой стандарт нельзя будет изменить позже.

Это обязательное свойство.
model Свойство можно задать model для использования конкретной базовой модели или пользовательской модели речи . Если не указать model, будет использоваться базовая модель по умолчанию для языкового стандарта. Дополнительные сведения см. в разделе "Использование пользовательской модели " и "Использование модели Whisper".
profanityFilterMode Указывает, как обрабатывать ненормативную лексику в результатах распознавания. Допустимые значения: None — отключает фильтрацию ненормативной лексики, Masked — заменяет ненормативную лексику звездочками, Removed — удаляет всю ненормативную лексику из результата, Tags — добавляет теги, указывающие на ненормативную лексику. Значение по умолчанию — Masked.
punctuationMode Указывает, как обрабатывать знаки препинания в результатах распознавания. Допустимые значения: None — отключает пунктуацию, Dictated — указывает явный (произнесенный) знак пунктуации, Automatic — разрешает декодеру обрабатывать знаки препинания или DictatedAndAutomatic — позволяет использовать озвученную и автоматическую пунктуацию. Значение по умолчанию — DictatedAndAutomatic.

Это свойство неприменимо для моделей Whisper.
timeToLive Длительность после создания задания транскрибирования, когда результаты транскрибирования будут автоматически удалены. Значение — это длительность в кодировке ISO 8601. Например, укажите PT12H в течение 12 часов. В качестве альтернативы можно регулярно вызывать Transcriptions_Delete после получения результатов транскрибирования.
wordLevelTimestampsEnabled Указывает, следует ли включать метки времени на уровне слова в выходные данные. Значение по умолчанию — false.

Это свойство неприменимо для моделей Whisper. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании.

Для справки по интерфейсу командной строки службы "Речь" с параметрами конфигурации транскрибирования выполните следующую команду:

spx help batch transcription create advanced

Использование пользовательской модели

Пакетное транскрибирование использует базовую модель по умолчанию для указанного языкового стандарта. Вам не нужно задавать какие-либо свойства для использования базовой модели по умолчанию.

При необходимости можно изменить предыдущий пример транскрибирования, задав model свойство для использования конкретной базовой модели или пользовательской модели речи .

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -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/v3.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions"
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.1/models/base/1aae1070-7972-47e9-a977-87e3b05c457d"

Чтобы использовать пользовательскую модель речи для пакетной транскрибирования, вам потребуется универсальный код ресурса (URI) модели. Свойство верхнего уровня self в тексте ответа представляет собой URI модели. Расположение модели можно получить при создании или получении модели. Дополнительные сведения см. в примере ответа JSON в статье "Создание модели".

Совет

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

Запросы пакетного транскрибирования для моделей с истекшим сроком действия завершаются ошибкой 4xx. model Задайте для свойства базовую модель или пользовательскую модель, которая не истекла. В противном случае не указывайте свойство model, чтобы всегда использовать последнюю базовую модель. Дополнительные сведения см. в разделе "Выбор модели " и жизненного цикла пользовательской модели речи.

Использование модели Whisper

Служба "Речь ИИ Azure" поддерживает модель Whisper OpenAI с помощью API пакетной транскрибирования. Модель Whisper можно использовать для пакетной транскрибирования.

Примечание.

Служба Azure OpenAI также поддерживает модель Whisper OpenAI для преобразования речи в текст с синхронным REST API. Дополнительные сведения см. в статье "Речь в тексте" с помощью модели Whisper Azure OpenAI. Дополнительные сведения об использовании службы "Речь ИИ Azure" и Azure OpenAI см. в статье "Что такое модель Whisper?

Чтобы использовать модель Whisper для пакетного транскрибирования, необходимо задать model свойство. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в ответе.

Внимание

Для моделей Whisper следует всегда использовать версию 3.2 речи в API текста.

Модели whisper по пакетной транскрибировании поддерживаются в восточной части Австралии, центральной части США, восточной части США, северной части США, южной части США, юго-восточной Азии и регионах Западной Европы.

Вы можете сделать запрос Models_ListBaseModels , чтобы получить доступные базовые модели для всех языковых стандартов.

Выполните HTTP-запрос GET, как показано в следующем примере для eastus региона. Замените YourSubscriptionKey ключом ресурса службы речи. Замените eastus , если вы используете другой регион.

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

По умолчанию возвращаются только 100 старейших базовых моделей. skip Используйте параметры и top параметры запроса для просмотра результатов. Например, следующий запрос возвращает следующие 100 базовых моделей после первого 100.

curl -v -X GET "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base?skip=100&top=100" -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey"

Убедитесь, что переменные конфигурации для ресурса "Речь" задаются в одном из поддерживаемых регионов. Для получения доступных базовых моделей для всех языковых стандартов можно выполнить команду spx csr list --base.

spx csr list --base --api-version v3.2-preview.2

Свойство displayName модели Whisper содержит Whisper, как показано в этом примере. Whisper — это модель только для отображения, поэтому лексическое поле не заполняется в транскрибировании.

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950",
  "links": {
    "manifest": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/models/base/e418c4a9-9937-4db7-b2c9-8afbff72d950/manifest"
  },
  "properties": {
    "deprecationDates": {
      "adaptationDateTime": "2025-04-15T00:00:00Z",
      "transcriptionDateTime": "2026-04-15T00:00:00Z"
    },
    "features": {
      "supportsTranscriptions": true,
      "supportsEndpoints": false,
      "supportsTranscriptionsOnSpeechContainers": false,
      "supportsAdaptationsWith": [
        "Acoustic"
      ],
      "supportedOutputFormats": [
        "Display"
      ]
    },
    "chargeForAdaptation": true
  },
  "lastActionDateTime": "2024-02-29T15:53:28Z",
  "status": "Succeeded",
  "createdDateTime": "2024-02-29T15:46:07Z",
  "locale": "en-US",
  "displayName": "20240228 Whisper Large V2",
  "description": "OpenAI Whisper Model in Azure AI Speech (Whisper v2-large)"
},

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

curl -v -X POST -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -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/v3.2-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6"
  },
  "properties": {
    "wordLevelTimestampsEnabled": true,
  },
}'  "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2-preview.2/transcriptions"
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-preview.2/models/base/d9cbeee6-582b-47ad-b5c1-6226583c92b6" --api-version v3.2-preview.2

Указание URL-адреса целевого контейнера

Результат транскрибирования может храниться в контейнере Azure. Если контейнер не указан, служба "Речь" сохраняет результаты в контейнере, управляемом корпорацией Майкрософт. В этом случае при удалении задания транскрибирования данные результатов транскрибирования также удаляются.

Результаты пакетной транскрибирования можно хранить в контейнере хранилища BLOB-объектов Azure с помощью параметра destinationContainerUrl в запросе на создание пакетной транскрибирования. Этот параметр использует только специальный URI SAS и не поддерживает механизм безопасности доверенных служб Azure. Этот параметр также не поддерживает SAS на основе политики доступа. Ресурс учетной записи служба хранилища целевого контейнера должен разрешать весь внешний трафик.

Если вы хотите сохранить транскрибирование в контейнере хранилища BLOB-объектов Azure с помощью механизма безопасности доверенных служб Azure, рассмотрите возможность использования собственного хранилища (BYOS). Дополнительные сведения см. в разделе "Использование собственного ресурса службы "Речь" хранилища (BYOS) для преобразования речи в текст.