Настраиваемое преобразование речи в текстовые контейнеры с помощью Docker

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

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

Образы контейнеров

Пользовательский контейнерный образ для преобразования речи в текст для всех поддерживаемых версий и языковых стандартов можно найти в реестре контейнеров Microsoft (MCR). Он находится в репозитории azure-cognitive-services/speechservices/ и называется custom-speech-to-text.

Снимок экрана: диалоговое окно соединителей поиска и триггеров.

Полностью квалифицированное имя образа контейнера: mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text. Добавьте конкретную версию или :latest, чтобы получить последнюю версию.

Версия Путь
Последнее mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text:latest
4.12.0 mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text:4.12.0-amd64

Все теги, кроме latestтегов, имеют следующий формат и чувствительны к регистру:

<major>.<minor>.<patch>-<platform>-<prerelease>

Примечание

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

Теги также доступны в формате JSON для удобства. Текст содержит путь к контейнеру и список тегов. Теги не отсортированы по версии, но "latest" всегда включаются в конец списка, как показано в этом фрагменте кода:

{
  "name": "azure-cognitive-services/speechservices/custom-speech-to-text",
  "tags": [
    <--redacted for brevity-->
    "4.0.0-amd64",
    "4.1.0-amd64",
    "4.10.0-amd64",
    "4.11.0-amd64",
    "4.12.0-amd64",
    "4.2.0-amd64",
    "4.3.0-amd64",
    "4.4.0-amd64",
    "4.5.0-amd64",
    "4.6.0-amd64",
    "4.7.0-amd64",
    "4.8.0-amd64",
    "4.9.0-amd64",
    "5.0.0-preview-amd64",
    "5.0.1-preview-amd64",
    "latest"
  ]
}

Получение образа контейнера с помощью docker pull

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

Используйте команду docker pull для скачивания образа контейнера из реестра контейнеров Microsoft:

docker pull mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text:latest

Примечание

locale и voice для пользовательских контейнеров Речи определяются пользовательской моделью, использованной контейнером.

Получение идентификатора модели

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

Пользовательскую модель необходимо обучить с помощью Speech Studio. Сведения о том, как получить идентификатор модели, см. в разделе жизненного цикла пользовательской модели речи.

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

Получите идентификатор модели , используемый в качестве аргумента ModelIddocker run для параметра команды.

Снимок экрана: сведения о пользовательской модели речи.

Скачивание модели дисплея

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

Примечание

Хотя вы используете docker run команду, контейнер не запускается для службы.

Вы можете запрашивать или скачивать любые или все эти типы моделей отображения: переоценка (Rescore), пунктуация (Punct), ресегментация (Resegment) и wfstitn (Wfstitn). В противном случае можно использовать опцию FullDisplay (с другими типами или без них) для запроса или скачивания всех доступных типов моделей отображения.

Установите BaseModelLocale для запроса самой последней доступной модели отображения в целевом регионе. Если вы включаете несколько типов моделей отображения, команда возвращает последние доступные модели отображения для каждого типа. Например:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
Punct Rescore Resegment Wfstitn \   # Specify `FullDisplay` or a space-separated subset of display models
BaseModelLocale={LOCALE} \           
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

DisplayLocale Задайте для скачивания последнюю доступную модель отображения на целевом языковом стандарте. При установке DisplayLocaleнеобходимо также указать FullDisplay или разделенное пробелами подмножество моделей отображения. Команда скачивает последнюю доступную модель отображения для каждого указанного типа. Например:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
Punct Rescore Resegment Wfstitn \   # Specify `FullDisplay` or a space-separated subset of display models
DisplayLocale={LOCALE} \           
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Задайте один идентификатор модели, чтобы скачать определенную модель отображения: rescoring (RescoreId), знак препинания (PunctId), resegmentation (ResegmentId) или wfstitn (WfstitnId). Это похоже на скачивание базовой модели с помощью ModelId параметра. Например, чтобы скачать модель повторной оценки отображения, можно использовать следующую команду с параметром RescoreId:

docker run --rm -it \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
RescoreId={RESCORE_MODEL_ID} \         
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Примечание

Если задано несколько параметров запроса или скачивания, команда будет определять приоритет в этом порядке: BaseModelLocaleидентификатор модели, а затем DisplayLocale (применимо только для моделей отображения).

Запуск контейнера с помощью docker run

Используйте команду docker run для запуска службы в контейнере.

В следующей таблице представлены различные docker run параметры и их соответствующие описания:

