Нажмите куда угодно, чтобы закрыть · ESC
1 / 14
Индивидуальный IT-проект

Персональный голосовой ассистент в Telegram
Python 3.13 n8n + Docker Groq Whisper DeepSeek-v4-Pro SileroTTS LangChain
👥
Студент
А. Р. Соловов  группа ИСП‑914
🎓
Руководитель проекта
Г. Л. Малышева
🏫
Учебное заведение
ППК СГТУ им. Ю. А. Гагарина
📅
Год выполнения
2025 — 2026

Актуальность темы

Telegram — платформа для ботов (активных пользователей)900 млн
Рост голосовых интерфейсов (год к году)+73%
Автоматизация личных задач — интерес аудитории91%
Проблема 1
Когнитивная перегрузка
Информационная лавина из уведомлений, списков задач и переписок снижает продуктивность и эффективность тайм-менеджмента. Традиционные заметки и разрозненные приложения не справляются.
Проблема 2 — закрытость
Apple Siri, Google Assistant, Алиса
Развитые экосистемы, но жёстко закрытая архитектура: невозможно изменить системный промпт, логику ИИ или декомпозировать сложные абстрактные инструкции.
Конфиденциальность: обработка личных расписаний, целей и аудиозаписей на серверах сторонних корпораций создаёт риски утечек и ставит систему в зависимость от внешних геополитических факторов. Нужно суверенное, кастомизируемое решение.

Цель и задачи исследования

Главная цель проекта
Разработка, программная реализация и комплексное тестирование интеллектуальной системы персонального голосового ассистента в мессенджере Telegram на базе Python + n8n с привлечением современных больших языковых моделей — не просто чат-бота, а полноценного суверенного цифрового секретаря.
01Исследовать предметную область и провести сравнительный анализ коммерческих ассистентов
02Обосновать технологический стек: Telegram API, STT/TTS, n8n, LLM
03Спроектировать двухуровневую архитектуру: медиа-шлюз + когнитивный центр
04Реализовать Python-модуль: приём, конвертация, транскрипция, синтез речи
05Сконструировать агентный воркфлоу n8n с памятью и интеграцией Google API
06Разработать механизмы ИБ, отказоустойчивости и протестировать на реальных сценариях
Объект исследования
Процесс автоматизации персонального планирования и управления временем с использованием голосового интерфейса
Предмет исследования
Архитектурные паттерны и методы интеграции больших языковых моделей в мессенджер-ориентированные системы

Двухуровневая архитектура системы

1
Слой 1 — Медиа-шлюз
Python 3.13 · Linux Server
Производительный транспортный модуль
  • Long polling соединение с Telegram Bot API
  • Декодирование OGG/OPUS через subprocess ffmpeg
  • Локальный высокоскоростной синтез речи SileroTTS
  • Управление транспортными сессиями пользователей
  • Фильтрация нераспознанной речи (4 порога)
2
Слой 2 — Когнитивный центр
n8n · Docker Container
Интеллектуальный оркестратор решений
  • Приём текстовых транскриптов от медиа-шлюза
  • LangChain-агент на базе DeepSeek-v4-Pro
  • Tool Calling: Google Calendar API + Tasks API
  • Долгосрочная память: Goals Table, Habits Table
  • Cron-автоматизация: Morning Briefing / Evening Planning
👤 Пользователь 📱 Telegram OGG 🐍 Python Шлюз ☁ Groq Whisper 🧠 n8n / DeepSeek 🔊 SileroTTS OGG 👤 Ответ

Стек технологий — наведи для деталей

🐍
Python 3.13
Основной язык
наведи →
ООП-архитектура, dataclasses для конфигурации, type hints. Асинхронный переход (aiogram) — в планах.
💬
pyTelegramBotAPI
Telegram клиент
Синхронный Bot API клиент. Long-polling, обработчики сообщений, скачивание OGG, отправка voice.
🎙
Groq Whisper
STT — Облако
Модель Whisper-large-v3 на тензорных процессорах Groq Cloud. Режим verbose_json для фильтрации шума.
🔊
SileroTTS
TTS — Локально
Нейросетевой синтез v5_1_ru, голос aidar. Запуск на CPU хоста. Lazy-загрузка при первом вызове.
🔧
n8n + Docker
Автоматизация
Когнитивный оркестратор в Docker-контейнере. Webhook, Cron-триггеры, Data Tables, визуальный воркфлоу.
🧠
DeepSeek-v4-Pro
LLM — ИИ ядро
Семантический разбор сложных инструкций, вычисление дат, формирование аргументов для Tool Calling.
🔗
LangChain
Агентная логика
ИИ-агент с механизмом Tool Calling. Управляет выбором инструментов и оркестрацией запросов к API.
📅
Google APIs
Интеграции
Google Calendar API — создание и редактирование событий. Google Tasks API — управление списками задач.

