Транскрипция аудио субтитров - C ++ - PullRequest
1 голос
/ 28 августа 2011

Я нахожусь в проекте, который среди других задач, связанных с видео, должен в конечном итоге быть способен извлекать аудио из видео и применять какое-то распознавание речи к нему и получать расшифрованный текст того, что сказано на видео. В идеале он должен выводить какой-то формат субтитров, чтобы текст был связан с определенной точкой на видео.

Я думал об использовании Microsoft Speech API (он же SAPI). Но из того, что я видел, довольно сложно использовать. Очень немногие примеры, которые я нашел для распознавания речи (большинство из которых для преобразования текста в речь, что намного проще), не очень хорошо работали (они ничего не распознают). Например этот: http://msdn.microsoft.com/en-us/library/ms717071%28v=vs.85%29.aspx

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

Итак, мой вопрос ... какой инструмент лучше всего подходит для этого? Не могли бы вы предоставить как платные, так и бесплатные варианты? Что ж, лучший «бесплатный» (как это происходит с Windows) вариант, я считаю, что это SAPI, все остальные должны быть оплачены, но если они действительно хороши, это может стоить того. Также, если у вас есть хорошие учебники по использованию SAPI (или другого API) в контексте, подобном этому, это было бы замечательно.

Ответы [ 2 ]

2 голосов
/ 28 августа 2011

В целом это большой спрос!

Проблема с любой системой распознавания речи в том, что она лучше всего работает после тренировки. Ему нужен контекст (какие слова ожидать) и какой-то аудио тест (как звучит каждый голос). Это может быть возможно в некоторых случаях, например, в сериалах, если вы хотите обучать часам речи, разделенной на каждого персонажа, чтобы обучить его. Там много работы, хотя. Для чего-то похожего на фильм, вероятно, нет никакой надежды обучить распознавателя, если вы не сможете овладеть актерами.

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

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

-> Несколько колонок -> «Идентификация колонок» (вы можете различать символы? Кроме того, субтитры обычно имеют разноцветный текст для разных колонок)

-> Несколько одновременных динамиков -> «Проблема коктейльной вечеринки» - можете ли вы разделить два голосовых компонента и транскрибировать оба?

-> Фоновый шум -> Можете ли вы выделить речь из любого саундтрека / фоли / взрывающихся вертолетов.

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

-

Не существует формата "субтитров", о котором я знаю. Я бы предложил сохранить изображение текста с использованием шрифта, например Tiresias Screenfont , специально разработанного для удобочитаемости в этих обстоятельствах, и использовать таблицу поиска для перекрестных ссылок на изображения по временному коду видео (помня NTSC / PAL / Cinema). использовать разные форматы синхронизации).

-

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

-

Единственное решение, которое я могу придумать, похожее на то, к чему вы стремитесь, это субтитры, которые вы можете получить на новостных каналах здесь, в Великобритании, "Live Closed Captioning". Так как он живой, я предполагаю, что они используют какую-то систему распознавания речи, подготовленную для читателя (хотя она может и не обучаться, я не уверен). За последние несколько лет стало лучше, но в целом все еще довольно бедно. Самая большая вещь, с которой приходится бороться, это скорость. Диалог, как правило, очень быстрый, поэтому у субтитров в реальном времени есть дополнительная проблема - сделать все вовремя. Живые закрытые подписи довольно часто остаются позади, и им приходится пропускать много контента, чтобы наверстать упущенное.

Нужно ли вам иметь дело с этим, зависит от того, будете ли вы добавлять субтитры к «живому» видео или можете ли вы предварительно обработать его. Чтобы справиться со всеми дополнительными сложностями, описанными выше, я предполагаю, что вам нужно предварительно обработать его.

-

Как бы я не ненавидел цитирование большой буквы W, есть золотая жила полезных ссылок здесь !

Удачи:)

1 голос
/ 30 августа 2011

Это относится к категории диктовки, которая является очень большой лексикой. Такие продукты, как Dragon Naturally Speaking, удивительно хороши и имеют интерфейс SAPI для разработчиков. Но проблема не так проста.

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

Было бы интересно применить действительно хорошую систему диктовки к вашим записям и посмотреть, насколько хорошо она работает. Мое предложение для платной системы было бы получить Dragon Naturally Speaking от Nuance и API разработчика. Я полагаю, что это обеспечивает интерфейс SAPI, который имеет преимущество, позволяя вам переключаться в речь Microsoft или любой другой механизм ASR, который поддерживает SAPI. IBM будет еще одним поставщиком, на который стоит обратить внимание, но я не думаю, что вы добьетесь большего успеха, чем Dragon.

Но это не сработает! После всей работы по интеграции движка ASR вы, вероятно, обнаружите, что вы получаете довольно высокий уровень ошибок (возможно, половину). Это будет связано с несколькими основными проблемами в этой задаче:

1) несколько динамиков, которые ухудшат акустическую модель и адаптацию. 2) фоновая музыка и звуковые эффекты.
3) смешанная речь - люди разговаривают друг с другом. 4) отсутствие хорошей языковой модели для задачи.

Для 1) если бы у вас был способ разделения каждого актера на отдельную дорожку, это было бы идеально. Но нет надежного способа автоматического разделения громкоговорителей таким образом, чтобы это было достаточно для распознавателя речи. Если бы у каждого динамика была совершенно разная высота звука, вы могли бы попробовать обнаружение высоты звука (какое-то бесплатное программное обеспечение для этого) и разделить его на основе этого, но это сложная и подверженная ошибкам задача. Лучше всего было бы вручную редактировать динамики кроме того, но вы могли бы просто вручную транскрибировать речь в этот момент! Если бы вы могли получить актеров на отдельных дорожках, вам нужно было бы запустить ASR, используя разные профили пользователей.

Для музыки (2) вам нужно либо надеяться на лучшее, либо пытаться отфильтровать ее. Речь в большей степени ограничена полосой пропускания, чем музыкой, поэтому вы можете попробовать полосовой фильтр, который ослабляет все, кроме полосы голоса. Вы хотели бы поэкспериментировать с отсечками, но я бы предположил, что от 100 Гц до 2-3 КГц сделает речь понятной.

Для (3) решения не существует. Механизм ASR должен возвращать оценки достоверности, поэтому в лучшем случае я бы сказал, что если вы можете пометить низкие оценки, вы можете вернуться назад и вручную расшифровать эти фрагменты речи.

(4) - сложная задача для речевого ученого. Лучше всего будет поискать существующую языковую модель, созданную для темы фильма. Поговорите с Nuance или IBM, на самом деле. Может быть, они могли бы указать вам в правильном направлении.

Надеюсь, это поможет.

...