使用python从零开始实时切换音高



我需要一个由两部分组成的项目的帮助:

  1. python中的实时音高移位器(从头开始(
  2. 切换来自2个不同扬声器的2个声音的音高

我有两个问题:

  1. 我找不到音高转换背后的正确数学来从头开始实现它,所以请简单解释
  2. 我需要从两个声音中提取音高来切换它们吗?还是有一个更简单的解决方案?如果没有解释如何正确地从声音中提取音高并进行切换,我们将不胜感激

提前感谢。

librosa执行此操作。来源在

https://github.com/librosa/librosa/blob/main/librosa/effects.py#L253

此处使用的算法由评论总结

# Stretch in time, then resample

为了进一步解释这一点,你可以通过";"伸展";(或挤压(水平方向上的波形。例如,这将使中C(262Hz(的振动相距更远,因此频率更低,因此音调也更低。将其拉伸到两倍(然后填充样本以使采样率保持不变(将使音高在131Hz下降低八度到C3。

看起来困难的部分是有效地重新采样,但代码中提到了各种算法。

需要暂存代码的第一部分在这里完成

对于两个声音,你肯定需要两个音高,然而,你可以进行无监督的训练来识别说话者,所以这并不难。

如果你想在没有机器学习方法的情况下进行混合,你也可以使用包含他们声音的框架。

还有很多更稳健的方法可以找到ML说话者,其中最著名的是MFCC,这里对此进行了解释。

最新更新