我在Windows 10上使用Python3.7下的audiomath。
我一直使用音频文件标准化我的脑电图分析,这是非常有用的所有参数,除了这一个,我一直卡在试图让它创建淡入,淡出或HannWindows。
我在其他机器上运行了相同的代码,使用了其他版本的Python和Numpy,我仍然得到了相同的错误。
from audiomath import Sound, MakeRise
import numpy
sound01 = Sound('mySample.wav')
soundFadedIn = sound01.MakeHannWindow(5)
soundFadedIn.Play()发布于 2021-09-24 20:24:51
正如@WarrenWeckesser所指出的,这是audiomath中的一个bug,已经在audiomath版本1.16.0+中修复了
请注意,MakeHannWindow只返回Hann加权本身(具有与sound01匹配的持续时间和采样频率)。它不会像你所假设的那样返回声音乘以权重。使用.Fade()方法(该方法也受同一bug的影响)可能会更好地完成您想要做的事情。
只需稍加修改,您就可以这样做(它总是给您一个对称的淡入和 -out,可选地指定中间平台的持续时间(以秒为单位)):
from audiomath import Sound
sound01 = Sound('mySample.wav')
soundFadedInAndOut = sound01 * sound01.MakeHannWindow(5) # note the multiplication或者这里还有另一个,您可以显式地和单独地指定上升和下降部分的持续时间(不一定是对称的,这两个持续时间中的任何一个都可以是0):
from audiomath import Sound
sound01 = Sound('mySample.wav')
soundFadedInAndOut = sound01.Copy().Fade(risetime=0.5, falltime=0.5, hann=True)最后,如果您由于某些原因无法或不愿意将audiomath升级到1.16,您报告的bug的解决方法可能是使用来自audiomath.Signal的Shoulder()函数来生成窗口函数:
import audiomath as am, numpy as np
x = am.Sound('mySample.wav')
endFadeIn, startFadeOut = 0.5, x.duration-0.5
t = np.linspace(0, x.duration, x.nSamples) # in seconds
window = am.Signal.Shoulder(t, [0, endFadeIn, startFadeOut, x.duration]) # it's a numpy array, not a Sound
faded = x * window # but you can still multiply a Sound by it
faded.Play()https://stackoverflow.com/questions/69315875
复制相似问题