Диктовка в любое поле и секретарь

До этой недели приложение слушало чужую речь. Теперь оно слушает и вашу. Вы говорите по-русски, а текст появляется там, где стоит курсор: как сказано или переведённый на английский. Мы шли к этому тремя шагами.

Шаг 1: русский и английский одновременно (3 августа)

Первая задача — слушать смешанную английскую и русскую речь для живых субтитров. В английском распознавателе Apple русского нет вообще. Мы проверили список языков, которые он поддерживает на Маке: их 30, и русского среди них нет. Русский живёт в другом распознавателе из того же фреймворка — в том, что сделан для диктовки. Поэтому мы запускаем оба сразу на одном звуке, а для каждой фразы выбираем тот, который увереннее в услышанном. Русская фраза остаётся как есть и не переводится; английская переводится на русский. На одну фразу выбирается один язык: распознаватель не умеет переключаться посреди фразы, поэтому чужое слово внутри предложения записывается на слух языком-победителем.

У русского распознавателя есть недостаток, который мы измерили в тот же день: он не ставит знаков препинания, даже если их попросить. Предложение приходит одной строкой без точек. Читать такое неудобно, а переводить ещё хуже: просьба «перепроверь» превратилась в «I’ll double-check» — обещание вместо просьбы. Поэтому диктовка им не пользуется: русская диктовка работает на отдельной модели, Parakeet, которая сама ставит знаки препинания. Пара распознавателей выше обслуживает живые субтитры.

Шаг 2: диктовка по сочетанию клавиш (4 августа)

Два сочетания. Option-Пробел вставляет в поле под курсором то, что вы сказали, как есть. Option-Control-Пробел сначала переводит на английский. Текст вставляется одним куском, когда вы заканчиваете. У вставки есть защита: если в поле что-то выделено или активно поле пароля, она не затирает всё подряд. Голосовые знаки препинания тоже работают: назвали знак — получили знак.

Шаг 3: секретарь (5 августа)

Третье сочетание, Option-Command-Пробел, запускает долгий сеанс. Вы говорите сколько нужно, с паузами и отвлечениями, а каждый распознанный кусок сразу вставляется в то поле, где вы начали. Можно переключиться в другую программу: текст по-прежнему идёт на исходное место.

Это обещание требует осторожности. Перед каждой вставкой приложение проверяет, что программа-адресат ещё работает, что фокус остался в том же поле (а не в другом поле той же программы, например в строке поиска), что там ничего не выделено и что система не в режиме ввода пароля. Если фокус ушёл, кусок ждёт, а на панели появляется сообщение — он не вставляется куда попало. Сеанс завершается тем же сочетанием, крестиком на панели или через 15 минут.

Клавишу Escape мы намеренно не перехватываем на весь сеанс. Иначе Escape перестал бы работать во всех остальных программах, пока вы диктуете, а сеанс длится минутами. Завершить его можно крестиком на панели.

Одна ошибка, найденная 5 августа: в чат-приложениях на Electron вставка молча не срабатывала, если раскладка клавиатуры была не латинской. Теперь на мгновение вставки мы переключаемся на латинскую раскладку.

Сегодня: оба способа слились в одну диктовку. Держите клавишу — фраза целиком, нажмите коротко — секретарь. Оба бесплатны.

Ещё из блога