我需要一个由两部分组成的项目的帮助:
- python中的实时音高移位器(从头开始)。
- 切换来自 2 个不同扬声器的 2 个声音的音高。
我有两个问题:
- 我找不到音高转换背后的正确数学来从头开始实现它,因此我们将不胜感激。
- 我需要从 2 个声音中提取音高来切换它们还是有更简单的解决方案?如果不是关于如何从声音中正确提取音高并进行切换的解释,我们将不胜感激。
提前致谢。
我需要一个由两部分组成的项目的帮助:
我有两个问题:
提前致谢。
librosa
做这个。来源在
https://github.com/librosa/librosa/blob/main/librosa/effects.py#L253
评论中总结了那里使用的算法,
# Stretch in time, then resample
为了进一步解释这一点,您可以通过在水平方向上“拉伸”(或挤压)波形来改变音高。例如,这将使中音 C(262 Hz)的振动相距更远,因此频率更低——结果,音高也更低。将其拉伸到两倍(然后填充样本以使采样率保持不变)会将音高降低一个八度音阶到 131Hz 的 C3。
看起来困难的部分是有效地重采样,但代码中提到了各种算法。