Експертиза · Транскрипція та переклад
Мова в текст, українською та російською, зі згодою, записаною до першої секунди аудіо.
Ми транскрибуємо аудіо в реальному часі або з файлу, перекладаємо між румунською та російською в розмовах із клієнтами й надаємо текст із часовими позначками, аудіоекспортом і слідом згоди. Розпізнавання мовлення ми запускаємо через постачальників, через наш gateway; власна модель румунської мови — це дослідження, а не продукт.
Вже збудованоДві власні реалізації, обидві відкриті й цитовані. Перша — застосунок для потокової транскрипції, з backend Express на 3.378 рядків у 25 файлах і 37 тестами, які ми прогнали сьогодні — усі проходять; він містить частину, яку ніхто не будує з ентузіазму: gate згоди, що відхиляє захоплення, коли немає зафіксованої згоди. Друга працює в продакшені, у реальних клієнтів: голосові повідомлення, отримані в месенджер-каналах, транскрибуються, а письмова відповідь оператора румунською мовою переписується мовою клієнта перед відправленням. Те, що НЕ входить у «delivered» і написано як є на сторінці: власна модель розпізнавання та синтезу румунською — це дослідження; вона не має публічної демонстрації, не має інтерфейсу програмування, а за точністю румунською поступається великим комерційним системам. Сервіс продається за тим, що працює, а не за тим, що ми досліджуємо.
Транскрипція здається вирішеною проблемою, доки не застосуєш її до румунської, з двома співрозмовниками, що перебивають одне одного, цифрами, сказаними швидко, і клієнтом, який переходить на російську посеред фрази. Тоді з’являються три справжні проблеми: яку модель обрати для мови перед вами, як зрозуміти, де закінчується черга мовлення, і хто дав вам дозвіл на запис. Ми займаємося всіма трьома, і останню розглядаємо як проблему коду, а не як абзац політики.
У нашому застосунку потокової транскрипції браузер ніколи не отримує ключ постачальника. Він просить у бекенду одноразовий токен, за замовчуванням дійсний чверть години, з яким відкриває з’єднання транскрипції; маршрут, що видає токен, закритий за замовчуванням і може бути відкритий лише через явне налаштування поза продукцією, саме тому, що це маршрут, на якому витрачаються гроші. Поверх сирої транскрипції працює аналіз на моделі мови, зі списком резервних моделей у порядку, щоб недоступність однієї не зупинила сеанс.
Шлюз згоди — це частина, до якої ми ставимося особливо. Перш ніж прийняти шматок аудіо, сервер запитує рядок невідкликаної згоди для відповідної сесії. Якщо його немає, відповідає 451 і повідомленням українською. Якщо база даних не відповідає, він усе відхиляє — 503, а не «пропускає далі». Уже перевірені сесії проходять через кеш на десять хвилин, щоб короткий збій не переривав запис, що триває. Це написано так, щоб це не можна було обійти через помилку конфігурації.
Частина, яка вже є в клієнтів, інша і менш ефектна: на каналах месенджерів отримане голосове повідомлення стає текстом, а мову обирають шляхом голосування за останніми вісьмома повідомленнями розмови, а не вгадуванням з аудіо. У зворотному напрямку, коли колега відповідає румунською, його текст переписується мовою клієнта зі строгими інструкціями — не додає інформації, не вигадує цін чи строків, не суперечить оператору, і трактує текст оператора суто як дані для передавання, ніколи як інструкції для моделі.