Nota Nota
MENU BAR · APPLE SILICON · БЕЗ ОБЛАКА

Зажмите правый ⌘ — и то, что вы сказали, уже в тексте.

Локальное распознавание речи для macOS. Whisper.cpp понимает русскую речь вперемешку с техническими терминами и не путает terraform с «реформой». Ни один звук не покидает ваш Mac.

macOS 15 или новее · Apple Silicon

Напишите, если хотите узнать о выходе — kiselev2008@gmail.com

задержка (прогрето)
~1.5 с
модель
large-v3, q5_0
сеть во время работы
0 байт
Claude Code — терминал
$
правый ⌘ удержан
Nota

Нота — придуманный людьми способ записать звук значками. Nota делает ровно это, только значки — буквы.

Нотная запись появилась, чтобы музыкальный звук не исчезал бесследно. Nota ловит сказанное вслух и превращает в текст, который остаётся.

/ ПРИВАТНОСТЬ

Речь распознаётся на этом Mac. Точка.

Сеть используется один раз — чтобы скачать веса модели при установке. После этого Nota может работать в самолёте: whisper.cpp и Metal делают всё распознавание локально, без серверов и без API-ключей.

Даже на самом Mac текст остаётся только там, где вы разрешили: историю последних фраз и диагностический лог можно выключить в настройках — и тогда ваши диктовки не остаются на диске вовсе.

Распознавание — офлайн

Модель ggml large-v3 (q5_0, ~1 ГБ) загружается в память и работает через Metal на Apple Silicon. Запись целиком остаётся в процессе приложения.

Сеть — только один раз

Единственный сетевой обмен за всё время использования — разовая загрузка весов модели при установке. Дальше приложению сеть не нужна.

Без исключений

Ни аккаунта, ни API-ключей. Текст диктовок не уходит с Mac ни при каких настройках, а статистика хранит только числа — и тоже лежит здесь.

/ VAD · ДЕТЕКТОР РЕЧИ

Нейросетевой VAD: нет голоса — нет и выдуманного текста

Whisper учился на видео с субтитрами, а в видео на тишине обычно идут финальные титры. Поэтому на записи без голоса — тишина, шум, фоновая музыка — он не возвращает пустую строку, а выдумывает такую фразу: «Продолжение следует...» или знаменитое «Субтитры сделал DimaTorzok». Без защиты она попала бы в ваше окно.

Поэтому когда вы отпускаете клавишу, запись сначала слушает Silero VAD — компактная нейросеть, обученная отличать человеческий голос от всего остального. Голоса не нашлось — запись не уходит в whisper, и в окно ничего не вставится. Проверка занимает миллисекунды и тоже идёт локально. Порог и минимальную длительность речи можно настроить, а детектор — выключить.

замер · что выдал whisper на записи без голоса
тишина в комнате «Время обновления: 06:00»
громкий шум «Время обновления: 20.04.2011»
музыка без слов «Продолжение следует...»

В замере было пять записей без голоса. Без VAD — выдуманный текст на каждой, с VAD все пять отсечены, а речь проходит, даже тихая, на 30 дБ ниже обычной.

/ КОРРЕКЦИЯ ТЕРМИНОВ

Слово пишется в словарь один раз — остальное Nota делает сама

Один словарь: слово — так, как оно должно писаться, а в скобках, если нужно, — во что его превращает модель. Из этого собираются три защиты.

# dictionary.yaml

words:

  - terraform

  - Caddy: [кадди]

  - Claude Code: [код-код, клад код, плот кода]

ШАГ 1 · до распознавания
01

Подсказка декодеру

Слова словаря уходят в whisper ещё до начала записи и заранее сдвигают вероятности в их пользу — модель пишет их правильно сама.

реформ → terraform
ШАГ 2 · после распознавания
02

Варианты и регистр

Если модель всё же услышала по-своему, вариант из скобок заменяется словом — только целым словом. Латинское слово всегда пишется как в словаре.

клад код → Claude Code
ШАГ 3 · для опытных
03

Регулярные выражения

Для того, что словом не выразить: правило с контекстом, которое срабатывает только рядом с нужным словом.

nginx статистику → nginx статику

Всё это — одна вкладка «Словарь». Вставьте распознанную фразу в поле проверки — и сразу увидите, что с ней сделает словарь, ещё до того как сохраните его. А слово можно вообще не вписывать руками: поправьте его в своей же фразе на вкладке «История» — приложение предложит запомнить исправление вариантом или новым словом.

