GPT-SoVITS
GPT-SoVITS copied to clipboard
中英文混合的一个TEST CASE,目前测试有单引号,中文书名号,中括号等可能导致问题
中文的测试用例如下:
1993年,在The Shamen乐队的歌曲《Coming on Strong M-V中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。
日志记录如下:
实际输入的目标文本: 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 实际输入的目标文本(切句后): 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 实际输入的目标文本(每句): 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 [] ['1993年,在', 'The Shamen', '乐队的歌曲《', 'Comin', '‘', 'on Strong', '》', 'MV', '中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作', ' ', '[1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。'] ['zh', 'en', 'zh', 'en', 'zh', 'en', 'zh', 'en', 'zh', 'en', 'zh'] Traceback (most recent call last): File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/routes.py", line 442, in run_predict output = await app.get_blocks().process_api( File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/blocks.py", line 1389, in process_api result = await self.call_function( File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/blocks.py", line 1108, in call_function prediction = await utils.async_iteration(iterator) File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/utils.py", line 346, in async_iteration return await iterator.anext() File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/utils.py", line 339, in anext return await anyio.to_thread.run_sync( File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/anyio/to_thread.py", line 56, in run_sync return await get_async_backend().run_sync_in_worker_thread( File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 2134, in run_sync_in_worker_thread return await future File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/anyio/_backends/_asyncio.py", line 851, in run result = context.run(func, *args) File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/utils.py", line 322, in run_sync_iterator_async return next(iterator) File "/home/dell/miniconda3/envs/vc-server/lib/python3.9/site-packages/gradio/utils.py", line 691, in gen_wrapper yield from f(*args, **kwargs) File "/usr/local/workspaces/voice-change-server/GPT_SoVITS/inference_webui.py", line 336, in get_tts_wav bert2 = nonen_get_bert_inf(text, text_language) File "/usr/local/workspaces/voice-change-server/GPT_SoVITS/inference_webui.py", line 259, in nonen_get_bert_inf bert = get_bert_inf(phones, word2ph, norm_text, lang) File "/usr/local/workspaces/voice-change-server/GPT_SoVITS/inference_webui.py", line 218, in get_bert_inf bert = get_bert_feature(norm_text, word2ph).to(device) File "/usr/local/workspaces/voice-change-server/GPT_SoVITS/inference_webui.py", line 89, in get_bert_feature phone_level_feature = torch.cat(phone_level_feature, dim=0) RuntimeError: torch.cat(): expected a non-empty list of Tensors
无法复现你的问题。
你拷贝的内容是通过测试的,经过我替换修改之后的内容。 你可以用下面这段来测试:
1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。
你拷贝的内容是通过测试的,经过我替换修改之后的内容。 你可以用下面这段来测试:
1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。
实际输入的目标文本: 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 实际输入的目标文本(切句后): 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任 模特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩 》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 实际输入的目标文本(每句): 1993年,在The Shamen乐队的歌曲《Comin‘on Strong》MV中担任舞者。1997年,开始为某服装公司担任模 特。1998年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》 上映。2005年8月3日,主演的动作电影《非常人贩2》上映。 ['1993年,在', 'The Shamen', '乐队的歌曲《', 'Comin‘on Strong》MV', '中担任舞者。1997年,开始为某服装公司担任模特。1998 年8月28日,主演的犯罪喜剧片《两杆大烟枪》上映,这是其电影处女作 [1]。2002年10月11日,主演的动作电影《非常人贩》上映。2005年8月3日,主演的动作电影《非常人贩2》上映。'] ['zh', 'en', 'zh', 'en', 'zh'] [[2, 2, 2, 2, 2, 1, 2], [2, 2, 2, 2, 2], [2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1]]
以上为目前分词器处理的结果,并没有复现你的结果
def splite_en_inf(sentence, language):
pattern = re.compile(r'[a-zA-Z ]+')
textlist = []
langlist = []
pos = 0
for match in pattern.finditer(sentence):
start, end = match.span()
if start > pos:
textlist.append(sentence[pos:start])
langlist.append(language)
textlist.append(sentence[start:end])
langlist.append("en")
pos = end
if pos < len(sentence):
textlist.append(sentence[pos:])
langlist.append(language)
# Merge punctuation into previous word
for i in range(len(textlist)-1, 0, -1):
if re.match(r'^[\W_]+$', textlist[i]):
textlist[i-1] += textlist[i]
del textlist[i]
del langlist[i]
# Merge consecutive words with the same language tag
i = 0
while i < len(langlist) - 1:
if langlist[i] == langlist[i+1]:
textlist[i] += textlist[i+1]
del textlist[i+1]
del langlist[i+1]
else:
i += 1
return textlist, langlist
目前在推理代码中会递归合并孤立的标点,请检查code版本