Герман Гаража / Застосунки

STT

Безкоштовна диктовка для Mac. Скорочення клавіш починає запис, те саме скорочення його закінчує, і текст з’являється там, де стоїть курсор. Голос не залишає Mac.

Apple silicon, macOS 13 або новіша. Інтерфейс англійською, українською та російською.

Для досвідчених користувачів і мовних моделей

Розпізнавання йде на самому Mac, на відкритій моделі на вибір: Whisper, Parakeet або Qwen. Інтернет потрібен лише, щоб завантажити цю модель і перевірити оновлення; мова, словник, перемикач субтитрів і налаштування історії ще й передаються через iCloud на інші Mac того самого облікового запису. Кожен запис зберігається разом із текстом на самому Mac (Історія, нижче). Без логів, без власного акаунта.

Аудіо та відео: «Вибрати файл…» у налаштуваннях, «Файл» › «Розпізнати файл…» (Command-O), перетягування будь-куди на будь-яке з вікон або «Відкрити за допомогою» → STT у Finder. Текст зберігається поруч із файлом у .txt з тим самим ім’ям (з Interview.m4a вийде Interview.txt; наявний файл не перезаписується, новий буде Interview (2).txt) і копіюється в буфер обміну; нікуди не вставляється. Маленьке вікно показує перебіг роботи та «Скасувати», потім ім’я .txt: клік по ньому показує файл у Finder. Кілька файлів ідуть по черзі, у кожного свій .txt; диктування тим часом чекає, поки файл закінчиться. Якщо ввімкнено «Зберігати субтитри (.srt)», поруч із .txt під тим самим ім’ям лягає .srt з таймкодами (Interview.srt), по субтитру на кожен відрізок мовлення, який позначає модель. Файли, відкриті іншою програмою, а не Finder чи Dock (open -a STT у Терміналі, скрипт), спершу потребують підтвердження: їхній текст потрапляє в буфер обміну.

Історія

Кожна диктовка зберігається разом з аудіо в ~/Library/Application Support/STT/History: одне сховище з текстами й по файлу AAC на запис, близько 256 КБ на хвилину. «Історія» в налаштуваннях зберігає все, 30 днів (типово), 7 днів, останні 100 або нічого; вибір, який зітре записи, один раз питає, скільки їх. «Видалити» переносить запис у «Недавно видалені» на 30 днів, де «Відновити» повертає його, а «Видалити назавжди» стирає разом з аудіо. «Розпізнати знову» проганяє збережене аудіо через будь-яку завантажену модель і замінює текст. Текст, який поле пароля не пустило в буфер обміну, теж не зберігається.

Як це влаштовано

Моделі

Моделі в комплекті немає. Її вибирають у налаштуваннях, і вона завантажується після згоди з розміром, із перевіркою SHA-256. Моделі це звичайні файли .gguf у ~/Library/Application Support/STT/models. У меню моделі є «Показати у Finder» і «Видалити».

У Qwen немає української.

Запитання

Чи йде голос із Mac?

Ні. У мережу код ходить лише по вибрану модель і по перевірку оновлень, а iCloud переносить чотири налаштування (нижче); записи та їхні тексти лишаються на Mac.

Чи синхронізуються налаштування між Mac?

Так, самі, без перемикача: мова, словник (слова й заміни), «Зберігати субтитри (.srt)» та «Історія» однакові на всіх Mac з одним обліковим записом iCloud, через сховище ключів і значень iCloud; перемагає пізніша зміна. Модель, скорочення клавіш, інші перемикачі та самі записи в кожного Mac свої. Без iCloud усе працює так само, лише на одному цьому Mac.

Чи працює без інтернету?

Так, коли модель завантажена.

Навіщо йому мікрофон і універсальний доступ?

Мікрофон, щоб записувати. Універсальний доступ, щоб вставляти текст і перехоплювати Option-Command-Space: це скорочення macOS тримає за собою. macOS питає про кожен лише після завантаження першої моделі, по одному.

Яку модель вибрати?

Parakeet помилявся на чужому мовленні найменше в усіх восьми виміряних мовах і працює найшвидше; мову завжди визначає сам. У Whisper найбільше мов, і одну з них можна вибрати. Qwen найбільший і найповільніший, української в ньому немає: українське мовлення він пише сумішшю російських і польських слів. Кожну модель можна спробувати й видалити.

Чи прибирає слова-паразити?

