示例#1
0
def specgrams_to_melspecgrams(magnitude, IF):
    """Converts specgrams to melspecgrams.
    Args:
      specgrams: Tensor of log magnitudes and instantaneous frequencies,
        shape [freq, time].
    Returns:
      melspecgrams: Tensor of log magnitudes and instantaneous frequencies,
        shape [freq, time], mel scaling of frequencies.
    """
    logmag = magnitude.T
    p = IF.T
    mag2 = np.exp(2.0 * logmag)
    mag2 = np.array([mag2])
    phase_angle = np.cumsum(p * np.pi, axis=1)
    phase_angle = np.array([phase_angle])

    l2mel = _linear_to_mel_matrix()
    logmelmag2 = np.log(np.tensordot(mag2,l2mel,axes=1) + 1e-6)
    mel_phase_angle = np.tensordot(phase_angle, l2mel, axes=1)
    mel_p = phase_op.instantaneous_frequency(mel_phase_angle,time_axis=1)
    return logmelmag2[0].T, mel_p[0].T
def melspecgrams_to_specgrams(logmelmag2, mel_p):
    """Converts melspecgrams to specgrams.
    Args:
      melspecgrams: Tensor of log magnitudes and instantaneous frequencies,
        shape [freq, time], mel scaling of frequencies.
    Returns:
      specgrams: Tensor of log magnitudes and instantaneous frequencies,
        shape [freq, time].
    """
    logmelmag2 = logmelmag2.T
    mel_p = mel_p.T
    logmelmag2 = np.array([logmelmag2])
    mel_p = np.array([mel_p])

    mel2l = _mel_to_linear_matrix()
    mag2 = np.tensordot(np.exp(logmelmag2), mel2l, 1)
    logmag = 0.5 * np.log(mag2 + 1e-6)
    mel_phase_angle = np.cumsum(mel_p * np.pi, axis=1)
    phase_angle = np.tensordot(mel_phase_angle, mel2l, 1)
    p = phase_op.instantaneous_frequency(phase_angle, time_axis=1)
    return logmag[0].T, p[0].T
示例#3
0
    sample_mid = (sample_left + sample_right) / 2
    sample_side = (sample_left - sample_right) / 2

    sample_left = sample_mid
    sample_right = sample_side
    spec_left = librosa.stft(sample_left, n_fft=2048, hop_length=512)
    spec_right = librosa.stft(sample_right, n_fft=2048, hop_length=512)
    #     print(spec_left[100])
    """ log10 말고 log로 처리"""
    magnitude_left = np.log(np.abs(spec_left) + 1.0e-6)[:1024]
    magnitude_right = np.log(np.abs(spec_right) + 1.0e-6)[:1024]

    angle_left = np.angle(spec_left)
    angle_right = np.angle(spec_right)

    IF_left = phase_operation.instantaneous_frequency(angle_left,
                                                      time_axis=1)[:1024]
    IF_right = phase_operation.instantaneous_frequency(angle_right,
                                                       time_axis=1)[:1024]

    magnitude_left = reduce(magnitude_left)
    magnitude_right = reduce(magnitude_right)

    IF_left = reduce(IF_left)
    IF_right = reduce(IF_right)

    logmelmag2_left, mel_p_left = spec_helper.specgrams_to_melspecgrams(
        magnitude_left, IF_left)
    logmelmag2_right, mel_p_right = spec_helper.specgrams_to_melspecgrams(
        magnitude_right, IF_right)

    #     print(magnitude_left.shape)