2017-01-27 8 views
1

오디오의 고조파 구성 요소에서 tonnetz를 추출하려고합니다. 내 코드는 기본적으로 튜토리얼에서 복사 붙여 넣기입니다 https://librosa.github.io/librosa/generated/librosa.feature.tonnetz.htmlLibrosa 기능 tonnetz가 TypeError로 끝납니다

내 코드 :

/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/core/pitch.py:160: DeprecationWarning: object of type <type 'numpy.float64'> cannot be safely interpreted as an integer. 
    bins = np.linspace(-0.5, 0.5, np.ceil(1./resolution), endpoint=False) 
Traceback (most recent call last): 
    File "test_python.py", line 10, in <module> 
    print extract_feature("out.wav") 
    File "test_python.py", line 6, in extract_feature 
    tonnetz = librosa.feature.tonnetz(y=y, sr=sr) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/feature/spectral.py", line 1157, in tonnetz 
    chroma = chroma_cqt(y=y, sr=sr) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/feature/spectral.py", line 936, in chroma_cqt 
    real=False)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/core/constantq.py", line 251, in cqt 
    cqt_resp.append(__cqt_response(my_y, n_fft, my_hop, fft_basis)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/core/constantq.py", line 531, in __cqt_response 
    D = stft(y, n_fft=n_fft, hop_length=hop_length, window=np.ones) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/core/spectrum.py", line 167, in stft 
    y_frames = util.frame(y, frame_length=n_fft, hop_length=hop_length) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/librosa/util/utils.py", line 102, in frame 
    strides=(y.itemsize, hop_length * y.itemsize)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/stride_tricks.py", line 102, in as_strided 
    array = np.asarray(DummyArray(interface, base=x)) 
    File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numeric.py", line 531, in asarray 
    return array(a, dtype, copy=False, order=order) 
TypeError: 'float' object cannot be interpreted as an index 

어떤 생각이 어떻게이 문제를 해결하는 :

import librosa 

def extract_feature(file_name): 
    y, sr = librosa.load(file_name) 
    y = librosa.effects.harmonic(y) 
    tonnetz = librosa.feature.tonnetz(y=y, sr=sr) 
    return tonnetz 


print extract_feature("out.wav") 

여기에 스택 추적입니까?

답변

1

chroma_cqt를 실행하고이 오류가 발생했지만이 문제를 해결하기 위해 numpy 1.10.1로 롤백했습니다.

Numpy> 1.11 as_strided는 dummyarray를 만들고 asarray는 float 배열을 제대로 처리하지 않습니다. 1.10.1 numpy는 stride_tricks가 더 좋습니다.

+0

이 문제가 해결되었습니다. 고마워! – anttik