Media2Text - распознавание голоса на коленке
Конвертер голосовых и видео файлов в текст и srt
поддерживает все виды контейнеров и кодеков (mp3, mp4, avi,… ) которые понимает ffmpeg.
Расположение кода проекта на github
Предназначение
я часто записываю голосовые сообщения и пользуюсь диктофоном. а так же пишу документы и в пишу в блог. Хочу иметь как медиа материалы, так и их текстовую форму т.к. по тексту работает поиск и иногда это упрощает набор текста (если хорошо надиктовано).
Используемые модели обучены на dataset “аудиокниги” т.е. подходящий входной звук это - в тишине относительно выразительное и членораздельное чтение диктора, один одновременно звучащий голос. Для распознавания с диктофона этот dataset хорошо подходит.
В планах: у меня есть проект https://redforester.com и плагины для него. Это может стать основой плагина для
- системы управления контентом (генерирование текстового представления)
- для поиска в медиафайлах
- для распознавания голосовых команд
У меня есть телеграмм бот. там тоже может быть сделано распознавание голосовых команд.
Использование
с временными метками (субтитры)
1 | $ ./media2srt.sh /media/mp/ac22fd5c-3daf-4f5a-a4bf-65b346984f64/home/mp/Загрузки/0.mp3 |
только текст
1 | $ ./media2text.sh /media/mp/ac22fd5c-3daf-4f5a-a4bf-65b346984f64/home/mp/Загрузки/0.mp3 |
чтобы сохранить сделайте перенаправление вида > fileName.txt
Можно использовать в пакетном режиме для обработки нескольких файлов через xargs + sh + parallel
. Например так:
1 | $ sudo cp ./media2text.sh /usr/local/sbin/ |
Принцип работы
- входной файл приходит в ffmpeg (через docker mount, а не через входной поток) , из него извлекается голос.
- язык текста выбирается выбором образа, который уже содержит обченную модель.
- данные подаются на вход модели порциями и забираем частичнораспонанный текст. Когда модель подтвеждает распознанный блок текста - он печатается на выход (+ опционально srt заголовок)
Сборка \ установка
- скачать.
- собрать docker образы. в скрипте сборки можете выбрать комментариями языки (мне нужен только русский)
- можно закинуть sh скрипт себе в
/usr/local/bin