1
0
mirror of https://github.com/ijaric/voice_assistant.git synced 2025-05-23 14:03:26 +00:00
Go to file Use this template
2023-10-16 01:46:41 +03:00
.github/workflows feat: [#47] add tts settings from github.variables 2023-10-13 20:06:06 +03:00
husky feat: [#45] llm_agent 2023-10-15 07:49:19 +03:00
src feat: [#60] lint-fix 2023-10-15 23:31:51 +03:00
.editorconfig init commit 2023-09-16 10:08:12 +01:00
.env.example feat: [#60] review fix 2023-10-15 23:15:39 +03:00
.gitignore Renamed Folder & Minor changes 2023-09-16 10:24:53 +01:00
.lintstagedrc.json init commit 2023-09-16 10:08:12 +01:00
.npmrc init commit 2023-09-16 10:08:12 +01:00
.nvmrc init commit 2023-09-16 10:08:12 +01:00
.prettierignore init commit 2023-09-16 10:08:12 +01:00
commitlint.config.js init commit 2023-09-16 10:08:12 +01:00
common_makefile.mk init commit 2023-09-16 10:08:12 +01:00
docker-compose.yml feat: [#60] review fix 2023-10-15 23:15:39 +03:00
LICENSE init commit 2023-09-16 10:08:12 +01:00
Makefile init commit 2023-09-16 10:08:12 +01:00
package-lock.json chore: update pyright 2023-10-02 20:06:13 +01:00
package.json feat: [#45] llm_agent 2023-10-15 07:59:35 +03:00
README.md feat: [#60] review fix 2023-10-15 23:15:39 +03:00

Голосовой Ассистент на Langchain (OpenAI)

Описание проекта

Этот проект представляет собой голосового ассистента, разработанного в рамках дипломного проекта для Яндекс.Практикума. Ассистент основан на технологиях OpenAI и предназначен для поиска информации о фильмах в нашем сервисе кинотеатра.

Что удалось реализовать?

  • Организация кодовой базы по шаблону DDD
  • Speech To Text на базе Whisper от OpenAI
  • LLM:
    • Получение embeddings для фильмов в векторную базу данных pgvector
    • Поиск фильмов по embeddings
    • Получение информации о конкретном фильме по embeddings
    • Сохранение истории диалогов с ассистентом
  • Text to speech на базе Yanex SpeechKit и ElevenLabs
  • Клиент для работы с сервисом на базе Telegram-бота

Команда:

Как запустить проект?

  1. Скачать файл базы данных с embeddings и поместить её по пути src/assistant/data/dump.sql.

  2. В файл .env.example переименовать в .env и заполнить переменные окружения. Пример заполнения переменных окружения:

POSTGRES_DRIVER=postgresql+asyncpg # Драйвер для работы с базой данных
POSTGRES_HOST=db # Хост базы данных
POSTGRES_PORT=5432 # Порт базы данных
POSTGRES_USER=app # Пользователь базы данных
POSTGRES_PASSWORD=123qwe # Пароль пользователя базы данных
POSTGRES_DB_NAME=movies_database # Название базы данных

NGINX_PORT=80 # Порт nginx
API_HOST=0.0.0.0 # Хост API
API_PORT=8000 # Порт API

JWT_SECRET_KEY=secret # Секретный ключ для JWT
JWT_ALGORITHM=HS256 # Алгоритм шифрования JWT

APP_RELOAD=True # Автоматическая перезагрузка приложения

VOICE_AVAILABLE_FORMATS=mp3,ogg,wav,oga # Доступные форматы аудиофайлов
VOICE_MAX_INPUT_SIZE=5120 # Максимальный размер входного аудиофайла в килобайтах
VOICE_MAX_INPUT_SECONDS=30 # Максимальная длительность входного аудиофайла в секундах

OPENAI_API_KEY=sk-1234567890 # API-ключ OpenAI
OPENAI_STT_MODEL=whisper-1 # Модель для распознавания речи

PROXY_HOST=123.123.123.123 # Хост прокси
PROXY_PORT=1234 # Порт прокси
PROXY_USER=proxy_user # Пользователь прокси
PROXY_PASSWORD=proxy_password # Пароль прокси
PROXY_ENABLE=True # Включить прокси

TTS_YANDEX_API_KEY=1234567890 # API-ключ Yandex SpeechKit
TTS_YANDEX_AUDIO_FORMAT=oggopus # Формат аудиофайла
TTS_YANDEX_SAMPLE_RATE_HERTZ=48000 # Частота дискретизации аудиофайла

TTS_ELEVEN_LABS_API_KEY=1234567890 # API-ключ ElevenLabs
TTS_ELEVEN_LABS_DEFAULT_VOICE_ID=EXAVITQu4vr4xnSDxMaL # ID голоса по умолчанию

BOT_CONTAINER_NAME=bot_container_name # Название контейнера
BOT_IMAGE_NAME=botimage_name # Название образа
BOT_NAME=mybotname # Название бота
BOT_TOKEN=1234567890:ABCdefghIJKlmnopQRStuVWXYz # Токен бота
BOT_ADMINS=1234567890,9876543210 # ID администраторов бота через запятую

API_PROTOCOL=http # Протокол API
API_URL=api# URL API
API_PORT=8000 # Порт API

REDIS_HOST=redis # Хост Redis
REDIS_PORT=6379 # Порт Redis
  1. Запустить проект командой docker-compose up -d

Важно!

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