Более менее случайно наткнулся на Whisper.cpp. Это преобразователь речи в текст со встроенным переводчиком. В Open Source. От OpenAI (они же сделали ChatGPT и Dall-E). Захотелось попробовать.
Как собрать:
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp
make
cd models
bash ./download-ggml-model.sh large
cd ..
# проверяем, что все нормально собралось и скачалось
./main -m models/ggml-large.bin -f samples/jfk.wav
Как подготовить данные:
cd samples
brew install ffmpeg yt-dlp
# качаем мой ролик
yt-dlp -x --audio-format wav -o test-u8mWIpv2zaA.wav -- u8mWIpv2zaA
# конвертируем в нужный формат
ffmpeg -i test-u8mWIpv2zaA.wav -ar 16000 -ac 1 -c:a pcm_s16le test-u8mWIpv2zaA_16bit.wav
# запускаем
cd ..
./main -f samples/test-u8mWIpv2zaA_16bit.wav -l ru -m models/ggml-large.bin
Смотрим выборочно результаты:
...
[00:00:37.000 --> 00:00:50.000] Потому что даже если посмотреть какие-нибудь конференции DevOps, панельные дискуссии о том, что такое DevOps, чем он отличается от чего-то другого,
...
[00:06:28.000 --> 00:06:35.000] Условно говоря, когда мы выбираем два маршрута, маршрут tramway и маршрут троллейбус,
...
[00:11:48.000 --> 00:11:55.000] Какие фичи нужно сделать на нашем сайте, чтобы увеличить продажи на 20% - никто не знает.
...
[00:12:34.000 --> 00:12:53.000] Можно купить за 25 тысяч рублей исходники сайта какого-то и мобильного приложения, ну, может быть, с мобильным, под 75, по две платформы, на сайтах, которые занимаются продажей готовых продуктов.
...
[00:13:20.000 --> 00:13:28.000] И когда мы смотрим эти цифры, непонятно, почему в Uber 4,5 тысяч программистов.
...
[00:15:44.000 --> 00:15:48.000] Так называемые professional services.
...
[00:16:41.000 --> 00:16:50.000] Да, ну это может быть аптека, которая заказывает доработку 1С,
...
[00:25:29.000 --> 00:25:37.000] Это исправление багов, это поддержка обновленной экосистемы, новой версии Android и iOS.
...
[00:31:52.000 --> 00:31:59.000] Это основная задача программы.
[00:31:59.000 --> 00:32:08.000] [неразборчиво]
[00:32:08.000 --> 00:32:10.000] Это правильно.
Что можно сказать?
- Хорошо распознает русский текст с вкраплениями английского.
- Хорошо распознает термины-бренды (Uber, Android, iOS, DevOps, 1С, …)
- Хорошо распознает цифры
- Когда не понимает, то пишет
[неразборчиво]
. По данному видео это вопросы из зала – человек бы их понял, но это не под микрофоном, вполне приемлемо. - Иногда есть ошибки (
tramway
), но реально мало - Скорость выше скорости аудио. 21 минута на 63 минутное видео в самом медленном варианте (large модель), т.е. где-то 3х на моем железе (M1 Pro 16Gb).
Aegisub можно использовать, если хочется перепроверить какой-то кусок текста и там же исправить. --output-srt --max-len 47
аргументы, чтобы сохранить результат whisper.cpp в формате srt.
Есть программка MacWhisper, которая позволяет надиктовать и сразу же распознать текст. Скорее для знакомства, но тоже интересно (если не хочется самому собирать и все такое).
Есть и open source программка Buzz https://github.com/chidiwilliams/buzz . Ставится:
brew install --cask buzz
Программа (buzz) у меня сейчас падает после скачивания любой модели, но, думаю, рано или поздно исправят.
Whisper имеет встроенный переводчик на английский язык. Нужно только добавить опцию -tr
для перевода. Поддерживается только английский, но именно это в большинстве случаев и нужно. Плюс, это означает, что остальные языки – уже вопрос доработок, а не принципиальная проблема.
Давайте сравним начало на обоих языках:
[00:00:00.000 --> 00:00:13.000] И сейчас пойдет более-менее сложный материал, соответственно, как встанете, говорите, будем проверивать.
[00:00:13.000 --> 00:00:27.000] А, собственно, зачем это все? Вот я сейчас начну говорить про вещи, о которых редко говорят и редко задумываются.
...
[00:13:58.000 --> 00:14:10.000] Там, по-моему, порядка 700 человек лет они тратят в год на инфраструктуру, на ее оптимизацию, разработку.
[00:14:10.000 --> 00:14:16.000] А остальное - это как раз какие-то новые гипотезы, которые они проверяют.
[00:14:16.000 --> 00:14:26.000] Поэтому простой вопрос, сколько стоит продукт, он имеет бесконечную стоимость.
[00:00:00.000 --> 00:00:09.000] And now we'll have more or less complex material.
[00:00:09.000 --> 00:00:13.000] So, as you get up, we'll talk and improvise.
[00:00:13.000 --> 00:00:18.000] Actually, why is all this?
[00:00:18.000 --> 00:00:27.000] I'm going to start talking about things that are rarely talked about and rarely thought about.
...
[00:13:58.000 --> 00:14:10.000] I think they spend about 700 people a year on infrastructure, on its optimization, development, and development.
[00:14:10.000 --> 00:14:16.000] And the rest is just some new hypotheses that they check.
[00:14:16.000 --> 00:14:26.000] Therefore, the simple question of how much a product costs is of infinite value.
Изначально текст распознан немного неправильно, должно быть так:
[00:00:00.000 --> 00:00:13.000] И сейчас пойдет более-менее сложный материал, соответственно, как устанете, говорите, будем перерывы делать.
Если включить опцию -pc
, то текст будет выводиться разными цветами (зеленый – уверенное распознавание, красное – неуверенное). Ошибки обычно в красных буквах.
Тем не менее, перевод вполне адекватный. Конечно, это нужно вычитывать, но уже есть ощущуние, что проще вычитать, чем самому с нуля переводить. И это все локально. И с исходниками.
В целом, восхищен. Скорее всего, будут активно использовать.
Из минусов – вроде бы нет исходных данных, на которых тренировались модели. Собственно, это означает частичную открытось, а не полную. Тем не менее уже прогресс.
Дополнительные материалы:
- https://blog.castopod.org/install-whisper-cpp-on-your-mac-in-5mn-and-transcribe-all-your-podcasts-for-free/ – хорошее введение
- https://github.com/openai/whisper – оригинальный Whisper на Python и GPU от OpenAI
- https://github.com/ggerganov/whisper.cpp – версия на C++ без GPU
- https://openai.com/blog/whisper/ – оригинальная страница