Медиа-шлюз — Python-архитектура

AppConfig
Конфигурация
Безопасная инициализация параметров из изолированной среды .env. Защита токенов от утечки.
SessionStorage
Хранилище сессий
Управление жизненным циклом сессий и кэшированием контекста в user_sessions.json.
N8nClient
HTTP-коннектор
Синхронные HTTP POST к когнитивному оркестратору. Автоматический SSL-fallback на HTTP.
VoiceService
Голосовой модуль
Координирует STT-транскрипцию, фильтрацию шума и TTS-синтез ответов.
👤 Voice OGGOPUS codec
📥 DownloadTelegram API
🔄 ffmpegOGG → WAV 16kHz
☁ Groq CloudWhisper-large-v3
📝 Transcriptverbose_json
🧿 Фильтр шума4 порога
🌐 n8n webhook+ сессия

Когнитивный центр — n8n + DeepSeek

LangChain агент
DeepSeek-v4-Pro — ИИ-оркестратор
  • Семантический разбор сложных инструкций
  • Вычисление относительных дат («завтра», «на следующей неделе»)
  • Tool Calling: Google Calendar + Tasks
  • Goals Table + Habits Table (Data Tables n8n)
  • Llama-3-8b — именование сессий за 0.25–0.40 сек
Автономные регламенты (Cron)
06:30
Morning Briefing
Сканирование календарей, просроченные задачи → аудио-подкаст в Telegram
20:30
Evening Planning
Опрос выполненных задач, обновление счётчиков Habits Table
Алгоритм эскалации напоминаний
Lv0
Сдвиг на 15 мин
Мягкое текстовое уведомление
Lv1
Повтор +15 мин
Настойчивое сообщение
Lv2
Строгое голосовое
Блокировка новых сессий
Lv3
Реструктуризация расписания
Задача-штраф × 2 приоритет

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

main.py — TelegramAssistantBot.process_voice_message()
@telegram_bot.message_handler(content_types=["voice"])
def audio_processing(message: Any) -> None:
    assistant.process_voice_message(message)

def process_voice_message(self, message: Any) -> None:
    # 1. Скачать OGG-файл из Telegram
    file_info   = self.bot.get_file(message.voice.file_id)
    voice_bytes = self.bot.download_file(file_info.file_path)

    # 2. Транскрибировать через Groq Whisper-large-v3
    transcription  = self.voice_service.transcribe_telegram_voice(voice_bytes)
    recognized_text = metadata_value(transcription, "text", "").strip()

    # 3. Фильтр нераспознанной речи (4 порога)
    if is_unintelligible_transcription(transcription):
        self.bot.send_message(message.from_user.id, UNINTELLIGIBLE_VOICE_MESSAGE)
        return

    # 4. Передать в AI-цепочку (n8n → DeepSeek → ответ)
    self._process_user_request(message.from_user.id, recognized_text)
Шлюз скачивает бинарный поток .ogg (кодек OPUS), конвертирует через ffmpeg в монофонический output.wav 16 000 Гц, отправляет в Groq Cloud и проверяет разборчивость речи перед передачей в AI-цепочку. Полное время обработки STT: 0.20–0.50 с.

Фильтрация нераспознанной речи

voice_utils.py — is_unintelligible_transcription()
NO_SPEECH_PROB_THRESHOLD          = 0.6   # вероятность тишины > 60%
LOW_CONFIDENCE_AVG_LOGPROB         = -1.0  # низкая уверенность модели
NO_SPEECH_SEGMENT_RATIO_THRESHOLD = 0.5   # доля «тихих» сегментов

def is_unintelligible_transcription(transcription: Any) -> bool:
    segments        = transcription.segments or []
    no_speech_probs = [s.no_speech_prob for s in segments]
    avg_logprobs    = [s.avg_logprob     for s in segments]

    mean_nsp   = _mean(no_speech_probs)
    mean_logp  = _mean(avg_logprobs)
    bad_ratio  = _ratio_at_least(no_speech_probs, NO_SPEECH_PROB_THRESHOLD)

    return (
        mean_nsp  >= NO_SPEECH_PROB_THRESHOLD          # порог 1
        or bad_ratio >= NO_SPEECH_SEGMENT_RATIO_THRESHOLD # порог 2
        or mean_logp  <= LOW_CONFIDENCE_AVG_LOGPROB       # порог 3
        or not transcription.text.strip()                 # порог 4
    )
