2017-09-25 16 views
0

다음 코드에서는 각 루프 반복에서 오디오 파일의 10 프레임을 저장하는 버퍼를 만들었습니다.librosa가있는 오디오 버퍼

import collections 
import librosa 
import wave 
my_buffer = collections.deque(maxlen=10) 
f = wave.open('Desktop/0963.wav',"rb") 
num_frames = f.getnframes() 
for frame in range(num_frames): 
    my_buffer.append(f.readframes(frame)) 

버퍼 가운데 librosa I는 각각의 샘플 포인트의 오디오 진폭을 나타내는 NumPy와 배열을 얻을 필요가있다. 어떤 생각?

+0

'scipy.io.wavfile'을 사용하여 답변을 추가했습니다. 체크 아웃하고 그것이 당신을 위해 작동하는지 알려주십시오. –

답변

0

scipy.io.wavfile을 사용하면 웨이브 파일을 직접 읽으며 데이터를 수십 개의 배열로로드합니다. 그런 다음 요구 사항에 따라 슬라이스 할 수 있습니다.

:

scipy.io.wavfile

>>> type(f) 
<type 'tuple'> 
>>> f 
(44100, array([-36, 57, 156, ..., 66, 64, 77], dtype=int16)) 
>>> 

소스 코드

from scipy.io.wavfile import read 
import numpy as np 
f = read('your_audio.wav') 
n = np.array(f[1],dtype=float) 
for i in xrange(0,len(n),10): 
    my_buffer = n[i:i+10] 

my_buffer 내용을 WAV 파일을 읽고 WAV 파일에서 데이터 (샘플/초에) 샘플 속도를 반환

>>> 
[ -36. 57. 156. 198. 191. 126. 70. 42. 43. 62.] 
[ 69. 71. 83. 117. 159. 177. 151. 89. 14. -27.] 
[ -33. -4. 21. 38. 42. 66. 94. 134. 144. 142.] 
[ 118. 115. 111. 132. 122. 123. 103. 119. 125. 134.] 
..... 
..... 

여기에이 있습니다.에는 다음 블록으로 공급할 수있는 반복마다 10 프레임이 있습니다.