Назад

© Копирун

Бот, который умеет говорить твоим голосом!

👉 @copyrunbot

В рамках ресерча для моего пет-проекта про ИИ-каверы назрела необходимость в большом количестве данных. Для качественного кавера нужен хороший большой (много минуточасов) датасет голоса, который мы хотим использовать.

В моей картине мира сервис, в который нужно будет наговоривать по 20-30 минут, отсекает весь фан. Все должно быть быстро и просто.

Решая вопрос, как 1 минуту голосовухи превратить хотя бы в 10, я решил обратиться к синтезу речи. Для этой задачи идеально подходят voice-cloning инструменты с zero-shot (без обучения) подходом. Такой инструмент был найден, и его работа мне настолько понравилась, что я решил собрать небольшого забавного бота, который, имея лишь пару секунд записи, может клонировать голос по (почти) любому тексту.

Что под капотом:

  • aiogram — основа бота;
  • runorm — нормализация текста;
  • siero_stress — расстановка ударений;
  • aiosqlite — хранение сообщений;
  • pydub — работа с аудио;
  • faster_whisper — транскрибация речи;
  • f5-tts — озвучка (используется лучшая, на мой взгляд, русская модель)

Пайплайн:

  • Бот принимает аудио-референс (файл, голосовуха, пересланное сообщение);
  • Из исходного аудио удаляются длинные паузы, затем выполняется транскрибация;
  • И транскрибация, и целевой текст проходят нормализацию: очистка от лишних символов, перевод чисел в слова, замена латиницы на кириллицу;
  • В обоих текстах расставляются ударения;
  • F5-TTS озвучивает текст голосом референса

Известные ошибки бота:

  • F5-TTS чувствителен к соотношению длины референса и текста: если текст короче — возможны артефакты;
  • Качество референса критично — шум, интонация и темп влияют на результат;
  • Нет шумоподавления (пока)

Конфиденциальность:

Бот крутится на моем сервере у меня в шкафу. Из хранимых данных: обезличенные референсы и такие же обезличенные сообщения с их идентификаторами без привязки к пользователям.

Чуть доработав узкие места, я получу готовый инструмент для генерации синтетических данных под свои задачи. А пока — можно просто побаловаться 😌

👉 @copyrunbot

Следующий пост

🇰🇷 Южная Корея

🇰🇷 Южная Корея

Есть безумная мысль: Сеул — это азиатский Ереван ! Осенний отпуск должен был быть тёплым и уютным, с максимальным уровнем активности не выше нуля. Однако мы выбрали быть счастливыми продолжить изучать

Предыдущий пост

🏃‍♂️Забег «Моя столица»

🏃‍♂️Забег «Моя столица»

Мой первый официальный забег, первая медалька и вторая десятка! Дико переживал, что не осилю, т.к. не так давно болел и бегать стал реже. Тем не менее согласился принять участие в этой авантюре. Получ