Поделиться через


Создание субтитров с использованием функции преобразования речи в текст

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

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

Ниже приведены некоторые распространенные сценарии использования субтитров:

  • Онлайн курсы и обучающие видео.
  • Спортивные мероприятия.
  • Голосовые и видеозвонки

Что следует учитывать при использовании субтитров:

  • Сообщите аудитории, что субтитры создаются автоматизированной службой.
  • Расположите заголовки горизонтально по центру экрана, используя крупный шрифт.
  • Подумайте, следует ли использовать частичные результаты, когда начинать отображение субтитров и сколько слов следует показывать за раз.
  • Сведения о протоколах субтитров, таких как SMPTE-TT.
  • Можно использовать такие форматы выходных данных, как SRT (SubRip Text) и WebVTT (Web Video Text Tracks). Их можно загрузить на большинство видеопроигрывателей, таких как VLC, автоматически добавляя субтитры в видео.

Совет

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

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

Субтитры могут сопровождать речь в режиме реального времени или предварительной записи. Независимо от того, отображаются ли субтитры в режиме реального времени или записи, вы можете использовать пакет SDK для службы "Речь" или интерфейс командной строки службы "Речь" для распознавания речи и получения транскрибирования. Вы также можете использовать API пакетного транскрибирования для предварительно записанного видео.

Формат выходных данных субтитров

Служба "Речь" поддерживает такие форматы выходных данных, как SRT (SubRip Text) и WebVTT (Web Video Text Tracks). Их можно загрузить на большинство видеопроигрывателей, таких как VLC, автоматически добавляя субтитры в видео.

Совет

Служба "Речь" предоставляет параметры фильтра ненормативной лексики. Можно указать, следует ли маскировать, удалять или показывать ненормативность.

Выходной формат интервала времени SRT (subRip Text) имеет формат hh:mm:ss,fff.

1
00:00:00,180 --> 00:00:03,230
Welcome to applied Mathematics course 201.

Формат выходных данных интервала времени WebVTT (Web Video Text Tracks) — hh:mm:ss.fff.

WEBVTT

00:00:00.180 --> 00:00:03.230
Welcome to applied Mathematics course 201.
{
  "ResultId": "8e89437b4b9349088a933f8db4ccc263",
  "Duration": "00:00:03.0500000"
}

Отправка звука в службу "Речь"

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

Чтобы создать субтитры для предварительно записанного файла, отправьте входной файл в службу "Речь". Дополнительные сведения см. в разделе Как использовать сжатые входные аудиофайлы.

Синхронизация субтитров и речи

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

Служба "Речь" возвращает смещение и длительность распознаваемой речи.

  • Смещение: смещение в распознаваемом аудиопотоке, выражаемое в виде интервала времени. Смещение измеряется в тактах, начиная с 0 (нулевого) такта, связанного с первым звуковым байтом, обработанным пакетом SDK. Например, смещение начинается при запуске распознавания, так как это происходит, когда пакет SDK начинает обработку звукового потока. Один такт представляет собой 100 наносекунд (или одну десятимиллионную долю секунды).
  • Длительность: длительность распознаваемого речевого фрагмента. Длительность в тактах не включает в себя конечный или начальный период тишины.

Дополнительные сведения см. в разделе Получение результатов распознавания речи.

Получение частичных результатов

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

Примечание.

Пунктуация для частичных результатов недоступна.

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

Заголовок в режиме реального времени дает компромиссы относительно задержки и точности. Вы можете отображать текст из каждого события Recognizing как можно скорее. Однако если задержка допустима, можно повысить точность субтитров, отображая текст из события Recognized. Можно также выбрать нечто среднее, так называемые "стабильные частичные результаты".

Вы можете запросить, чтобы служба "Речь" возвращала меньше событий Recognizing для более высокой точности. Для этого необходимо задать для свойства SpeechServiceResponse_StablePartialResultThreshold значение между 0 и 2147483647. Заданное значение — это количество раз, когда слово должно быть распознано, прежде чем служба "Речь" вернет событие Recognizing. Например, если задано SpeechServiceResponse_StablePartialResultThreshold значение 5свойства, служба "Речь" подтверждает распознавание слова по крайней мере пять раз, прежде чем возвращать частичные результаты для вас с событием Recognizing .

speechConfig.SetProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig->SetProperty(PropertyId::SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.SetProperty(common.SpeechServiceResponseStablePartialResultThreshold, 5)
speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
speechConfig.setProperty(sdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, 5);
[self.speechConfig setPropertyTo:5 byId:SPXSpeechServiceResponseStablePartialResultThreshold];
self.speechConfig!.setPropertyTo(5, by: SPXPropertyId.speechServiceResponseStablePartialResultThreshold)
speech_config.set_property(property_id = speechsdk.PropertyId.SpeechServiceResponse_StablePartialResultThreshold, value = 5)
spx recognize --file caption.this.mp4 --format any --property SpeechServiceResponse_StablePartialResultThreshold=5 --output vtt file - --output srt file -

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

Пример порога стабильного частичного результата

В следующей последовательности распознавания без установки порога стабильного частичного результата "math" (математик) распознается как слово, но окончательный результат — "mathematics" (математика). В другой момент распознается "course 2", но окончательный текст — "course 201".

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied math
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZING: Text=welcome to applied mathematics course 2
RECOGNIZING: Text=welcome to applied mathematics course 201
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

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

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

RECOGNIZING: Text=welcome to
RECOGNIZING: Text=welcome to applied
RECOGNIZING: Text=welcome to applied mathematics
RECOGNIZED: Text=Welcome to applied Mathematics course 201.

Идентификация языка

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

Настройки для повышения точности

Список фраз — это список слов или фраз, которые вы предоставляете прямо перед началом распознавания речи. Добавление фразы в список повышает ее значимость и вероятность распознавания.

К примерам фраз можно отнести:

  • Имена
  • Географические расположения
  • Омонимы
  • Слова или сокращения, характерные только для вашей отрасли или организации

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

Следующие шаги