import os
import sys
import multiprocessing as mp
repo_root = os.path.dirname(os.path.abspath(__file__))
pkg_root = repo_root
if os.path.basename(repo_root) == "cosyvoice" and os.path.isfile(os.path.join(repo_root, "__init__.py")):
pkg_root = os.path.dirname(repo_root)
elif not os.path.isdir(os.path.join(pkg_root, "cosyvoice")):
nested_root = os.path.join(repo_root, "CosyVoice")
if os.path.isdir(os.path.join(nested_root, "cosyvoice")):
pkg_root = nested_root
if pkg_root not in sys.path:
sys.path.insert(0, pkg_root)
if mp.get_start_method(allow_none=True) != "spawn":
mp.set_start_method("spawn", force=True)
os.environ.setdefault("VLLM_WORKER_MULTIPROC_METHOD", "spawn")
os.environ["VLLM_USE_V1"] = "1"
import torch
import torch_npu
torch.npu.config.allow_internal_format = False
sys.path.append('third_party/Matcha-TTS')
from cosyvoice.vllm.cosyvoice2 import CosyVoice2ForCausalLM
try:
from vllm import ModelRegistry as _ModelRegistry
except Exception:
try:
from vllm.model_executor.models import ModelRegistry as _ModelRegistry
except Exception:
try:
from vllm.model_executor.model_registry import ModelRegistry as _ModelRegistry
except Exception as exc:
_ModelRegistry = None
raise ImportError(
"Cannot import ModelRegistry from vllm; check vllm version or API change."
) from exc
_ModelRegistry.register_model("CosyVoice2ForCausalLM", CosyVoice2ForCausalLM)
from cosyvoice.cli.cosyvoice import AutoModel
from cosyvoice.utils.common import set_all_random_seed
from tqdm import tqdm
def cosyvoice2_example():
""" CosyVoice2 vllm usage
"""
cosyvoice = AutoModel(model_dir='pretrained_models/CosyVoice2-0.5B', load_jit=True, load_trt=True, load_vllm=True, fp16=True)
for i in tqdm(range(100)):
set_all_random_seed(i)
for _, _ in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', '希望你以后能够做的比我还好呦。', './asset/zero_shot_prompt.wav', stream=False)):
continue
def cosyvoice3_example():
""" CosyVoice3 vllm usage
"""
local_model_path = '/opt/atomgit/Fun-CosyVoice3-0.5B-2512'
print(f"正在从本地目录加载模型: {local_model_path}")
cosyvoice = AutoModel(model_dir=local_model_path, load_trt=True, load_vllm=True, fp16=False)
for i in tqdm(range(100)):
set_all_random_seed(i)
for _, _ in enumerate(cosyvoice.inference_zero_shot('收到好友从远方寄来的生日礼物,那份意外的惊喜与深深的祝福让我心中充满了甜蜜的快乐,笑容如花儿般绽放。', 'You are a helpful assistant.<|endofprompt|>希望你以后能够做的比我还好呦。',
'./asset/zero_shot_prompt.wav', stream=False)):
continue
def main():
cosyvoice3_example()
if __name__ == '__main__':
main()