我需要一个由两部分组成的项目的帮助:
- python中的实时音高移位器(从头开始(
- 切换来自2个不同扬声器的2个声音的音高
我有两个问题:
- 我找不到音高转换背后的正确数学来从头开始实现它,所以请简单解释
- 我需要从两个声音中提取音高来切换它们吗?还是有一个更简单的解决方案?如果没有解释如何正确地从声音中提取音高并进行切换,我们将不胜感激
提前感谢。
librosa
执行此操作。来源在
https://github.com/librosa/librosa/blob/main/librosa/effects.py#L253
此处使用的算法由评论总结
# Stretch in time, then resample
为了进一步解释这一点,你可以通过";"伸展";(或挤压(水平方向上的波形。例如,这将使中C(262Hz(的振动相距更远,因此频率更低,因此音调也更低。将其拉伸到两倍(然后填充样本以使采样率保持不变(将使音高在131Hz下降低八度到C3。
看起来困难的部分是有效地重新采样,但代码中提到了各种算法。
需要暂存代码的第一部分在这里完成
对于两个声音,你肯定需要两个音高,然而,你可以进行无监督的训练来识别说话者,所以这并不难。
如果你想在没有机器学习方法的情况下进行混合,你也可以使用包含他们声音的框架。
还有很多更稳健的方法可以找到ML说话者,其中最著名的是MFCC,这里对此进行了解释。