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. Секрет выбора аватарки, названия и функционала бота, заключается в одноименном персонаже с соответствующими способностями, из замечательной серии романов Г. Кука, "Черный отряд".