librosa的音频缓冲区

时间:2017-09-25 14:23:46

标签: audio buffer librosa

在下面的代码中,我创建了一个缓冲区,在每次循环迭代中保存10帧音频文件。

ALTER TABLE post_data MODIFY upd_date datetime null;

在缓冲区之外,我需要得到一个numpy数组,用librosa表示每个采样点的音频幅度。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

如果使用scipy.io.wavfile,它将直接读取wave文件并将数据加载到numpy数组。然后根据您的要求切片。

scipy.io.wavfile读取WAV文件并返回采样率(采样/秒)和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帧,您可以将其输入下一个块。