Librosa: полоса пропускания фильтра за пределами Найквиста - PullRequest
0 голосов
/ 04 июня 2019

Librosa Python 3.5 На 8000 ГГц Аудио сэмплы получают ошибку:

Извлечь ошибку функции. Полоса пропускания фильтра лежит за пределами Nyquist

Ранее получал другие ошибки о Nyquist, но исправил, установив sr и fmin вручную, хотя, похоже, не мог обойти эту ошибку.

stft = np.abs(librosa.stft(X))
mfccs = np.mean(librosa.feature.mfcc(y=X, sr=8000, n_mfcc=40, fmin=60).T,axis=0)
chroma = np.mean(librosa.feature.chroma_stft(S=stft, sr=8000).T,axis=0)
mel = np.mean(librosa.feature.melspectrogram(X, sr=8000, fmin=60).T,axis=0)
contrast = np.mean(librosa.feature.spectral_contrast(S=stft, sr=8000, fmin=60).T,axis=0)
tonnetz = np.mean(librosa.feature.tonnetz(y=librosa.effects.harmonic(X), sr=8000).T,axis=0)
return mfccs, chroma, mel, contrast, tonnetz

Edit:

Кажется, проблема существует в функции tonnetz. За документы цветность:

np.ndarray [shape=(n_chroma, t)] or None

    Normalized energy for each chroma bin at each frame.

    If None, a cqt chromagram is performed.

Для хроматограммы cqt потребуются дополнительные параметры для работы со звуком 8000 ГГц, поэтому мне потребуется установить цветность вручную. К сожалению, это за пределами моего знания Librosa / Audio, кто-нибудь получил подсказку для меня?

1 Ответ

0 голосов
/ 05 июня 2019
    stft = np.abs(librosa.stft(X))
    mfccs = np.mean(librosa.feature.mfcc(y=X, sr=8000, n_mfcc=40, fmin=30).T,axis=0)
    chroma = np.mean(librosa.feature.chroma_stft(S=stft, sr=8000).T,axis=0)
    mel = np.mean(librosa.feature.melspectrogram(X, sr=8000, fmin=30).T,axis=0)
    contrast = np.mean(librosa.feature.spectral_contrast(S=stft, sr=8000, fmin=30).T,axis=0)
    tonnetz = np.mean(librosa.feature.tonnetz(y=librosa.effects.harmonic(X), sr=sample_rate, chroma=librosa.feature.chroma_cqt(y=X, sr=8000, fmin=30)).T,axis=0)
    return mfccs, chroma, mel, contrast, tonnetz
...