1.語音訓練檔案下載,可依據mockingbird下載後,其下datasets_download目錄下說明,下載aidatatang_200zh.tgz、magicdata.tgz、data_aishell3.tgz、data_aishell.tgz解壓縮後訓練
2、將下載後..\control\cli 目錄下檔案COPY到下載目錄下,以免執行時發生路徑錯誤
3、預訓練 python pre.py <語音集路徑> -d <語音集名稱> -s -n 10
-s表示附加至之前預訓練結果中
4、合成器訓練 python synthesizer_train.py <訓練成果檔案名稱> <語音集路徑>\SV2TTS\synthesizer
<語音集路徑>\SV2TTS\synthesizer為預設值,預訓練結果放置位置
4、進行synthesizer_train.py時不易收斂,目前嘗試方式為
A、以同一人的語音進行訓練,比較容易收斂
B、訓練相關參數在<克隆目錄>\models\synthesizer\hparams.py可以用記事本進行修改
相關參數略述如下:
1、信號處理(在合成器和聲碼器中使用)
sample_rate:取樣速率,即每秒採樣點數,默認為16000。
n_fft:傅裡葉變換的窗口大小,預設為1024。
num_mels:梅爾頻譜的數量,默認為80。
hop_size:幀移,即每次窗口滑動的步長,預設為256(相當於12.5毫秒的幀移,與取樣速率有關)。
win_size:幀長度,即窗口的大小,預設為1024(相當於50毫秒的幀長度,與取樣速率有關)。
fmin:最低頻率,用於梅爾濾波器的設置,默認為55。
min_level_db:最小音量級別(分貝),用於音訊的動態範圍壓縮,預設為-100。
ref_level_db:參考音量級別(分貝),用於音訊的動態範圍壓縮,預設為20。
max_abs_value:音訊的最大絕對值,用於梯度裁剪,默認為4.0(如果太大,會導致梯度爆炸;如果太小,會導致過早收斂)。
preemphasis:預加重濾波器的係數,默認為0.97。
preemphasize:是否對音訊應用預加重濾波器,默認為True。
2、Tacotron 文本轉語音(TTS)
tts_embed_dims:輸入的音素/字母表的嵌入維度,默認為512。
tts_encoder_dims:編碼器的維度,默認為256。
tts_decoder_dims:解碼器的維度,默認為128。
tts_postnet_dims:後處理網路的維度,預設為512。
tts_encoder_K:編碼器中多頭自注意力的頭數,默認為5。
tts_lstm_dims:LSTM層的維度,默認為1024。
tts_postnet_K:後處理網路中多頭卷積的頭數,默認為5。
tts_num_highways:Highway網路的層數,預設為4。
tts_dropout:Dropout的概率,默認為0.5。
tts_cleaner_names:用於文本預處理的清洗器的名稱列表,默認為["basic_cleaners"]。
tts_stop_threshold:控制音訊生成結束的閾值,默認為-3.4。例如,在[-4, 4]的範圍內,該值將在第一個所有值小於-3.4的幀處終止序列。
3、Tacotron 訓練 (合成器訓練時一般修改tts_schedule,目前嘗試batch_size數字越大則收斂效果較佳,以24G顯卡而言,設定超過48有崩潰危險,測試中...)
tts_schedule:漸進式訓練的訓練計畫,包含了一系列元組,每個元組的格式為(r, lr, step, batch_size),表示減少因數r、學習率lr、步數step和批大小batch_size。默認為逐步減小的訓練計畫。
tts_clip_grad_norm:梯度裁剪的閾值,用於防止梯度爆炸,默認為1.0。如果不需要梯度裁剪,可以將其設置為None。
tts_eval_interval:模型評估(樣本生成)之間的步數,默認為500。設置為-1表示在完成一個epoch後生成,設置為0表示禁用生成。
tts_eval_num_samples:生成的樣本數量,預設為1。
4、數據預處理
max_mel_frames:最大梅爾幀數,默認為900。
rescale:是否進行音訊幅度縮放,預設為True。
rescaling_max:幅度縮放的最大值,默認為0.9。
synthesis_batch_size:用於聲碼器預處理和推理的合成批大小,默認為16。
5、梅爾視覺化和 Griffin-Lim
signal_normalization:是否對音訊進行信號歸一化,預設為True。
power:Griffin-Lim演算法中的冪次,預設為1.5。
griffin_lim_iters:Griffin-Lim演算法的反覆運算次數,預設為60。
6、音訊處理選項
fmax:最高頻率,不應超過(取樣速率的一半),默認為7600。
allow_clipping_in_normalization:是否在歸一化時允許剪切音訊,默認為True(僅在信號歸一化為True時使用)。
clip_mels_length:是否裁剪超過max_mel_frames的樣本,預設為True。
use_lws:是否使用本地加權和(Local Weighted Sums)進行快速頻譜相位恢復,默認為False。
symmetric_mels:如果為True,則將梅爾範圍設置為[-max_abs_value, max_abs_value];如果為False,則設置為[0, max_abs_value]。
trim_silence:是否在最佳結果中使用16000取樣速率進行靜音修剪,默認為False。
7、SV2TTS
speaker_embedding_size:說話人嵌入的維度,默認為256。
silence_min_duration_split:用於切分語音的靜音最短持續時間,默認為0.4秒。
utterance_min_duration:捨棄的語音最短持續時間,默認為0.5秒。
use_gst:是否使用全域樣式標記(Global Style Token),預設為True。
use_ser_for_gst:是否在全域樣式標記中使用參考說話人嵌入,默認為True。
請先 登入 以發表留言。