ГлавнаяБлог → Как сделать телеграм-бота, который расшифровывает голосовые

Как сделать телеграм-бота, который расшифровывает голосовые

Опубликовано 2026-08-20 · 6 мин чтения

Голосовые сообщения не читаются на совещании, в метро и просто когда лень. Бот, который присылает текст в ответ на голосовое, закрывает эту боль за вечер работы. Разберём схему целиком: от получения файла до ответа в чат.

Что делает бот

Логика простая и укладывается в четыре шага:

  1. Получить обновление с голосовым сообщением и вытащить идентификатор файла.
  2. Скачать файл по ссылке, которую отдаёт Telegram.
  3. Отправить его на распознавание.
  4. Ответить текстом на исходное сообщение.

Приятная деталь: Telegram отдаёт голосовые в ogg/opus — то есть в формате, который принимается без конвертации.

Код обработчика

Пример на python-telegram-bot, но логика одинакова для любой библиотеки:

import io
from telegram import Update
from telegram.ext import Application, MessageHandler, filters, ContextTypes
from openai import OpenAI

client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="ваш ключ")

async def on_voice(update: Update, ctx: ContextTypes.DEFAULT_TYPE):
    voice = update.message.voice or update.message.audio
    tg_file = await ctx.bot.get_file(voice.file_id)
    buf = io.BytesIO(await tg_file.download_as_bytearray())
    buf.name = "voice.ogg"

    text = client.audio.transcriptions.create(model="whisper-1", file=buf).text
    await update.message.reply_text(text or "не удалось разобрать речь")

app = Application.builder().token("токен бота").build()
app.add_handler(MessageHandler(filters.VOICE | filters.AUDIO, on_voice))
app.run_polling()

Ключевая строка здесь — присвоение buf.name. Без имени файла библиотека не поймёт формат и вернёт ошибку.

Подводные камни

Что добавить после базовой версии

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

Учёт расхода удобно вести по минутам аудио: сколько обработано, столько и списано, а остаток виден в личном кабинете.

Попробуйте на своих записях. Регистрация занимает минуту, бесплатных минут хватает, чтобы оценить качество.

Получить ключ бесплатно

Частые вопросы

Нужно ли конвертировать голосовые из Telegram?

Нет. Мессенджер отдаёт ogg/opus, который принимается напрямую — достаточно указать имя файла с расширением ogg.

Почему бот отвечает ошибкой на короткие голосовые?

Чаще всего это пустая запись длиной в доли секунды — случайное нажатие. Проверяйте длительность до отправки на распознавание.

Как понять, кто сколько наговорил?

Считайте длительность обработанных сообщений по каждому пользователю: тарификация идёт за минуты аудио, и эта же метрика показывает расход.

Можно ли расшифровывать кружки?

Да, звук из видеосообщений распознаётся так же. В коде их нужно обработать как отдельный тип сообщения.

Читайте также