Перша збірка: живі субтитри з перекладом

Сьогодні запрацювала перша версія нашого застосунку. Ви обираєте програму, що відтворює звук, або мікрофон. Застосунок розпізнає англійське мовлення й показує його в невеликому вікні, а під кожним рядком — переклад російською. Усе відбувається на самому Маку.

Що він уміє

Застосунок живе в рядку меню. У меню — перелік програм, які можна слухати, і мікрофони. Програми, що зараз мовчать, зі списку не зникають: відеодзвінок ще не почався, вкладка браузера на паузі, а обрати їх треба наперед. Ті, що відтворюють звук, стоять першими.

Субтитри з’являються у вікні поверх усіх інших. Його можна перетягнути за тло й розтягнути за кутик, місце і розмір запам’ятовуються. У вікні можна показувати лише англійську, лише російську або обидві одразу — англійський рядок угорі. Шрифти, кольори та прозорість тла налаштовуються в окремому вікні.

Коли ви натискаєте «Зупинити», сесія зберігається повністю. Вікно «Нещодавні транскрибації» тримає останні 50 сесій, будь-яку можна скопіювати текстом. Сесія, в якій ніхто нічого не сказав, не зберігається.

Два рішення

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

Не чекати кінця фрази. Людина говорить речення чотири-вісім секунд, і порожній екран увесь цей час виглядає як поломка. Тому ми показуємо текст, що росте. Розпізнавання від Apple у швидкому режимі віддає новий текст приблизно раз на секунду; без цього режиму він приходив раз на 3,8 секунди. Останні слова ще блимають і виправляються, але це краще, ніж чекати.

Переклад приходить пізніше за розпізнавання, і тут була головна пастка. Текст надходить пачками, а перше оновлення пачки часто — уривок на кшталт «So». Ми чекаємо 150 мілісекунд і перекладаємо найсвіжіше оновлення. Кожне оновлення має номер, а переклад старішого тексту відкидається — запізніла відповідь не затре новий рядок.

Що в комплекті

Того ж дня з’явилися значок застосунку та інсталятор: образ диска з короткою інструкцією всередині й готовий рецепт для встановлення через Homebrew. Поки що застосунку потрібна macOS 26 — він користується новим розпізнаванням мовлення від Apple. Просить три дозволи: звук інших програм, мікрофон і розпізнавання мовлення.

Ця версія розуміє лише англійську й перекладає лише російською. Наступний крок — текст під курсором миші.

Ще з блогу