Я новичок как в python, так и в librosa. Я пытаюсь использовать этот метод для распознавания речи: акустический передний конец
Мой код:
import librosa
import librosa.display
import numpy as np
y, sr = librosa.load('test.wav', sr = None)
normalizedy = librosa.util.normalize(y)
stft = librosa.core.stft(normalizedy, n_fft = 256, hop_length=16)
mel = librosa.feature.melspectrogram(S=stft, n_mels=32)
melnormalized = librosa.util.normalize(mel)
mellog = np.log(melnormalized) - np.log(10**-5)
Проблема в том, что когда я применяю librosa.util.normalize к переменной mel, я ожидаю, что значения будут между 1 и -1, а это не так. Что мне не хватает?






Если вы хотите, чтобы ваши выходные данные были масштабированы по логарифмическому масштабу и нормализованы в диапазоне от -1 до +1, вы должны сначала масштабировать по логарифмическому масштабу, а затем нормализовать:
import librosa
import librosa.display
import numpy as np
y, sr = librosa.load('test.wav', sr = None)
normalizedy = librosa.util.normalize(y)
stft = librosa.core.stft(normalizedy, n_fft = 256, hop_length=16)
mel = librosa.feature.melspectrogram(S=stft, n_mels=32)
mellog = np.log(mel + 1e-9)
melnormalized = librosa.util.normalize(mellog)
# use melnormalized
Должно быть - 1 и 1 да, сейчас поправил. Спасибо Ikteaja и Scratte!
Каковы максимальные и минимальные значения ваших значений? Вы уверены, что проверяете
melnormalized, а неmellog(который будет иметь другую шкалу, поскольку журнал был применен)