Basic Pitch 是一個用於自動音樂轉錄 (AMT) 的 Python 庫,使用 Spotify 音訊智慧實驗室開發的輕量級神經網路。它體積小,易於使用,可以透過其兄弟儲存庫進行pip install
和npm install
。
基本音調可能很簡單,但它遠非“基本”! basic-pitch
高效且易於使用,其多音高支援、跨樂器泛化的能力以及音符精度可與更大、更需要資源的 AMT 系統相媲美。
提供相容的音訊文件,基本音高將產生一個帶有彎音的 MIDI 文件。基本音高與樂器無關,並且支援和弦樂器,因此無論使用什麼樂器,您都可以自由地享受所有您喜愛的音樂的轉錄。基本音高一次在一種樂器上效果最好。
該庫與 Spotify 在 ICASSP 2022 上的出版物一起發布。
如果您在學術研究中使用此庫,請考慮引用它:
@inproceedings { 2022_BittnerBRME_LightweightNoteTranscription_ICASSP ,
author = { Bittner, Rachel M. and Bosch, Juan Jos'e and Rubinstein, David and Meseguer-Brocal, Gabriel and Ewert, Sebastian } ,
title = { A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation } ,
booktitle = { Proceedings of the IEEE International Conference on Acoustics, Speech, and Signal Processing (ICASSP) } ,
address = { Singapore } ,
year = 2022 ,
}
請注意,我們對基本音調的改進超出了本文中介紹的內容。因此,如果您在學術研究中使用 Basic Pitch 的輸出,我們建議您引用所使用的程式碼版本。
如果出於某種原因,您還沒有完全受到啟發,或者您對一般氛圍和東西完全不感興趣,請查看我們活潑的演示網站 basicpitch.io,在您提供的任何音樂音頻上試驗我們的模型!
basic-pitch
可透過 PyPI 取得。若要安裝目前版本:
pip install basic-pitch
若要將 Basic Pitch 更新到最新版本,請在上述命令中新增--upgrade
。
Basic Pitch 隨附原始 TensorFlow 模型以及轉換為 CoreML、TensorFlowLite 和 ONNX 的 TensorFlow 模型。預設情況下,Basic Pitch不會安裝 TensorFlow 作為依賴項,除非您使用的是 Python>=3.11 。相反,預設情況下,CoreML 將安裝在 MacOS 上,TensorFlowLite 將安裝在 Linux 上,ONNX 將安裝在 Windows 上。如果您想要將 TensorFlow 與預設模型推理執行時間一起安裝,可以透過pip install basic-pitch[tf]
安裝 TensorFlow。
預設情況下,Basic Pitch 將嘗試按以下順序載入模型:
此外,模組變數 ICASSP_2022_MODEL_PATH 將預設為清單中的第一個可用版本。
我們將在下面解釋如何覆蓋此優先列表。由於所有其他模型序列化都是從 TensorFlow 轉換而來,因此我們建議盡可能使用 TensorFlow。 NB Basic Pitch 預設不會安裝 TensorFlow,以節省使用者安裝和執行 Basic Pitch 的時間。
該庫提供了命令列工具介面。基本預測指令將在
處產生音訊的 MIDI 檔案轉錄並儲存到
:
basic-pitch < output-directory > < input-audio-path >
例如:
basic-pitch /output/directory/path /input/audio/path
要一次處理多個音訊檔案:
basic-pitch < output-directory > < input-audio-path- 1> < input-audio-path- 2> < input-audio-path- 3>
或者,您可以將以下任何標誌附加到預測命令,以將預測輸出的其他格式儲存到
:
--sonify-midi
額外保存 MIDI 檔案的.wav
音訊渲染。--save-model-outputs
將原始模型輸出另外儲存為 NPZ 檔案。--save-note-events
將預測的音符事件另外儲存為 CSV 檔案。如果您想使用非預設模型類型(例如,使用 CoreML 而不是 TF),請使用--model-serialization
參數。 CLI 會將載入的模型變更為您喜歡的類型。
若要發現更多參數控制,請執行:
basic-pitch --help
預測()
將basic-pitch
匯入到您自己的 Python 程式碼中並直接執行predict
函數,提供
並傳回模型的預測結果:
from basic_pitch . inference import predict
from basic_pitch import ICASSP_2022_MODEL_PATH
model_output , midi_data , note_events = predict ( < input - audio - path > )
和
( float s) 設定模型傳回的最大和最小允許音符頻率(以 Hz 為單位)。頻率超出此範圍的俯仰事件將從預測結果中排除。model_output
是原始模型推理輸出midi_data
是從model_output
導出的轉錄的 MIDI 數據note_events
是從model_output
派生的音符事件列表注意:如前所述,ICASSP_2022_MODEL_PATH 將預設為 TensorFlow、CoreML、TensorFlowLite、ONNX 清單中第一個支援的執行時間。
在循環中預測()
要在循環內運行預測,您需要自己載入模型,並為predict()
提供載入的模型物件本身,以用於重複的預測調用,以避免冗餘和緩慢的模型載入。
import tensorflow as tf
from basic_pitch . inference import predict , Model
from basic_pitch import ICASSP_2022_MODEL_PATH
basic_pitch_model = Model ( ICASSP_2022_MODEL_PATH ))
for x in range ():
...
model_output , midi_data , note_events = predict (
< loop - x - input - audio - path > ,
basic_pitch_model ,
)
...
預測並保存()
如果您希望basic-pitch
協調我們各種支援的輸出檔案類型的生成和保存,您可以使用predict_and_save
而不是直接使用predict
:
from basic_pitch . inference import predict_and_save
predict_and_save (
< input - audio - path - list > ,
< output - directory > ,
< save - midi > ,
< sonify - midi > ,
< save - model - outputs > ,
< save - notes > ,
)
在哪裡:
&
basic-pitch
讀取/寫入的目錄路徑。
支援的音訊編解碼器
basic-pitch
接受與其librosa
版本相容的所有聲音文件,包括:
.mp3
.ogg
.wav
.flac
.m4a
僅單聲道音訊
雖然您可以使用立體聲音訊作為我們模型的輸入,但在預測時,輸入的通道將被下方混合為單聲道,然後進行分析和轉錄。
檔案大小/音訊長度
此模型可以處理任何大小或長度的音頻,但處理更大/更長的音頻檔案可能會受到電腦可用磁碟空間的限制。要處理這些文件,我們建議串流傳輸文件的音頻,一次處理音頻視窗。
取樣率
輸入音訊可以是任何取樣率,但是,所有音訊在處理之前都會重新取樣到 22050 Hz。
感謝 DamRsn 開發了這個基本音高的 VST 版本! - https://github.com/DamRsn/NeuralNote
歡迎對basic-pitch
做出貢獻!有關詳細信息,請參閱 CONTRIBUTING.md。
basic-pitch
版權所有 2022 Spotify AB。
本軟體依據 Apache 授權 2.0 版(「Apache 授權」)授權。只有當您接受任何 Apache 授權的所有條款時,您才可以選擇任一授權來管理您對該軟體的使用。
您可以在以下位置取得 Apache 授權的副本:
http://www.apache.org/licenses/LICENSE-2.0
除非適用法律要求或書面同意,否則根據 Apache 許可證或 GPL 許可證分發的軟體均以「原樣」分發,不帶任何明示或暗示的保證或條件。請參閱 Apache 許可證,以了解 Apache 許可證下管理權限和限制的特定語言。