Skip to content

vavilonpal/HandTalkerTelegram

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HandTalker Telegram Bot

Этот телеграм-бот предназначен для автоматического озвучивания видеосообщений («кружков») с жестовым языком. Бот принимает видео, распознает жесты, определяет эмоцию, генерирует соответствующую озвучку (TTS) и накладывает аудио обратно на видео.

🏗️ Структура проекта

HandTalkerAPI/
├── src/
│   ├── main.py                 # Точка входа: запуск Telegram-бота (Long Polling)
│   ├── bot/
│   │   ├── __init__.py
│   │   └── handlers.py         # Обработка команд и входящих видеосообщений
│   ├── services/
│   │   ├── video_processor.py  # Главный оркестратор: пайплайн обработки видео
│   │   ├── sign_to_text/       # Распознавание жестового языка (MediaPipe + LSTM)
│   │   │   ├── realtime_tester.py  # Логика инференса и анализа видео
│   │   │   └── sign_to_text_service.py # Обертка над моделью
│   │   ├── emotion_service.py  # Анализ доминантной эмоции
│   │   ├── tts_service/        # Генерация голоса (Coqui TTS)
│   │   └── audio_overlay_service.py # Наложение аудио на видео (MoviePy + Pydub)
│   ├── utils/
│   │   └── file_utils.py       # Утилиты (безопасное удаление файлов на Windows)
├── temp/                       # Временная папка для скачивания и обработки видео
├── .env                        # Конфигурация (BOT_TOKEN)
└── requirements.txt            # Зависимости (Python 3.10)

🧠 Логика работы (Pipeline)

Когда пользователь отправляет «кружок»:

  1. Bot Handlers: Скачивает video_note в папку temp/.
  2. Video Processor:
    • SignToText: Использует MediaPipe для извлечения ключевых точек (Pose/Hands) и LSTM-модель для распознавания слов.
    • Emotion Analysis: Анализирует видео (или возвращает neutral в качестве заглушки), чтобы модулировать голос.
    • TTS Service: Превращает распознанный текст в WAV-файл с учетом эмоции (скорость речи).
    • Audio Overlay: Смешивает сгенерированное аудио с видеорядом, используя MoviePy. Звук проигрывается один раз, не зацикливаясь.
  3. Cleanup: Бот отправляет результат пользователю и удаляет временные файлы (с использованием safe_remove для избежания конфликтов блокировки на Windows).

🚀 Запуск

  1. Виртуальное окружение (Python 3.10):
    # Вы уже создали его в .venv
  2. Настройка токена: Создайте файл .env в корне проекта:
    BOT_TOKEN=Ваш_Телеграм_Токен
    
  3. Запуск бота:
    .venv\Scripts\python src\main.py

🛠️ Особенности реализации на Windows

Проект включает в себя механизмы для обхода ошибок WinError 32 (файл занят другим процессом). Перед удалением временных файлов вызывается gc.collect(), а сами MoviePy-объекты закрываются явно. В случае временной блокировки файла утилита safe_remove выполняет несколько попыток удаления.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages