使用重力方程在时间和空间上对音频片段进行算法编辑和重新排列。

pyAudGrav的Python项目详细描述


皮奥德格拉夫

pyAudGrav是一个用python实现的合成工具,它允许用户使用重力在时间和空间上对音频片段进行算法编辑和重新排列。在这种情况下,重力是用来描述声音物体之间关系的隐喻。在

Simple Example (gConst = 2)注意:这是一个微妙的移位示例,旨在说明音频事件相对于其他事件的移动方向。

在读取音频文件后,程序将编辑出每个音频事件,并将其视为独立的声音对象。在这种情况下,AudioEvent()被定义为音频的一部分,其前面和后面都是原始声音文件的噪声底限。为了近似这些音频事件的重力行为,我们使用牛顿万有引力定律。这个定律描述了由重力产生的力等于两个质量除以它们的距离的平方,再乘以一个重力常数。在

Newtons Law of Gravity

音频事件基于其质量和与其他事件的距离,将对其他音频事件产生吸引力。就我们的目的而言,质量等于每个事件的均方根值,距离是每个事件峰值指数之间的时间,以秒为单位。当实际计算重力时,我们会将方程乘以重力常数,即9.81米/秒的平方,但由于音频没有重力常数,用户会发现这个参数会影响移动的幅度。最终的结果是一个新的音频文件,其中的事件根据质量和距离在时间和空间上发生了偏移(立体平移)。在

安装

要安装,请使用。。。在

pip install pyAudGrav

或者

pip install git+https://github.com/patrickTumulty/pyAudGrav

入门

软件包安装附带了几个示例音频文件,可以通过以下函数快速加载这些文件。注意:pyAudGrav目前只支持MONO文件的导入。初步分析后,新文件可以导出到单声道或立体声。在

load_example1()# example1_stimmen.wavload_example2()# example2_tones.wavload_example3()# example3_potsPans.wavload_example4()# example4_pingPong.wavload_example5()# example5_hey.wav

这些文件也可以直接从github存储库下载[/DOCUMENTATION/IncludedExamples]。要使用这些示例之一,可以使用 以下代码。在

^{pr2}$

使用你自己的音频文件只需交换。。。在

io = pyAudGrav.load_example1()io = pyAudGrav.AudioIO("/filePath")

pyAudGrav有一个名为loop_gravity()的内置函数,允许用户对同一数据集进行多次迭代。这种方法产生了与上述示例不同的有趣结果。实现这一点的语法与前面的示例类似,但有一些不同之处。{{cd7}代替这个例子。另外,loop_gravity()将返回循环数据的最终迭代。这意味着不需要像前一个示例中所看到的那样创建重建对象。请注意,loop_gravity()将解构数据并将其重建为一个单数据数组,直到最后一次迭代时它将变为立体数据。在

importpyAudGravimportmatplotlib.pyplotaspltio=pyAudGrav.load_example1()analyzer=pyAudGrav.AudioAnalysis(io.data,io.sample_rate)env=analyzer.get_env_peak(analyzer.data)new_signal=analyzer.loop_gravity(analyzer.data,env,numLoops=4,gConst=4,plot=False)io.writeWav("Example1_after.wav",r)plt.plot([i+analyzer.rStruct.correctionforiinrange(len(analyzer.data))],[itemforiteminanalyzer.data],'grey')plt.plot(new_signal,'red')plt.plot([item.peakIdx+item.offset+analyzer.rStruct.correctionforiteminanalyzer.audio_events],[item.panOffset*0.01foriteminanalyzer.audio_events],'.blue')plt.show()

Simple Gravity Example

上面的代码说明了创建新音频文件所需的最低代码。对calc_shift()loop_gravity()函数的研究将揭示一些其他参数,可用于微调pyAudGrav算法。为了获得最佳效果,鼓励用户使用这些参数进行试验。在

有关pyAudGrav及其类的更深入的概述和解释,请参阅上面的文档文件夹。

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

推荐PyPI第三方库


热门话题
java是从此类字符串中提取数据的最佳方法   filenotfoundexception Java FileOutputStream Windows/Linux   java在SQLite数据库Android SDK中搜索特定字符串   java使用键值访问jsp中Map<Long,Map<String,Object>>的内容   java奇怪的HTMLeditor工具包问题   在java中使用数组只计算字母   每个应用程序都可以有自己独立的Java SDK吗   java如何将jasper报告生成的PDF文件保存在一个项目文件夹中   java BigDecimal包装器:静态字段为零   解码Base64图像时出现java IllegalArgumentException(非法的Base64字符)   将int转换为字节在Java和Actionscript中产生不同的结果   java什么使不可变对象在没有安全发布技术的情况下发布?   java将字节数据写入目录   一个计算器中有多个操作的java问题   面向对象Java重写是如何工作的   带hibernate的java ClassCastException   指向最后一个对象的java对象列表   java单元测试spring项目中的Get请求