帮助将音频数据存储在循环缓冲区中的库。

np-rw-buffer的Python项目详细描述


#numpy读写缓冲区

创建此库是为了帮助将音频数据存储在numpy数组中。它允许将列表和numpy数组写入循环缓冲区。您可以从具有重叠的缓冲区读取数据以执行平滑的fft。
缓冲区是一个围绕numpy ndarray的包装器。它包含一个开始和结束位置,用于跟踪数据的读写位置。

主要功能:
*clear()-清除长度,开始,结束索引
*get_data()-返回数据副本而不移动索引
*set_data(data)-设置数据并将缓冲区形状更改为此数据形状
*write(data,error)-将数据写入缓冲区并移动结束索引
*read(amount)-从缓冲区读取数据并移动开始索引。如果数量大于缓冲区中的内容,则返回一个0长度的缓冲区


有助于起始和结束指针的额外函数:
*扩展写入(数据,错误)-将数据写入缓冲区。如果数据大于缓冲区,则扩展缓冲区
*增加写入(数据)-如果没有足够的空间,则将数据写入缓冲区使缓冲区变大
*读取剩余(量)-读取可读取的数据量或读取所有可用数据
*读取重叠(量,增量)-读取给定的数据量,但只按增量增加起始索引。这是下一篇文章,读取一些重复数据(因此重叠)


缓冲区控制函数:
*maxsize-(property)更改可以保存的样本量
*columns-(property)数组包含的列数(shape[1])
*shape-(property)更改缓冲区的形状
*dtype-(property)更改numpy buffer
*获取索引(开始,长度)-返回用于读取和写入的索引列表(这将使缓冲区循环)
*移动开始(数量,错误)-移动开始索引(读取)
*移动结束(数量,错误)-移动结束索引(写入)
*get_available_space()-返回缓冲区仍能保存的数据量


example-simple example
简单读写。关于测试和使用,请参见测试缓冲区。


``python
>将numpy导入np
>导入np



>buffer=np-u-rw-buffer.ringbuffer(10)


buffer.wr写(np.arange(5))
>r=buffer.read(4)
>断言np.all(r==np.arange(4)、整形(-1,1))



;数据不足,数据不足,数据不足,重塑(-1,1,1,1))



t读取任何内容(使用剩余读取或获取数据)
d=np.arange(5).整形((-1,1))
缓冲区.写入(d)
r=buffer.read(10)
断言长度(r)==0
断言长度(缓冲区)==6

r=buffer.read()
断言长度(r)==6
断言np.all(r==np.vstack((d[-1:],d))

buffer.write(np.arange(6))
buffer.write(np.arange(5))引发溢出错误
buffer.write(np.arange(5),false)
````


example-audioframingbuffer
audioframingbuffer与ringbuffer略有不同。它有采样率、秒数和缓冲延迟。

开始指针和结束指针完全不同,并且是分离的。
开始指针可以在结束指针下运行,并用0填充。结束指针可以在开始指针上溢出。

``python
import numpy as np
from np戋rw戋buffer import audioframingbuffer

buffer=audioframingbuffer(2000,1)
buffer.write(np.array([(i,)for i in range(10))
buffer:[(read ptr)0,1,2,3,4,4,5,6,7,8,9,(写ptr)0,0,0,0,0,0,0]
断言缓冲区。_end==10
断言缓冲区。_start==0

;[0,1,2,2,3,4,4,5,6,7,8,8,9,(写ptr)0,0,0,0,0,0,0,0,0,0,0,0,0,0(读ptr结束)
断言np all(缓冲区读(15)==np.数组([0,1,1,1,2,2,3,4,5,6,7,7,8,8,9,9,9,9,9 0,0,0,0,0])。重塑((-1,1))
断言缓冲区。_start==15
断言缓冲区。_end==10

buffer.write(np.array([(i,)for i in range(10)])这将写入posi19
后的缓冲区:[0,0,0,0,0,0,0,0,0,0,0,0,0,(曾9)0,0,0,1,2,3,4,(读ptr)5,6,7,8,8,9(在结尾写ptr)
断言缓冲区。断言缓冲区。
<<
<5,6,7,8,9,(写ptr)0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 10)==np.数组([5,6,7,8,9,0,0,0,0,0,0,0],0])。整形((-1,1))
```

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何向xsi:nil元素添加另一个属性?   Java抽象泛型方法,使用具体类型实现通配符   java使用pcap4j截断pcap文件   当我放置字母a、b和c时,java中的异常预期会下降   java设置活动对话框不可取消   接口类型变量上的Java克隆   使用Java或BouncyCastle对CSR(证书签名请求)进行安全解码/读取   java调用SavingsAccount对象上的函数并打印结果   java如何在Android应用程序上显示地图上的兴趣点(POI)并与之交互?   如果在JavaFX中的ResultSet中未找到任何内容,则显示java警报   java我将springboot和@component与@scheduled一起使用,它每12小时锁定一次   ApachePOI如何使用java删除包含字符串的word表的行   java如果对象(x,y)靠近其他对象(x,y)   从未对JMSException调用java JMS CachingConnectionFactory OneException方法   javascript使用java将HTML页面转换为MS word