1

次のコードでは、各ループ反復でオーディオ ファイルの 10 フレームを保持するバッファーを作成しました。

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 配列を取得する必要があります。何か案が?

4

1 に答える 1

0

scipy.io.wavfileを使用すると、wave ファイルを直接読み取り、numpy 配列にデータをロードします。その後、要件に応じてスライスできます。

scipy.io.wavfileWAV ファイルを読み取り、サンプル レート (サンプル/秒) とデータを WAV ファイルから返します。

>>> 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 の内容:

>>> 
[ -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 フレームがあります。

于 2017-10-02T16:45:04.800 に答える