Бот, который умеет говорить твоим голосом!
👉 @copyrunbot
В рамках ресерча для моего пет-проекта про ИИ-каверы назрела необходимость в большом количестве данных. Для качественного кавера нужен хороший большой (много минуточасов) датасет голоса, который мы хотим использовать.
В моей картине мира сервис, в который нужно будет наговоривать по 20-30 минут, отсекает весь фан. Все должно быть быстро и просто.
Решая вопрос, как 1 минуту голосовухи превратить хотя бы в 10, я решил обратиться к синтезу речи. Для этой задачи идеально подходят voice-cloning инструменты с zero-shot (без обучения) подходом. Такой инструмент был найден, и его работа мне настолько понравилась, что я решил собрать небольшого забавного бота, который, имея лишь пару секунд записи, может клонировать голос по (почти) любому тексту.
Что под капотом:
aiogram— основа бота;runorm— нормализация текста;siero_stress— расстановка ударений;aiosqlite— хранение сообщений;pydub— работа с аудио;faster_whisper— транскрибация речи;f5-tts— озвучка (используется лучшая, на мой взгляд, русская модель)
Пайплайн:
- Бот принимает аудио-референс (файл, голосовуха, пересланное сообщение);
- Из исходного аудио удаляются длинные паузы, затем выполняется транскрибация;
- И транскрибация, и целевой текст проходят нормализацию: очистка от лишних символов, перевод чисел в слова, замена латиницы на кириллицу;
- В обоих текстах расставляются ударения;
F5-TTSозвучивает текст голосом референса
Известные ошибки бота:
F5-TTSчувствителен к соотношению длины референса и текста: если текст короче — возможны артефакты;- Качество референса критично — шум, интонация и темп влияют на результат;
- Нет шумоподавления (пока)
Конфиденциальность:
Бот крутится на моем сервере у меня в шкафу. Из хранимых данных: обезличенные референсы и такие же обезличенные сообщения с их идентификаторами без привязки к пользователям.
Чуть доработав узкие места, я получу готовый инструмент для генерации синтетических данных под свои задачи. А пока — можно просто побаловаться 😌
👉 @copyrunbot

