Приватно · На пристрої · Apple Neural Engine

Живі субтитри до всього,
що відтворює ваш Mac.

Відео, дзвінки, подкасти: транскрибуються просто під час відтворення і малюються як оверлей поверх усіх вікон. Нічого не вивантажується, нічого не записується, нічого не пишеться на диск.

Повернення коштів за 14 днів, без зайвих запитань

$9 одноразово, усі майбутні оновлення включено · macOS 14.2 або новіша · Apple Silicon
Необмежені субтитри, скільки завгодно довго. Жодних хвилин на докупку, жодного облікового запису, жодної підписки.

Перемкніть програму, і субтитри лишаться: оверлей стоїть над усіма вікнами і пропускає кліки крізь себе.

Натисніть на вікно, щоб винести його вперед. Утримуйте і перетягніть субтитри, щоб їх пересунути, так само як у програмі.

Наведіть на субтитри, і вони розчиняться під вказівником. Утримайте , щоб скласти кілька останніх назад у стос. І те, і те працює тут точно так, як у програмі.

Живі субтитри для будь-якої програми на вашому Mac

Subtitles дає субтитри до будь-якого звуку, який ваш Mac може відтворити, бо вона знімає звук із самої програми, а не інтегрується з якимось одним сервісом. Чи ви глухі або зі зниженим слухом, чи слухаєте другою мовою, чи просто працюєте в гучному місці, три ситуації трапляються знову й знову.

01

Зустрічі та дзвінки

Zoom, Google Meet, Teams, huddle у Slack, дзвінок у вкладці браузера: усе це просто звук, який видає програма, тому все це отримує субтитри. Друга мова чи рідна, значення не має: субтитри виправдовують себе тієї миті, коли акцент незвичний, у когось поганий мікрофон або двоє говорять одночасно. Прочитати слово, яке ви розчули наполовину, швидше, ніж перепитувати, і нікого не доводиться перебивати.

02

Тримати нитку, поки ви працюєте

Звук не чекає. Тієї миті, коли ви перемикаєтеся на нотатки, редактор чи вікно браузера, ви починаєте губити розмову. Оверлей завжди поверх усіх вікон і пропускає кліки, тож він лишається на місці, поки ви працюєте перед ним. Ви можете писати нотатки, щось перевірити і далі стежити за тим, що кажуть. Блокнот на кшталт Granola описує зустріч після неї; це та половина, яка має відбутися, поки зустріч ще триває.

03

Відео, подкасти і лекції

Відео без субтитрів або з автоматичними, які гірші за їх відсутність. Подкаст мовою, яку ви ще вчите. Записана лекція або лекція в трансляції, інтерв'ю, фільм із тихими діалогами. Субтитри з'являються над тим вікном, яке це відтворює, тим розміром тексту, який ви задали, шістнадцятьма мовами, і мову визначать за вас.

Усі троє мають спільне: зустріч, дзвінок і приватний запис не є справою жодного сервера. Ніщо з цього звуку не вивантажується, бо й не мусить: модель працює на вашому Mac.

Побудовано навколо трьох обмежень

Живий звук не поставиш на паузу, не перезапустиш, і він не має покидати ваш комп'ютер. Усе тут випливає саме з цього.

Ніщо не залишає Mac

Вона працює локально і офлайн: ні мережевих запитів, ні акаунтів, ні телеметрії. Аудіо йде з тапу просто в розпізнавач і відкидається. Єдине, що взагалі завантажується, це сама модель, один раз.

Neural Engine, а не процесор

Приблизно 0,15 від реального часу: шість секунд мовлення транскрибуються за секунду обчислень. Та сама модель на процесорі виявилася приблизно у 100× повільнішою, ніж треба, щоб встигати за живим потоком.

Кожна програма або лише одна

За замовчуванням вона слухає все, що відтворює ваш Mac, тож щоб вона запрацювала, налаштовувати нічого не треба. Звузьте до однієї програми з рядка меню, коли говорять дві речі одночасно: вона захоплює цю програму плюс кожен допоміжний процес, який та породжує, а саме це змушує працювати браузери і програми на Electron, де звук ніколи не йде з головного процесу.

Музика не стає текстом пісні

Перед розпізнавачем працює детектор голосу, тож фонові доріжки до нього не доходять. Без нього музика забиває контекст моделі, і перші слова після неї губляться.

Новий блок для кожного мовця

