首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Audiomath TypeError - MakeRise,MakeFade,MakeHannWindow

Audiomath TypeError - MakeRise,MakeFade,MakeHannWindow
EN

Stack Overflow用户
提问于 2021-09-24 13:31:18
回答 1查看 49关注 0票数 1

我在Windows 10上使用Python3.7下的audiomath。

我一直使用音频文件标准化我的脑电图分析,这是非常有用的所有参数,除了这一个,我一直卡在试图让它创建淡入,淡出或HannWindows。

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

代码语言:javascript
复制
from audiomath import Sound, MakeRise
import numpy

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

日志错误

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-24 20:24:51

正如@WarrenWeckesser所指出的,这是audiomath中的一个bug,已经在audiomath版本1.16.0+中修复了

请注意,MakeHannWindow只返回Hann加权本身(具有与sound01匹配的持续时间和采样频率)。它不会像你所假设的那样返回声音乘以权重。使用.Fade()方法(该方法也受同一bug的影响)可能会更好地完成您想要做的事情。

只需稍加修改,您就可以这样做(它总是给您一个对称的淡入 -out,可选地指定中间平台的持续时间(以秒为单位)):

代码语言:javascript
复制
from audiomath import Sound

sound01 = Sound('mySample.wav')
soundFadedInAndOut = sound01 * sound01.MakeHannWindow(5)  # note the multiplication

或者这里还有另一个,您可以显式地和单独地指定上升和下降部分的持续时间(不一定是对称的,这两个持续时间中的任何一个都可以是0):

代码语言:javascript
复制
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.SignalShoulder()函数来生成窗口函数:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69315875

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档