Зажмите правый ⌘ — и то, что вы сказали, уже в тексте.
Локальное распознавание речи для macOS. Whisper.cpp понимает русскую речь вперемешку с техническими терминами и не путает terraform с «реформой». Ни один звук не покидает ваш Mac.
macOS 15 или новее · Apple Silicon
Напишите, если хотите узнать о выходе — kiselev2008@gmail.com
- задержка (прогрето)
- ~1.5 с
- модель
- large-v3, q5_0
- сеть во время работы
- 0 байт
Нота — придуманный людьми способ записать звук значками. Nota делает ровно это, только значки — буквы.
Нотная запись появилась, чтобы музыкальный звук не исчезал бесследно. Nota ловит сказанное вслух и превращает в текст, который остаётся.
Речь распознаётся на этом Mac. Точка.
Сеть используется один раз — чтобы скачать веса модели при установке. После этого Nota может работать в самолёте: whisper.cpp и Metal делают всё распознавание локально, без серверов и без API-ключей.
Даже на самом Mac текст остаётся только там, где вы разрешили: историю последних фраз и диагностический лог можно выключить в настройках — и тогда ваши диктовки не остаются на диске вовсе.
Распознавание — офлайн
Модель ggml large-v3 (q5_0, ~1 ГБ) загружается в память и работает через Metal на Apple Silicon. Запись целиком остаётся в процессе приложения.
Сеть — только один раз
Единственный сетевой обмен за всё время использования — разовая загрузка весов модели при установке. Дальше приложению сеть не нужна.
Без исключений
Ни аккаунта, ни API-ключей. Текст диктовок не уходит с Mac ни при каких настройках, а статистика хранит только числа — и тоже лежит здесь.
Нейросетевой VAD: нет голоса — нет и выдуманного текста
Whisper учился на видео с субтитрами, а в видео на тишине обычно идут финальные титры. Поэтому на записи без голоса — тишина, шум, фоновая музыка — он не возвращает пустую строку, а выдумывает такую фразу: «Продолжение следует...» или знаменитое «Субтитры сделал DimaTorzok». Без защиты она попала бы в ваше окно.
Поэтому когда вы отпускаете клавишу, запись сначала слушает Silero VAD — компактная нейросеть, обученная отличать человеческий голос от всего остального. Голоса не нашлось — запись не уходит в whisper, и в окно ничего не вставится. Проверка занимает миллисекунды и тоже идёт локально. Порог и минимальную длительность речи можно настроить, а детектор — выключить.
В замере было пять записей без голоса. Без VAD — выдуманный текст на каждой, с VAD все пять отсечены, а речь проходит, даже тихая, на 30 дБ ниже обычной.
Слово пишется в словарь один раз — остальное Nota делает сама
Один словарь: слово — так, как оно должно писаться, а в скобках, если нужно, — во что его превращает модель. Из этого собираются три защиты.
# dictionary.yaml
words:
- terraform
- Caddy: [кадди]
- Claude Code: [код-код, клад код, плот кода]
Подсказка декодеру
Слова словаря уходят в whisper ещё до начала записи и заранее сдвигают вероятности в их пользу — модель пишет их правильно сама.
Варианты и регистр
Если модель всё же услышала по-своему, вариант из скобок заменяется словом — только целым словом. Латинское слово всегда пишется как в словаре.
Регулярные выражения
Для того, что словом не выразить: правило с контекстом, которое срабатывает только рядом с нужным словом.
Всё это — одна вкладка «Словарь». Вставьте распознанную фразу в поле проверки — и сразу увидите, что с ней сделает словарь, ещё до того как сохраните его. А слово можно вообще не вписывать руками: поправьте его в своей же фразе на вкладке «История» — приложение предложит запомнить исправление вариантом или новым словом.
Всё видно и проверяется на месте
Пять вкладок: Основные, Словарь, История, Статистика, Модель. Каждое слово словаря проверяется на живом тексте прямо в окне. В версии 1.3.1 исправлены сохранение и удаление истории, применение горячей клавиши и загрузка модели; технические имена C#, .NET и C++ сохраняются целиком при обучении из истории. Нажмите на снимок, чтобы открыть его крупно.
Видно, что Nota слушает, — ещё до конца фразы
На экране живёт маленький объёмный персонаж: телевизор с нотой на макушке, ручками, ножками и зелёным экраном старого осциллографа. Пока вы говорите, по экрану бежит волна голоса — догадываться, услышал ли микрофон, не нужно.
Аватар можно утащить мышью в любое место любого монитора — он там и останется. Фокус он не забирает: текст вставляется туда, где стоит курсор, а клик по пустому месту рядом с ним попадает в окно под ним. Мешает, например, при записи экрана — выключается одной галочкой в настройках. А если просто заслоняет окно, его можно сделать полупрозрачным: стоит навести на него курсор — он проявляется целиком, уберёте — снова бледнеет.
И он под рукой. Текст ушёл не в то окно — дважды кликните по аватару, и последняя диктовка окажется в буфере обмена: он подпрыгнет, а на экране из-под листка выедет второй. Сразу после запуска копировать ещё нечего — тогда мигает пустой листок, и буфер остаётся как был. Правый клик открывает то же меню, что у значка в менюбаре.
А ещё он живой. На клик подмигивает или улыбается, пока его тащат — пугается, а после долгого полёта делает пируэт, и у него кружится голова. Если долго не диктовать, зевает, пританцовывает под свою песенку и через полчаса засыпает; будит его клик или клавиша диктовки.
Микрофон выбирается там же: встроенный, USB, Bluetooth или виртуальный вход. Выбор действует только для Nota — системный вход macOS остаётся прежним. После фразы Nota сразу отпускает микрофон: AirPods возвращаются к обычному звуку, а не застревают в режиме гарнитуры. А если микрофон отключится посреди фразы, запись отменится с понятной ошибкой и обрывок не вставится.
Текст вставляется и в виртуальную машину: в Linux под UTM он появляется примерно на секунду позже обычного — Nota ждёт, пока UTM перенесёт буфер обмена в гостевую систему, и вставляет так же, как ваше собственное ⌘V в окне машины.
ВИСИТ ВЕСЬ ДЕНЬ
В ожидании аватар почти не тратит батарею: картинка обновляется, только когда он моргает. Кадры идут непрерывно лишь пока вы говорите и пока фраза распознаётся. Заснув, он не тратит ничего: картинка застывает.
Нажмите на состояние, чтобы задержаться на нём; — снова все подряд.
Аватар выше настоящий: нажмите на него, нажмите дважды, потащите или наведите курсор и подождите.
Сколько сказано и сколько времени это сэкономило
Слова, темп речи, экономия против набора руками и серия дней подряд — во вкладке «Статистика», график на Swift Charts.
СЛОВ В ДЕНЬ, ПОСЛЕДНИЕ 14
иллюстрация
Реальный график — с вашими цифрами — во вкладке «Статистика» окна настроек.
темп речи
128 слов/мин
серия дней
12 подряд
сэкономлено
3.4 ч/нед
распознавание
1.5 с в среднем