Audiomath 类型错误 - MakeRise、MakeFade、MakeHannWindow

Audiomath TypeError - MakeRise, MakeFade, MakeHannWindow

我在 Python 3.7 和 Windows 10 上使用 audiomath。

我一直在使用 audiomath 来标准化我的音频文件以进行 EEG 分析,它对除此参数之外的所有参数都非常有用,当我试图让它创建淡入、淡出或 HannWindows.

我在其他机器上 运行 使用其他版本 Python 和 Numpy 的相同代码,但我仍然遇到相同的错误。

from audiomath import Sound, MakeRise
import numpy

sound01 = Sound('mySample.wav')
soundFadedIn = sound01.MakeHannWindow(5)
soundFadedIn.Play()

Log Error

正如@WarrenWeckesser 所指出的,这是 audiomath 中的错误,已在 audiomath 版本 1.16.0+

中修复

请注意 MakeHannWindow 只有 return 汉恩权重本身(持续时间和采样频率与 sound01 匹配)。它并不像您假设的那样 return 声音 乘以 权重。使用 .Fade() 方法(也受到相同错误的影响)可能会更好地完成您似乎想要做的事情。

稍微修改一下,你做的方式就是一种方式(它总是给你一个对称的淡入-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,解决您报告的错误的方法可能是使用 Shoulder() 中的函数 audiomath.Signal 生成你的窗口函数:

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()