Параметр Описание
{VOLUME_MOUNT} Хост-компьютер для монтажа тома, который Docker использует для сохранения пользовательской модели. Примером является c:\CustomSpeech, где c:\ диск расположен на хост-компьютере.
{MODEL_ID} Идентификатор пользовательской речевой модели или базовой модели. Дополнительные сведения см. в разделе "Получение идентификатора модели".
{ENDPOINT_URI} Конечная точка необходима для измерения и выставления счетов. Дополнительные сведения см. в разделе аргументов выставления счетов.
{API_KEY} Требуется ключ API. Дополнительные сведения см. в разделе аргументов выставления счетов.

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

Ниже приведен пример docker run команды со значениями заполнителей. Необходимо указать значения VOLUME_MOUNT, MODEL_ID, ENDPOINT_URI и API_KEY:

docker run --rm -it -p 5000:5000 --memory 8g --cpus 4 \
-v {VOLUME_MOUNT}:/usr/local/models \
mcr.microsoft.com/azure-cognitive-services/speechservices/custom-speech-to-text \
ModelId={MODEL_ID} \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Эта команда:

  • Запускает настраиваемый контейнер преобразования речи в текст из образа контейнера.
  • Выделяет 4 ядра ЦП и 8 ГБ памяти.
  • Загружает пользовательскую модель преобразования речи в текст из подключенного хранилища, например, C:\CustomSpeech.
  • Предоставляет TCP-порт 5000 и выделяет псевдо-TTY для контейнера.
  • Загружает модель, указанную ModelId (если она не найдена на смонтированном томе).
  • Если пользовательская модель была скачана ранее, ModelId она игнорируется.
  • Автоматически удаляет контейнер после выхода. Образ контейнера по-прежнему доступен на хост-компьютере.

Дополнительные сведения о контейнерах службы "Речь" см. в docker run разделе "Установка и запуск контейнеров службы "Речь" с помощью Docker.

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

Контейнеры для распознавания речи предоставляют конечные точки API запросов, работающих на основе WebSocket, к которым обращаются с помощью SDK и CLI. По умолчанию пакет SDK службы "Речь" и интерфейс командной строки (CLI) службы "Речь" используют общедоступную службу "Речь". Чтобы использовать контейнер, необходимо изменить метод инициализации.

Важно

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

Вместо использования этой конфигурации инициализации в облаке Azure:

var config = SpeechConfig.FromSubscription(...);

Используйте эту конфигурацию с контейнером хост:

var config = SpeechConfig.FromHost(
    new Uri("ws://localhost:5000"));

Вместо использования этой конфигурации инициализации в облаке Azure:

auto speechConfig = SpeechConfig::FromSubscription(...);

Используйте эту конфигурацию с контейнером хост:

auto speechConfig = SpeechConfig::FromHost("ws://localhost:5000");

Вместо использования этой конфигурации инициализации в облаке Azure:

speechConfig, err := speech.NewSpeechConfigFromSubscription(...)

Используйте эту конфигурацию с узлом контейнера:

speechConfig, err := speech.NewSpeechConfigFromHost("ws://localhost:5000")

Вместо использования этой конфигурации инициализации в облаке Azure:

SpeechConfig speechConfig = SpeechConfig.fromSubscription(...);

Используйте эту конфигурацию с хостом контейнера:

SpeechConfig speechConfig = SpeechConfig.fromHost("ws://localhost:5000");

Вместо использования этой конфигурации инициализации в облаке Azure:

const speechConfig = sdk.SpeechConfig.fromSubscription(...);

Используйте эту конфигурацию с хостом контейнера:

const speechConfig = sdk.SpeechConfig.fromHost("ws://localhost:5000");

Вместо использования этой конфигурации инициализации в облаке Azure:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:...];

Используйте эту конфигурацию с хостом контейнера:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithHost:"ws://localhost:5000"];

Вместо использования этой конфигурации инициализации в облаке Azure:

let speechConfig = SPXSpeechConfiguration(subscription: "", region: "");

Используйте эту конфигурацию с хостом контейнера:

let speechConfig = SPXSpeechConfiguration(host: "ws://localhost:5000");

Вместо использования этой конфигурации инициализации в облаке Azure:

speech_config = speechsdk.SpeechConfig(
    subscription=speech_key, region=service_region)

Используйте эту конфигурацию с конечной точкой контейнера:

speech_config = speechsdk.SpeechConfig(
    host="ws://localhost:5000")

При использовании интерфейса командной строки для речи в контейнере включите опцию --host ws://localhost:5000/. Необходимо также указать --key none, чтобы интерфейс командной строки не использовал ключ речевых служб для аутентификации. Для получения информации о настройке интерфейса командной строки Speech см. статью Начало работы с Azure Speech в CLI Foundry Tools.

Попробуйте функцию конвертации речи в текст, используя аутентификацию по узлу вместо ключа и региона.

Дальнейшие действия