Aller au contenu
ModelPrésentéExterne
Browse files

GPT SoVITS Russian

s2Gv2ProPlus-rus.pth: 由 GPTSoVITS/pretrainedmodels/v2Pro/s2Gv2ProPlus.pth 微操而来,放到 GPTSoVITS/pretrainedmodels/v2Pro/ 下

TypeOtherModèle de baselj1995/GPT-SoVITSVersionRu base e10 s123570CClasse

Source du modèle

Type
Other
Taille du fichier
148–191 MB
Modèle de base
lj1995/GPT-SoVITS
Version
vRu base e10 s123570
Mis à jour
19 oct. 2026
Source
Hugging Face

Description de la source

基于GPT-SoVITS微操后训练的俄语-中文模型

模型基于GPT-SoVITS对底模微操后使用288小时俄语和10小时汉语数据集训练而成。

GPT模型训练50个epoch,Sovits模型训练12个epoch。简单手动试听后,最佳组合(俄语->俄语、汉语->汉语、汉语->俄语)(俄语->汉语有问题,都是空白音频)是gpt-20epoch、sovits-10epoch

文件说明

s2Gv2ProPlus-rus.pth: 由 GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus.pth 微操而来,放到 GPT_SoVITS/pretrained_models/v2Pro/ 下

s1v3-ru.ckpt: 由 GPT_SoVITS/pretrained_models/s1v3.ckpt 微操而来,放到 GPT_SoVITS/pretrained_models/ 下

(记得将代码中使用原始两个底模的地方全局替换为新的两个底模)

ru-base_e10_s123570.pth : 放到 GPT_weights_v2ProPlus 下

ru-base-e20.ckpt : 放到 SoVITS_weights_v2ProPlus 下

微操脚本:

import torch
## 迁移gpt模型的embedding层,插入两个新的token
gpt_dict = torch.load(r"GPT_SoVITS/pretrained_models/s1v3.ckpt",map_location=torch.device('cpu'))
gpt_shape = gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"].shape
print(gpt_shape)
# 一共512列,embedding_dim=512
first_part = gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"][:,:]
new_weight = torch.cat([first_part, torch.randn(21, 512)],dim=0)  # 由于embedding_dim=512,len(rus_symbols)=21,所以需要增加21列
gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"] = new_weight
gpt_dict["config"]["model"]["phoneme_vocab_size"]=753  # 原本是732,增加21个符号
torch.save(gpt_dict,r"GPT_SoVITS/pretrained_models/s1v3-ru.ckpt") # 保存新的模型


import torch
sovits_dict = torch.load(r"GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus.pth",map_location=torch.device('cpu')) # 载入SoVITS模型
sovits_shape = sovits_dict["weight"]["enc_p.text_embedding.weight"].shape
print(sovits_shape)
first_part = sovits_dict["weight"]["enc_p.text_embedding.weight"][:,:]
new_weight = torch.cat([first_part,torch.randn(21,192)],dim=0) # 由于embedding_dim=192,len(rus_symbols)=21,所以需要增加21列
sovits_dict["weight"]["enc_p.text_embedding.weight"] = new_weight
torch.save(sovits_dict,r"GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus-rus.pth") # 保存新的模型

print("success!")

使用方式

1、自备文本前端代码

# -*- coding: utf-8 -*- 

# 实现俄语的g2p
import epitran

epi = epitran.Epitran('rus-Cyrl',ligatures=True,tones=True)

def g2p(text):
    phones = epi.xsampa_list(text,normpunc=True)
    phones = ["R"+post_replace_rus(i) for i in phones if i !="?"]
    return phones

# 一些奇奇怪怪的符号替换成纯英文的符号,防止写到文件后解析出错
def post_replace_rus(rus):
    rep_map = {
        ":": ",",
        ";": ",",
        ",": ",",
        "。": ".",
        "!": "!",
        "?": "?",
        "\n": ".",
        "·": ",",
        "、": ",",
        "...": "...",
        "?":"",
    }

    if rus in rep_map.keys():
        rus = rep_map[rus]
    return rus.upper()

# 处理俄语的音素符号 去重清洗
def process_russian_symbols(file_path):
    import pandas as pd
        # 加载指定目录下的tsv文件
    df = pd.read_csv(file_path, sep='\t')  # 使用 tab 分隔符读取 tsv 文件
    
    # 读取 sentence 列
    sentences = df['sentence'].tolist()
    
    # 调用 g2p 函数处理每个句子
    # 这里假设 g2p 是一个已定义的函数,返回音素列表
    phonemes = []
    for sentence in sentences:
        phoneme_list = g2p(sentence)  # 假设 g2p 返回一个列表
        # if "RS\\:'" in phoneme_list:
        #     print(sentence)
        phonemes.extend(phoneme_list)
    
    # 去重并排序
    unique_sorted_phonemes = sorted(list(set(phonemes)))
    
    return unique_sorted_phonemes

俄语音素符号:

rus_symbols={
    'RA',
    'RB',
    'RD', 
    'RE', 
    'RF', 
    'RG', 
    'RI', 
    'RJ', 
    'RK', 
    'RL', 
    'RM', 
    'RN', 
    'RO', 
    'RP', 
    'RR', 
    'RS', 
    'RT', 
    'RU', 
    'RV', 
    'RX', 
    'RZ'
}

2、修改GPT_SoVITS/configs/s1longer-v2.yaml文件中phoneme_vocab_size = 753

如果您需要其他检查点模型或代码、训练步骤等信息,请联系我的电子邮件:[email protected]

MIT License


license: mit

Sources

1 source
Hugging FacePrincipalVersion 252d7435ba41a60775cb5f8abacc400094b424b8
huggingface.co/faceNony/GPT-SoVITS-Russian/tree/252d7435ba41a60775cb5f8abacc400094b424b8

Vérifié 19 oct.

Download files

Artefacts du modèle

4 artefacts

ru-base_e10_s123570.pth

pth · 165 MB · SHA-256 4f8d0826e6ac…764f · Hugging Face

Download file

ru-base-e20.ckpt

ckpt · 148 MB · SHA-256 f8a3e96f69c9…ca7d · Hugging Face

Download file

s1v3-ru.ckpt

ckpt · 149 MB · SHA-256 31268391fb4f…46f0 · Hugging Face

Download file

s2Gv2ProPlus-rus.pth

pth · 191 MB · SHA-256 a9707fb875c9…b34f · Hugging Face

Download file

Extraits de sources

2 extraits

--- license: mit language: - ru - zh base_model: - lj1995/GPT-SoVITS pipeline_tag: text-to-speech tags: - GPT-SoVITS - Russian --- # 基于GPT-SoVITS微操后训练的俄语-中文模型 模型基于[GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS/wiki/%E8%AE%AD%E7%BB%83%E6%96%B0%E8%AF%AD%E8%A8%80(how-to-train-the-models-with-other-languages))对底模微操后使用288小时俄语和10小时汉语数据集训练而成。 GPT模型训练50个epoch,Sovits模型训练12个epoch。简单手动试听后,最佳组合(俄语->俄语、汉语->汉语、汉语->俄语)(俄语->汉语有问题,都是空白音频)是gpt-20epoch、sovits-10epoch ## 文件说明 s2Gv2ProPlus-rus.pth: 由 GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus.pth 微操而来,放到 GPT_SoVITS/pretrained_models/v2Pro/ 下 s1v3-ru.ckpt: 由 GPT_SoVITS/pretrained_models/s1v3.ckpt 微操而来,放到 GPT_SoVITS/pretrained_models/ 下 (记得将代码中使用原始两个底模的地方全局替换为新的两个底模) ru-base_e10_s123570.pth : 放到 GPT_weights_v2ProPlus 下 ru-base-e20.ckpt : 放到 SoVITS_weights_v2ProPlus 下 微操脚本: ``` import torch ## 迁移gpt模型的embedding层,插入两个新的token gpt_dict = torch.load(r"GPT_SoVITS/pretrained_models/s1v3.ckpt",map_location=torch.device('cpu')) gpt_shape = gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"].shape print(gpt_shape) # 一共512列,embedding_dim=512 first_part = gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"][:,:] new_weight = torch.cat([first_part, torch.randn(21, 512)],dim=0) # 由于embedding_dim=512,len(rus_symbols)=21,所以需要增加21列 gpt_dict["weight"]["model.ar_text_embedding.word_embeddings.weight"] = new_weight gpt_dict["config"]["model"]["phoneme_vocab_size"]=753 # 原本是732,增加21个符号 torch.save(gpt_dict,r"GPT_SoVITS/pretrained_models/s1v3-ru.ckpt") # 保存新的模型 import torch sovits_dict = torch.load(r"GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus.pth",map_location=torch.device('cpu')) # 载入SoVITS模型 sovits_shape = sovits_dict["weight"]["enc_p.text_embedding.weight"].shape print(sovits_shape) first_part = sovits_dict["weight"]["enc_p.text_embedding.weight"][:,:] new_weight = torch.cat([first_part,torch.randn(21,192)],dim=0) # 由于embedding_dim=192,len(rus_symbols)=21,所以需要增加21列 sovits_dict["weight"]["enc_p.text_embedding.weight"] = new_weight torch.save(sovits_dict,r"GPT_SoVITS/pretrained_models/v2Pro/s2Gv2ProPlus-rus.pth") # 保存新的模型 print("success!") ``` ## 使用方式 1、自备文本前端代码 ``` # -*- coding: utf-8 -*- # 实现俄语的g2p import epitran epi = epitran.Epitran('rus-Cyrl',ligatures=True,tones=True) def g2p(text): phones = epi.xsampa_list(text,normpunc=True) phones = ["R"+post_replace_rus(i) for i in phones if...

Source context: 0 downloads · 0 likes · Pipeline text-to-speech · Repo faceNony/GPT-SoVITS-Russian