Как ИИ вернул голос после афазии: Gemma-2B и Tinker
Восемь месяцев назад 24-летний Тарик, программист и велогонщик, попал под внедорожник на утренней велопрогулке. Он пережил экстренную шестичасовую краниотомию, а когда открыл глаза в нейрореанимации, обнаружил, что мысль осталась целой, а голос исчез. Диагноз: тяжёлая афазия Брока и орально-моторная дизартрия.
Тарик всё понимал. Узнавал мать, помнил историю своих коммитов, слышал каждое слово, которое врачи говорили у него в ногах. Но когда пытался заговорить, голосовые связки будто запирались, и дрожащая рука выводила на планшете только телеграфные обрывки: «вода... лёд... горло горит... соломинка», «катетер... зажим... жжёт... проверь мешок», «левая рука... немеет... иголки... позови врача».
Готовые ИИ-ассистенты, к которым он потянулся первым делом, сделали только хуже. На фразу «левая рука... немеет... иголки... позови медсестру» чат-бот потратил 2,5 секунды и ответил 65-словным дисклеймером: «Здравствуйте, Тарик! Онемение и покалывание в левой руке может быть симптомом раздражения корешков шейных нервов или нарушений кровообращения. Как искусственный интеллект, я настоятельно рекомендую уведомить лечащего врача...» Планшет полетел через палату.
Причина провала системная. Коммерческие модели обучают на роль вежливого универсального ассистента: они обязаны добавлять дисклеймеры, обращаться в третьем лице и напоминать, что они «всего лишь ИИ». Для человека, у которого 65 слов это целое послание, такая услужливость превращается в издевательство. Пациент в реанимации, который просит воды, не средний пользователь, а массовые продукты заточены именно под среднего.
Тогда его друг, разработчик под ником x-tahosin, сделал то, что в индустрии происходит всё чаще: собрал не универсальное решение, а персональное. За выходные хакатона Hacktoberfest Weekend Challenge (задание так и называлось, Build for a Friend, «собери для друга») он построил AphasiaBridge, офлайн-инструмент, который возвращает человеку голос: превращает телеграфные обрывки в живую речь от первого лица за 174 миллисекунды.
Что такое афазия Брока и почему массовые ассистенты тут бессильны
Афазия Брока возникает при повреждении зоны Брока в лобной доле мозга, чаще всего после инсульта или травмы. Человек сохраняет понимание речи и ясность мышления, но теряет способность строить связные фразы: речь распадается на отдельные слова, грамматика исчезает. Такую манеру говорения лингвисты называют телеграфной. Афазию диагностируют примерно у каждого третьего, пережившего инсульт, и реабилитация занимает годы.
У традиционного подхода к таким пациентам есть ограничения. Механические доски с картинками и специальные AAC-устройства (augmentative and alternative communication) долго настраиваются под человека и говорят синтетическим голосом. А закрытые облачные модели добавляют свои проблемы: от задержки в полторы секунды до отправки медицинских данных на чужие серверы.
Именно на этих граблях и споткнулся Тарик. Инструкции и RLHF-выравнивание научили чат-ботов отвечать усреднённому пользователю: сначала поздороваться, потом объяснить риски, потом посоветовать проконсультироваться с врачом. Для телеграфного ввода это фатально. Фраза «левая рука... немеет... иголки» должна превращаться в «У меня немеет левая рука, покалывает, вызовите, пожалуйста, врача», а не в лекцию о шейных корешках.
Автор проекта сформулировал три жёстких требования к системе. Ноль ассистентского мусора: только высказывание от первого лица, никаких «я понимаю» и «вот что можно сказать». Задержка меньше 200 миллисекунд: естественный человеческий диалог устроен так, что ответная реплика появляется примерно за 200 мс, и всё, что медленнее, ощущается как переписка с автоматом. И автономность: данные пациента не должны покидать палату, потому что речь о медицинской тайне.
Как устроен AphasiaBridge: от тактильной сетки до клонированного голоса
Система состоит из четырёх слоёв, и каждый закрывает свою часть задачи восстановления речи.
Первый слой: тактильная звуковая матрица. Это крупная сетка сенсорных клавиш с зонами нажатия от 88 пикселей, сгруппированных по шести клиническим сценариям: срочная медицинская помощь и боль, питание и питьё, положение в постели, семья и любовь, личная автономия, социальный юмор. Тарик быстро собирает из крупных плиток фразу-обрывок, не выискивая мелкие буквы на виртуальной клавиатуре дрожащей рукой.
Второй слой: языковая модель. Здесь работает не готовый чат-бот, а дообученная Gemma-2B, которая принимает обрывки и расшифровывает их строго в первое лицо. «Катетер... зажим... проверь мешок» превращается в «Мой катетер зажимает и жжёт. Пожалуйста, проверьте трубку и дренажный мешок».
Третий слой: голос. Синтез речи построен на клоне голоса Тарика, сделанном из домашних видео, записанных до аварии. Вместо голоса автоматического сканера из супермаркета он говорит своим тембром и своей интонацией. На случай полного офлайна предусмотрен локальный аудиофолбэк, который работает вообще без интернета.
Четвёртый слой: телеметрия для сиделок и медсестёр. Ночная смена не может всматриваться в маленький экран планшета с другого конца палаты, поэтому система ведёт журнал: время, категория срочности, задержка декодирования. Срочные сообщения сопровождаются двухтональным сигналом (880 и 587 герц) и кнопкой подтверждения.
Дообучение вместо промптов: почему хватило модели на 2 млрд параметров
Ключевое решение проекта в том, что автор не стал бороться с характером больших закрытых моделей через промпт-инжиниринг. Вместо этого он взял открытую Gemma-2B от Google и перераспределил вероятности её выходов с помощью Tinker, API для дообучения от Thinking Machines, компании Миры Мурати.
Технически всё скромно: LoRA-адаптер ранга 8 с alpha 16, повешенный на проекции q_proj и v_proj, пять эпох обучения при learning rate 2e-4 с ограничением градиента 1.0. В роли строительных блоков выступили низкоуровневые примитивы Tinker: forward_backward, optim_step, sample и save_state. Никаких готовых «умных» надстроек, только явный цикл: прямой проход, шаг оптимизатора, сохранение состояния.
Функция потерь за пять эпох упала с 2,45 до 0,44. Важна не сама кривая, а то, чему она соответствует: модель научилась выбрасывать всю ассистентскую обёртку и направлять вероятность в ближайшее высказывание от первого лица. От закрытой модели такого не добиться одним промптом: ассистентские привычки возвращаются на части входов.
Почему хватило двух миллиардов параметров? Потому что задача узкая. Gemma-2B не нужно рассуждать, решать математику или писать код: её работа, переводить десятки телеграфных комбинаций в вежливые фразы от первого лица. Маленькая модель быстрее генерирует, полностью помещается в локальное железо и не требует ни доллара за инференс. Отсюда и автономность: открытые веса означают, что медицинские данные не уходят в сеть, что важно для больниц с требованиями вроде HIPAA.
Цифры: что показал бенчмарк на 25 сценариях
Чтобы доказать, что это не игрушка, автор прогнал 25 отложенных клинических сценариев: болевые ситуации, базовые физиологические потребности, эмоциональные высказывания. Сравнивались базовая, необученная Gemma-2B и её дообученная версия.
Точность передачи намерения выросла с 43,6% до 98,4%, то есть на 54,8 процентного пункта: вместо «примерно половину просьб передаём криво» получаем «перефразированных смыслов почти нет». Средняя задержка декодирования упала с 1473,6 мс до 174,4 мс, ускорение в 8,4 раза. На 90-м перцентиле 182 мс, то есть даже редкие медленные ответы остаются в пределах разговорного темпа.
Доля непрошеных дисклеймеров и ассистентского заполнения: 16% у базовой модели против нуля у дообученной. Соблюдение первого лица: 36% против 100%. Работа без интернета: ноль у облачного варианта против полной автономности у локального. Стоимость инференса: ноль долларов на местном железе против облачных тарифов за токены.
Оговорка по-честному: это хакатонный прототип с бенчмарком на 25 сценариях и измерениями самого автора, а не сертифицированное медицинское изделие. Следующие шаги заявлены конкретные: расширить словарь с 25 фраз до 250 типовых медицинских комбинаций и упаковать модель в ONNX Runtime, чтобы она работала на планшетке вроде Raspberry Pi 5 за пару сотен долларов.
Воскресенье в реабилитационной палате
Прототип привезли в реабилитационную палату в воскресенье. Мать Тарика сидела в кресле у стены, он разрабатывал руку жёлтым эспандером. Ему протянули планшет с матрицей.
Тарик изучал плитки несколько секунд, а потом набрал: «хватит говорить обо мне... поговорите со мной... напрямую». На экране мигнули 174 миллисекунды, и из динамика у кровати прозвучал его собственный голос: «Пожалуйста, перестаньте говорить обо мне в третьем лице. Посмотрите на меня и говорите со мной напрямую». В палате стало тихо. Восемь месяцев врачи, медсёстры и родственники обсуждали его прогноз так, будто он предмет мебели, а не человек в кровати.
Потом он набрал вторую комбинацию: «люблю тебя мама... спасибо... побудь со мной». Динамик повторил его тёплым, знакомым голосом: «Я люблю тебя, мама. Спасибо, что ты рядом». Мать закрыла лицо руками и заплакала. А сам Тарик позже напечатал в терминале: «Полгода я сидел за стеной из сломанных слогов. Когда машина говорит моими словами и моим голосом, я больше не пациент из четвёртой палаты. Я снова Тарик».
Что эта история говорит про ИИ-индустрию
Первый вывод: персонализация через дообучение перестала быть роскошью больших лабораторий. Tinker и похожие API дают доступ к низкоуровневым операциям вроде forward_backward и optim_step обычному разработчику с ноутбуком, без собственного кластера. Человек без глубокой ML-подготовки за два дня собрал работающее ассистивное устройство.
Второй вывод: для узкой задачи не нужен гигант. Двухмиллиардная модель обошла облачные аналоги там, где решают задержка, приватность и цена. Для отрасли это сигнал: гонка за масштабом идёт параллельно с гонкой за специализацией, и во второй нише выигрывают маленькие локальные модели.
Третий вывод: слои абстракции массовых продуктов скрывают людей, для которых они не предназначены. Ассистент, оптимизированный под среднего пользователя, отказывает всем, кто от среднего отличается: пациенту с афазией, человеку с тремором, пользователю без интернета. Если продукт не работает для человека, которому он нужнее всего, продукт собран не до конца.
Остаётся и вопрос к клонированию голоса. Восстановление собственного голоса из старых видео выглядит однозначно этичным, но та же технология позволяет говорить чужим голосом без согласия. Чем доступнее становятся такие пайплайны, тем острее нужна практика явного согласия. Здесь, по крайней мере, голос возвращают владельцу.
Частые вопросы
Почему бы не сделать то же самое промптом на большой модели?
Промптом можно снизить частоту дисклеймеров, но нельзя гарантировать ноль: выравнивание закрытых моделей устроено так, что ассистентские привычки возвращаются на части входов. Плюс облако добавляет задержку в полторы секунды и отправляет медицинские данные на сторонние серверы. Локальное дообучение решает все три проблемы сразу.
Насколько AphasiaBridge готов к реальной клинике?
Пока это прототип: 25 сценариев, словарь на 25 фраз, измерения автора. Для клиники нужны расширение словаря, независимые испытания и сертификация медицинского изделия. Но как доказательство концепции проект уже работает: открытый код под лицензией MIT лежит на GitHub, а словарь расширяется до 250 фраз.
Что такое Tinker и при чём тут Thinking Machines?
Tinker это API для дообучения открытых моделей от Thinking Machines, компании Миры Мурати. Он даёт разработчику примитивы forward_backward, optim_step, sample и save_state, чтобы обучать адаптеры вроде LoRA без собственного кластера. Именно Tinker позволил за выходные превратить обычную Gemma-2B в узкоспециализированный движок для восстановления речи.
Итог
История Тарика показывает, что ИИ для восстановления речи уже не фантастика: дообученная Gemma-2B на ноутбуке понимает телеграфные обрывки точнее базовой модели на 54,8 процентного пункта и отвечает за 174 миллисекунды, не выходя в интернет. Но главное в проекте не цифры, а смена оптики: вместо «сделаем ассистента для всех» его автор сделал «сделаем инструмент для одного», и именно поэтому получилось.
Если вы делаете продукты с ИИ, посмотрите на них глазами человека, который в портрет «среднего пользователя» не попадает. Пациент, у которого нет голоса, плохо набирает текст, но отлично формулирует мысль, окажется где-то рядом. Иногда между неработающим продуктом и спасённым голосом лежит одно дообучение.