Мне сказали, что вы берете среднее значение по характеристикам (не кадрам) векторов MFCC, а также делите на стандартное отклонение.
Итак, с точки зрения PyTorch, я бы сделал:
Код: Выделить всё
import torch
mfccs = torch.tensor([[1.0, 2.0], [2.0, 2.0], [1.0, 1.0]])
# Assume 3 frames, 2 features
mean = torch.mean(mfccs, dim=0)
std = torch.std(mfccs, dim=0)
cmvn = (mfccs - mean) / std
# [[-0.5774, 0.5774],
# [ 1.1547, 0.5774],
# [-0.5774, -1.1547]]
Код: Выделить всё
import speechpy
res = speechpy.processing.cmvn(vec=mfccs.numpy(),variance_normalization=True)
# [[-0.7071069, 0.7071068],
# [ 1.4142134, 0.7071068],
# [-0.7071069, -1.4142134]]
Ссылка:
https://github.com/ astorfi/speechpy/blob/master/speechpy/processing.py#L239
Код: Выделить всё
eps = 2**-30
rows, cols = vec.shape
# Mean calculation
norm = np.mean(vec, axis=0)
norm_vec = np.tile(norm, (rows, 1))
# Mean subtraction
mean_subtracted = vec - norm_vec
# Variance normalization
if variance_normalization:
stdev = np.std(mean_subtracted, axis=0)
stdev_vec = np.tile(stdev, (rows, 1))
output = mean_subtracted / (stdev_vec + eps)
Может кто-нибудь объяснить?
Кто-нибудь может объяснить?
Может кто-нибудь объяснить? п>
Подробнее здесь: https://stackoverflow.com/questions/792 ... ssing-cmvn
Мобильная версия