我目前正在研究一个语音分类问题。我有1000个音频文件在每个类和有7个这样的类。我需要增加数据以获得更好的准确性。我正在使用librosa库进行数据扩充。对于每个音频文件,我使用下面的代码。你知道吗
fbank_train = []
labels_train = []
for wav in x_train_one[:len(x_train_one)]:
samples, sample_rate = librosa.load(wav, sr=16000)
if (len(samples)) == 16000:
label = wav.split('/')[6]
fbank = logfbank(samples, sample_rate, nfilt=16)
fbank_train.append(fbank)
labels_train.append(label)
y_shifted = librosa.effects.pitch_shift(samples, sample_rate, n_steps=4, bins_per_octave=24)
fbank_y_shifted = logfbank(y_shifted, sample_rate, nfilt=16)
fbank_train.append(fbank_y_shifted)
labels_train.append(label)
change_speed = librosa.effects.time_stretch(samples, rate=0.75)
if(len(change_speed)>=16000):
change_speed = change_speed[:16000]
fbank_change_speed = logfbank(change_speed, sample_rate, nfilt=16)
fbank_train.append(fbank_change_speed)
labels_train.append(label)
change_speedp = librosa.effects.time_stretch(samples, rate=1.25)
if(len(change_speedp)<=16000):
change_speedp = np.pad(change_speedp, (0, max(0, 16000 - len(change_speedp))), "constant")
fbank_change_speedp = logfbank(change_speedp, sample_rate, nfilt=16)
fbank_train.append(fbank_change_speedp)
labels_train.append(label)
也就是说,我正在增强每个音频文件(音调和时间偏移)。我想知道,这是扩充训练数据集的正确方法吗? 如果没有,需要增加的音频文件的比例是多少?你知道吗
执行增强的最常见方法是对整个数据集进行增强,对于每个要增强或不增强的样本,随机概率。你知道吗
同样在大多数情况下,扩充是在运行时执行的。你知道吗
例如,案例的伪代码可能如下所示:
这意味着每幅图像有25%的几率根本没有被放大,25%的几率只有时间偏移,25%的几率只有音调偏移,25%的几率同时有时间和音调偏移。你知道吗
在下一个时代,同样的图像会再次通过上述策略得到增强。如果您通过多个时间段训练模型,则每个图像将通过每个增强组合(很有可能),因此模型将从所有增强组合中学习。你知道吗
另外,如果每个移位都是随机进行的,即使一个样本通过同一个增强器两次,也不会产生相同的扰动样本。你知道吗
在运行时增强映像而不是事先执行完全增强的好处是,如果您想要相同的结果,则需要创建多个新数据集(即,几个时移数据集、基音偏移数据集以及两者的组合),并在组合的大数据集上训练模型。你知道吗
相关问题 更多 >
编程相关推荐