Я делаю Telegram-бота Voicepad, который превращает голосовые, аудио, видео и ссылки на YouTube в текст с таймкодами, конспектом и списком задач. Основной сценарий личный: перешли файл боту, получил текст. Есть и второй режим: добавляешь бота в чат, и он сам расшифровывает чужие голосовые, чтобы их можно было прочитать, а не слушать.
Бот работает с 20 октября, и в тот же день я добавил его в два чата. Ниже честные цифры из базы и что я по ним понял.
Бот видит голосовое, кружок или короткий аудио и видеофайл и отвечает под ним текстом. Автоматически он берёт только записи до трёх минут (GROUP_MAX_SECONDS равен 180): музыка, лекции и длинные видео в чате никому не нужны, а минуты стоят денег. Под ссылками на YouTube, VK, RuTube и TikTok он молча кладёт кнопку «Расшифровать», ничего не скачивая, пока кто-то её не нажмёт. Любую запись можно расшифровать, ответив на неё командой /text, а админ выключает авто-режим командой /mute.
На каждый чат даётся 30 бесплатных минут в месяц (GROUP_FREE_MINUTES_PER_MONTH), потом списывается баланс того, кто попросил. Кнопка под каждым ответом открывает полный текст в личке, но только тем, кто сейчас состоит в этом чате.
Чатов, куда добавлен бот: 2. Оба добавлены 20 октября (08:10 и 10:08 UTC). Расшифровки есть только по одному чату, второй молчит.
Расшифровок в группах: 13, на 1,4 минуты суммарно. Средняя запись 6,2 секунды, самая длинная 16,6 секунды. Записи прислали двое. Из 13 записей 12 это голосовые, одна ссылка на ролик в 15 секунд, которую кто-то нажал руками. По языкам: десять определились как русский, одна как английский, и две я не ожидал: немецкий и французский.
Бесплатного лимита группы израсходовали 87 секунд из 1800. Это меньше 5 процентов того, что я им выдал. Себестоимость по этим числам смешная, но выборка из двух человек и одного чата, и выводов о «типичном чате» из неё делать нельзя.
Новых пользователей из групп ноль. Источник group в базе не получил ни один из семи пользователей. Задумано так: участник чата видит ответ, жмёт кнопку, открывает бота в личке и становится рефералом того, кто его добавил. За три дня этого не случилось ни разу.
Первое: язык. Две самые короткие записи (2,6 и 2,3 секунды) движок определил как немецкий и французский. Что в них сказано, я не открывал: читать чужие сообщения ради статьи не стал. Вывод простой: на записях короче трёх секунд автоопределение языка ненадёжно, и для одноязычного чата язык лучше подсказывать, а не гадать.
Второе: воронка слепа к группам. В бот добавлены события (старт, первый файл, результат, покупка), и групповые расшифровки в них не попадают. В отчёте по 21 октября было видно: в базе 1 расшифровка в группе, а в воронке файлов ноль. Пока я не починил это, всё, что я знаю о групповом режиме, я знаю только из таблицы transcripts, а не из событий. Для проекта, где каналы надо мерить по конверсии, это дыра.
Третье: команды для групп. 20 октября в 19:34 бот не смог выставить список команд для групповых чатов, setMyCommands упал по таймауту сети восемь раз за полминуты. Бот сам не сломался и расшифровки не пострадали, но в меню команд чата это проявилось бы как отсутствие /text и /mute в подсказке. Бот сейчас работает на моём ноутбуке через туннель ngrok, и такие сетевые мелочи это цена. Серьёзнее было 22 октября: с 07:22 до 09:28 бот не достучался до api.telegram.org из-за DNS и потом восстановился сам.
Главное решение в этом режиме: в авто-режиме все ошибки тихие. Если в записи нет речи, она длиннее лимита или упала обработка, бот ничего не пишет. Единственное исключение это исчерпанный бесплатный лимит чата, и о нём бот говорит не чаще раза в сутки на чат. Это закреплено тестами (groups_test.go). В личке ошибка нужна, человек ждёт ответа. В группе бот, который каждые десять минут пишет «не удалось распознать», быстро получает кик от админа.
Второе решение: кто платит. Сначала расходуется бесплатный месячный лимит самого чата, потом баланс того, кто нажал кнопку или написал /text. Это защита от самого неприятного сценария: чат на тысячу человек, в нём любят кружочки, и бесплатные минуты кончаются за вечер. Проверить, что так оно и будет, на моих двух чатах нельзя: они потратили 87 секунд.
Третье: бот не хранит и не читает текстовые сообщения. Чтобы видеть голосовые в чате, у бота в BotFather должен быть выключен режим приватности (/setprivacy), и это подозрительная настройка для любого администратора. Поэтому в README это написано прямо: текст бот игнорирует и нигде не сохраняет. Насколько этого хватит для доверия реальных админов, я пока не знаю: в базе только два моих чата.
Групповой режим пока не канал привлечения, а упражнение на надёжность. Он выглядит как рычаг роста: один человек добавил бота, а видят все. Но рычаг работает, только если чат большой, голосовых там много, и кому-то из участников хватает любопытства нажать кнопку. У меня пока ни одного из трёх условий не подтверждено.
Что я делаю дальше. Первое: чиню события для групп, чтобы увидеть воронку «ответ в чате, кнопка, личка». Второе: проверить сегмент «голосовые в чатах» на чужих чатах (в Вордстате около 90 запросов в месяц на «голосовое сообщение» и ещё около 120 на расшифровку в WhatsApp), а не на своих. Третье: добавляю подсказку языка для коротких записей.
Если вы администрируете чат, где постоянно скидывают голосовые, и готовы дать боту неделю, напишите мне. Мне нужен чат хотя бы на пятьдесят человек с настоящим потоком голосовых, а вам будет бесплатно: на такой чат я выдам безлимит.
Бот: https://t.me/Voicepad_bot?start=src_site. Подробно про режим в группах: https://voicepad.qupport.io/golosovoe-v-tekst/