簡體   English   中英

使用 python 從零開始實時音高轉換

[英]Real time pitch shifting from scratch using python

我需要一個由兩部分組成的項目的幫助:

  1. python 中的實時音高移位器(從頭開始)。
  2. 切換來自 2 個不同揚聲器的 2 個聲音的音高。

我有兩個問題:

  1. 我找不到音高轉換背后的正確數學來從頭開始實現它,因此我們將不勝感激。
  2. 我需要從 2 個聲音中提取音高來切換它們還是有更簡單的解決方案? 如果不是關於如何從聲音中正確提取音高並進行切換的解釋,我們將不勝感激。

提前致謝。

librosa這樣做的。 來源在

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

評論中總結了那里使用的算法,

# Stretch in time, then resample

為了進一步解釋這一點,您可以通過在水平方向上“拉伸”(或擠壓)波形來改變音高。 例如,這將使中間 C (262 Hz) 的振動相距更遠,因此頻率更低——因此,音高也更低。 將其拉伸到兩倍(然后填充樣本以使采樣率保持不變)會將音高降低一個八度音階到 131Hz 的 C3。

看起來困難的部分是有效地重采樣,但代碼中提到了各種算法。

需要臨時代碼的第一部分在這里完成

對於兩個聲音,您肯定需要兩個音高,但是,您可以進行無監督訓練以識別說話者,所以這並不難。

如果它們是混合的並且你想在沒有機器學習方法的情況下這樣做,你也可以使用包含他們的聲音的幀。

還有很多更強大的方法可以找到具有 ML 的揚聲器,其中最著名的是 MFCC, 在此處進行了說明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM