Назад в блог

~ 15 минут

Telegram-бот для расшифровки голосовых сообщений с OpenAI Whisper: полный гайд

1749

06.10.2024

Ищете Telegram-бота, который переводит голосовые сообщения и аудио в текст? Разбираем, как работает Whisper-бот в Telegram и как создать своего бота для автоматической расшифровки голосовых сообщений.

Вадим Пашаев

Вадим Пашаев

Инженер, веб-разработчик, путешественник

Подключения монетизации сайтов, приложений и Telegram-каналов через Рекламную сеть Яндекса

Реклама. ООО "Яндекс". ИНН: 7736207543. erid: 5jtCeReNx12oajxRXPAHPSg

В этой статье я расскажу о том, как создать Telegram-бота, который сможет распознавать голосовые сообщения и преобразовывать их в текст. Мы будем использовать модельку OpenAI Whisper для распознавания речи, а также инструменты Node.js и ffmpeg для работы с аудиофайлами.

Кому подходит Telegram-бот для перевода голосовых сообщений в текст

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

Готовый Telegram-бот или свой: что выбрать

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

Именно такой вариант я разбираю ниже.

Основные шаги создания бота:

  • Настройка Telegram-бота
  • Конвертация аудиофайлов
  • Использование OpenAI Whisper для расшифровки речи
  • Отправка результата пользователю

Шаг 1. Создание Telegram-бота

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

Для начала нам понадобится Telegram-бот. Если у вас его еще нет, создайте нового бота через BotFather в Telegram. После создания вы получите токен, который потребуется для работы с API Telegram.

Далее, создайте проект на Node.js и установите библиотеку для работы с Telegram:

npm install node-telegram-bot-api

В коде инициализируем бота, используя токен, который вы получили от BotFather:

const TelegramBot = require('node-telegram-bot-api')
const bot = new TelegramBot(process.env.TELEGRAM_BOT_TOKEN, { polling: true })

Теперь ваш бот готов принимать команды. Например, можно добавить приветственное сообщение при вызове команды /start:

bot.onText(/\/start/, (msg) => {
  const chatId = msg.chat.id
  bot.sendMessage(chatId, `Привет, ${msg.from.first_name}! Отправь мне голосовое сообщение, и я расшифрую его.`)
})

Шаг 2. Конвертация аудиофайлов

Telegram сохраняет голосовые сообщения в формате .oga, который не поддерживается многими системами распознавания. Поэтому нам нужно преобразовать этот файл в формат .wav. Для этого мы будем использовать библиотеку ffmpeg:

npm install fluent-ffmpeg

Затем добавляем функцию конвертации файла:

const ffmpeg = require('fluent-ffmpeg');
const path = require('path');
const fs = require('fs');

function convertOgaToWav(inputPath, outputPath) {
  return new Promise((resolve, reject) => {
    ffmpeg(inputPath)
      .toFormat('wav')
      .on('end', () => resolve(outputPath))
      .on('error', reject)
      .save(outputPath);
  });
}

Теперь бот сможет загружать голосовые сообщения, сохранять их на диск и конвертировать в нужный формат.

Шаг 3. Распознавание речи с помощью OpenAI Whisper

Сегодня такие решения активно используют для автоматизации обработки голосовых заявок, расшифровки интервью и интеграции AI-функций в Telegram-ботов.

Для распознавания речи мы используем OpenAI Whisper — мощную модель, способную преобразовывать аудиофайлы в текст. Сначала установим библиотеку OpenAI:

npm install openai

Инициализируем API OpenAI, используя ваш API-ключ:

const OpenAI = require('openai')
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY })

Затем создаем функцию для отправки аудиофайла в OpenAI Whisper:

async function transcribeAudio(filePath) {
  const audioFile = fs.createReadStream(filePath);
  const transcription = await openai.audio.transcriptions.create({
    file: audioFile,
    model: 'whisper-1'
  });
  return transcription.text;
}

Теперь после конвертации аудиофайла в .wav мы можем отправить его на расшифровку.

Шаг 4. Обработка голосовых сообщений

Теперь свяжем все компоненты вместе. Когда пользователь отправляет голосовое сообщение, бот скачивает его, конвертирует в формат .wav, отправляет в OpenAI для расшифровки и затем отправляет результат обратно пользователю:

bot.on('voice', async (msg) => {
  const chatId = msg.chat.id
  const fileId = msg.voice.file_id
  const fileUrl = await bot.getFileLink(fileId)

  const inputPath = path.resolve(__dirname, 'input.oga')
  const outputPath = path.resolve(__dirname, 'output.wav')

  const response = await axios({ url: fileUrl, responseType: 'stream' })
  const writer = fs.createWriteStream(inputPath)
  response.data.pipe(writer)

  writer.on('finish', async () => {
    try {
      await convertOgaToWav(inputPath, outputPath)
      const transcript = await transcribeAudio(outputPath)
      await bot.sendMessage(chatId, `Расшифровка: ${transcript}`)
      fs.unlinkSync(inputPath)
      fs.unlinkSync(outputPath)
    } catch (error) {
      await bot.sendMessage(chatId, 'Ошибка при обработке голосового сообщения.')
    }
  })
})

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

Есть ли готовый Telegram-бот для перевода голосовых сообщений в текст?

Да, существуют разные решения, но создание собственного бота позволяет адаптировать его под конкретные задачи и интеграции.

Можно ли автоматически переводить аудио в текст в Telegram?

Да, модели распознавания речи, такие как OpenAI Whisper, позволяют Telegram-ботам автоматически расшифровывать голосовые сообщения.

Подходит ли Whisper для коммерческих проектов?

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

Заключение

Теперь у вас есть Telegram-бот, который может распознавать голосовые сообщения с помощью OpenAI Whisper! Этот бот — отличное решение для тех, кто хочет быстро преобразовывать голос в текст, будь то в личных или рабочих целях.

Дополнительные шаги

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

Исходный код

Github: https://github.com/reactcoder-it/telegram-voice-transcriber

Видео на Youtube: https://youtu.be/4OIz51rpl0A?si=bMJDQrTaYK1sdiZr

Надеюсь, эта статья была полезной, и вы смогли создать своего первого бота для распознавания речи!

Подписаться на рассылку

Получите интересные новости по веб-разработке и AI

Подписаться на рассылку

Получите интересные новости по веб-разработке и AI

Оценка и план запуска

Обсудим ваш проект?

Vadim Pashaev - Professional Web-Developer

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

Есть интересная идея?

И вы очень хотите ее реализовать, пишите нам и получите подробное коммерческое предложение и быструю реализацию