python - Librosa:过滤奈奎斯特以外的通带

标签 python audio librosa

Librosa Python 3.5 在 8000Hhz 音频样本上出现错误:

extract feature error. Filter pass-band lies beyond 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

编辑:

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

最佳答案

    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

关于python - Librosa:过滤奈奎斯特以外的通带,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56437543/

相关文章:

python - 使python程序在linux下独立可执行

android - 保护Android中的MediaPlayer功能

ios - 如何在下载数据时流式传输音频?

python - 如何使用 Librosa 在 python 中读取音频?

python - 我们如何提高 Librosa 中节奏检测的准确性?

python - 隔离游戏中的蒙特卡洛树搜索代理 - 调试建议

Python在网格上绘制填充的 "Circle"

python - 使用理解和范围创建嵌套

audio - 计算机如何处理音频数据?