2noise / ChatTTS

A generative speech model for daily dialogue.
https://2noise.com
GNU Affero General Public License v3.0
30.59k stars 3.32k forks source link

报错AttributeError: 'Tensor' object has no attribute 'encode' #601

Closed Fernando-Zzs closed 1 month ago

Fernando-Zzs commented 1 month ago

相关环境信息: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)

jianchang512 commented 1 month ago

是不是使用的从其他项目下载的pt文件? 已不可用,需要转码。

fumiama commented 1 month ago

无法复现。请确保给出的代码是出错的代码。

yxygg commented 1 month ago

是不是使用的从其他项目下载的pt文件? 已不可用,需要转码。

请问要如何进行转码?有没有一个简单的代码示例?

# 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)

以上代码复现了错误

fumiama commented 1 month ago

最新代码请使用chat.tokenizer._encode_spk_emb转码。较老的代码可以使用chat._encode_spk_emb

wangaolin1 commented 1 month ago

最新代码请使用chat.tokenizer._encode_spk_emb转码。较老的代码可以使用chat._encode_spk_emb I tried this way and fixed it,

Yaqing2023 commented 1 week ago

我有Version: 0.1.1, 当我用 spk = chat.tokenizer._encode_spk_emb 或 chat._encode_spk_emb, 我都得到

object has no attribute '_encode_spk_emb' 请大神赐教