Naozumi520 / Bert-VITS2-Cantonese-Yue

vits2 backbone with multilingual-bert, modified to support Cantonese
GNU Affero General Public License v3.0
5 stars 1 forks source link

请教如何训练一个四川话模型 #1

Closed 1044690543 closed 6 months ago

1044690543 commented 6 months ago

如题,请问您粤语底模是如何训练出来的呢,用了多少小时训练集呢。我想训练一个四川话的底模,可以分享一些思路吗

Naozumi520 commented 6 months ago

我用了約9-11個小時的粵語數據對「底模」進行了訓練,這些數據是從一個香港播客頻道中提取的單一人聲。

實際上我們無法訓練一個「底模」(需要1000小時的數據)。我這裡更像是在模型一個角色,使其能夠發音粵語。但是限制是單一模型只能有一個角色(據我所知)。

第一件事是修改text cleaner。其作用是將不同的中文標點符號替換為較少的英文字母符號,並將文本轉換為音素。

Bert-vits2的text cleaner如下:

文本 => 替換中文標點符號後的文本 => 音素 => 分割聲母和韻母

例如,在普通話拼音: 啊!轉換為['a', 'a', '!'] 你好 轉換為['n','i', 'h', 'ao']

而對於粵語粤拼(以我情況為例): 你好 轉換為['n', 'ei', 'h', 'ou']

https://github.com/fishaudio/Bert-VITS2/blob/4751adb19ecdd9ea607e76788d1a631acedcf99d/text/chinese.py#L87 返回為"phones"

至於tones,是每個詞的聲調。對於粵語而言,聲調範圍是1-6(nei5 hou2 => [5, 2])。

最後一個詞"word2ph"表示的是音素的長度。例如,"nei"將被分割為n + ei,因此長度為2。像"!"這樣的標點符號無法分割,因此長度為1。

你好!=> [2, 2, 1]

完成了g2p函數之後可以開始訓練模型了。像訓練人聲一樣訓練模型即可。在模型能夠說出你想要的語言之後,用你想要的聲音來替換訓練數據,並繼續訓練,就可以了

Naozumi520 commented 6 months ago

Please be reminded you will also need to edit the symbols.py and replace the zh List to finals in your languages.

1044690543 commented 6 months ago

Thank you very much for your detailed response, which has given me some ideas for training a new model. Once again, thank you, and I wish you success in your studies.