GPT-SoVITS
GPT-SoVITS copied to clipboard
如果已经使用自行训练的模型, 为什么还需要参考音频
如果已经使用自行训练的模型, 为什么还需要参考音频, 能否去掉参考音频
如果对于同一个角色要多次语音输出。
目前api 需要每一次都设定参考音频,
能不能把每次计算参考音频步骤省略掉, 并给出一个示例
参考音频可以在api.py启动时指定,实际运行的时候,如果没有切换参考音频的话是读取缓存的,不会重复计算
多谢,
考虑galgame 的场景
可能有多个音色对话
这种情况下,如何效率最高?
开多个实例,多个端口, 每个端口一个音色吗?
多谢, 考虑galgame 的场景 可能有多个音色对话 这种情况下,如何效率最高? 开多个实例,多个端口, 每个端口一个音色吗?
改造API,对模型和参考音频存储到一个“人物”的结构中,然后再存到“人物”的列表里,增加一个“人物”参数来传,可能比较方便你使用
class Speaker:
def __init__(self, name, gpt, sovits, phones = None, bert = None, prompt = None):
self.name = name
self.sovits = sovits
self.gpt = gpt
self.phones = phones
self.bert = bert
self.prompt = prompt
speaker_list = {}
def get_tts_wav(ref_wav_path, prompt_text, prompt_language, text, text_language, top_k= 20, top_p = 0.6, temperature = 0.6, speed = 1, spk = "default"):
infer_sovits = speaker_list[spk].sovits
vq_model = infer_sovits.vq_model
hps = infer_sovits.hps
infer_gpt = speaker_list[spk].gpt
t2s_model = infer_gpt.t2s_model
max_sec = infer_gpt.max_sec
大概就是这样,需要将我列出来的参数传入结构体和列表管理切换,原版的API是通过全局变量实现
这个需求还挺常见的,能不能直接写到你的API.py代码中?
另外我还看到一个项目, 根据reference audio 控制情感
这种情况下又如何cache , 如何设计数据结构呢。
能不能直接给出代码
https://github.com/2DIPW/gpt_sovits_infer_with_emotion
ref_dict:
一般:
Path: "ref_audio/normal.wav"
Text: "既然罗莎莉亚说足迹上有元素力,用元素视野应该能很清楚地看到吧。"
惊讶:
Path: "ref_audio/surprised.wav"
Text: "这个声音是…一斗!你怎么在这里啊?"
高兴:
Path: "ref_audio/excited.wav"
Text: "好耶!《特尔克西的奇幻历险》出发咯!"
悲伤:
Path: "ref_audio/sad.wav"
Text: "呜…别这么伤心…我们会找到他们的!往好的一面想吧!"
喜好:
Path: "ref_audio/like.wav"
Text: "豪华礼物!听、听上去就很值钱!"
厌恶:
Path: "ref_audio/dislike.wav"
Text: "说了半天,这不还是面子的问题吗!"
愤怒:
Path: "ref_audio/angry.wav"
Text: "呜哇好生气啊!不要把我跟一斗相提并论!"
恐惧:
Path: "ref_audio/fear.wav"
Text: "我还以为见不到你了!你突然就消失了呀!"
这个实现是否cache的效率不高
其实这里分为多个层次
- 角色音色 ckpt pth
- 角色语种 (en/zh/jp) bert related ??
- 角色情绪 reference wav
这些都是galgame 中必须的, 能否考虑优化一下api.py 支持上诉需求 每一种组合都有一个cache ,以支持快速切换
自己改代码吧
有同样的问题,为什么需要参考音频,zero-shot?
大概就是这样,需要将我列出来的参数传入结构体和列表管理切换,原版的API是通过全局变量实现
我想來實現這個功能,有幾個問題想請教
Speaker的,phones,bert,prompt具體是什麼用的呢?- 要打包
ref_wav_path,prompt_text,prompt_language,inp_refs,這幾個參數轉成torch.tensor放到GPU(如果有的話),放進Speaker中,這樣思路對嗎?
我想來實現這個功能,有幾個問題想請教
Speaker的,phones,bert,prompt具體是什麼用的呢?- 要打包
ref_wav_path,prompt_text,prompt_language,inp_refs,這幾個參數轉成torch.tensor放到GPU(如果有的話),放進Speaker中,這樣思路對嗎?
api.py中已包含了相关基础代码,可以查看下。仅需要自己添加speaker信息的自定义更新
api.py中已包含了相关基础代码,可以查看下。仅需要自己添加speaker信息的自定义更新
感謝回覆,確實已參考目前的api.py,已包含speaker參數,但參考音頻不包含在Speaker中且仍然是在get_tts_wav()才進行加載和轉換,
所以才產生前面的問題,且Speaker的 phones, bert, prompt似乎未被用過,所以想請教一下用途
感謝回覆,確實已參考目前的api.py,已包含speaker參數,但參考音頻的仍到
get_tts_wav()才進行加載和轉換,所以才產生前面的問題,且Speaker的
phones,bert,prompt似乎未被用過,所以想請教一下用途
Speaker的 phones, bert, prompt在现有代码里并未启用,要启用的话可以在get_tts_wav()中处理参考音频的时候检测Speaker是否已经包含 phones, bert, prompt,是则跳过不转换。
目前Speaker在api里的开启的用途只是保证多人使用时切换全局变量不会导致推理一半的信息出错,并保留了拓展性给大家自己进行模型切换