add InstructNode support

This commit is contained in:
SpenserCai
2024-10-04 21:15:11 +08:00
parent 072e584d18
commit aed691ab4e
4 changed files with 50 additions and 6 deletions
+3 -2
View File
@@ -3,7 +3,7 @@
* @Date: 2024-10-04 11:28:28
* @version:
* @LastEditors: SpenserCai
* @LastEditTime: 2024-10-04 20:48:17
* @LastEditTime: 2024-10-04 21:14:03
* @Description: file content
-->
# ComfyUI-FunAudioLLM
@@ -12,7 +12,8 @@ Comfyui custom node for [FunAudioLLM](https://funaudiollm.github.io/) include [C
## Features
### CosyVoice
- Support SFT,Zero-shot,Cross-lingual
- CosyVoice Version: 2024-10-04
- Support SFT,Zero-shot,Cross-lingual,Instruct
- Support CosyVoice-300M-25Hz in zero-shot and cross-lingual
- Support SFT's 25Hz(unoffical)
- <details>
+5 -1
View File
@@ -3,7 +3,7 @@ Author: SpenserCai
Date: 2024-10-04 12:14:22
version:
LastEditors: SpenserCai
LastEditTime: 2024-10-04 20:14:52
LastEditTime: 2024-10-04 21:12:47
Description: file content
'''
from .nodes.cosyvoice_nodes import *
@@ -22,6 +22,10 @@ NODE_CONFIG = {
"class": CosyVoiceCrossLingualNode,
"name": "CosyVoice 跨语言克隆"
},
"CosyVoiceInstructNode": {
"class": CosyVoiceInstructNode,
"name": "CosyVoice 自然语言控制"
},
"CosyVoiceSaveSpeakerModelNode": {
"class": CosyVoiceSaveSpeakerModelNode,
"name": "CosyVoice 保存说话人模型"
+8 -1
View File
@@ -3,7 +3,7 @@ Author: SpenserCai
Date: 2024-10-04 13:54:01
version:
LastEditors: SpenserCai
LastEditTime: 2024-10-04 18:42:14
LastEditTime: 2024-10-04 21:10:55
Description: file content
'''
import modelscope
@@ -34,5 +34,12 @@ def download_cosyvoice_300m_sft(is_25hz=False):
snapshot_download(model_id=model_id, local_dir=model_dir)
return model_name, model_dir
def download_cosyvoice_300m_instruct():
model_name = "CosyVoice-300M-Instruct"
model_id = "iic/CosyVoice-300M-Instruct"
model_dir = os.path.join(base_cosyvoice_model_path, model_name)
snapshot_download(model_id=model_id, local_dir=model_dir)
return model_name, model_dir
def get_speaker_default_path():
return os.path.join(base_cosyvoice_model_path, "Speaker")
+34 -2
View File
@@ -3,7 +3,7 @@ Author: SpenserCai
Date: 2024-10-04 12:13:28
version:
LastEditors: SpenserCai
LastEditTime: 2024-10-04 20:13:31
LastEditTime: 2024-10-04 21:11:53
Description: file content
'''
import os
@@ -12,7 +12,7 @@ import random
import numpy as np
import torch
from funaudio_utils.pre import FunAudioLLMTool
from funaudio_utils.download_models import download_cosyvoice_300m, get_speaker_default_path, download_cosyvoice_300m_sft
from funaudio_utils.download_models import download_cosyvoice_300m, get_speaker_default_path, download_cosyvoice_300m_sft,download_cosyvoice_300m_instruct
from funaudio_utils.cosyvoice_plus import CosyVoicePlus
from cosyvoice.utils.common import set_all_random_seed
@@ -158,6 +158,38 @@ class CosyVoiceCrossLingualNode:
output = cosyvoice.inference_cross_lingual(tts_text, prompt_speech_16k, False, speed)
return return_audio(output,t0,None)
class CosyVoiceInstructNode:
sft_spk_list = ['中文女', '中文男', '日语男', '粤语女', '英文女', '英文男', '韩语女']
@classmethod
def INPUT_TYPES(s):
return {
"required":{
"tts_text":("STRING",),
"speaker_name":(s.sft_spk_list,{
"default":"中文女"
}),
"instruct_text":("STRING",),
"speed":("FLOAT",{
"default": 1.0
}),
"seed":("INT",{
"default": 42
}),
}
}
CATEGORY = CATEGORY_NAME
RETURN_TYPES = ("AUDIO",)
FUNCTION="generate"
def generate(self, tts_text, speaker_name, instruct_text, speed, seed, use_25hz):
t0 = ttime()
_, model_dir = download_cosyvoice_300m_instruct()
cosyvoice = CosyVoicePlus(model_dir)
set_all_random_seed(seed)
output = cosyvoice.inference_instruct(tts_text, speaker_name, instruct_text, False, speed)
return return_audio(output,t0,None)
class CosyVoiceLoadSpeakerModelNode:
@classmethod
def INPUT_TYPES(s):