TSELM 的正式实现:使用离散标记和语言模型进行目标说话人提取。
要引用模型类,请直接查看exp/tselm/model.py。请注意,为了训练,混合音频被剪辑为长度 48080 (3.05sx 16khz),参考语音被剪辑为 64080 (4.05sx 16khz)。
我们提出了 TSELM,一种利用离散标记和语言模型的新型目标说话人提取网络。 TSELM 利用 WavLM 的多个离散层作为输入标记,并结合交叉注意机制来集成目标说话者信息。采用语言模型来捕获序列依赖性,同时使用可扩展的 HiFi-GAN 根据令牌重建音频。通过应用交叉熵损失,TSELM 对输出标记的概率分布进行建模,从而将音频生成的复杂回归问题转化为分类任务。实验结果表明,TSELM 在语音质量方面取得了优异的结果,在语音清晰度方面取得了可比的结果。
requirements.txt
中的所有依赖项在运行实验之前,我们需要下载以下冻结的预训练模型。
姓名 | 关联 | 结果 |
---|---|---|
WavLM 大号 | https://huggingface.co/microsoft/wavlm-large/tree/main | wavlm-大 |
克均值 | 下载 Kmeans 检查点 | kmeans_ckpt |
可扩展的 HiFiGAN | 下载 HiFiGAN 检查点 | 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
指定包含aux_s1.scp
、 s1.scp
和mix_clean.scp
的 libri2mix 测试集文件夹的路径。-config
指定配置。此配置需要具有model
字段。-ckpt
指定模型检查点。--output
指定输出目录。输出音频将输出到该文件夹。它们的名称将与 .scp 文件中的名称相同。-gpus
指定可用于运行推理的 GPU。-proc
指定并行运行推理的进程总数。它将使用提供的 GPU 并在每个设备上平均分配进程。数据将平均分配给每个进程。 我们的 TSELM-L 检查点可以在此处下载。
您可以通过将-ckpt
替换为检查点的路径来推断 libri2mix 测试集。
请注意,您仍然需要下载预训练模型并将相应的检查点文件夹添加到 config/tselm_l.yaml 中。