Как стать автором
Обновить
65.96
YouGile
Система управления проектами

Как мы в YouGile сделали голосовые круче, чем Telegram. Их полюбят даже хейтеры

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2K

Привет! Я Саша, продакт системы управления проектами YouGile. Хочу рассказать, как мы сделали голосовые сообщения в нашем внутреннем мессенджере удобными даже для тех, кто их ненавидит. Причем быстро, дешево и с помощью доступных всем инструментов — если захотите, сможете повторить (наверное).

В первой части напишу, зачем мы вообще внедрили функцию, которую так хейтят. А во второй — поделюсь лайфхаками технической реализации.

“Среди руководителей полно ***” 

В YouGile каждая задача на доске — это отдельный чат. Мы стремимся перенести в систему всю рабочую коммуникацию. Это ускоряет процессы и помогает не потеряться в куче мессенджеров. А там, где есть чат, рано или поздно появляются голосовые... 

Немного забегу вперед и покажу две типичные реакции пользователей на анонс о выходе голосовых (прежде чем выкатить новую функцию, мы всегда показываем прототипы и собираем обратную связь):

За:

“У нас команда по ремонту квартир и загородному строительству и очень много голосового общения с сотрудниками на объектах, с офисом и с клиентами. Печатать сидеть столько текста - преступление, т.к. это время!!!!”

Против:

“считаю голосовые - *** (извините за мой французский) решение. Среди руководителей полно *** (еще раз извините), которые тупо не понимают, что не во всех ситуациях можно/удобно использовать голосовые. Им, ***, удобно, но для других это пипец”.  

Пользователи разбились на два лагеря: за голосовые и резко против.
Пользователи разбились на два лагеря: за голосовые и резко против.

А вот что мы узнали из продуктового исследования:

  • голосовые есть во всех современных мессенджерах;

  • их регулярно отправляет 25% пользователей YouGile;

  • больше всего они нужны руководителям, которым нужно что-то записать на ходу;

  • страдают от голосовых чаще рядовые сотрудники.

От чего же они страдают? Голосовые не везде удобно слушать (кто знает, что там прилетело). В них потом невозможно найти нужное — поиск по аудио не работает. К тому же, частенько голосовое — это вода и междометия. Помните, когда человек только к концу сообщения вспоминает, что пора бы уже сформулировать мысль?

Спойлер: мы придумали, как решить все эти проблемы.

Хорошие голосовые — голосовые с хорошей расшифровкой 

Такие мемы гуляли у нас по чатам, пока мы не стали делать голосовые сами: 

Было сразу понятно, что нам нужна классная расшифровка. Среди всех референсов больше всего нам понравились расшифровки в Telegram. Хотя там они доступны только в платной версии, текст приходит полотном без разбивки по абзацам, а занимает процесс расшифровки довольно много: 10 секунд голоса иногда расшифровывается 5-7 секунд.

Отметили еще удобную фичу в Slack, где аудио и расшифровка разбиваются по тайм-кодам. Можно читать текст, а потом с нужного момента включить голос.

В итоге сформировали образ идеальных голосовых: 

  • это удобный бизнес-инструмент —  чтобы было классно не только отправителю (для этого на рынке уже много решений), но и получателю;

  • легко читается — с разбивкой на абзацы, правильной орфографией и пунктуацией, без лишних междометий и мычания.

  • расшифровка должна быть автоматической и быстрой  — текст должен появляться в чате одновременно с аудио, без дополнительных кликов;

  • бесплатно для всех пользователей;

  • с паузой во время записи — чтобы голосовое не сбрасывалось, если нужно прерваться. 

  • с вариантами ускоренного прослушивания;

  • в идеале — с текстом сразу в пуше, чтобы получателю можно было сразу сориентироваться, что там внутри и насколько это срочно.

Оставалось только сделать. 

Техническая реализация. Что протестировали и что получилось

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

Расшифровками занимался один разработчик, и первую жизнеспособную версию он сделал всего за неделю — а потом еще месяц дорабатывал в фоновом режиме.  

Все инструменты и библиотеки, которые мы использовали, бесплатны и вполне известны (о них ниже). Мы просто перебрали разные варианты и выбрали самые эффективные — и получили отличный результат. 

Вот что мы сделали.  

Выбрали кодек 


Основная проблема голосовых сообщений — кроссплатформенность. Нужно, чтобы сообщения, которые записали на Android, можно было прослушать на iPhone, и наоборот. В большинстве своем кодеки не универсальны, и если кодек не поддерживается на устройстве получателя, голосовое не откроется. 

Еще на этапе технического исследования концепта мы начали искать подходящий кодек.

Сравнивали кодеки и нашли тот, который проигрывается на наибольшем количестве устройств и браузеров
Сравнивали кодеки и нашли тот, который проигрывается на наибольшем количестве устройств и браузеров

Чтобы покрыть все платформы, где могут воспроизвести голосовые, нужно конвертить аудио несколькими кодеками, хранить где-то разные форматы и в нужный момент подсовывать соответствующий формат. Это слишком дорого в плане реализации, поэтому мы взяли просто наиболее универсальный кодек, который поддерживает большинство платформ — AAЦ.