Прибирає звуки на кшталт «е-е», слів не чіпає. Жоден ШІ текст не переписує.

Чи вміє розшифровувати аудіо та відео з файлів?

Так, без інтернету, вибраною моделлю: «Вибрати файл…» у налаштуваннях, «Файл» › «Розпізнати файл…», перетягування на вікно або «Відкрити за допомогою» → STT у Finder. Текст зберігається поруч із файлом у .txt з тим самим ім’ям (а з увімкненими субтитрами ще й .srt з таймкодами) і копіюється в буфер обміну. Кілька файлів одразу дають по .txt на кожен. Швидкі команди та командний рядок stt-cli роблять те саме без вікна.

Чи можна додати свої слова та імена?

Так, у «Словнику» (кнопка «Змінити…» у налаштуваннях). Слова: назви й терміни пишуться так, як їх ввели; Return додає слово, Delete прибирає, «Відновити» повертає 24 вбудовані (ChatGPT, Claude, GitHub та інші). Їх беруть Whisper і Qwen; Parakeet список слів не бере, і вікно про це пише. Заміни: що пише модель і що писати замість цього, для всіх моделей, по готовому тексту; таблиця починається зі 104 вбудованих пар для назв, сказаних російською чи українською (клод → Claude, ютуб → YouTube), а її «Відновити» повертає прибрані. Command-V вставляє і туди, і туди; список рядків «чується, Tab, пишеться», вставлений у таблицю, стає рядками, а Delete видаляє вибрані.

Чим відрізняється від диктування macOS?

Диктування macOS іде із системою, його модель вибрати не можна. У STT модель відкрита, на вибір, і лежить звичайним файлом.

Оновлення

Раз на день застосунок читає стрічку свого останнього релізу на GitHub (appcast.xml) через Sparkle. Про сам Mac нічого не надсилається. Коли виходить нова версія, вікно показує її з кнопками «Встановити оновлення», «Нагадати пізніше» і «Пропустити цю версію»; до «Встановити оновлення» нічого не завантажується. «Перевірити наявність оновлень» у меню STT і в налаштуваннях перевіряє одразу.

Стрічку й образ диска підписано ключем EdDSA, а Sparkle встановлює лише застосунок із тим самим підписом Developer ID.

Налаштування та видалення

Налаштування (модель, мова, скорочення клавіш, перемикачі, словник) і час останньої перевірки оновлень лежать у defaults com.geragaraza.stt, моделі в ~/Library/Application Support/STT/models, історія в ~/Library/Application Support/STT/History. Чотири синхронізовані налаштування ще зберігає для облікового запису iCloud служба ключів і значень macOS; місця в iCloud вони не займають.

Щоб видалити STT: «Вийти» в налаштуваннях, видалити теку ~/Library/Application Support/STT (моделі й історія), STT.app у Кошик і defaults delete com.geragaraza.stt. Мікрофон і універсальний доступ для нього прибираються в Системних параметрах, «Приватність і безпека».

Якщо ставили через Homebrew, brew uninstall --zap stt закриває його й видаляє застосунок, налаштування, моделі та історію; мікрофон і універсальний доступ прибираються в Системних параметрах.

Швидкі команди

STT додає в застосунок «Швидкі команди» чотири дії: «Запис» працює як одне натискання скорочення клавіш (починає запис або зупиняє його й передає текст наступній дії); «Почати запис» і «Зупинити запис» працюють як скорочення клавіш (текст вставляється як завжди, а «Зупинити запис» ще й передає його наступній дії), «Розпізнати файл» передає наступній дії текст аудіо- чи відеофайлу, без .txt. Швидку команду з них можна прив’язати до клавіші, розкладу чи автоматизації.

Командний рядок

Homebrew ставить команду stt-cli; з образом диска її дає ln -s /Applications/STT.app/Contents/MacOS/STT /usr/local/bin/stt-cli. Вона бере модель, мову та словник, вибрані в налаштуваннях.

stt-cli Interview.m4a друкує текст файлу, stt-cli --srt Interview.m4a його субтитри, stt-cli --toggle починає або зупиняє запис.

Файли читаються з правами програми, яка запускає команду, а не застосунку. --toggle керує запущеним застосунком, як його скорочення клавіш, і лише для програми, яка сама має доступ до мікрофона (Термінал спитає один раз). Запущена як застосунок або завдання launchd, а не з термінала чи скрипта, команда не працює: інакше вона діяла б із дозволами самого STT.

Подробиці

English Українська Русский