0

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

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

我有两个问题:

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

提前致谢。

4

2 回答 2

0

需要临时代码的第一部分在这里完成

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

如果它们是混合的并且你想在没有机器学习方法的情况下这样做,你也可以使用包含他们的声音的帧。

还有很多更强大的方法可以找到具有 ML 的扬声器,其中最著名的是 MFCC,在此处进行了说明。

于 2021-03-05T20:41:32.493 回答
0

librosa做这个。来源在

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

评论中总结了那里使用的算法,

# Stretch in time, then resample

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

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

于 2020-07-15T10:34:51.140 回答