Четырёхуровневая защита экономит токенный баланс: фильтрует шум, карманные нажатия и фоновые звуки. Данные берутся из метаданных режима verbose_json Groq Whisper — без дополнительных API-вызовов.

Демонстрация работы

Текстовый запрос
🔍 zoom
⏸ пауза
💬 Планирование
Декомпозиция цели
🎙 Декомпозиция цели
Декомпозиция цели (продолжение)
🎙 Декомпозиция цели (прод.)
Google Calendar
📅 Google Calendar
Google Tasks
✅ Google Tasks
Управление сессиями
💾 Пустой запрос
Утренний бриффинг
🎯 Утренний бриффинг
Утренний бриффинг(продолжение)
🎯 Утренний брифиинг (прод.)
Утренний бриффинг
🔊 Утренний бриффинг
Переключение на предыдущий диалог
🌙 Переключение на предыдущий диалог
Переключение на предыдущий диалог (продолжение)
🌙 Переключение на предыдущий диалог (прод.)

Сценарии тестирования

Сценарий 01
📅 Комплексное планирование
«Джарвис, запиши встречу с научным руководителем на завтра на два часа дня, обсудить структуру третьей главы, займёт полтора часа»
✔ Субсекундная STT + событие в Google Calendar 14:00–15:30 с описанием
Сценарий 02
🎯 Декомпозиция целей
Запрос составить план подготовки к демонстрационному экзамену по программированию
✔ Goals Table ← цель, Google Tasks ← подзадачи по КИМ и бэкенду
Сценарий 03
⏰ Cron-автоматизация
Morning Briefing в 06:30 и Evening Planning в 20:30 — проактивная система без команды пользователя
✔ Аудио-подкаст в Telegram + обновление Habits Table
Сценарий 04
🚨 Эскалация напоминаний
Игнорирование задачи активирует 4-уровневый алгоритм вплоть до реструктуризации расписания и задачи-штрафа
✔ Lv3: автоудаление слота + задача ×2 приоритет на следующий день
Сценарий 05
🧿 Фильтрация шума
Карманные нажатия, фоновые звуки и нечёткая речь — система корректно блокирует ложные срабатывания
✔ 4 независимых порога: no_speech_prob, logprob, ratio, пустой текст
Сценарий 06
🔄 Управление сессиями
Команды /new, /sessions, /switch позволяют легко переключаться между накопленными контекстами диалога
✔ Llama-3-8b-8192 генерирует краткий заголовок сессии за 0.25–0.40 с

Метрики производительности

0
ключевых
компонента
0
команд бота
/new /sessions…
0
фильтра
шума
0
успешных
сценариев
📥
Захват
медиапотока
0.15–0.25 с
🔄
ffmpeg
OGG→WAV
~0.10 с
☁️
Groq Whisper
STT
0.20–0.50 с
🔗
Webhook
n8n
~0.05 с
🧠
LLM DeepSeek
рассуждение
60–120 с
🔊
SileroTTS
синтез
0.35–0.45 с
📤
OGG → Telegram
отправка
~0.10 с
Полный цикл голосового запроса (без LLM)
Захват + STT + TTS + отправка · хост: CPU 2 ядра / RAM 4 ГБ · Linux
~1.2 с
+ LLM ответ: 1–2 мин

Выводы

✔ Реализовано
  • Полнофункциональный суверенный ассистент в Telegram
  • Двухуровневая архитектура: медиа-шлюз + когнитивный центр
  • STT + LangChain/DeepSeek + TTS — единый pipeline
  • Агентная декомпозиция сложных инструкций
  • Проактивные Cron-регламенты и эскалация
📚 Изучено
  • Telegram Bot API + pyTelegramBotAPI
  • Groq Cloud · Whisper-large-v3 verbose_json
  • n8n workflow automation + Docker
  • LangChain · Tool Calling · DeepSeek-v4-Pro
  • SileroTTS · ffmpeg аудио-конвертация
  • Google Calendar API + Tasks API
🔭 Перспективы
  • Миграция на aiogram (async)
  • GPU-инференс TTS для ускорения
  • Интеграция Home Assistant (умный дом)
  • Биометрическая аутентификация по голосу
  • Полностью локальные LLM без облака
  • Улучшение транскрибации голоса в текст
  • Переход на кроссплатформенность
«Голос — самый естественный интерфейс для ИИ»
Спасибо за внимание!
Готов ответить на ваши вопросы
GitHub QR-код репозитория
Исходный код проекта
  GitHub Repository
Студент А. Р. Соловов, ИСП‑914
·
Руководитель Г. Л. Малышева
·
Год 2025–2026
ППК СГТУ им. Ю. А. Гагарина