Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

68 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Voice SHUT UP Telegram Bot

Go Version made-with-Go

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

Особенности

  • Высокая производительность: Написан на компилируемом языке Go, что обеспечивает минимальное потребление CPU и памяти.
  • Поддержка медиа: Обрабатывает голосовые сообщения, видео, видео-кружочки и аудиофайлы (mp3, wav, oga).
  • Два AI провайдера на выбор:
    • Google Gemini AI: Использует модели gemini-2.5-flash и gemini-2.0-flash для транскрипции и суммаризации.
    • Groq AI: Использует Whisper для транскрипции и Kimi-k2 / Llama 3.3 для суммаризации.
  • Надежность: Встроена логика ретраев и переключения на резервную модель (fallback) при сбоях API.
  • Гибкая настройка: Названия моделей и все системные промпты легко настраиваются через переменные окружения.

Технологический стек

  • Язык: Go (1.24+)
  • Взаимодействие с AI:
    • Google: google.golang.org/genai
    • Groq: REST API через net/http
  • Взаимодействие с Telegram: Стандартная библиотека net/http
  • Обработка медиа: ffmpeg (требуется для конвертации)
  • Развертывание: Docker & Docker Compose

Установка и запуск

Шаг 1: Предварительные требования

Шаг 2: Конфигурация

Создайте файл .env в корневой директории проекта. Ниже приведены примеры конфигурации для каждого провайдера.

Вариант A: Google Gemini AI (по умолчанию)

# =======================================
#        ОБЯЗАТЕЛЬНЫЕ ПЕРЕМЕННЫЕ
# =======================================

# Токен вашего Telegram бота, полученный от @BotFather
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

# Выбор AI провайдера: "google" или "groq" (по умолчанию: google)
AI_PROVIDER=google

# Ключ API для Google Gemini, полученный из Google AI Studio
GOOGLE_API_KEY=AIzaSyA...

# =======================================
#        ОПЦИОНАЛЬНЫЕ ПЕРЕМЕННЫЕ
# (Если не указаны, используются значения по умолчанию)
# =======================================

# --- Настройка моделей Gemini ---
# Основная модель для транскрипции и суммаризации
PRIMARY_MODEL=gemini-2.5-flash
# Резервная модель на случай сбоя основной
FALLBACK_MODEL=gemini-2.0-flash

# --- Настройка промптов для суммирования ---
# Системный промпт, задающий роль и стиль ответов ассистента
# SYSTEM_PROMPT="Вы - ассистент..."

# Шаблон основного промпта. %s будет заменен на транскрипцию.
# USER_PROMPT_TEMPLATE="Сделай резюме для этого текста: %s"

# Шаблон для создания супер-краткого резюме. %s будет заменен на транскрипцию.
# SHORT_PROMPT_TEMPLATE="Выдели главную мысль в 1-2 предложениях из этого: %s"

Вариант B: Groq AI

# =======================================
#        ОБЯЗАТЕЛЬНЫЕ ПЕРЕМЕННЫЕ
# =======================================

# Токен вашего Telegram бота, полученный от @BotFather
BOT_TOKEN=123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11

# Выбор AI провайдера: "google" или "groq"
AI_PROVIDER=groq

# Ключ API для Groq, полученный из Groq Console
GROQ_API_KEY=gsk_...

# =======================================
#        ОПЦИОНАЛЬНЫЕ ПЕРЕМЕННЫЕ
# (Если не указаны, используются значения по умолчанию)
# =======================================

# --- Настройка моделей Groq ---
# Модель Whisper для транскрипции аудио
GROQ_WHISPER_MODEL=whisper-large-v3-turbo

# Основная модель для суммаризации (Kimi-k2)
GROQ_PRIMARY_MODEL=moonshotai/kimi-k2-instruct-0905

# Резервная модель для суммаризации (Llama 3.3)
GROQ_FALLBACK_MODEL=llama-3.3-70b-versatile

# --- Настройка промптов для суммирования ---
# (Такие же, как для Google провайдера)
# SYSTEM_PROMPT="Вы - ассистент..."
# USER_PROMPT_TEMPLATE="Сделай резюме для этого текста: %s"
# SHORT_PROMPT_TEMPLATE="Выдели главную мысль в 1-2 предложениях из этого: %s"

Шаг 3: Запуск через Docker

docker compose up --build -d

Проверить логи можно командой:

docker compose logs -f

Сравнение провайдеров

Функция Google Gemini Groq
Транскрипция Gemini (мультимодальный) Whisper Large v3 Turbo
Суммаризация Gemini Flash Kimi-k2 / Llama 3.3
Скорость Средняя Высокая (LPU)
Бесплатный лимит Ограниченный Щедрый

Использование

Основной сценарий

  1. Отправьте боту голосовое сообщение, видео, видео-кружочек или аудиофайл.
  2. Бот ответит сообщением о том, что файл принят в обработку.
  3. Через некоторое время бот пришлет два сообщения:
    • Transcription: Полная текстовая расшифровка аудио.
    • Summary: Структурированное резюме, скрытое под спойлером для удобства.

Получение краткого резюме

Ответьте на сообщение бота с транскрипцией словом кратко, и бот создаст ещё более короткое резюме (1-2 предложения).

Переменные окружения

Общие

Переменная Обязательная По умолчанию Описание
BOT_TOKEN Да - Токен Telegram бота
AI_PROVIDER Нет google Провайдер AI (google или groq)

Google Gemini

Переменная Обязательная По умолчанию Описание
GOOGLE_API_KEY Да* - API ключ Google AI Studio
PRIMARY_MODEL Нет gemini-flash-latest Основная модель
FALLBACK_MODEL Нет gemini-flash-lite-latest Резервная модель

Groq

Переменная Обязательная По умолчанию Описание
GROQ_API_KEY Да* - API ключ Groq
GROQ_WHISPER_MODEL Нет whisper-large-v3-turbo Модель транскрипции
GROQ_PRIMARY_MODEL Нет moonshotai/kimi-k2-instruct-0905 Основная модель суммаризации
GROQ_FALLBACK_MODEL Нет llama-3.3-70b-versatile Резервная модель суммаризации

Промпты (общие для всех провайдеров)

Переменная Описание
SYSTEM_PROMPT Системный промпт для модели
USER_PROMPT_TEMPLATE Шаблон промпта для суммаризации (%s = транскрипция)
SHORT_PROMPT_TEMPLATE Шаблон для краткого резюме (%s = транскрипция)

*Обязательна при выборе соответствующего провайдера.

About

Speech to Text and Summary tg-bot

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages