Closed gushuaialan1 closed 4 months ago
测试了下功能正常。如果有预期之外的错误,麻烦提供复现操作。
测试了下功能正常。如果有预期之外的错误,麻烦提供复现操作。
当model里面有多个存在多个模型时,ssml里面的参数voice id 貌似跟speak json返回的id不匹配
这是speak json返回的数据 {"BERT-VITS2":[{"id":0,"lang":["zh"],"name":"GU"},{"id":1,"lang":["ja"],"name":"HG2"},{"id":2,"lang":["zh"],"name":"lkw"},{"id":3,"lang":["zh"],"name":"llpb"},{"id":4,"lang":["zh"],"name":"pcbd"}],"GPT-SOVITS":[{"id":0,"lang":["zh","ja","en"],"name":"lkwgpt"}],"HUBERT-VITS":[],"VITS":[],"W2V2-VITS":[]}
我这边写的是id=2 返回的还是id=0 name:GU的声音
ssml_text = """
<speak lang="zh" format="mp3" length="1.2">
<voice id="2" model_type="BERT-VITS2">你好我是中国人。</voice>
</speak>
"""
ssml_text = """ <speak lang="zh" format="mp3" length="1.2"> <voice id="2" model_type="BERT-VITS2">你好我是中国人。</voice> </speak> """
我使用同样的smml,在切换不同的id上表现正常,说话人能够正常切换。是使用的最新版本的代码吗?
ssml_text = """ <speak lang="zh" format="mp3" length="1.2"> <voice id="2" model_type="BERT-VITS2">你好我是中国人。</voice> </speak> """
我使用同样的smml,在切换不同的id上表现正常,说话人能够正常切换。是使用的最新版本的代码吗?
反复测试,还是不正常,比如以下的例子 id0-2是一个模型里面的3个声音,在这3个声音中切换是正常的,到了id=3就不对了(id=3是第二个模型)此时返回的就是id=0的声音 {"BERT-VITS2":[{"id":0,"lang":["zh"],"name":"nan1"},{"id":1,"lang":["zh"],"name":"yuebao"},{"id":2,"lang":["zh"],"name":"qiqi"},{"id":3,"lang":["zh"],"name":"yh2"}],"GPT-SOVITS":[],"HUBERT-VITS":[],"VITS":[],"W2V2-VITS":[]}
ssml如下:
ssml_text = """
<speak lang="zh" format="mp3" length="1.2">
<voice id="0" model_type="BERT-VITS2" preset="default">你好,我是中国人。</voice>
<voice id="1" model_type="BERT-VITS2" preset="default">你好,我是中国人。</voice>
<voice id="2" model_type="BERT-VITS2" preset="default">你好,我是中国人。</voice>
<voice id="3" model_type="BERT-VITS2" preset="default">你好,我是中国人。</voice>
</speak>
"""
ssml_text = """ <speak lang="zh" format="mp3" length="1.2"> <voice id="2" model_type="BERT-VITS2">你好我是中国人。</voice> </speak> """
我使用同样的smml,在切换不同的id上表现正常,说话人能够正常切换。是使用的最新版本的代码吗?
现在的情况是载入 A:载入1个含有3个声音的模型 外加一个其他模型 能在第一个模型内的3个声音切换 id定义到另外一个模型的时候返回为第一模型内的第一个声音
B:载入4个只有一个声音的模型,id定义为0123 都是返回第一个模型的声音
查看了TTSManager.py的相关代码,是否跟 model_type = element.attrib.get("model_type", root.attrib.get("model_type", list( self.model_manager.available_tts_model)[0])) 这边的定义有关
def parse_ssml(self, ssml):
root = ET.fromstring(ssml)
format = root.attrib.get("format", "wav")
voice_tasks = []
brk_count = 0
strength_dict = {"x-weak": 0.25, "weak": 0.5, "Medium": 0.75, "Strong": 1, "x-strong": 1.25}
params = {ModelType.VITS.value: config.vits_config.asdict(),
ModelType.W2V2_VITS.value: config.w2v2_vits_config.asdict(),
ModelType.HUBERT_VITS.value: config.hubert_vits_config.asdict(),
ModelType.BERT_VITS2.value: config.bert_vits2_config.asdict(),
ModelType.GPT_SOVITS.value: config.gpt_sovits_config.asdict(),
}
for element in root.iter():
if element.tag == "voice":
# 不填写则默认从已加载的模型中选择
model_type = element.attrib.get("model_type", root.attrib.get("model_type", list(
self.model_manager.available_tts_model)[0]))
if model_type is None:
raise ValueError(f"None model_type was specified")
else:
model_type = model_type.upper()
非常抱歉,具体表现在不同模型的id切换异常,已找到问题https://github.com/Artrajz/vits-simple-api/commit/a6c444cbac1bc6472f3bb7538eaf6446cffdad42 可以拉代码试试看
应该是之前修改推理函数时,没有把原来获取id的代码删除,删除这一行就好了
task["id"] = self.get_real_id(model_type, task.get("id"))
非常抱歉,具体表现在不同模型的id切换异常,已找到问题a6c444c 可以拉代码试试看
应该是之前修改推理函数时,没有把原来获取id的代码删除,删除这一行就好了
task["id"] = self.get_real_id(model_type, task.get("id"))
测试正常了,感谢大佬
运行环境
问题描述
用ssml合成语音时,voice id 改动没用 好像并不和get请求中的id列表对应 ssml_text = """
"""
问题复现步骤