找到一个开源的工具ChatTTS Voice Cloning
通过提交自已录的声音就可以将文字换成你想要的声音
下载这个文件,上面那个文件不行,原因还不清楚
CHAT TTS开源代码库 github.com/2noise/Chat…
自已的代码如下:
import ChatTTS
import torch
import torchaudio
###################################
# Sample a speaker from Gaussian.
#
chat = ChatTTS.Chat()
chat.load(compile=False)
rand_spk = torch.load(f'./asset/pt/forge_4.pt')
params_infer_code = ChatTTS.Chat.InferCodeParams(
spk_emb=rand_spk,
temperature=.1
, # using custom temperature
top_P=0.7, # top P decode
top_K=20, # top K decode
)
###################################
# For sentence level manual control.
# use oral_(0-9), laugh_(0-2), break_(0-7)
# to generate special token in text to synthesize.
params_refine_text = ChatTTS.Chat.RefineTextParams(
prompt='[oral_2][laugh_0][break_6]',
)
texts = [
"那部分代码是我自己写的,是不是警告我不清楚,用你在这里指指点点,笑死我了,你给我一分钱了吗,我要听你在这里像个甲方一样指手画脚。发言之前请先确认自己的话是纯粹发泄情绪还是真的为这个项目好",
"如果你选择对我,对这个项目发泄情绪,我也只好也对你做同样的事了。告诉您一个小秘密,不懂代码可以不说话,您这样浅薄的发言,唯一的作用就是暴露您半桶水三脚猫般的知识水平,让懂代码的人看你在这里胡搅蛮缠无理取闹的笑话而已。如果你但凡有点良心,自己悄悄删掉这句话,我不会再追究,要是你还像这样子扰乱正常的讨论秩序,就不要怪我们不客气了"]
wavs = chat.infer(
texts,
params_refine_text=params_refine_text,
params_infer_code=params_infer_code,
)
for i in range(len(wavs)):
torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)
# unsqueeze(0)没有的话就会出错,这个要关注