使用重力方程在时间和空间上对音频片段进行算法编辑和重新排列。
pyAudGrav的Python项目详细描述
皮奥德格拉夫
pyAudGrav是一个用python实现的合成工具,它允许用户使用重力在时间和空间上对音频片段进行算法编辑和重新排列。在这种情况下,重力是用来描述声音物体之间关系的隐喻。在
注意:这是一个微妙的移位示例,旨在说明音频事件相对于其他事件的移动方向。
在读取音频文件后,程序将编辑出每个音频事件,并将其视为独立的声音对象。在这种情况下,AudioEvent()
被定义为音频的一部分,其前面和后面都是原始声音文件的噪声底限。为了近似这些音频事件的重力行为,我们使用牛顿万有引力定律。这个定律描述了由重力产生的力等于两个质量除以它们的距离的平方,再乘以一个重力常数。在
音频事件基于其质量和与其他事件的距离,将对其他音频事件产生吸引力。就我们的目的而言,质量等于每个事件的均方根值,距离是每个事件峰值指数之间的时间,以秒为单位。当实际计算重力时,我们会将方程乘以重力常数,即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()
上面的代码说明了创建新音频文件所需的最低代码。对calc_shift()
和loop_gravity()
函数的研究将揭示一些其他参数,可用于微调pyAudGrav算法。为了获得最佳效果,鼓励用户使用这些参数进行试验。在
有关pyAudGrav及其类的更深入的概述和解释,请参阅上面的文档文件夹。
- 项目
标签: