Skip to content

Kickgodx/ChatYandexGPT

Repository files navigation

ChatYandexGPT - Голосовой интерфейс для YandexGPT

Модуль позволяет записывать звуковые вопросы с микрофона или компьютера, преобразовывать их в текст с помощью модели распознавания речи Vosk и отправлять текстовые запросы в YandexGPT AI для получения ответов.

🆕 Две версии интерфейса

Проект поддерживает два интерфейса на выбор:

🎨 PyQt6 версия (рекомендуется)

  • Файл запуска: interface_AI_qt.py
  • Современный дизайн с темной темой
  • Улучшенная производительность и отзывчивость
  • Лучшая поддержка горячих клавиш
  • Форматирование кода с подсветкой синтаксиса
  • Более компактный и элегантный интерфейс

📱 Tkinter версия (классическая)

  • Файл запуска: interface_AI.py
  • Проверенная стабильность
  • Меньше зависимостей
  • Классический внешний вид

Основные возможности

  • Запись звука с микрофона - запись аудио с подключенного микрофона
  • Запись звука с компьютера - запись системного звука через Stereo Mix
  • Распознавание речи - преобразование речи в текст с помощью модели Vosk
  • Live-транскрипция - отображение распознанного текста в реальном времени по мере обработки
  • Текстовый ввод - возможность отправки текстовых запросов напрямую
  • Интеграция с YandexGPT - получение ответов от AI-модели
  • Выбор модели YandexGPT - 3 различные модели для разных задач
  • Выбор помощника - 6 различных типов AI-помощников для разных задач
  • Сохранение истории - автоматическое сохранение всех диалогов в файл
  • Графический интерфейс - удобный GUI на базе PyQt6 или tkinter
  • Горячие клавиши - быстрый доступ к функциям
  • Экспорт диалогов - сохранение истории в отдельные файлы
  • 🚀 Оптимизированная загрузка модели Vosk - ускоренная инициализация приложения
  • 🎨 Форматирование кода - подсветка синтаксиса в ответах AI (PyQt6 версия)

🆕 Live-транскрипция

Новая функция Live-транскрипция позволяет видеть распознанный текст в реальном времени:

Как это работает:

  1. Запись аудио - записываете голос как обычно
  2. Live-отображение - во время распознавания видите промежуточные результаты
  3. Финальный результат - получаете окончательный текст с подсветкой

Визуальные индикаторы:

  • 🎯 Распознавание... - процесс идет, текст голубой
  • Финальный текст - процесс завершен, текст белый
  • 🎯 Распознанный текст - готово к использованию

Преимущества:

  • Мгновенная обратная связь - видите, что система вас понимает
  • Контроль качества - можете повторить запись, если распознавание плохое
  • Улучшенный UX - нет ощущения "зависшего" интерфейса
  • Отладка - легче понять, где возникают проблемы с распознаванием

Доступные модели YandexGPT

Приложение поддерживает 3 различные модели YandexGPT:

🚀 YandexGPT Lite

  • Описание: Быстрая и экономичная модель для простых задач
  • Максимум токенов: 4000
  • Применение: Простые вопросы, краткие ответы, быстрые задачи

🤖 YandexGPT

  • Описание: Базовая модель для большинства задач
  • Максимум токенов: 8000
  • Применение: Стандартные задачи, развернутые ответы, анализ текста

⚡ YandexGPT Plus

  • Описание: Продвинутая модель с улучшенными возможностями
  • Максимум токенов: 8000
  • Применение: Сложные задачи, творческие проекты, глубокий анализ

Доступные помощники

Приложение поддерживает 6 различных типов AI-помощников:

🤖 Программист-помощник

Специализируется на программировании и разработке:

  • Знание множества языков программирования (Python, JavaScript, Java, C++, C#, Go, Rust)
  • Опыт с фреймворками (Django, Flask, React, Vue, Spring, .NET)
  • Понимание архитектур (микросервисы, монолиты, облачные решения)
  • Знание баз данных (SQL, NoSQL, Redis, MongoDB)
  • DevOps и CI/CD (Docker, Kubernetes, Git, Jenkins)
  • Помощь с отладкой, рефакторингом и оптимизацией кода

📚 Учитель-наставник

Образовательный помощник для изучения различных предметов:

  • Математика, физика, химия, биология
  • История, литература, философия
  • Иностранные языки
  • Экономика, психология, социология
  • Адаптация объяснений под уровень ученика
  • Помощь с домашними заданиями и подготовкой к экзаменам

✍️ Писатель-редактор

Помощник в написании и редактировании текстов:

  • Статьи, эссе, рефераты, дипломные работы
  • Художественная литература и поэзия
  • Техническая документация
  • Маркетинговые материалы
  • Проверка грамматики и стиля
  • Помощь с сюжетами и персонажами

📊 Аналитик-исследователь

Помощник в анализе данных и проведении исследований:

  • Статистический анализ и визуализация данных
  • Машинное обучение и прогнозирование
  • Качественные и количественные исследования
  • Бизнес-анализ и стратегическое планирование
  • Работа с Python, R, SQL, Excel, Tableau
  • Критическое мышление и решение сложных проблем

🎨 Креативный помощник

Помощник в творческих проектах и генерации идей:

  • Графический дизайн и веб-дизайн
  • Иллюстрация, анимация, фотография
  • Сценарии для фильмов и игр
  • Музыкальные идеи и театральные постановки
  • Инновации и изобретения
  • Маркетинговые кампании и брендинг

🌟 Универсальный помощник

Универсальный AI-помощник для различных задач:

  • Обширные знания в различных областях
  • Адаптация под собеседника
  • Решение повседневных задач
  • Помощь в изучении новых тем
  • Поддержка и мотивация

Установка и настройка

Предварительные требования

  1. Python 3.7+ - убедитесь, что у вас установлен Python. Скачайте последнюю версию с официального сайта.

  2. Настройка звука Windows - во вкладке "Запись" параметров звука включите "Стерео микшер" для записи системного звука.

Быстрая инициализация

Для новых пользователей создан автоматический скрипт инициализации:

python setup_project.py

Этот скрипт:

  • Проверяет версию Python
  • Создает файл .env из env.example
  • Создает необходимые папки
  • Проверяет наличие модели Vosk
  • Показывает следующие шаги

Установка зависимостей

  1. Создание виртуального окружения:
python -m venv venv
  1. Активация виртуального окружения:
# Windows
.\venv\Scripts\activate

# Linux/Mac
source venv/bin/activate
  1. Установка зависимостей:
pip install -r requirements.txt

Настройка переменных окружения

  1. Создание файла .env:
# Скопируйте файл env.example в .env
cp env.example .env
  1. Заполнение credentials в .env:
# ID папки в Yandex Cloud (обязательно)
YANDEX_FOLDER_ID=your_folder_id_here

# IAM токен для авторизации (один из способов)
YANDEX_IAM_TOKEN=your_iam_token_here

# API ключ для авторизации (альтернатива IAM токену)
YANDEX_API_KEY=your_api_key_here

# Путь к модели Vosk для распознавания речи
VOSK_MODEL_PATH=./vosk-model-ru-0.42

⚠️ Важно: Файл .env содержит секретные данные и НЕ должен попадать в репозиторий!

Настройка модели Vosk

  1. Скачивание модели: Скачайте русскоязычную модель Vosk с официального сайта

  2. Распаковка: Распакуйте архив в корень проекта

  3. Проверка пути: Убедитесь, что путь к модели указан правильно в файле .env

Настройка YandexGPT

  1. Регистрация: Зарегистрируйтесь на Yandex Cloud

  2. Получение credentials: Получите iam_token или api_key и folder_id

  3. Настройка: Замените значения в файле .env

Запуск приложения

🎨 PyQt6 версия (рекомендуется)

python interface_AI_qt.py

Особенности PyQt6 версии:

  • Современный темный интерфейс
  • Улучшенная производительность
  • Форматирование кода с подсветкой синтаксиса
  • Более компактный дизайн
  • Лучшая поддержка горячих клавиш

📱 Tkinter версия (классическая)

python interface_AI.py

Особенности Tkinter версии:

  • Классический интерфейс
  • Меньше зависимостей
  • Проверенная стабильность

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

После запуска появится окно с интерфейсом:

Выбор модели и помощника

  • Нажмите кнопку "🤖 Сменить помощника" или используйте горячую клавишу Ctrl+P
  • Выберите нужную модель YandexGPT из выпадающего списка
  • Выберите нужный тип помощника из второго выпадающего списка
  • Просмотрите описание возможностей выбранного помощника
  • Нажмите "✅ Применить" для смены модели и помощника

Доступные модели:

  • YandexGPT Lite - для быстрых и простых задач
  • YandexGPT - базовая модель для большинства задач
  • YandexGPT Plus - продвинутая модель для сложных задач

Запись голоса

  • "🎤 Запись с микрофона" - запись с микрофона
  • "💻 Запись с компьютера" - запись системного звука

Как использовать:

  1. Нажмите кнопку для начала записи
  2. Во время записи кнопка станет красной и изменит текст на "⏹️ Остановить запись"
  3. Говорите или воспроизводите звук
  4. Нажмите ту же кнопку повторно для остановки записи
  5. Дождитесь обработки и получения ответа от AI

Дополнительно:

  • Кнопка "❌ Отменить запись" позволяет отменить запись без обработки
  • Статус записи отображается над кнопками: "🔴 ЗАПИСЬ..."

Текстовый ввод

  • Введите текст в нижнее текстовое поле
  • Нажмите "📤 Отправить текст" для отправки запроса

Горячие клавиши

PyQt6 версия:

  • Ctrl+R - запись с микрофона
  • Ctrl+C - запись с компьютера
  • Ctrl+S - отправка текста
  • Escape - отмена записи
  • Ctrl+E - экспорт диалога
  • Ctrl+P - смена помощника
  • Ctrl+L - очистка чата

Tkinter версия:

  • Ctrl+R - запись с микрофона
  • Ctrl+C - запись с компьютера
  • Ctrl+S - отправка текста
  • Escape - отмена записи
  • Ctrl+E - экспорт диалога
  • Ctrl+P - смена помощника

Управление диалогом

  • "🗑️ Очистить" - очистка истории диалога
  • "💾 Экспорт диалога" - экспорт диалога в файл
  • "Сбросить диалог" в окне выбора помощника - полный сброс истории

Результаты

  • Все диалоги автоматически сохраняются в файл outputs/responses.txt
  • Ответы отображаются в основном текстовом поле интерфейса
  • Текущая модель и помощник отображаются в заголовке окна и в статусной строке
  • В статусной строке показывается: "Помощник: [название]" и "Модель: [название]"

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

ChatYandexGPT/
├── interface_AI.py              # Основной файл запуска Tkinter версии
├── interface_AI_qt.py           # 🆕 Основной файл запуска PyQt6 версии
├── yandexchat_bot.py            # Класс для работы с YandexGPT и коллекция промптов
├── env.example                  # Пример файла с переменными окружения
├── .env                         # Файл с credentials (не в репозитории)
├── setup_project.py             # Скрипт автоматической инициализации
├── yandexGPT_console_test.py    # Консольная версия для тестирования
├── requirements.txt             # Зависимости Python
├── README.md                    # Документация
├── src/                         # Исходный код приложения
│   ├── qt_gui/                  # 🆕 Исходный код для PyQt6 интерфейса
│   ├── __init__.py              # Инициализация пакета
│   ├── env_loader.py            # Загрузка переменных окружения
│   ├── config.py                # Конфигурация приложения
│   ├── settings.py              # Управление настройками
│   ├── audio_recorder.py        # Запись аудио
│   ├── audio_processor.py       # Обработка аудио
│   ├── speech_recognizer.py     # Распознавание речи (с оптимизацией)
│   ├── conversation_manager.py  # Управление диалогами
│   ├── gui.py                   # Графический интерфейс Tkinter
│   ├── prompt_manager.py        # Управление выбором промптов (Tkinter)
│   └── utils.py                 # Утилиты
├── yandexgptbot_lib/            # Библиотека и файлы сборки
│   ├── __init__.py              # Инициализация библиотеки
│   ├── bot.py                   # Основной класс бота
│   ├── audio.py                 # Аудио компоненты (с оптимизацией)
│   ├── prompts.py               # Коллекция промптов
│   ├── conversation.py          # Управление диалогами
│   ├── config.py                # Конфигурация
│   ├── settings.py              # Настройки
│   ├── cli.py                   # CLI интерфейс
│   ├── README.md                # Документация библиотеки
│   └── package/                 # 🆕 Файлы для сборки
│       ├── setup.py             # Конфигурация пакета
│       ├── package_builder.py   # Скрипт сборки
│       ├── MANIFEST.in          # Список файлов для дистрибутива
│       ├── README.md            # Документация по сборке
│       └── README_LIBRARY.md    # Документация библиотеки
├── examples/                    # Примеры использования библиотеки
├── outputs/                     # Папка для сохранения результатов
│   └── responses.txt            # История диалогов
└── vosk-model-ru-0.42/          # Модель распознавания речи

Архитектура приложения

Приложение построено по модульному принципу с четким разделением ответственности:

  • Config - централизованная конфигурация
  • Settings - управление настройками пользователя
  • AudioRecorder - запись аудио с различных источников
  • AudioProcessor - обработка и нормализация аудио
  • SpeechRecognizer - распознавание речи с помощью Vosk (оптимизированное)
  • ConversationManager - управление историей диалогов
  • PromptManager - управление выбором и сменой промптов
  • GUI - графический интерфейс пользователя (Tkinter)
  • ModernGUI - 🆕 современный графический интерфейс (PyQt6)
  • Utils - вспомогательные функции
  • EnvLoader - загрузка переменных окружения

Сборка библиотеки

Для сборки библиотеки yandexgptbot-lib используйте файлы в папке yandexgptbot_lib/package/:

cd yandexgptbot_lib/package
python package_builder.py

Подробная документация по сборке находится в yandexgptbot_lib/package/README.md.

Возможные проблемы

Файл .env не найден

Если приложение не запускается из-за отсутствия credentials:

  1. Скопируйте env.example в .env
  2. Заполните необходимые переменные окружения
  3. Убедитесь, что файл .env находится в корне проекта

Stereo Mix не найден

Если кнопка "Record from Computer" не работает:

  1. Проверьте, что Stereo Mix включен в настройках звука Windows
  2. Убедитесь, что устройство называется "Стерео микшер" или "Stereo Mix"

Ошибки с моделью Vosk

  1. Проверьте, что модель скачана и распакована в правильную папку
  2. Убедитесь, что путь в переменной VOSK_MODEL_PATH указан корректно
  3. Попробуйте использовать оптимизированную загрузку (см. раздел выше)

Проблемы с YandexGPT

  1. Проверьте правильность credentials в файле .env
  2. Убедитесь, что у вас есть доступ к сервису YandexGPT

Медленная загрузка модели

Если модель Vosk загружается медленно:

  1. Используйте SSD - скорость диска критически важна
  2. Предварительная загрузка - используйте preload_vosk_model()
  3. Кэширование - используйте get_global_recognizer()
  4. Ленивая загрузка - создавайте распознаватель с preload_model=False

Проблемы с PyQt6 версией

Если PyQt6 версия не запускается:

  1. Убедитесь, что PyQt6 установлен: pip install PyQt6
  2. Проверьте совместимость с вашей версией Python
  3. Попробуйте Tkinter версию как альтернативу

Технические детали

  • Аудио формат: 16-bit PCM, 16kHz, моно
  • Распознавание речи: Vosk с русскоязычной моделью (оптимизированная загрузка)
  • AI модель: YandexGPT через LangChain
  • Интерфейс: PyQt6 (рекомендуется) или tkinter
  • Потоки: Многопоточная обработка для записи, UI и загрузки модели
  • Логирование: Подробные логи в файл app.log
  • Промпты: 6 предустановленных типов помощников с возможностью расширения
  • Безопасность: Credentials хранятся в переменных окружения
  • Производительность: Оптимизированная загрузка модели Vosk с кэшированием
  • Форматирование: Подсветка синтаксиса кода в ответах AI (PyQt6 версия)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages