Официальная реализация TSELM: извлечение целевых говорящих с использованием дискретных токенов и языковых моделей.
Чтобы обратиться к классу модели, проверьте непосредственно exp/tselm/model.py. Обратите внимание, что смешанный звук обрезается до длины 48080 (3,05sx 16 кГц), а эталонная речь обрезается до 64080 (4,05sx 16 кГц) для обучения соответственно.
Мы предлагаем TSELM, новую сеть извлечения целевых говорящих, которая использует дискретные токены и языковые модели. TSELM использует несколько дискретизированных слоев из WavLM в качестве входных токенов и включает механизмы перекрестного внимания для интеграции информации о целевом говорящем. Языковые модели используются для фиксации зависимостей последовательностей, а масштабируемая HiFi-GAN используется для восстановления звука из токенов. Применяя перекрестную энтропийную потерю, TSELM моделирует распределение вероятностей выходных токенов, тем самым превращая сложную задачу регрессии генерации звука в задачу классификации. Результаты экспериментов показывают, что TSELM достигает отличных результатов по качеству речи и сопоставимых результатов по разборчивости речи.
requirements.txt
Прежде чем проводить эксперименты, нам необходимо загрузить следующие замороженные предварительно обученные модели.
Имя | Связь | Результат |
---|---|---|
WavLM Большой | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-большой |
Ксредство | Скачать Kmeans Checkpoint | kmeans_ckpt |
Масштабируемый HiFiGAN | Скачать HiFiGAN Checkpoint | hifigan-wavlm-l1-3-7-18-23-k1000-LibriTTS |
Обратите внимание, что для вывода WavLM Large рекомендуется клонировать весь репозиторий или загрузить весь каталог. Для Kmeans и Scalable HiFiGAN нам необходимо извлечь их после загрузки.
Конфигурация обучения указывается с использованием пакета hyperpyyaml
, который по сути является отражением.
Конфиг для обучения TSELM-L
можно найти в config/tselm_l.yaml. Перед обучением вам необходимо указать конфигурацию замороженных предварительно обученных моделей и другие детали обучения. Подробности можно найти в config/tselm_l.yaml и config/README.md.
После настройки вы можете запустить
# # Train the model using the config
python train.py --config_path ./config/tselm_l.yaml --log ./log --ckpt_path ./ckpt/tselm_l
--config_path
указывает путь к файлу конфигурации.--log
указывает каталог вывода журнала. Все логи будут храниться здесь.--ckpt_path
указывает каталог контрольной точки. Обучение можно возобновить, используя тот же путь к контрольной точке. После обучения лучшая модель будет находиться по адресу
.
Например, чтобы вывести нашу модель на тестовом наборе libri2mix, вы можете запустить
# # Generate output audio on libri2mix testset
python inference.py -scp < path_to_libri2mix_test_scp_folder >
-config ./config/tselm_l.yaml
-ckpt < path_to_ckpt >
--output < path_to_output_folder >
-gpus cuda:0 cuda:1 cuda:2 cuda:3
-proc 8
-scp
указывает путь к папке набора тестов libri2mix, содержащей aux_s1.scp
, s1.scp
и mix_clean.scp
.-config
указывает конфигурацию. В этой конфигурации должно быть поле model
.-ckpt
указывает контрольную точку модели.--output
указывает выходной каталог. Выходной звук будет выводиться в эту папку. Их имена будут такими же, как в файлах .scp.-gpus
указывает доступный графический процессор для выполнения вывода.-proc
указывает общее количество процессов для параллельного выполнения вывода. Он будет использовать предоставленный графический процессор и поровну разделять процессы на каждом устройстве. Данные будут разделены поровну на каждый процесс. Нашу КПП ТСЭЛМ-Л можно скачать здесь.
Вы можете сделать вывод о тестовом наборе libri2mix, заменив -ckpt
путем к контрольной точке.
Обратите внимание, что вам все равно необходимо загрузить предварительно обученные модели и добавить соответствующую папку контрольных точек в config/tselm_l.yaml.