Самодельное распознавание речи

Опубликовано:
Translations:no translations yet
Комментарии:Telegram

Нынче полно speech-to-text решений, но у них есть фатальные недостатки вроде таких:

  1. Робот-слушатель принадлежит не тебе, то есть записи твоего голоса принадлежат не тебе.
  2. Не работает под Linux.
  3. Не работает в любом приложении, где есть текстовый ввод.
  4. Cделано без души.
Робот с душой кошки, ВДНХ.

Я мечтал о простом человеческом: кликаю в любое текстовое поле любого приложения, говорю несколько фраз, робот печатает фразы. Мне остаётся только нажать Enter.

Поэтому в прошлом году сделал робота по имени whisper-typer. На днях довёл его до стабильного состояния. В добавок к тому, что у робота нет недостатков из списка выше, ему без разницы, на каком языке c ним говорить. Инструкция по запуску в README проекта, форки приветствуются :)

Работает на основе опенсорсной модели под названием whisper от openai. Уровень ошибок в русских и английских словах у неё около 4%. Лучше всего работает с испанским, там всего 3% ошибок. Видимо, испанский как слышится, так и пишется.

Поначалу думал, что сложнее всего будет совладать с моделью, но по факту на это понадобилось 15 минут. А вот на всякие рюшечки ушло несколько дней. Например, иногда модель выдаёт непечатаемые символы и они создают проблемы. Без понятия, почему так происходит. Внезапно оказалось, что для Python нет адекватных библиотек ни для записи звука, ни для воспроизведения wav-файлов, ни для обработки хоткеев. Поэтому ради красоты пришлось заниматься чернухой.

Дальше план такой:

  1. Позаимствовать мощную видеокарту из ПК любимой жены и не спалиться.
  2. Попробовать large модель. Я пользуюсь medium, она нормальная, но хочется большего.
  3. Завернуть текст на выходе в LLM, которая будет исправлять пунктуацию и прочие опечатки. Сделать это тоже локально, например, на Llama. У whisper с пунктуацией не очень, она затрудняется расставлять запятые и восклицательные знаки.
  4. Затюнить модель под свой голос, если это возможно.
  5. Научиться думать когда говорю, а не только когда пишу (самое сложное).