如何修复"类型错误:需要类似字节的对象,而不是tts python代码中的"str"错误



我想自己用卷积网络训练LJSpeech数据。我最近在网上发现了有用的代码。我设置了所有内容,但是就在训练过程之前(例如出现加载框),我遇到了类型错误。我尝试在网上搜索它,但没有出现任何熟悉的东西。所以我想和你分享代码,看看你是否可以做点什么,或者告诉我缺少什么。

这是我工作的地方:

Desktopdc_tts-master

这是我得到的错误:

文件 "C:\Users\mert_\Anaconda3\envs\merts\lib\site-packages\tensorflow\python\ops\script_ops.py",第 207 行,在调用中 ret = func(*args)

文件"C:\用户\mert_\桌面\dc_tts-master\data_load.py",第 107 行,_load_spectrograms mel = "mels/{}".format(fname.replace("wav", "npy"))

类型错误:需要类似字节的对象,而不是"str">

[[{{node PyFunc}}]]

这也可能是代码中与问题相关的部分:

def get_batch():
"""Loads training data and put them in queues"""
with tf.device('/cpu:0'):
# Load data
fpaths, text_lengths, texts = load_data() # list
maxlen, minlen = max(text_lengths), min(text_lengths)
# Calc total batch count
num_batch = len(fpaths) // hp.B
# Create Queues
fpath, text_length, text = tf.train.slice_input_producer([fpaths, text_lengths, texts], shuffle=True)
# Parse
text = tf.decode_raw(text, tf.int32)  # (None,)
if hp.prepro:
def _load_spectrograms(fpath):
fname = os.path.basename(fpath)
mel = "mels/{}".format(fname.replace("wav", "npy"))
mag = "mags/{}".format(fname.replace("wav", "npy"))
return fname, np.load(mel), np.load(mag)
fname, mel, mag = tf.py_func(_load_spectrograms, [fpath], [tf.string, tf.float32, tf.float32])
else:
fname, mel, mag = tf.py_func(load_spectrograms, [fpath], [tf.string, tf.float32, tf.float32])  # (None, n_mels)
# Add shape information
fname.set_shape(())
text.set_shape((None,))
mel.set_shape((None, hp.n_mels))
mag.set_shape((None, hp.n_fft//2+1))
# Batching
_, (texts, mels, mags, fnames) = tf.contrib.training.bucket_by_sequence_length(
input_length=text_length,
tensors=[text, mel, mag, fname],
batch_size=hp.B,
bucket_boundaries=[i for i in range(minlen + 1, maxlen - 1, 20)],
num_threads=8,
capacity=hp.B*4,
dynamic_pad=True)
return texts, mels, mags, fnames, num_batch

所以我不太了解确切的问题,如果您不知道解决方案,但确实对代码中其他地方发生的问题有信心,请告诉我让我分享那部分。

尝试替换

mel = "mels/{}".format(fname.replace("wav", "npy"))
mag = "mags/{}".format(fname.replace("wav", "npy"))

mel = "mels/{}".format(fname.decode("utf-8").replace("wav", "npy"))
mag = "mags/{}".format(fname.decode("utf-8").replace("wav", "npy"))

在第 107 行和第 108 行中。

(https://github.com/Kyubyong/dc_tts/issues/11)

最新更新