谢谢你的帮助。
我正在学习张量流的tuturial(语音命令),在我下载代码和数据集后,我运行程序,经过几个步骤的训练后,出现了一个错误。
InvalidArgumentError (see above for traceback): Data too short when trying to read string
[[Node: DecodeWav = DecodeWav[desired_channels=1, desired_samples=16000, _device="/job:localhost/replica:0/task:0/device:CPU:0"](ReadFile)]]
[[Node: DecodeWav/_21 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, tensor_name="edge_4_DecodeWav", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"]()]]
似乎解码方法有些不对劲,但我无法弄清楚出了什么问题。我从github下载后没有更改任何代码。
你能帮助我吗。感谢。
答案 0 :(得分:0)
问题解决了。 问题是数据集中的一个语音是空的(0 kb),并且程序使用随机来获取训练数据,如果随机到这个空的训练语音,它就会出现问题中的错误。
答案 1 :(得分:0)
就我而言,我没有任何空文件。讨论底部的功能对我有帮助:
https://github.com/mozilla/DeepSpeech/issues/2048
import os
import wave
import pandas
import sys
def compare_header_and_size(wav_filename):
with wave.open(wav_filename, 'r') as fin:
header_fsize = (fin.getnframes() * fin.getnchannels() * fin.getsampwidth()) + 44
file_fsize = os.path.getsize(wav_filename)
return header_fsize != file_fsize
df = pandas.read_csv(sys.argv[1])
invalid = df.apply(lambda x: compare_header_and_size(x['wav_filename']), axis=1)
print('The following files are corrupted:')
print(df[invalid].values)
在比较所介绍功能中的两种测量方法时,我发现音频文件的长度不同。
原因是我将元数据添加到了wav文件,同时将它们保存在Adobe Audition中。那是一个错误