/ ИНТЕРФЕЙС

Всё видно и проверяется на месте

Пять вкладок: Основные, Словарь, История, Статистика, Модель. Каждое слово словаря проверяется на живом тексте прямо в окне. В версии 1.3.1 исправлены сохранение и удаление истории, применение горячей клавиши и загрузка модели; технические имена C#, .NET и C++ сохраняются целиком при обучении из истории. Нажмите на снимок, чтобы открыть его крупно.

Настройки Nota, вкладка «Основные»: клавиша диктовки, микрофон, язык, аватар и его непрозрачность, автозапуск, диагностический лог, детектор речи, версия
Основные — клавиша, язык, аватар, детектор речи
Настройки Nota, вкладка «Словарь»: слова и варианты, во что их превращает модель, с проверкой фразы вживую
Словарь — слова и во что их превращает модель
Настройки Nota, вкладка «Словарь», раздел «Регулярные выражения»: правила для опытных
Регулярные выражения — для того, что словом не выразить
Настройки Nota, вкладка «История»: последние фразы; исправление фразы ложится в словарь
История — последние фразы, правка учит словарь
Настройки Nota, вкладка «Статистика»: слова, темп речи, сэкономленное время и график по дням
Статистика — слова, темп речи, экономия времени
Настройки Nota, вкладка «Модель»: расположение и состояние файла весов
Модель — расположение и состояние весов
Аватар Nota на рабочем столе: телевизор с нотой на макушке, на зелёном экране — глаза
Аватар — висит на экране, моргает и слушает
/ АВАТАР

Видно, что Nota слушает, — ещё до конца фразы

На экране живёт маленький объёмный персонаж: телевизор с нотой на макушке, ручками, ножками и зелёным экраном старого осциллографа. Пока вы говорите, по экрану бежит волна голоса — догадываться, услышал ли микрофон, не нужно.

Аватар можно утащить мышью в любое место любого монитора — он там и останется. Фокус он не забирает: текст вставляется туда, где стоит курсор, а клик по пустому месту рядом с ним попадает в окно под ним. Мешает, например, при записи экрана — выключается одной галочкой в настройках. А если просто заслоняет окно, его можно сделать полупрозрачным: стоит навести на него курсор — он проявляется целиком, уберёте — снова бледнеет.

И он под рукой. Текст ушёл не в то окно — дважды кликните по аватару, и последняя диктовка окажется в буфере обмена: он подпрыгнет, а на экране из-под листка выедет второй. Сразу после запуска копировать ещё нечего — тогда мигает пустой листок, и буфер остаётся как был. Правый клик открывает то же меню, что у значка в менюбаре.

А ещё он живой. На клик подмигивает или улыбается, пока его тащат — пугается, а после долгого полёта делает пируэт, и у него кружится голова. Если долго не диктовать, зевает, пританцовывает под свою песенку и через полчаса засыпает; будит его клик или клавиша диктовки.

Микрофон выбирается там же: встроенный, USB, Bluetooth или виртуальный вход. Выбор действует только для Nota — системный вход macOS остаётся прежним. После фразы Nota сразу отпускает микрофон: AirPods возвращаются к обычному звуку, а не застревают в режиме гарнитуры. А если микрофон отключится посреди фразы, запись отменится с понятной ошибкой и обрывок не вставится.

Текст вставляется и в виртуальную машину: в Linux под UTM он появляется примерно на секунду позже обычного — Nota ждёт, пока UTM перенесёт буфер обмена в гостевую систему, и вставляет так же, как ваше собственное ⌘V в окне машины.

ВИСИТ ВЕСЬ ДЕНЬ

В ожидании аватар почти не тратит батарею: картинка обновляется, только когда он моргает. Кадры идут непрерывно лишь пока вы говорите и пока фраза распознаётся. Заснув, он не тратит ничего: картинка застывает.

Нажмите на состояние, чтобы задержаться на нём; — снова все подряд.

/ СТАТИСТИКА

Сколько сказано и сколько времени это сэкономило

Слова, темп речи, экономия против набора руками и серия дней подряд — во вкладке «Статистика», график на Swift Charts.

СЛОВ В ДЕНЬ, ПОСЛЕДНИЕ 14

иллюстрация

Реальный график — с вашими цифрами — во вкладке «Статистика» окна настроек.

темп речи

128 слов/мин

серия дней

12 подряд

сэкономлено

3.4 ч/нед

распознавание

1.5 с в среднем