Пример кода инференса

#7
by riZZZhik - opened

Привет, возможно ли выложить код инференса F5-TTS который использовался для https://misha24-10.github.io/Misha24-10/ ?

Привет, для инференса можешь воспользоваться оригинальным репозиторием F5-TTS - https://github.com/SWivid/F5-TTS
Там есть удобное Gradio приложение, как раз для демонстрации (F5-TTS/src/f5_tts/infer/infer_gradio.py). При необходимости есть CLI для инференса.

Буду благодарен если кто-то из пользователей выложим colab ноутбук с примером запуска, добавлю его в README

https://colab.research.google.com/github/NeuralFalconYT/F5-TTS-Demo/blob/main/F5_TTS_Latest.ipynb

  1. Подключиться к среде с T4.
  2. Запустить код во 2 ячейке, дождаться установки зависимостей, и запускать 3 ячейку с gradio. Как только увидите ссылку с gradio, надо перейти по ней, запустится UI-интерфейс.
  3. Заменить пути в запущенном интерфейсе на:
    hf://Misha24-10/F5-TTS_RUSSIAN/F5TTS_v1_Base/model_240000_inference.safetensors
    hf://Misha24-10/F5-TTS_RUSSIAN/F5TTS_v1_Base/vocab.txt
    После каждой замены желательно нажать Enter. Пути я использовал для первоначальной модели. Misha24-10, подскажите, нужно ли заменить только model_240000_inference.safetensors из обновлённой модели или vocab.txt тоже нужен другой?
  4. Соседнюю вкладку блокнота colab НЕ ЗАКРЫВАТЬ. Смотреть в его логе, что model_240000 успешно подцеплена, иначе услышите Китайское бормотание на базовой модели.
  5. Во вкладке Base загрузить фрагмент записи для клонирования (обычно делаю на 1 минуту с копейками).
  6. Запустить генерацию.
  7. Сразу предупреждаю, что на слишком коротких фрагментах текста речь получается невнятной, сам с этим сталкивался, но точной причины не знаю, чтобы отправить баг-репорт разработчикам. Хотя итак ясно, что это 100% баг. Обычно я обрабатываю текст в программе Demagog-Silero, и с уже проставленными ударениями, озвучиваю. Желательный объём текста от 3 тыс знаков. На больших кусках ни разу не было заметных артефактов. Ещё есть версия, что "через CLI для инференса" тоже генерирует бессвязную фигню. Сам я пользуюсь colab, подтвердить, что так происходит каждый раз не могу.
  8. Misha24-10, можно ли использовать голоса из вашего датасета для инференции напрямую, без фрагмента для клонирования? В интерфейсе я этой возможности не увидел.

Misha24-10, на kaggle сессия даётся на 12 часов, поддерживает ли f5 tts обучение на 2 T4? Можно ли на kaggle дообучить собственную модель? Как бы добавить в код f5 возможность сохранять контрольную точку перед остановкой обучения на тот же google drive? И при следующей сессии продолжать тренировку уже с облака? Можете сделать свой форк с такой доработкой и прямой инференцией из модели?

Привет, Михаил, спасибо что поделился ноутбуком для инференса.

  1. Для данной модели vocab.txt не менялся, можно использовать оригинальный словарь, они не отличаются (hf://Misha24-10/F5-TTS_RUSSIAN/F5TTS_v1_Base/vocab.txt
    и https://huggingface.co/SWivid/F5-TTS/blob/main/F5TTS_v1_Base/vocab.txt).
  2. Модель можно инференсить без референсного аудио, (3)https://github.com/SWivid/F5-TTS/issues/357), но для этого нужно немного изменить код. Не пробовал такой способ.
  3. Не знаю насчет kaggle, но в colab точно можно дообучить свою модель (fine-tune), пример ноутбука для дообучения сделаю в течение 2-3 недель.
  4. Чтобы добавить сохранения весов на kaggle, можно сохранить веса как аретфакт, а далее при продолжении обучения использовать предыдущий чекпоинт, такое возможно (пример такого дообучения будет в гайде по дообучению модели в colb)

Misha24-10, привет!

  1. "Для данной модели vocab.txt не менялся, можно использовать оригинальный словарь, они не отличаются (hf://Misha24-10/F5-TTS_RUSSIAN/F5TTS_v1_Base/vocab.txt
    и https://huggingface.co/SWivid/F5-TTS/blob/main/F5TTS_v1_Base/vocab.txt)."
    С vocab.txt ясно.
  2. "model_10000_inference.safetensors
    model_20000_inference.safetensors
    model_last_inference.safetensors"
    Из этих 3 файлов "model_last_inference.safetensors" - этот нужен для дообучения с контрольной точки своей модели?
    "model_20000_inference.safetensors" - вот этим я так понял и нужно пользоваться на colab?
  3. "Модель можно инференсить без референсного аудио"
    А отличается ли чем-то речь синтезированная на прямую, без референсного аудио от синтезированной из клонированного фрагмента, попробовать можете? Для меня это будет важно для синтеза собственной голосовой модели.
  4. "https://github.com/SWivid/F5-TTS/issues/357), но для этого нужно немного изменить код. Не пробовал такой способ."
    Мне незнаком python, но я так понял, что синтез с этим изменением работает без референсного аудио. Дело за малым, если у меня будет несколько голосовых моделей, как мне их выбирать напрямую в интерфейсе?
  5. "Не знаю насчет kaggle, но в colab точно можно дообучить свою модель (fine-tune), пример ноутбука для дообучения сделаю в течение 2-3 недель."
    В colab нет работы в фоновом режиме, или скажем, обучения без закрытой вкладки. К тому же он работает на одной видеокарте. Синтезировать речь там удобно, а вот обучать, не уверен.
  6. "Чтобы добавить сохранения весов на kaggle, можно сохранить веса как аретфакт, а далее при продолжении обучения использовать предыдущий чекпоинт, такое возможно (пример такого дообучения будет в гайде по дообучению модели в colb)"
    Буду очень рад разобраться в материале. Я знаю, что f5 работает с kaggle, 1.4 версию я запускал там в графическом интерфейсе, но тогда не было ещё поддержки русского, и делать с ним было просто нечего :) Я думаю, что в статье надо рассматривать именно kaggle. Как сохранять фейковые веса и работать с ними же дальше - это очень любопытно. Если нужно изменять пути в коде f5 и прописывать их в соответствии с архитектурой каталогов kaggle, то большинство людей с этим не разберутся. Это нужно последовательно и подробно показать. В идеале, конечно, сделать свой удобный форк f5, чтобы всё обучение свелось к 2-3 шагам. Чем проще, тем лучше, как у нас "в народе говорят" :) Но если решите все же работать с colab, не проблема, мне лично важнее понять основную идею.
  7. openaudio-s1-mini доступна в открытом доступе для fish speech.
    https://huggingface.co/fishaudio/openaudio-s1-mini
    Возможна ли её интеграция в f5 tts? Или архитектуры не совместимы? Я пробовал клонирование в полной модели s1 на их сайте, качество впечатляет, в сравнении с предыдущими моделями. Хотя файнтюна для mini ещё нет :)

Я бы также хотел видеть облегченный пример запуска через cli

Sign up or log in to comment