Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,15 @@ OpenVoiceClone :方便迁移音色,更好地控制角色声音
模型:

下载后放到 ```models/chat_tts```

https://huggingface.co/2Noise/ChatTTS

音色pt文件放到```models/chat_tts_speaker```
音色pt文件从[ChatTTS_Speaker/summary](https://modelscope.cn/studios/ttwwwaa/ChatTTS_Speaker/summary)挑选喜欢的音色,下载后命名保存

[openvoice 模型](https://myshell-public-repo-hosting.s3.amazonaws.com/openvoice/checkpoints_v2_0417.zip)放到```models/open_voice```
![alt text](assets/E7B978795C34.png)

[openvoice 模型](https://hf-mirror.com/myshell-ai/OpenVoiceV2)放到```models/open_voice```
![alt text](assets/89AEC254B3CD.png)

[whisper模型](https://github.com/SYSTRAN/faster-whisper/tree/master)放到```models/whisper/large-v3```

Expand Down
Binary file added assets/88C3E2DF8386.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/89AEC254B3CD.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/E7B978795C34.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
31 changes: 26 additions & 5 deletions nodes/chat_tts.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ def INPUT_TYPES(s):
"random_speaker":("BOOLEAN", {"default": False},), # 是否需要随机发音人
},
"optional":{
"speaker": ("SPEAKER", {"forceInput": True}),
"skip_refine_text":("BOOLEAN", {"default": False},),
}
}
Expand All @@ -180,7 +181,7 @@ def INPUT_TYPES(s):
INPUT_IS_LIST = False
OUTPUT_IS_LIST = (False,) #list 列表 [1,2,3]

def chat_tts_run(self,text,random_speaker,skip_refine_text=False):
def chat_tts_run(self,text,random_speaker,speaker=None,skip_refine_text=False):
# 传入的文本
# print(text)

Expand All @@ -193,8 +194,16 @@ def chat_tts_run(self,text,random_speaker,skip_refine_text=False):
# 动态加载模块
module = importlib.import_module(module_name)

if random_speaker:
self.speaker=None
if speaker == None:
if random_speaker:
self.speaker=None
else:
if isinstance(speaker, dict):
for k,v in speaker.items():
self.speaker=v
break
else:
self.speaker=speaker

text=remove_multiple_asterisks(text)

Expand Down Expand Up @@ -436,13 +445,25 @@ def chat_tts_run(self,text,seed):
for name in self.speaker.keys():
audio_file="chat_tts_"+name+"_"
spk=self.speaker[name]

#geyijun@20241030
text = '你好,欢迎来到mixlab无界社区'
for speech in speech_list:
if name == speech['name']:
text = speech['text']
break
'''
result,rand_spk=module.run(audio_file,
[f'Hello 我是{name},你好,欢迎来到mixlab无界社区'],
spk,
None,None,None,
3)

'''
result,rand_spk=module.run(audio_file,
[f'Hello 我是{name}, {text}'],
spk,
None,None,None,
3)

self.speaker[name]=rand_spk

result={**speech, **result}
Expand Down
1 change: 1 addition & 0 deletions workflow/example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"last_node_id":82,"last_link_id":68,"nodes":[{"id":56,"type":"AudioPlay","pos":{"0":1529.116455078125,"1":-563.0592041015625},"size":{"0":277.20001220703125,"1":280},"flags":{},"order":14,"mode":0,"inputs":[{"name":"audio","type":"AUDIO","link":31}],"outputs":[],"properties":{"Node name for S&R":"AudioPlay"},"widgets_values":[["/api/view?filename=openvoice_00001.wav&type=output&subfolder=&rand=0.5300587993380441",null]]},{"id":57,"type":"OpenVoiceClone","pos":{"0":990.0194091796875,"1":-221.25039672851562},"size":{"0":267,"1":66},"flags":{},"order":11,"mode":0,"inputs":[{"name":"reference_audio","type":"AUDIO","link":44},{"name":"source_audio","type":"AUDIO","link":45},{"name":"whisper","type":"WHISPER","link":null,"shape":7}],"outputs":[{"name":"audio","type":"AUDIO","links":[31],"slot_index":0}],"properties":{"Node name for S&R":"OpenVoiceClone"},"widgets_values":[]},{"id":75,"type":"AudioPlay","pos":{"0":1289.6591796875,"1":-1947.7099609375},"size":{"0":475.7439270019531,"1":305.54229736328125},"flags":{},"order":12,"mode":0,"inputs":[{"name":"audio","type":"AUDIO","link":58}],"outputs":[],"properties":{"Node name for S&R":"AudioPlay"},"widgets_values":[["/api/view?filename=chat_tts_00004.wav&type=output&subfolder=&rand=0.6614098802799471",null]]},{"id":76,"type":"ChatTTS_","pos":{"0":832.6591796875,"1":-1950.7099609375},"size":{"0":400,"1":200},"flags":{},"order":6,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":59,"shape":7}],"outputs":[{"name":"audio","type":"AUDIO","links":[58],"slot_index":0}],"properties":{"Node name for S&R":"ChatTTS_"},"widgets_values":["大家好,欢迎收听本周的《AI新动态》。我是主持人小明,今天我们有两位嘉宾,分别是小李和小王。大家跟听众打个招呼吧!",true,false]},{"id":74,"type":"LoadSpeaker","pos":{"0":465.65924072265625,"1":-1919.7099609375},"size":{"0":315,"1":58},"flags":{},"order":0,"mode":0,"inputs":[],"outputs":[{"name":"speaker","type":"SPEAKER","links":[59],"slot_index":0}],"title":"小明","properties":{"Node name for S&R":"LoadSpeaker"},"widgets_values":["mixlab_tts_小明"]},{"id":55,"type":"AudioPlay","pos":{"0":985.0101318359375,"1":-552.4021606445312},"size":{"0":277.20001220703125,"1":280},"flags":{},"order":10,"mode":0,"inputs":[{"name":"audio","type":"AUDIO","link":27}],"outputs":[],"properties":{"Node name for S&R":"AudioPlay"},"widgets_values":[["/api/view?filename=chat_tts_00005.wav&type=output&subfolder=&rand=0.32393160393186693",null]]},{"id":79,"type":"LoadSpeaker","pos":{"0":404.37884521484375,"1":-1113.452392578125},"size":{"0":315,"1":58},"flags":{},"order":1,"mode":0,"inputs":[],"outputs":[{"name":"speaker","type":"SPEAKER","links":[60],"slot_index":0}],"title":"mixlab","properties":{"Node name for S&R":"LoadSpeaker"},"widgets_values":["seed_2155_restored_emb"]},{"id":80,"type":"LoadSpeaker","pos":{"0":404.37884521484375,"1":-943.452392578125},"size":{"0":315,"1":58},"flags":{},"order":2,"mode":0,"inputs":[],"outputs":[{"name":"speaker","type":"SPEAKER","links":[61],"slot_index":0}],"title":"mixlab","properties":{"Node name for S&R":"LoadSpeaker"},"widgets_values":["seed_709_restored_emb"]},{"id":65,"type":"LoadSpeaker","pos":{"0":404.37884521484375,"1":-1283.452392578125},"size":{"0":315,"1":58},"flags":{},"order":3,"mode":0,"inputs":[],"outputs":[{"name":"speaker","type":"SPEAKER","links":[49],"slot_index":0}],"title":"小明","properties":{"Node name for S&R":"LoadSpeaker"},"widgets_values":["mixlab_tts_小明"]},{"id":69,"type":"RenameSpeaker","pos":{"0":774.3787841796875,"1":-1353.452392578125},"size":{"0":381.6868591308594,"1":138.64312744140625},"flags":{},"order":9,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":49}],"outputs":[{"name":"speaker","type":"SPEAKER","links":[62],"slot_index":0}],"properties":{"Node name for S&R":"RenameSpeaker"},"widgets_values":["小明"]},{"id":71,"type":"AudioPlay","pos":{"0":2035.37890625,"1":-1365.452392578125},"size":{"0":475.7439270019531,"1":305.54229736328125},"flags":{},"order":17,"mode":0,"inputs":[{"name":"audio","type":"AUDIO","link":55}],"outputs":[],"properties":{"Node name for S&R":"AudioPlay"},"widgets_values":[["/api/view?filename=podcast_48ceff46.wav&type=output&subfolder=&rand=0.7704570192566538",null]]},{"id":78,"type":"RenameSpeaker","pos":{"0":774.3787841796875,"1":-923.452392578125},"size":{"0":381.6868591308594,"1":138.64312744140625},"flags":{},"order":8,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":61}],"outputs":[{"name":"speaker","type":"SPEAKER","links":[65],"slot_index":0}],"properties":{"Node name for S&R":"RenameSpeaker"},"widgets_values":["小王"]},{"id":77,"type":"RenameSpeaker","pos":{"0":774.3787841796875,"1":-1143.452392578125},"size":{"0":381.6868591308594,"1":138.64312744140625},"flags":{},"order":7,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":60}],"outputs":[{"name":"speaker","type":"SPEAKER","links":[66],"slot_index":0}],"properties":{"Node name for S&R":"RenameSpeaker"},"widgets_values":["小李"]},{"id":81,"type":"MergeSpeaker","pos":{"0":1231.37890625,"1":-1346.452392578125},"size":{"0":216.59999084472656,"1":46},"flags":{},"order":15,"mode":0,"inputs":[{"name":"speaker1","type":"SPEAKER","link":62},{"name":"speaker2","type":"SPEAKER","link":67}],"outputs":[{"name":"speakers","type":"SPEAKER","links":[68],"slot_index":0}],"title":"小明,小李,小王","properties":{"Node name for S&R":"MergeSpeaker"}},{"id":82,"type":"MergeSpeaker","pos":{"0":1246.37890625,"1":-1113.452392578125},"size":{"0":216.59999084472656,"1":46},"flags":{},"order":13,"mode":0,"inputs":[{"name":"speaker1","type":"SPEAKER","link":66},{"name":"speaker2","type":"SPEAKER","link":65}],"outputs":[{"name":"speakers","type":"SPEAKER","links":[67],"slot_index":0}],"title":"小李,小王","properties":{"Node name for S&R":"MergeSpeaker"}},{"id":66,"type":"MultiPersonPodcast","pos":{"0":1499.37890625,"1":-1359.452392578125},"size":{"0":474.8113098144531,"1":414.337158203125},"flags":{},"order":16,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":68,"shape":7}],"outputs":[{"name":"audio_list","type":"AUDIO","links":null},{"name":"audio","type":"AUDIO","links":[55],"slot_index":1}],"properties":{"Node name for S&R":"MultiPersonPodcast"},"widgets_values":["小明:大家好,欢迎收听本周的《AI新动态》。我是主持人小明,今天我们有两位嘉宾,分别是小李和小王。大家跟听众打个招呼吧!\n小李:大家好,我是小李,很高兴今天能和大家聊聊最新的AI动态。\n小王:大家好,我是小王,也很期待今天的讨论。",0,0,0,0,false,0.5]},{"id":64,"type":"VHS_LoadAudioUpload","pos":{"0":439,"1":-195},"size":{"0":238.595703125,"1":130},"flags":{},"order":4,"mode":0,"inputs":[],"outputs":[{"name":"audio","type":"AUDIO","links":[45],"slot_index":0}],"properties":{"Node name for S&R":"VHS_LoadAudioUpload"},"widgets_values":{"audio":"ttt.mp4","start_time":0,"duration":0,"choose audio to upload":"image"}},{"id":48,"type":"ChatTTS_","pos":{"0":414.01007080078125,"1":-520.4021606445312},"size":{"0":400,"1":200},"flags":{},"order":5,"mode":0,"inputs":[{"name":"speaker","type":"SPEAKER","link":null,"shape":7}],"outputs":[{"name":"audio","type":"AUDIO","links":[27,44],"slot_index":0}],"properties":{"Node name for S&R":"ChatTTS_"},"widgets_values":["大家好,欢迎收听本周的《AI新动态》。我是主持人小明,今天我们有两位嘉宾,分别是小李和小王。大家跟听众打个招呼吧!",true,false]}],"links":[[27,48,0,55,0,"AUDIO"],[31,57,0,56,0,"AUDIO"],[44,48,0,57,0,"AUDIO"],[45,64,0,57,1,"AUDIO"],[49,65,0,69,0,"SPEAKER"],[55,66,1,71,0,"AUDIO"],[58,76,0,75,0,"AUDIO"],[59,74,0,76,0,"SPEAKER"],[60,79,0,77,0,"SPEAKER"],[61,80,0,78,0,"SPEAKER"],[62,69,0,81,0,"SPEAKER"],[65,78,0,82,1,"SPEAKER"],[66,77,0,82,0,"SPEAKER"],[67,82,0,81,1,"SPEAKER"],[68,81,0,66,0,"SPEAKER"]],"groups":[{"title":"声音克隆","bounding":[389,-637,2191,632],"color":"#3f789e","font_size":24,"flags":{}},{"title":"多人会话","bounding":[381,-1503,2172,764],"color":"#3f789e","font_size":24,"flags":{}},{"title":"单人语音合成","bounding":[388,-2034,2139,447],"color":"#3f789e","font_size":24,"flags":{}}],"config":{},"extra":{"ds":{"scale":0.4177248169415678,"offset":[220.09472933673607,1333.4613635776745]},"workspace_info":{"id":"GRuOqhKfslsLebVba1q2M"}},"version":0.4}