Skip to content

Raiksler/Soulcatcher-voice-changer

Repository files navigation

Описание

Soulcatcher voice changer bot, представляет собой интерактивного телеграм бота, предназначенного для обработки и модификации голосовых сообщений, с целью обеспечения анонимности пользователя.

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

Для получения результата, необходимо сделать всего две вещи: Выбрать режим работы бота и отправить ему голосовое сообщение. Бот способен обрабатывать как свежезаписанные голосовые сообщения, так и пересланные из каких-либо источников. Язык интерфейса бота автоматически подстраивается под локаль пользователя.

Существует четыре режима работы:

  • Распознавание речи - команда /recognite. Бот распознает речь во входящем голосовом сообщении и отправит его текстовую расшифровку.
  • Машинная переозвучка - команда /resound. Бот распознает речь во входящем сообщении и отправит ответное голосовое сообщение, переозвучив этот текст при помощи Google Text-to-speech.
  • Изменение тональности - команда /pitch. Бот примет голосовое сообщение, изменит его тональность на случайную величину и вернет результат в ответном голосовом сообщении.
  • Перевод текста - команда /translate. Отдельная функция для перевода текстовых сообщений. Все остальные режимы мультиязычны и могут исользоваться с несколькими языками.

Всю информацию, касательно режимов и особенностей использования бота, можно получить командой /help.

Используемые технологии

Бот написан на Python 3.10, помимо стандартных библиотек, бэкэнд бота имеет ряд зависимостей, первая и самая важная из них - фреймворк aiogram. Aiogram, предназначен для асинхронного взаимодействия с Telegram API. Все взаимодействие с Telegram API, за исключением скачивания и отправки файлов на сервера Telegram, реализованы методами данного фреймворка, во взаимодействии с стандартной (в текущей версии Python) библиотекой Asyncio. Взаимодействие с файлами использует стандартную библиотеку Requests.

Распознавание речи реализовано через библиотеку SpeechRecognition. С помощью методов даннной библиотеки, происходит применение технологии Google Speech-to-Text.

Модуляция речи производится с помощью библиотеки gTTS

Для изменения тональности голосовых сообщений, применяется пакет FFmpeg. Обращение к данному пакету, происходит путем вызова паралельного процесса на сервере, с помощью нативной библиотеки Subprocess

Перевод текста осуществляется через библиотеку Translators, с помощью API Google Translate.

Менеджмент зависимостей обеспечивается посредством пакета poetry.

Развертывание

Soulcatcher разрабатывался с учетом последующего развертывания с применением технологии контейнеризации, посредством Docker. Развертывание контейнера проекта полностью автоматизировано и не потребует дополнительных действий. Тем не менее, инструкция по развертыванию проекта без использования Docker, так-же будет приведена.

Развертывание с помощью Docker:

  • Клонируйте репозиторий.
  • Добавьте Telegram token вашего бота в модуль env.py, находящийся в корневой директории.
  • Создайте Docker образ, при помощи команды <docker build -t soulcatcher:bot .>.
  • Запустите Docker образ.

Развертывание без использования Docker:

  • Клонируйте репозиторий.
  • Добавьте Telegram token вашего бота в модуль env.py, находящийся в корневой директории.
  • Создайте в корневой директории, директорию temp.
  • Создайте в директории temp, две директории: voice и machine. Данные директории используются для временного хранения звуковых файлов в процессе обработки.
  • Установите пакет poetry.
  • Установите зависимости командой <poetry install>.
  • Установите пакет ffmpeg.
  • Запустите сервер бота, командой <poetry run python3 main.py>.

Бэкэнд бота тестировался под относительно высокими нагрузками на ввод-вывод, не смотря на то, что автоматической перезагрузки контейнера не предусмотрено, эту опцию, при желании, можно добавить в Dockerfile самостоятельно. Тем не менее случайных вылетов не зафиксировано.

P.S. Секрет выбора аватарки, названия и функционала бота, заключается в одноименном персонаже с соответствующими способностями, из замечательной серии романов Г. Кука, "Черный отряд".

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published