За бажання можна починати новий субтитр, коли заговорює хтось інший, так само як це робить пауза. Вимкнено за замовчуванням: поряд із першою працює друга модель.

Шістнадцять мов

Типова модель сама визначає мову. Англійська додатково має сім власних чекпоінтів, які міняють затримку на точність, від 160 мс і вище.

Оверлей не заважає

Річ, що стоїть поверх усіх вікон, працює лише тоді, коли вона ніколи не стає тим, що доводиться обходити. Вона не приймає кліків, вона розчиняється там, куди ви показуєте, і вона повертає вам рядок, від якого ви відвели погляд.

Отвір там, куди ви показуєте

Піднесіть вказівник до блоку, і блок під ним поблідне, тож речення, яке ви читаєте, ніколи не накриє речення, яке ви пишете. Наскільки він зникає і наскільки широкий цей отвір, задаєте ви. Утримайте , щоб він лишався щільним.

Утримуйте ⌥, щоб побачити пропущене

Блок гортає сторінки, як телевізійні субтитри: він заповнюється, очищається і починає знову, тож рядка, від якого ви відвели погляд, уже немає. Утримайте , і останні завершені блоки складуться назад у стос над живим, до тридцяти штук, зі скролом до старіших. Відпустіть, і їх знову немає. Ніде нічого не пишеться.

Оверлей і є попереднім переглядом

, у меню відкриває параметри: скільки рядків уміщає блок, перш ніж очиститися, наскільки він непрозорий, як широко діє просвітлення під вказівником, як далеко назад сягає . Кожен повзунок застосовується до оверлея просто під час перетягування, тож ви налаштовуєте усе на око, а не добираючи число.

Як це працює

Аудіопотік реального часу, який тільки копіює, портативне ядро, яке ніколи не транскрибує, і модель, що працює там, де їй місце.

  1. 1

    Process tap із Core Audio

    48 кГц стерео, зворотний виклик кожні 10,7 мс. Потік реального часу копіює дані в кільцевий буфер без блокувань і більше не робить нічого.

  2. 2

    Ресемплінг і відсіювання

    Донизу до 16 кГц моно в робочому потоці, тиша пропускається, і близько секунди відтворюється повторно перед мовленням, щоб жодне слово не починалося з холодного старту.

  3. 3

    Parakeet на Neural Engine

    Потокова модель, а не модель із вікном на 30 секунд: у цьому різниця між субтитрами, які йдуть за звуком, і субтитрами, які приходять на кілька секунд пізніше.

  4. 4

    Оверлей

    Сторінки по три рядки, які очищаються і починаються знову, як телевізійні субтитри, і зникають через чотири секунди після останнього нового тексту, а не після того, як звук стих.

Усе від кільцевого буфера до межі моделі є портативним кодом на Rust, який свідомо не транскрибує: він лише роздає кадри. Тап і оверлей це єдині частини, специфічні для Mac.

Повернення коштів за 14 днів, без зайвих запитань.

Немає чого перевіряти і немає від чого відмовлятися

Причина, з якої це можна навести на робочий дзвінок, полягає в тому, що це не сервіс. Немає ні сервера, ні акаунта, ні транскрипту, тож нічого надсилати і нікого зайвого в ланцюжку немає. Довга версія записана. Код опубліковано, тож нічого з цього не треба брати на віру.

  • До дзвінка не приєднується жоден бот. Програма захоплює звук, який ваш Mac і так відтворює, тож у списку учасників нічого не з'являється і нікому не повідомляють, що щось запущено. Більшість продуктів цієї категорії натомість надсилає видимого учасника, а чимало компаній таке прямо забороняють.
  • Нічого не записується і нічого не пишеться на диск. Аудіо йде з тапу в розпізнавач і відкидається на місці. Субтитри є на екрані, а потім їх немає; блоки, які повертає , тримаються в пам'яті, доки ви не вийдете з програми, і потім немає файлу, який можна було б знайти, ні на вашому Mac, ні деінде.
  • Мікрофон ніколи не відкривається. Програма чує лише те, що відтворює ваш Mac. Це справжнє обмеження, і водночас саме тому ніщо сказане вами нікуди не потрапить.
  • Ні акаунта, ні телеметрії, ні мережі. Немає куди входити, і ніде не звітується жодне використання. Модель завантажується один раз, близько 633 МБ, і після цього не лишається жодного мережевого запиту: вимкніть Wi-Fi, і субтитри йтимуть далі.
  • Тут немає на чому навчатися. Транскрипту, який можна надіслати, не існує, тож немає ні налаштування навчання, яке треба шукати, ні типового значення, яке треба перевіряти, ні обробника, якого треба вписувати в угоду про дані. Чи проходить це вашу власну політику, вирішувати вам, але третьої сторони, яку треба перевіряти, тут немає.
  • Єдиний виняток це купівля. Gumroad приймає оплату і бачить вашу пошту, як і будь-яка крамниця, і пише вам, коли програма оновлюється. Сама програма ніколи не питає у вас ні того, ні того.

Обирайте мову, а не модель

Мова є першим, що вводить модель у гру або виводить із неї, тому вона й стоїть на верхньому рівні меню. Перемикання всередині пакета миттєве; перехід між пакетами завантажує інший і зберігає те, що у вас уже є.

Передумайте посеред завантаження, і воно скасується, а нове почнеться одразу. Перемкніться назад пізніше, і воно продовжиться, а не почнеться спочатку.

Шістнадцять загалом: англійська, іспанська, французька, італійська, португальська, німецька, нідерландська, турецька, російська, арабська, гінді, японська, корейська, в'єтнамська, українська і мандаринська. Лишіть «Багатомовну», і вона сама з'ясує, яку з них чує, або назвіть мову, і вона перестане вгадувати.

Вона живе в рядку меню

Ні піктограми в Dock, ні вікна, яким треба керувати. Піктограма показує, що зараз відбувається: індиго, коли слухає, синя, коли завантажується модель, жовта, якщо конвеєр починає відставати, і ніколи червона, бо червоне означає запис, а тут нічого й ніде не пишеться. Перемикачі живуть у меню, а , там відкриває вікно параметрів з регуляторами до них.

S
Пауза і відновлення
Утримуйте
Зробити оверлей перетягуваним; в інший час він пропускає кліки
Утримуйте
Складати кілька останніх блоків назад у стос над живим; гортати до старіших
,
Параметри з відкритого меню: рядків на блок, непрозорість, просвітлення під вказівником, як далеко сягає
Рядок меню
Модель, джерело, розмір тексту, позиція оверлея, стан дозволу

Чому не Живі субтитри Apple?

У macOS є вбудовані субтитри, безкоштовні, на кожному Mac з Apple silicon, у розділі «Системні параметри», «Доступність», «Живі субтитри». Якщо це покриває ваші потреби, користуйтеся ним. А ось місця, де воно перестало покривати мої, і є порівняння рядок за рядком, якщо вам потрібна довга версія.

  • Шістнадцять мов, визначені за вас. Рішення Apple доступне не в кожній мові, країні чи регіоні. Типова модель тут сама з'ясовує мову, а рядок меню перемикає між ними.
  • Модель обираєте ви. Сім англійських чекпоінтів, що міняють затримку на точність від 160 мс і вище, плюс багатомовний. Apple дає вам субтитри, а не регулятор.
  • Оверлей пропускає кліки крізь себе. В Apple це вікно, яке ви пересуваєте і масштабуєте. Це не приймає кліків узагалі, тож ви працюєте просто крізь нього. Утримайте , коли таки хочете його пересунути.
  • Вона відступає там, куди ви показуєте. Блок бліднішає під вказівником, щоб ви бачили, що під ним, рівно настільки і настільки широко, як ви задали. В Apple це непрозоре вікно, яке ви просто пересуваєте кудись інде.
  • Усі одразу або лише одна. Обидва варіанти починають з усього, що грає на комп'ютері. Різниця в тому, що цей можна звузити до потрібної програми, тож субтитри йдуть до дзвінка, а решта машини мовчить.
  • Музика не стає текстом пісні. Перед розпізнавачем працює детектор голосу, тож фонова доріжка до нього не доходить.
  • Новий блок для кожного мовця. Опційно, вимкнено за замовчуванням і без відповідника у вбудованому рішенні.

Що варто знати до завантаження

  • Перший запуск триває кілька хвилин. Модель важить близько 633 МБ і завантажується сама під час першого запуску. Рядок меню показує прогрес.
  • macOS попросить дозволу записувати системний звук. Пропустіть цей запит, і кожен семпл приходитиме цифровою тишею без жодної помилки будь-де, тому програма тримає перевірку дозволу в меню, замість вдавати, ніби все знає. Завантаження підписане й нотаризоване, тож ваша відповідь переживе будь-яке оновлення.
  • Спів рахується за мовлення. Детектор голосу не бачить різниці, тож вокальна музика проходить далі як текст пісні.
  • Розриви між мовцями трохи запізнюються. Діаризація звітує з певним тактом, тож слово або два нового мовця можуть потрапити в блок, що вже йде на вихід, перш ніж той очиститься.
  • Один дисплей. Оверлей використовує головний екран.
  • Моделі лишаються на диску, щойно ви їх спробували. Перемикання між вісьмома з них є способом знайти потрібну, і кожна, яку ви спробували, зберігається. У параметрах є кнопка, яка видаляє ті, що не використовуються, і ніколи ту, що працює зараз.

Запитання, які ставлять першими

Чи працює вона із Zoom, Teams і Google Meet?
Так. Вона знімає звук, який відтворює програма, а не інтегрується з якимось одним сервісом, тож вікно Zoom, huddle у Slack і дзвінок у вкладці браузера субтитруються однаково. Браузери і програми на Electron теж: вона захоплює допоміжні процеси, які ті породжують, а саме звідти й береться їхній звук.
Хіба оверлей не заважає?
Він не приймає кліків узагалі, тож ви працюєте просто крізь нього, і він бліднішає під вказівником, тож ви можете прочитати те, що під ним. Наскільки він бліднішає, наскільки далеко це сягає, наскільки щільний сам блок і скільки рядків він тримає, усе це налаштування. Утримайте , щоб він лишався щільним, і перетягніть кудись інде; місце, куди ви його поставили, запам'ятовується.
Чи субтитрує вона мій власний голос?
Ні. Вона чує лише те, що відтворює ваш Mac, і ніколи мікрофон. На дзвінку це означає, що ви читаєте інших людей, а не себе.
Чи потрібне їй інтернет-з'єднання?
Один раз, щоб завантажити модель під час першого запуску, близько 633 МБ. Після цього вона працює цілком офлайн і не робить жодних мережевих запитів.
Чи можу я зберегти або експортувати транскрипт?
Ні, і це свідомо. На диск нічого не пишеться: субтитри існують на екрані, а потім їх немає. Утримання повертає кілька останніх блоків, поки програма працює, і це для того, щоб зловити рядок, від якого ви відвели погляд, а не щоб вести літопис. Якщо вам потрібен запис розмови, це не той інструмент.
Чи має це погоджувати ІТ-відділ?
Тут немає постачальника, якого треба погоджувати: ні акаунта, ні сервера, ні транскрипту, що покидає Mac, і нікого, хто приєднується до дзвінка як учасник, тож нікого на зустрічі ніщо не записує. Це одна підписана й нотаризована програма на одному комп'ютері, і після одноразового завантаження моделі вона не робить жодних мережевих запитів. Чи проходить це вашу власну політику, вирішувати вам, але третьої сторони, яку треба перевіряти, тут немає.
Чи працює вона з навушниками або AirPods?
Так. Вона захоплює звук, який видає програма, а не звук, що виходить з динаміка, тож те, у чому ви слухаєте, різниці не робить.
Чи сповільнить вона мій Mac?
Транскрипція працює на Neural Engine, а не на процесорі, приблизно з коефіцієнтом 0,15 від реального часу, тобто шість секунд мовлення за секунду обчислень. Та сама модель на процесорі виявилася приблизно у 100× повільнішою, ніж треба, щоб узагалі встигати.
На яких Mac вона працює?
Apple Silicon, macOS 14.2 або новіша. Нижня межа версії це process tap із Core Audio, тобто API, на якому все й побудовано.
Це підписка?
Ні. $9 одноразово, усі майбутні оновлення включено, акаунт створювати не треба і хвилин докуповувати не треба. Якщо це не для вас, є повернення коштів за 14 днів.
Чи можу я подивитися код?
Так. Її опубліковано за ліцензією FSL-1.1-ALv2, яка через два роки після кожного випуску стає Apache 2.0. Прочитайте код або зберіть програму самі на github.com/daformat/subtitles.

Субтитри до всього, без надсилання звуку кудись назовні.

Повернення коштів за 14 днів, без зайвих запитань

$9 одноразово, усі майбутні оновлення включено · macOS 14.2 або новіша · Apple Silicon
Необмежені живі субтитри, доки у вас є цей Mac. Жодних хвилин на докупку, жодного облікового запису, жодної підписки.