Первые голосовухи по качеству звука были ужасные. Но у нас есть в команде, музыкант, который определил параметры, которые надо установить: int sampleRate - 44100, int bitRate = 32000. И качество голоса сразу сильно улучшилось.

Для быстрой и точной расшифровки взяли большие языковые модели 

Нам была нужна автоматическая расшифровка и чтобы текст появлялся сразу, вместе с сообщением. Это критично. Если бы не получилось, возможно, мы вообще отказались бы этой идеи. 

Для тестов по распознаванию речи выбрали Whisper, самый популярный для транскрибации движок от OpenAi. И начали перебирать модели. 

Маленькие модели транскрибировали быстро, но очень плохо —  с такими ошибками, что сложно разобрать текст. Тяжелая модель, Large, расшифровывает гораздо точнее, но очень-очень долго. 

И прямо в тот момент, когда мы этим занимались, вышла модель Turbo. Вот она и подошла. Turbo работает так же быстро, как самая маленькая модель, но качество выдает очень близкое к большой модели.

Первое тестирование модели Turbo на Пушкине
Первое тестирование модели Turbo на Пушкине

Понадобится физическая видеокарта 

Мы, конечно, знали, что с техническими требованиями Turbo (от 6 GB VRAM) обычная встроенная видюха не подойдет. Но первый раз всё равно тестировали транскрибацию на локальной машине (про скорость тогда речь не шла) — и расшифровка 30-секундного аудио заняла больше 10 минут. На сервере с видеокартой время сразу сократилось до 30 секунд. 

Время отъедают выгрузка модели из памяти и определение языка

Когда мы выкатили первую версию голосовых, 30-секундное голосовое расшифровывалось по нашим меркам медленно — секунд десять. Проанализировали, на что уходит время, и нашли два момента. 

  1. Во-первых, много времени занимает инициализация модели. При каждом обращении она сначала загружалась, а потом приступала к расшифровке. Решение, которое сокращает время расшифровки, — держать Whisper постоянно в памяти.

  2. Во-вторых, еще около 10 секунд уходит на определение языка, так что мы по умолчанию стали выставлять русский.  

Так короткие голосовые стали расшифровываться в моменте, а на расшифровку длинных (по минуте-полторы) нужно 7-10 секунд.

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

Чтобы улучшить текст расшифровки, нужно использовать еще одну языковую модель

В какой-то момент мы столкнулись с тем, что качество расшифровки не всегда можно улучшить, пробуя разные модели Whisper. Даже на Turbo рандомные голосовые иногда расшифровываются сплошным текстом с плохой стилистикой.

Вот пример, как одна и та же модель может распознать одно голосовое по-разному
Вот пример, как одна и та же модель может распознать одно голосовое по-разному

Тогда мы нашли такой паттерн: можно брать результат выдачи Whisper, загружать в Llama от DeepSeek и писать к нему преамбулу: «Мы попросили Whisper распознать голосовое, и он выдал вот такой результат. Исправь ошибки распознавания и отформатируй текст».

Как расшифровки работают сейчас

Итак, сейчас расшифровки в YouGile работают быстрее, чем в Telegram:

  • голосовые до 30 секунд — практически мгновенно;

  • на минуту-полторы — за 7-10 секунд.

В TG даже короткие голосовые могут расшифровываться секунд 5-7. 

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

Как реализовано: 

  • свой сервер, подходящий под все требования;

  • используем Turbo от Whisper.

Вот примеры из наших реальных диалогов, так расшифровки выглядят сейчас
Вот примеры из наших реальных диалогов, так расшифровки выглядят сейчас

Недавно мы добавили расшифровки прямо в push-уведомлении. Так пользователь может быстро сориентироваться, о чем речь и срочный ли вопрос. Здесь была проблема: пуш отправляется сразу, а голосовому сообщению нужно время на расшифровку, потому что оно сначала уходит на сервер. Это может занимать до 10 секунд, если сообщение длинное.

Мы решили задерживать пуши до минуты, чтобы расшифровка успела подготовиться. Если до минуты голосовое не расшифровывается, то пуш приходит без расшифровки.

А еще случайно у нас получилось реализовать два варианта записи голосовых. 

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

Собирались сначала реализовать самый дешевый вариант, но так случилось, что разработчик увлекся и сделал сразу оба. Так что мы решили оставить оба способа на выбор, чтобы каждый мог пользоваться записью так, как привык по другим личным мессенджерам.  

В работе: ИИ-выжимки и чек-листы

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

Подбираем промпты, чтобы ИИ правильно выделял главные мысли из расшифровки
Подбираем промпты, чтобы ИИ правильно выделял главные мысли из расшифровки

Сейчас наша главная задача — собрать побольше обратной связи и по ней запланировать доработки. В том числе поэтому я и написал этот текст.

Пробуйте нашу систему управления проектами, она бесплатна навсегда и без ограничений для команд до 10 человек. Пишите обратную связь (можно кидать голосовые). А наработки, если надо, забирайте себе.

Теги:
Хабы:
+13
Комментарии8

Публикации

Информация

Сайт
yougile.com
Дата регистрации
Дата основания
Численность
51–100 человек