Более менее случайно наткнулся на 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]   Это правильно.

Что можно сказать?

  1. Хорошо распознает русский текст с вкраплениями английского.
  2. Хорошо распознает термины-бренды (Uber, Android, iOS, DevOps, 1С, …)
  3. Хорошо распознает цифры
  4. Когда не понимает, то пишет [неразборчиво]. По данному видео это вопросы из зала – человек бы их понял, но это не под микрофоном, вполне приемлемо.
  5. Иногда есть ошибки (tramway), но реально мало
  6. Скорость выше скорости аудио. 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, то текст будет выводиться разными цветами (зеленый – уверенное распознавание, красное – неуверенное). Ошибки обычно в красных буквах.

Тем не менее, перевод вполне адекватный. Конечно, это нужно вычитывать, но уже есть ощущуние, что проще вычитать, чем самому с нуля переводить. И это все локально. И с исходниками.

В целом, восхищен. Скорее всего, будут активно использовать.

Из минусов – вроде бы нет исходных данных, на которых тренировались модели. Собственно, это означает частичную открытось, а не полную. Тем не менее уже прогресс.

Дополнительные материалы:

  1. https://blog.castopod.org/install-whisper-cpp-on-your-mac-in-5mn-and-transcribe-all-your-podcasts-for-free/ – хорошее введение
  2. https://github.com/openai/whisper – оригинальный Whisper на Python и GPU от OpenAI
  3. https://github.com/ggerganov/whisper.cpp – версия на C++ без GPU
  4. https://openai.com/blog/whisper/ – оригинальная страница