Exemplo n.º 1
0
def batch_extract_features(x):
    with tf.device("GPU"):
        signals, rates = x["signal"], x["sample_rate"]
        logmelspecs = logmelspectrograms(signals, rates[0])
        logmelspecs_smn = cmvn(logmelspecs)
        mfccs = tf.signal.mfccs_from_log_mel_spectrograms(logmelspecs)
        mfccs = mfccs[..., 1:21]
        mfccs_cmvn = cmvn(mfccs)
    return dict(x, logmelspec=logmelspecs_smn, mfcc=mfccs_cmvn)
Exemplo n.º 2
0
def convertBrowserFFT(spec, sample_rate, num_mel_bins):
    S = audio.db_to_power(spec)
    # S = tf.math.abs(tf.signal.stft(signals, 400, 160, 512))
    # S = audio.spectrograms(signals, sample_rate)
    S = audio.linear_to_mel(S, sample_rate, num_mel_bins=num_mel_bins, fmax=tf.cast(sample_rate/2, tf.float32))
    S = tf.math.log(1e-6 + S)
    S = cmvn(S, axis=1)
    return S
Exemplo n.º 3
0
def signals2logmel(signals, sample_rate, num_mel_bins):
    signals, sample_rate = signals[:,::3], sample_rate // 3
    flen = audio.ms_to_frames(sample_rate, 25)
    fstep = audio.ms_to_frames(sample_rate, 10)
    S = tf.math.square(tf.math.abs(tf.signal.stft(signals, flen, fstep, fft_length=512)))
    # S = audio.spectrograms(signals, sample_rate)
    S = audio.linear_to_mel(S, sample_rate, num_mel_bins=num_mel_bins, fmax=tf.cast(sample_rate, tf.float32))
    S = tf.math.log(1e-6 + S)
    S = cmvn(S, axis=1)
    return S
Exemplo n.º 4
0
 def test_cmvn(self):
     rank = 3
     for delta_magnitude in range(2, 7):
         for _ in range(200):
             delta = np.random.uniform(1, 10**delta_magnitude)
             x = np.random.uniform(-delta,
                                   delta,
                                   size=np.random.randint(1, 20, size=rank))
             for axis in range(rank):
                 y_m = features.cmvn(x, axis=axis,
                                     normalize_variance=False).numpy()
                 assert not np.isnan(y_m).any()
                 assert y_m.shape == x.shape
                 assert np.abs(y_m.mean(axis=axis)).max() < 1
                 y_mv = features.cmvn(x, axis=axis,
                                      normalize_variance=True).numpy()
                 assert not np.isnan(y_mv).any()
                 assert y_mv.shape == x.shape
                 assert np.abs(y_mv.mean(axis=axis)).max() < 0.1
                 assert y_mv.var(axis=axis).max() < 10