繁体   English   中英

带音色控制的JS音调转换

[英]JS pitch shift with timbre control

我需要一个很好的音调转换解决方案来更改我的项目的声音。 周围有很多变调js库-尝试了所有,但它们没有提供理想的结果。 最主要的是无法控制结果的声音音色,我得到了米老鼠或地狱僵尸听起来的东西,但没有真正的声音。 而在这里,如果使用vega的声音进行测试,结果将非常出色: http : //www.sonicapi.com/docs/live-task-demo? task=process-elastiqueTune#demo_form不幸的是,我对音频处理的总评价为零至少知道它是如何完成的,在这里使用了哪种类型的移位算法,以及我们如何实现对该过程的音色/共振峰控制。 任何提示高度赞赏。 谢谢 ;)

这个问题涉及一个非常广泛的主题。 这里有一些提示。

通常,可以通过抵消形成语音材料的频率来改变音高。 一个简单的版本是在时域中重新采样,本质上是以不同的速度回放记录。 这自然也会导致速度变化,这通常是不希望的。

为了保持速度,您需要将素材“分解”为其组成部分,换言之,将时域从频域更改为频域。 这就是傅里叶变换的目的。 完成后,您可以估算每个样本的频率集(如果在复杂的空间中正确完成,则还可以包含各个相位)。

声音的感知音色取决于称为泛音的频率组的相对振幅。 说话者的声道和听者都会形成泛音,并与基本频率一起听到。 您可以在时域,频谱(频率)域或倒频谱域中使用不同的滤波器来控制音色。 这种信号处理是一个装满书籍的图书馆部分的主题。

您可以使用逆傅立叶变换从频谱(频率)域移回到时间(时间)域。

综上所述,要改变音调的幼稚方法需要将样本从时域转换到频谱域,沿时间轴重新采样,然后进行傅立叶逆变换以返回到时域。

除了傅里叶变换,您还可以使用小波 我希望这可以帮助您入门。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM