【问题标题】:Librosa: Filter pass-band beyond NyquistLibrosa:超越奈奎斯特的滤波器通带
【发布时间】:2019-06-04 04:53:27
【问题描述】:

Librosa Python 3.5 关于 8000Hz 音频样本出现错误:

提取特征错误。滤波器通带超出奈奎斯特

以前遇到过关于 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

编辑:

tonnetz 功能似乎存在问题。每docs色度:

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 色度图需要额外的参数才能使用 8000Hz 音频,因此我需要手动设置色度。不幸的是,这超出了我的 Librosa/Audio 知识范围,有人知道吗?

【问题讨论】:

    标签: python audio librosa


    【解决方案1】:
        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
    

    【讨论】:

    • 你改变了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多