在我們的論文中,我們提出了Daft-Exprt,這是一種多演講者的聲學模型,可推動任何文本上的跨言論韻律轉移的最新動態。這是語音綜合中最具挑戰性,很少直接解決的任務之一,尤其是對於高度表達的數據。 Daft-Exprt使用膠片調節層在策略中策略性地註入不同部分的體系結構中的各個部分。該模型明確編碼了傳統的低級韻律特徵,例如音高,響度和持續時間,也可以編碼更高的韻律信息,這些信息有助於在高度表現力的風格中產生令人信服的聲音。說話者的身份和韻律信息通過對抗性訓練策略來闡明,該策略可以使言語的準確轉移。實驗結果表明,DAFT-EXPRT在跨語義串擾的韻律轉移任務上明顯勝過強大的基線,同時產生的自然性與最先進的表達模型相當。此外,結果表明該模型從韻律表示中丟棄說話者身份信息,並始終以所需的語音產生語音。請訪問我們的演示頁面以獲取與紙質實驗有關的音頻樣本。
全面披露:此存儲庫中提供的模型與論文評估中的模型不同。該論文的模型接受了專有數據的培訓,該數據使我們公開發布它。
我們將LJ語音數據集和ESD數據集(ESD)(ESD)的組合預先培訓。
訪問此存儲庫的發行版,以下載預訓練的模型,並使用相同的模型收聽韻律轉移示例。
要求:
我們建議將Conda用於Python環境管理,例如下載和安裝Miniconda。
創建您的python環境並使用makefile安裝依賴項:
conda create -n daft_exprt python=3.8 -yconda activate daft_exprtcd environmentmake所有Linux/conda/pip依賴項將由makefile安裝,存儲庫將以可編輯模式安裝為PIP包。
要求:
使用關聯的Dockerfile構建Docker映像:
docker build -f environment/Dockerfile -t daft_exprt . 此快速啟動指南將說明如何使用此存儲庫的不同腳本到:
所有腳本都位於腳本目錄中。
DAFT-EXPRT源代碼位於DAFT_EXPRT目錄中。
腳本中使用的配置參數均在hparams.py中啟動。
作為一個快速啟動示例,我們考慮使用22kHz LJ語音數據集和Zhou等人的16KHz情感語音數據集(ESD)。
這結合了總共11位演講者。所有說話者數據集必須在同一根目錄中。例如:
/data_dir
LJ_Speech
ESD
spk_1
...
spk_N
在此示例中,我們使用上一節中構建的Docker映像:
docker run -it --gpus all -v /path/to/data_dir:/workdir/data_dir -v path/to/repo_dir:/workdir/repo_dir IMAGE_ID
源代碼期望每個說話者數據集的特定樹結構:
/speaker_dir
metadata.csv
/wavs
wav_file_name_1.wav
...
wav_file_name_N.wav
Metadata.csv必須格式化如下:
wav_file_name_1|text_1
...
wav_file_name_N|text_N
鑑於每個數據集都有自己的命名法,因此該項目不提供現成的通用腳本。
但是,腳本format_dataset.py已經提出了格式LJ和ESD的代碼:
python format_dataset.py
--data_set_dir /workdir/data_dir/LJ_Speech
LJ
python format_dataset.py
--data_set_dir /workdir/data_dir/ESD
ESD
--language english
在本節中,代碼將:
為了預處理所有可用的格式數據(即在此示例中LJ和ESD):
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
pre_process
這將使用為22kHz音頻設置的默認超參數進行預處理數據。
與實驗相關的所有輸出都將存儲在/workdir/repo_dir/trainings/EXPERIMENT_NAME中。
您還可以針對特定揚聲器進行數據預處理。例如,僅考慮ESD揚聲器:
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
pre_process
過程預處理功能需要幾個參數:
--features_dir :將存儲預處理數據的絕對路徑。默認為/workdir/repo_dir/datasets--proportion_validation :將在驗證集中進行的示例的比例。默認為每位揚聲器0.1 %。--nb_jobs :用於Python多處理的內核數。如果設置為max ,則使用所有CPU內核。默認為6 。請注意,如果這是您第一次預處理數據,則此步驟將需要幾個小時。
您可以通過增加--nb_jobs參數來減少計算時間。
預處理完成後,啟動培訓。培訓所有預處理數據:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
train
或者,如果您在預處理過程中針對特定的發言人(例如ESD發言人):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
train
與實驗相關的所有輸出都將存儲在/workdir/repo_dir/trainings/EXPERIMENT_NAME中。
火車功能需要幾個參數:
--checkpoint :DAFT-EXPRT檢查點的絕對路徑。默認為""--no_multiprocessing_distributed :禁用Pytorch多處理分佈式培訓。默認為False--world_size :分佈式培訓的節點數量。默認為1 。--rank :分佈式培訓的節點等級。默認為0 。--master :用於設置分佈式培訓的URL。默認為tcp://localhost:54321 。這些默認值將使用機器上的所有可用GPU在迭代0開始啟動新的培訓。
該代碼假設機器上只有1個GPU。
默認批處理大小和梯度積累超參數設置為值,以從紙張中復制48個批處理大小。
該代碼還支持張板記錄。顯示記錄輸出:
tensorboard --logdir_spec=EXPERIMENT_NAME:/workdir/repo_dir/trainings/EXPERIMENT_NAME/logs
培訓完成後,您可以創建一個用於Vocoder微調的數據集:
python training.py
--experiment_name EXPERIMENT_NAME
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
或者,如果您在預處理和培訓期間針對特定的發言人(例如ESD發言人):
python training.py
--experiment_name EXPERIMENT_NAME
--speakers ESD/spk_1 ... ESD/spk_N
--data_set_dir /workdir/data_dir
fine_tune
--checkpoint CHECKPOINT_PATH
微調數據集將存儲在/workdir/repo_dir/trainings/EXPERIMENT_NAME/fine_tuning_dataset中。
有關如何將DAFT-EXPRT用於TTS合成的示例,請運行腳本Synthesize.py。
python synthesize.py
--output_dir OUTPUT_DIR
--checkpoint CHECKPOINT
腳本中使用默認句子和參考話語。
該腳本還提供了:
--batch_size :並行處理句子的過程--real_time_factor :估計daft-exprt實時因素性能給定選定的批量大小--control :執行本地韻律控制 @article{Zaidi2021,
abstract = {},
journal = {arXiv},
arxivId = {2108.02271},
author = {Za{"{i}}di, Julian and Seut{'{e}}, Hugo and van Niekerk, Benjamin and Carbonneau, Marc-Andr{'{e}}},
eprint = {2108.02271},
title = {{Daft-Exprt: Robust Prosody Transfer Across Speakers for Expressive Speech Synthesis}},
url = {https://arxiv.org/pdf/2108.02271.pdf},
year = {2021}
}
對此存儲庫的任何貢獻都非常歡迎!
如果您有任何反饋,請將其發送到[email protected]。
©[2021] Ubisoft Entertainment。版權所有