Однажды в конце декабря я загрузил на свой ноутбук программу под названием Whisper.cpp, надеясь использовать ее для расшифровки интервью. Я скормил ей аудиофайл, и каждые несколько секунд она выдавала одну или две строки устрашающе точной стенограммы, записывая именно то, что было сказано, с точностью, которую я никогда раньше не видел. По мере того как очереди накапливались, я чувствовал, что мой компьютер становится все горячее. Это был один из немногих случаев за последнее время, когда мой ноутбук действительно вычислял что-то сложное — в основном я использую его, чтобы просматривать веб-страницы, смотреть кино и работать в Word. Теперь в нем завелся продвинутый ИИ.
Несмотря на то, что Whisper.cpp оказалась одной из самых сложных для вычисления программ, которые когда-либо запускались на моем ноутбуке, она также является одной из самых простых программ. Если бы вы увидели ее исходный код или показали программистам ИИ, они могли рассмеяться или заплакать — это было бы все равно, что открыть физику-ядерщику, что процесс достижения холодного синтеза можно написать на салфетке. Whisper.cpp — это интеллектуальная дистилляция. Особенность современного программного обеспечения в том, что оно практически не имеет взаимозависимостей — другими словами, оно работает без помощи других программ. По сути это десять тысяч строк автономного кода, большинство из которых выполняет довольно сложную арифметику. Ее написал за пять дней Георгий Герганов, болгарский программист, который, по его собственному признанию, почти ничего не знает о распознавании речи. Герганов адаптировал ее из программы Whisper, выпущенной в сентябре компанией OpenAI, той же организацией, которая стоит за ChatGPT и dall-e. Whisper расшифровывает речь более чем на девяноста языках. Некоторое из их программного обеспечения способно на сверхчеловеческую производительность, то есть оно действительно может анализировать то, что не может человек.
Что необычного в Whisper, так это то, что OpenAI открыла его исходный код, выпустив не только код, но и подробное описание архитектуры. Они также включали все важные «веса модели»: гигантский файл чисел, указывающий силу синапса каждого соединения в нейронной сети программного обеспечения. Таким образом, OpenAI позволила любому, включая такого любителя, как Герганов, модифицировать программу. Герганов преобразовал Whisper в C++, широко поддерживаемый язык программирования, чтобы упростить загрузку и запуск практически на любом устройстве. Это звучит как логистическая деталь, но на самом деле это знак более масштабных кардинальных изменений. До недавнего времени лучшие в мире искусственные интеллекты, такие как Whisper, были исключительной прерогативой крупных технологических фирм, которые их разработали. Они существовали за кулисами, незаметно подпитывая результаты поиска, рекомендации, помощников в чате и тому подобное. Если посторонним было разрешено использовать их напрямую, их использование измерялось и контролировалось.
За последние несколько лет появились и другие программы ИИ с открытым исходным кодом, но большинство из них были разработаны в рамках проприетарных проектов обратного инжиниринга. LeelaZero, шахматный движок, представляет собой краудсорсинговую версию AlphaZero от DeepMind, лучшего в мире компьютерного игрока; LeelaZero приходилось обучать с нуля, от отдельных пользователей, это — стратегия, которая была работоспособна только потому, что программа могла учиться, играя в шахматы сама с собой. Точно так же Stable Diffusion, которая вызывает изображения из описаний, является чрезвычайно популярным клоном dall-e от OpenAI и Imagen от Google, но обученным на общедоступных данных. Whisper может быть первым искусственным интеллектом в этом классе, который был просто подарен публике. В эпоху облачного программного обеспечения, когда все наши программы, по сути, арендованы у компаний, которые их производят, я нахожу несколько странным то, что теперь, когда я скачал Whisper.cpp, никто не может отнять его у меня— даже не Герганов. Его маленькая программа превратила мой ноутбук из устройства, которое обращается к ИИ к чему-то вроде разумной машины самой по себе.
Было время, когда исследователи полагали, что распознавание речи на человеческом уровне может быть задачей «сложной для искусственного интеллекта» — и она могла бы обернуться провалом, даже на уровне ее постановки. Идея заключалась в том, что в разговорной речи было достаточно много двусмысленности, и единственный способ разобрать ее — понять, что имели в виду говорящие. На прошлой неделе я услышал по радио что-то, что для компьютера могло бы звучать как «Можете ли вы поднять «Форд» краном?» (“Can you crane a Ford?”) Но мой мозг, зная контекст разговора, плавно разрешил его как «Может ли Украина себе позволить» (“Can Ukraine afford.”). Проблемы смысла и контекста привели к тому, что на протяжении десятилетий распознавание речи считалось мерилом для области ИИ в целом. Предполагалось, что единственный способ понять речь — это действительно понять ее.
В одном важном эссе 2019 года специалист по ИИ Ричард Саттон объясняет, что ранние программы распознавания речи были загружены специальными лингвистическими базами знаний — не только о синтаксисе, грамматике и фонетике, но и о том, как форма человеческого рта ограничивала возможные звуки. Несмотря на свою сложность и продуманность, эти программы работали не очень хорошо. В 1970-х годах произошел поворот к статистическим методам, которые отказались от экспертных знаний в пользу закономерностей, извлеченных из данных — например, о том, какие звуки и слова обычно сочетаются. Успех этого подхода отразился на остальной части ИИ, что привело к тому, что эта область сосредоточила большую часть своих усилий на статистике, полученной из огромных объемов данных. Стратегия принесла свои плоды: к 1990 году передовой технологией распознавания речи потребителей была программа под названием DragonDictate, которая работала в режиме реального времени. Но Dragon требовал от пользователей четко произносить слова и делать паузы между словами и стоил девять тысяч долларов. Основное улучшение произошло в 1997 году, когда та же компания выпустила Dragon NaturallySpeaking. Вам больше не нужно было делать паузу при разговоре с ним. Тем не менее, точность действительно свободной, акцентированной или технической речи была относительно низкой. Я помню, как мой крестный отец примерно в это время хвастался системой распознавания речи в своей машине; он использовал его, чтобы позвонить домой с автомобильного телефона. Звонить было бы проще.
Программы распознавания речи все еще были слишком глючными, чтобы работать безупречно. На исправление их ошибок ушло много времени. И тем не менее, они все еще были пугающе сложными. Учебник 1999 года, в котором описывалась современная на тот момент система распознавания речи, похожая на Dragon NaturallySpeaking, занимал более четырехсот страниц; чтобы понять это, нужно было освоить сложную математику, иногда специфичную для звука, — скрытые модели Маркова, спектральный анализ и то, что называется «кепстральной компенсацией». К книге прилагался компакт-диск, содержащий тридцать тысяч строк кода, большая часть которого была посвящена капризам речи и звука. В объятиях статистики распознавание речи стало глубокой и сложной областью. Казалось, что теперь прогресс будет идти только по нарастающей и с нарастающей болью.
Но, на самом деле, произошло обратное. Как сказал Саттон в своем эссе 2019 года, семидесятилетние ИИ исследование показало, что «общие методы, использующие вычисления, в конечном итоге являются наиболее эффективными и с большим отрывом». Саттон назвал это «горьким уроком»: он был горьким, потому что было что-то расстраивающее в том факте, что добавление большего количества ума и технических секретов в ИИ не принесло никакой пользы, программы не только не имели значения для прогресса, но и фактически мешали ему. Лучше иметь более простую программу, умеющую обучаться, работающую на быстром компьютере, и поручить ей решить сложную задачу самостоятельно. Саттон писал, что этот урок нужно было выучить заново, потому что втиснуть все, что вы знали в ИИ часто давали лишь краткосрочные улучшения. С каждой новой крупицей знаний ваша программа будет становиться немного лучше, но в долгосрочной перспективе добавленная сложность затруднит поиск путей для более быстрого прогресса. Методы, которые делали шаг назад и отказывались от экспертных знаний в пользу необработанных вычислений, всегда побеждали. Саттон пришел к выводу, что целью ИИ исследования должна быть направлена на создание «агентов, которые могут делать открытия так же, как мы», а не программ, «которые содержат то, что мы обнаружили». В последние годы ИИ исследователи, похоже, усвоили горький урок раз и навсегда. Результатом стал парад удивительных новых программ.
С тех пор, как мне приходилось расшифровывать лекции, записывать интервью — я мечтал о программе, которая делала бы это за меня. Процесс транскрипции занял так много времени, требуя так много мелких перемоток, что у меня сводило руки и спину. Как журналисту, знание того, что меня ждет, вероятно, исказило мои репортажи: вместо того, чтобы встречаться с кем-то лично с магнитофоном, часто казалось проще просто поговорить по телефону, печатая хорошие моменты в текущий момент. Около пяти лет назад, со смесью стыда и облегчения, я начал платить другим людям за то, чтобы они делали для меня транскрипцию. Я использовал сервис под названием Rev, который отдавал работу на откуп и брал свою долю. Это было дорого — около ста долларов только за одно интервью, — но цена свидетельствовала о затраченном труде. У Rev был гораздо более дешевый ИИ вариант, но, как и другие программы транскрипции, которые я пробовал, она была недостаточно точной, что доставляло неудобства. Создавалось впечатление, что вы тратите больше времени на исправление плохой стенограммы, чем на то, чтобы просто напечатать ее самостоятельно.
Полтора года назад я услышал о сервисе под названием Otter.AI, который был настолько лучше всего того, что было раньше, что наводил на мысль о том, что было создано какое-то принципиальное значительное отличее по сути. Программа ошибалась в пунктуации, все еще приходилось исправлять ее то здесь, то там, но это была первая программа транскрипции, которая избавила от утомительного повторного прослушивания. Я был настолько впечатлен, что она стала незаменимой частью моей работы.Когда-то неразрешимая проблема, казалось, была на почти готовой стадии.
В конце прошлого года, когда Whisper появился из ниоткуда, она навсегда решил мою проблему. Whisper в основном так же искусна, как и я в транскрипции. Программа улавливает тонкий жаргон, обрабатывая слова, звуки которые можно легко спутать с другими словами; например, она правильно слышит инженера-механика, говорящего: «Чтобы создать это в CAD (слова переводится как - хам, если не видеть заглавных букв), потребуется время», даже правильно используя заглавную букву «CAD» — аббревиатура от «автоматизированное проектирование». Она выясняет, как акцентировать внимание на прерываниях человека, например: «Мы почти собираемся отправить. Мы собираемся — следующий будет отправлен». Она бесплатная, работает на моем ноутбуке и концептуально намного проще, чем все, что было до нее.
Почти десять лет назад я написал эссе, в котором задавался вопросом, что произойдет, если транскрипция речи станет по-настоящему повсеместной. Во-первых, кажется вероятным, что мы увидим гораздо больше диктовки. (Уже сейчас, несмотря на то, что говорить по телефону кажется неестественным, я ловлю себя на том, что делаю это все чаще и чаще.) Как только технология достигнет определенного уровня качества, задача судебного репортера может исчезнуть; архивариусы могли бы радоваться тому, что записи речей, встреч, показаний и радиопередач давно стали доступными для поиска. Могут быть и другие большие изменения — мы много говорим, и почти все уходит в эфир. Что, если бы люди записывали разговоры как само собой разумеющееся, делали расшифровки и ссылались на них, как мы сейчас смотрим на старые тексты или электронные письма? Есть что-то привлекательное в накоплении болтовни; разговоры — это мое любимое занятие, и мне нравится идея почтить что-либо и сохранить это. Но затем вы думаете о рекламодателях, которые щедро платят за упоминания их торговых марок в естественной беседе. Вы представляете, как теряете друга или работу из-за глупого комментария. Действительно, перспектива пугающая.
История Уиспера многое говорит об истории ИИ и о том, куда он направляется. Когда часть программного обеспечения имеет открытый исходный код, вы можете адаптировать его для своих целей — это коробка Lego вместо полностью сформированной игрушки — и гибкое программное обеспечение удивительно долговечно. В 1976 году программист Ричард Столлман создал программу редактирования текста под названием Emacs, которая до сих пор пользуется огромной популярностью среди разработчиков программного обеспечения. Я использую ее не только для программирования, но и для написания текстов: поскольку она с открытым исходным кодом, я смог модифицировать ее, чтобы упростить управление заметками к своим статьям. Я адаптировал код, который кто-то адаптировал у кого-то другого, а тот адаптировал его у кого-то еще — цепочка доработок, восходящая к Столлману.
Мы уже наблюдаем нечто подобное с Whisper. Мой друг, кинорежиссер и разработчик программного обеспечения, написал дополнительную функциональную надстройку, которая расшифровывает все аудио- и видеофайлы в документальном проекте, чтобы было легче находить отрывки из интервью. Другие создали программы, которые расшифровывают потоки Twitch и видео на YouTube, или работают в качестве личных голосовых помощников на своих телефонах. Группа программистов пытается научить инструмент аннотировать говорящего. Герганов, разработавший Whisper.cpp, недавно сделал веб-версию, так что пользователям не нужно ничего скачивать.
Почти идеальное распознавание речи стало не просто приложением, а строительным блоком для приложений. Как только это происходит, события развиваются очень быстро. Когда вышла программа OpenAI для преобразования текста в изображение, DALL-E, она произвела фурор, но это было ничто по сравнению с всплеском активности, вызванной ее клоном с открытым исходным кодом, Stable Diffusion. DALL-E использовала модель «фримиум», при которой пользователи могли платить за дополнительные изображения, и никто не мог модифицировать ее код; в целом он оказался более мощным и точным, чем Stable Diffusion, потому что он был обучен на тоннах проприетарных данных. Но он был вынужден конкурировать с огромным количеством и разнообразием адаптаций, плагинов и ремиксов, поступающих от сообщества разработчиков открытого исходного кода. В течение нескольких недель пользователи адаптировали Stable Diffusion для создания режима «изображение-к-изображению», в котором они могли сказать программе настроить существующее изображение с помощью текстового приглашения. Благодаря многократному вызову этого режима стал возможен новый метод иллюстрации, в котором пользователь мог итеративно составлять изображение из слов, как если бы командовал бесконечно терпеливым художником-роботом.
Это открытие, а не какой-то конкретный скачок в возможностях, определяет текущий момент в ИИ. ChatGPT, разговорный чат-бот OpenAI, интересен не потому, что он особенно умен — он часто является фонтаном чуши или банальности, — а потому, что любой интеллект, который у него есть, просто есть, и любой может использовать его в любое время. Доступность программы, пожалуй, самая важная ее особенность, ведь она позволяет простым людям догадаться, для чего она нужна. Поскольку автоматизированное письмо потенциально ценно, OpenAI заинтересован в жестком контроле над ним; компания взимает плату за премиум-версию, и, несомненно, скоро появится экосистема коммерческих приложений, которые делают немного больше, чем может ChatGPT.
В конце концов, однако, кто-то выпустит программу, почти такую же функциональную, как ChatGPT, и полностью с открытым исходным кодом. Предприимчивый любитель найдет способ заставить ее бесплатно работать на вашем ноутбуке. Люди начнут ее скачивать, делать ремиксы, соединять, переосмысливать и переосмысливать. Возможности ИИ столкнутся с нашим коллективным разумом. И мир начнет меняться так, как мы пока не можем предсказать.
VPS серверы по низкой цене
Комментарии (12)
zzzzzzzzzzzz
00.00.0000 00:00Воодушевившись статьёй, решил проверить. Поигрался с моделью "base". Результаты впечатлили не особо. Возможно, я обманулся, восприняв название "base" как "не идеально, но сойдёт"? стоит попробовать более тормозные модели?
Эксперименты
скачивание модели:
bash ./models/download-ggml-model.sh base
конвертация исходника во что-то съедобное для ПО:
ffmpeg -i test003.mp3 -acodec pcm_s16le -ar 16000 test003.wav
распознавание:
main.exe -m models\ggml-base.bin -f test003.wav --language ru
результат распознавания аудиокнижки:
[00:00:37.000 --> 00:00:41.000] Иван Сергеевич Тургенев. [00:00:41.000 --> 00:00:44.000] Муму. [00:00:44.000 --> 00:01:03.000] В одной из отдаленных улиц Москвы, в сером доме, с белыми колоннами, антрисолью и покривившим с обалконом, желание как добарание, вдова, окружённое, многочисленное дворний. [00:01:03.000 --> 00:01:17.000] Сыновья её служили в Петербурге, дочери вышли замуж, она выезжала редко и уединённо, доживала последние годы своей искупой искучающей старости. [00:01:17.000 --> 00:01:26.000] День её нерадостные, ненасные давно прошёл, но и вечер её был чернее ночи. [00:01:26.000 --> 00:01:35.000] Ищи сла все её челеди, самым замечательным лицом, был дворник Гирасим. [00:01:35.000 --> 00:01:43.000] Мужчина, 12 вершков роста, сложённый боготорём, и глухо нему это рождение. [00:01:43.000 --> 00:01:55.000] Бароня взяла его из деревни, где он жил один в небольшой из бушке, отдельно отбратив, и считался едва ли не самым исправным тяглого мужиком. [00:01:55.000 --> 00:02:17.000] Адорённые необычайные силы, он работал за чить вирых, дело спорило с в его руках, и весело было смотреть на него, когда он либо похал, и налегая огромными ладонями на саху, казалось один, без помощи лышь идёмки, взрезывало пругую грудь земли. [00:02:17.000 --> 00:02:27.000] Либо апетров день, так сокрушительно действовал косой, что хоть бы молодой, берёзывый лесок смахивать с корней долой.
ru1z
00.00.0000 00:00Статья — это перевод. Для языков отличных от английского, распознование так себе срабатывает, про это писали несколько раз
habr.com/ru/post/689572
habr.com/ru/company/ods/blog/692246
HappySDE
00.00.0000 00:00Я прогнал её на large.
Время на 8700k в 11 потоков ушло в 2 раза больше, чем длина аудио.
На medium - 1:1.
Я впечатлён.
Дифнул разницу между large и medium - есть улучшения.
ИМХО для качества large - единственный вариант для меня.
Всё, что ниже чем medium - сильно страдает по качеству.zzzzzzzzzzzz
00.00.0000 00:00А у меня "large" не запускается. Пишет в логах что-то про загрузку модели, а потом молча завершается.
zzzzzzzzzzzz
00.00.0000 00:00На "large" получается хороший результат (если всё-таки удаётся запустить — но чаще падает на загрузке модели).
Кажется, наконец, стало возможным написать программку для "стенографии". Только памяти отжирать много будет.
Муму
[00:00:29.000 --> 00:00:40.000] Иван Сергеевич Тургенев [00:00:40.000 --> 00:00:44.000] Му-му [00:00:44.000 --> 00:00:48.000] В одной из отдаленных улиц Москвы, [00:00:48.000 --> 00:00:56.000] в сером доме с белыми колоннами, антресолью и покривившимся балконом, [00:00:56.000 --> 00:01:03.000] жила некогда барыня, вдова, окружённая многочисленной дворней. [00:01:03.000 --> 00:01:08.000] Сыновья её служили в Петербурге, дочери вышли замуж, [00:01:08.000 --> 00:01:17.000] она выезжала редко и уединённо доживала последние годы своей скупой и скучающей старости. [00:01:17.000 --> 00:01:21.000] День её, нерадостный и ненастный, давно прошёл, [00:01:21.000 --> 00:01:27.000] но и вечер её был чернее ночи. [00:01:27.000 --> 00:01:32.000] Из числа всей её челяди самым замечательным лицом [00:01:32.000 --> 00:01:38.000] был дворник Герасим, мужчина двенадцати вершков роста, [00:01:38.000 --> 00:01:43.000] сложённый богатырём и глухонемой от рождения. [00:01:43.000 --> 00:01:49.000] Барыня взяла его из деревни, где он жил один в небольшой избушке, [00:01:49.000 --> 00:01:56.000] отдельно от братьев, и считался едва ли не самым исправным тяглым мужиком. [00:01:56.000 --> 00:02:01.000] Одарённый необычайной силой, он работал за четверых, [00:02:01.000 --> 00:02:06.000] дело спорилось в его руках, и весело было смотреть на него, [00:02:06.000 --> 00:02:11.000] когда он либо пахал, и, налегая огромными ладонями на саху, [00:02:11.000 --> 00:02:17.000] казалось один, без помощи лошадёнки, взрезывал упругую грудь земли. [00:02:17.000 --> 00:02:22.000] Либо о Петров день так сокрушительно действовал косой, [00:02:22.000 --> 00:02:27.000] что хоть бы молодой берёзовый лесок смахивать с корней долой, [00:02:27.000 --> 00:02:33.000] либо проворно и безостановочно молотил трёхоршинным цепом, [00:02:33.000 --> 00:02:42.000] и как рычаг опускались и поднимались продолговатые твёрдые мышцы его плечей. [00:02:42.000 --> 00:02:49.000] Постоянное безмолвие придавало торжественную важность его неистомной работе. [00:02:49.000 --> 00:02:54.000] Славный он был мужик, и не будь его несчастье, [00:02:54.000 --> 00:02:59.000] всякая девка охотно пошла бы за него замуж.
sneg2015
00.00.0000 00:00Прикрутить ее к распознаванию речи на маке без сильной просадке по энергопотреблению возможно?
habraabr
00.00.0000 00:00Так как блин это работает-то?!
Я уже чаёк налил горячий, разогрелся в предвкушении посмотреть что это за "десять тысяч строк на салфетке без доступа в интернет" и статья закончилась...Может кто-нибудь рассказать как работает Whisper? Я открыл Github и вижу там старые добрые модели. Я человек достаточно далекий от нейросетей (но грубо понимающий что такое модель, какие есть алгоритмы итп). Так вот я правильно понимаю что Георгий написал конвертер питорчевских моделей под C++ (тензорную либу ggml которую также сам написал)?
endpoints
Было бы не плохо, если бы оставили ссылку на вашу программу для распознавания речи)
AdminVPS Автор
так вроде названия все есть...
Solovej
whisper.cpp & Stable Diffusion