Basic Pitch คือไลบรารี Python สำหรับการถอดเสียงเพลงอัตโนมัติ (AMT) โดยใช้โครงข่ายประสาทเทียมน้ำหนักเบาที่พัฒนาโดย Audio Intelligence Lab ของ Spotify มันมีขนาดเล็ก ใช้งานง่าย สามารถ pip install
-able และ npm install
-able ผ่านทาง repo ของมัน
Basic Pitch อาจจะเรียบง่าย แต่ก็ห่างไกลจาก "พื้นฐาน"! basic-pitch
มีประสิทธิภาพและใช้งานง่าย และการรองรับหลายระดับเสียง ความสามารถในการสรุปเครื่องมือต่างๆ และความแม่นยำของโน้ตสามารถแข่งขันกับระบบ AMT ที่ใหญ่กว่าและกินทรัพยากรมากกว่ามาก
จัดเตรียมไฟล์เสียงที่เข้ากันได้ และเสียงระดับพื้นฐานจะสร้างไฟล์ MIDI พร้อมด้วยระดับเสียงสูงต่ำ ระดับเสียงพื้นฐานไม่เชื่อเรื่องเครื่องดนตรีและรองรับเครื่องดนตรีโพลีโฟนิก ดังนั้นคุณจึงสามารถเพลิดเพลินกับการถอดเสียงเพลงโปรดทั้งหมดของคุณได้อย่างอิสระ ไม่ว่าจะใช้เครื่องดนตรีใดก็ตาม การเสนอขายแบบพื้นฐานทำงานได้ดีที่สุดกับเครื่องดนตรีชิ้นเดียวในแต่ละครั้ง
ห้องสมุดนี้เผยแพร่ร่วมกับสิ่งพิมพ์ของ Spotify ที่งาน ICASSP 2022 คุณสามารถอ่านเพิ่มเติมเกี่ยวกับงานวิจัยนี้ได้ในรายงาน A Lightweight Instrument-Agnostic Model for Polyphonic Note Transcription and Multipitch Estimation
หากคุณใช้ห้องสมุดนี้ในการวิจัยเชิงวิชาการ โปรดพิจารณาอ้างอิง:
@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 นอกเหนือจากที่นำเสนอในบทความนี้ ดังนั้น หากคุณใช้ผลลัพธ์ของ Basic Pitch ในการวิจัยเชิงวิชาการ เราขอแนะนำให้คุณอ้างอิงเวอร์ชันของโค้ดที่ใช้
ไม่ว่าด้วยเหตุผลใดก็ตาม หากคุณยังไม่ได้รับแรงบันดาลใจอย่างสมบูรณ์ หรือคุณเพียงแค่ชอบบรรยากาศและเนื้อหาทั่วไป ลองเข้าไปที่เว็บไซต์สาธิตที่รวดเร็วของเรา basicpitch.io เพื่อทดลองกับโมเดลของเรากับเสียงเพลงใดก็ตามที่คุณให้มา !
basic-pitch
สามารถใช้ได้ผ่าน PyPI หากต้องการติดตั้งเวอร์ชันปัจจุบัน:
pip install basic-pitch
หากต้องการอัปเดต Basic Pitch เป็นเวอร์ชันล่าสุด ให้เพิ่ม --upgrade
ลงในคำสั่งด้านบน
Basic Pitch มาพร้อมกับโมเดล TensorFlow ดั้งเดิมและโมเดล TensorFlow ที่แปลงเป็น CoreML, TensorFlowLite และ ONNX ตามค่าเริ่มต้น Basic Pitch จะ ไม่ ติดตั้ง TensorFlow เป็นการพึ่งพา เว้นแต่คุณจะใช้ Python>=3.11 ตามค่าเริ่มต้น CoreML จะถูกติดตั้งบน MacOS, TensorFlowLite จะถูกติดตั้งบน Linux และ ONNX จะถูกติดตั้งบน Windows แทน หากคุณต้องการติดตั้ง TensorFlow พร้อมกับรันไทม์การอนุมานโมเดลเริ่มต้น คุณสามารถติดตั้ง TensorFlow ผ่านทาง pip install basic-pitch[tf]
ตามค่าเริ่มต้น 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
เพื่อบันทึกการแสดงเสียง .wav
ของไฟล์ MIDI เพิ่มเติม--save-model-outputs
เพื่อบันทึกเอาต์พุตโมเดล Raw เพิ่มเติมเป็นไฟล์ 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
คือข้อมูล MIDI ที่คัดลอกมาจาก model_output
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 สำหรับการพัฒนา basic-pitch เวอร์ชัน VST ที่ใช้งานได้นี้! - https://github.com/DamRsn/NeuralNote
ยินดีสนับสนุนการมีส่วนร่วมใน basic-pitch
! ดู CONTRIBUTING.md สำหรับรายละเอียด
basic-pitch
เป็นลิขสิทธิ์ 2022 Spotify AB
ซอฟต์แวร์นี้ได้รับอนุญาตภายใต้ Apache License เวอร์ชัน 2.0 ("ใบอนุญาต Apache") คุณสามารถเลือกใบอนุญาตอย่างใดอย่างหนึ่งเพื่อควบคุมการใช้งานซอฟต์แวร์นี้ได้เฉพาะภายใต้เงื่อนไขที่คุณยอมรับข้อกำหนดทั้งหมดของใบอนุญาต Apache อย่างใดอย่างหนึ่ง
คุณอาจได้รับสำเนาของ Apache License ได้ที่:
http://www.apache.org/licenses/LICENSE-2.0
เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ที่เผยแพร่ภายใต้ Apache License หรือ GPL License จะถูกแจกจ่าย "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาต Apache สำหรับภาษาเฉพาะที่ควบคุมสิทธิ์และข้อจำกัดภายใต้ใบอนุญาต Apache