项目需要音色克隆,修改webui.py直接运行。
在主函数部分修改如下:
if __name__ == "__main__":
args = parse_args()
args.precision = torch.half if args.half else torch.bfloat16
logger.info("Loading Llama model...")
llama_queue = launch_thread_safe_queue(
config_name=args.llama_config_name,
checkpoint_path=args.llama_checkpoint_path,
device=args.device,
precision=args.precision,
max_length=args.max_length,
compile=args.compile,
)
llama_tokenizer = AutoTokenizer.from_pretrained(args.tokenizer)
logger.info("Llama model loaded, loading VQ-GAN model...")
decoder_model = load_decoder_model(
config_name=args.decoder_config_name,
checkpoint_path=args.decoder_checkpoint_path,
device=args.device,
)
logger.info("Decoder model loaded, warming up...")
# Dry run to check if the model is loaded correctly and avoid the first-time latency
list(
inference(
text="李白字太白,号青莲居士,是中国唐代最伟大的诗人之一,被誉为“诗仙”。",
enable_reference_audio= True,
reference_audio="/root/autodl-tmp/fishspeech_v10/clipped_audio.wav",
reference_text="",
max_new_tokens=1024,
chunk_length=150,
top_p=0.7,
repetition_penalty=1.5,
temperature=0.7,
speaker=None,
)
)
# logger.info("Warming up done, launching the web UI...")
# app = build_app()
# app.launch(show_api=True)
主要是注释掉build_app()
如果需要换decoder模型记得修改权重路径,这里我用的就是vqgan
def parse_args():
parser = ArgumentParser()
parser.add_argument(
"--llama-checkpoint-path",
type=Path,
default="checkpoints/text2semantic-sft-large-v1.1-4k.pth",
)
parser.add_argument(
"--llama-config-name", type=str, default="dual_ar_2_codebook_large"
)
parser.add_argument(
"--decoder-checkpoint-path",
type=Path,
default="checkpoints/vq-gan-group-fsq-2x1024.pth",
)
parser.add_argument("--decoder-config-name", type=str, default="vqgan_pretrain")
parser.add_argument("--tokenizer", type=str, default="fishaudio/fish-speech-1")
parser.add_argument("--device", type=str, default="cuda")
parser.add_argument("--half", action="store_true")
parser.add_argument("--max-length", type=int, default=2048)
parser.add_argument("--compile", action="store_true")
parser.add_argument("--max-gradio-length", type=int, default=0)
return parser.parse_args()
如果需要修改为最新的vit只需要修改上述代码的如下部分:
parser.add_argument(
"--decoder-checkpoint-path",
type=Path,
default="checkpoints/vits_decoder_v1.1.ckpt",
)
以及
parser.add_argument("--decoder-config-name", type=str, default="vits_decoder_pretrain")
上述两个修改分别对应权重和配置文件。
另外发现如果不训练直接推理使用vit,声音有点二次元的味道(目前我复现感觉是这样),并且有时候会出现女生变男生(可能是参数没调好?),感觉还是vqgan更接近于正常人的声音,我猜测是训练的数据集使用了大量的虚拟人物的声音(原神什么的叭)。