2017-09-25 14 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で各サンプルポイントのオーディオ振幅を表すnumpy配列を取得する必要があります。何か案が?

+0

「scipy.io.wavfile」を使用して回答を追加しました。それがあなたのために働くかチェックアウトし、私に知らせる。 –

答えて

0

scipy.io.wavfileを使用すると、waveファイルを直接読み込み、numpyの配列にデータを読み込みます。あなたの要件に従ってスライスすることができます。

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.] 
..... 
..... 

ここにはmy_bufferには、次のブロックに入ることができる反復ごとに10フレームあります。

関連する問題