Нынче полно speech-to-text решений, но у них есть фатальные недостатки вроде таких:
- Робот-слушатель принадлежит не тебе, то есть записи твоего голоса принадлежат не тебе.
- Не работает под Linux.
- Не работает в любом приложении, где есть текстовый ввод.
- Cделано без души.
Я мечтал о простом человеческом: кликаю в любое текстовое поле любого приложения, говорю несколько фраз, робот печатает фразы. Мне остаётся только нажать Enter.
Поэтому в прошлом году сделал робота по имени whisper-typer. На днях довёл его до стабильного состояния. В добавок к тому, что у робота нет недостатков из списка выше, ему без разницы, на каком языке c ним говорить. Инструкция по запуску в README проекта, форки приветствуются :)
Работает на основе опенсорсной модели под названием whisper от openai. Уровень ошибок в русских и английских словах у неё около 4%. Лучше всего работает с испанским, там всего 3% ошибок. Видимо, испанский как слышится, так и пишется.
Поначалу думал, что сложнее всего будет совладать с моделью, но по факту на это понадобилось 15 минут. А вот на всякие рюшечки ушло несколько дней. Например, иногда модель выдаёт непечатаемые символы и они создают проблемы. Без понятия, почему так происходит. Внезапно оказалось, что для Python нет адекватных библиотек ни для записи звука, ни для воспроизведения wav-файлов, ни для обработки хоткеев. Поэтому ради красоты пришлось заниматься чернухой.
Дальше план такой:
- Позаимствовать мощную видеокарту из ПК любимой жены и не спалиться.
- Попробовать
large
модель. Я пользуюсьmedium
, она нормальная, но хочется большего. - Завернуть текст на выходе в LLM, которая будет исправлять пунктуацию и прочие опечатки. Сделать это тоже локально, например, на Llama. У whisper с пунктуацией не очень, она затрудняется расставлять запятые и восклицательные знаки.
- Затюнить модель под свой голос, если это возможно.
- Научиться думать когда говорю, а не только когда пишу (самое сложное).