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 中。