相关环境信息:chattts版本0.1.1 torch版本2.3.1 复现步骤: rand_spk = chat.sample_random_speaker() params_infer_code = ChatTTS.Chat.InferCodeParams( spk_emb = rand_spk, # add sampled speaker temperature = .3, # using custom temperature top_P = 0.7, # top P decode top_K = 20, # top K decode ) params_refine_text = ChatTTS.Chat.RefineTextParams( prompt='[oral_2][laugh_0][break_6]', ) wav = chat.infer('今天天气真不错', params_refine_text=params_refine_text, params_infer_code=params_infer_code)
Q
[2noise/ChatTTS]报错AttributeError: 'Tensor' object has no attribute 'encode'
1
A
回答
8
是不是使用的从其他项目下载的pt文件? 已不可用,需要转码。
5
无法复现。请确保给出的代码是出错的代码。
4
请问要如何进行转码?有没有一个简单的代码示例?
# import ChatTTS
# import torch
# import torchaudio
import soundfile
# chat = ChatTTS.Chat()
# chat.load(compile=False) # Set to True for better performance
# texts = ["你好",""]
# wavs = chat.infer(texts)
# print(len(wavs[0]))
# soundfile.write("out.wav", wavs[0], 24000)
import ChatTTS
import pickle
import torch
import base64
# 初始化模型
chat = ChatTTS.Chat()
chat.load(compile=False)
# 随机生成音色向量
# random_speaker_emb = chat.sample_random_speaker()
# with open('random_speaker.pkl', 'wb') as f:
# pickle.dump(random_speaker_emb, f)
# with open('男1.pkl', 'rb') as f:
# loaded_speaker_emb = pickle.load(f)
loaded_speaker_emb = torch.load(f'知更鸟.pt')
# 指定音色参数,使用随机生成的音色向量
params_infer_code = ChatTTS.Chat.InferCodeParams(
spk_emb = loaded_speaker_emb, # 使用随机生成的音色向量
)
# 输入文本
texts = ["你好,ChatTTS!这是一个演示,使用了随机音色"]
# 生成语音
wavs = chat.infer(texts, params_infer_code=params_infer_code)
# 保存音频
for i in range(len(wavs)):
soundfile.write(f"output_{i}.wav", wavs[i], 24000)
以上代码复现了错误
8
最新代码请使用chat.tokenizer._encode_spk_emb
转码。较老的代码可以使用chat._encode_spk_emb
6
最新代码请使用chat.tokenizer._encode_spk_emb转码。较老的代码可以使用chat._encode_spk_emb I tried this way and fixed it,