2010-01-24 17 views
8

मैं इस क्षेत्र में नया हूं - लेकिन मुझे जावा में WAV-to-MIDI रूपांतरण करने की आवश्यकता है। क्या यह जानने का कोई तरीका है कि WAV-to-MIDI रूपांतरण में क्या कदम शामिल हैं? मेरे पास एक बहुत ही अजीब विचार है जैसा आपको चाहिए; वाव फ़ाइल का नमूना लें, इसे फ़िल्टर करें, स्पेक्ट्रल विश्लेषण के लिए एफएफटी का उपयोग करें, फीचर निष्कर्षण करें और फिर निकाली गई सुविधाओं को MIDI पर लिखें। लेकिन मुझे ठोस स्रोत या कागजात नहीं मिल रहे हैं जैसे कि यह सब कैसे करें? क्या कोई मुझे संकेत दे सकता है कि कैसे और कहां से शुरू किया जाए? क्या इस डब्ल्यूएवी-टू-एमआईडीआई रूपांतरण प्रक्रिया के लिए कोई ओपन सोर्स एपीआई उपलब्ध है?wav-to-midi रूपांतरण

अग्रिम धन्यवाद

+0

चेक इस रूप में अच्छी तरह http://stackoverflow.com/questions/1628071/programmatically-listening-to-sound-signal-processing/1628241#1628241 –

+0

[wav के संभावित डुप्लिकेट मिडी रूपांतरण के लिए] (http://stackoverflow.com/questions/1897023/wav-to-midi-conversion) – finnw

उत्तर

26

यह कल्पना करने की तुलना में एक अधिक शामिल प्रक्रिया है।

इस शोध समस्या अक्सर कहा जाता है संगीत प्रतिलेखन के रूप में: इस तरह के मिडी या यहाँ तक कि शीट संगीत के रूप में एक उच्च स्तरीय प्रतिनिधित्व में संगीत (जैसे, तरंग) के एक निम्न स्तर के प्रतिनिधित्व में परिवर्तित करने का काम करते हैं।

आपके समाधान का परिष्कार आपके इनपुट डेटा की जटिलता पर निर्भर करेगा। शोध पत्रों के टोन केवल मोनोफोनिक पियानो या ड्रम पर संगीत प्रतिलेखन को संबोधित करते हैं ... क्योंकि वे प्रतिलेखन करना आसान होते हैं। (अपेक्षाकृत।) वायलिन कठिन है। आवाज भी कठिन है। व्हायोलिन प्लस वॉयस प्लस पियानो बहुत कठिन है। एक सिम्फनी लगभग असंभव है। आपको चित्र मिल जाएगा।

  1. (बहु) पिच आकलन
  2. साधन मान्यता, timbral मॉडलिंग
  3. ताल का पता लगाने
  4. टिप्पणी शुरुआत/ऑफसेट का पता लगाने:

    संगीत प्रतिलेखन के मूल तत्वों निम्नलिखित ओवरलैप होने वाले क्षेत्रों में से किसी को शामिल करना

  5. फॉर्म/संरचना मॉडलिंग

Google विद्वान या आईएसएमआईआर कार्यवाही से "संगीत प्रतिलेखन" पर कागजात खोजें: http://www.ismir.net। यदि आप उपर्युक्त उप-विषयों में से एक में अधिक रुचि रखते हैं, तो मैं आपको आगे बता सकता हूं। सौभाग्य।

संपादित करें: ऐसा कहा जा रहा है कि मौजूदा समाधान हैं जो हम सभी को वेब पर पा सकते हैं। उन्हें आज़माने के लिए स्वतंत्र महसूस करें। लेकिन जैसा कि आप करते हैं, उन्हें गंभीर आंख और कान के साथ मूल्यांकन करें। किस तरह के ऑडियो सिग्नल ट्रांसक्रिप्शन विफल होने का कारण बनेंगे?

संपादित 2: आह, आप केवल पियानो के लिए ऐसा कर रहे हैं। ठीक है, यह करने योग्य है। संगीत प्रतिलेख उस बिंदु तक उन्नत हो गया है जहां यह मोनोफोनिक पियानो को अच्छी तरह से ट्रांसक्रिप्ट कर सकता है। एक Rachmaninov concerto अभी भी समस्याएं पैदा करेगा।

हमारी सिफारिशें आपके अंतिम लक्ष्य पर निर्भर करती हैं। आप "को की आवश्यकता है ... जावा में।" तो ऐसा लगता है कि आप बस कुछ काम करना चाहते हैं चाहे वह आपको वहां कैसे पहुंचाए। उस स्थिति में, मैं दूसरों के साथ 100% सहमत हूं: मौजूद कुछ का उपयोग करें।

यह वास्तव में एक दिलचस्प सवाल है; मुझे पता है कि सभी एमआईआर पुस्तकालय आमतौर पर सी/सी ++/पायथन/Matlab हैं। लेकिन जावा नहीं। इकोनेस्ट में जावा एपीआई है, लेकिन मुझे नहीं लगता कि यह नोट-लेवल ट्रांसक्रिप्शन करता है। http://developer.echonest.com। (संपादित करें: यह नोट-स्तरीय प्रतिलेखन करता है। लौटाए गए डेटा में पिच, टिम्बर, बीट, टैटम और बहुत कुछ शामिल है।लेकिन मुझे लगता है कि पॉलीफोनी अभी भी एक समस्या है।)

ओह, मर्सिया जावा-आधारित है। ठंडा। मैंने सोचा कि यह सिर्फ सी ++ था। http://marsyas.info/ मैं इसकी अनुशंसा करता हूं। यह एमआईआर के प्रोफेसर जॉर्ज तंजानेकाइस द्वारा विकसित किया गया है। यह संकेत-स्तर विश्लेषण करता है और यह एक अच्छा विकल्प होना चाहिए।

अब, यदि यह एक मजेदार सीखने के अनुभव के लिए है, तो मुझे लगता है कि आप जावा में ध्वनि मैनिपुलेशन यूटिलिटीज का उपयोग डब्ल्यूएवी सिग्नल के साथ प्रयोग करने के लिए कर सकते हैं और देखें कि क्या आता है।

संपादित करें: यह पृष्ठ MIR सॉफ्टवेयर बेहतर वर्णन करता है की तुलना में मैं कर सकते हैं: The Tools We Use

मैटलैब के लिए, आप MIR Toolbox

में रुचि हो सकती यहाँ आम डेटासेट का एक अच्छा पृष्ठ है: MIR Datasets

+0

सलाह स्टीव के लिए धन्यवाद। मैं केवल पियानो प्रदर्शन के लिए wav-to-midi पर योजना बना रहा हूं।मैंने सोचा कि संगीत प्रतिलेख केवल डिजिटल संगीत स्कोर उत्पन्न कर रहा है-मुझे सुधारने के लिए धन्यवाद। मुझे एक संगीत टुकड़ा का एक पियानो बजाना रिकॉर्ड करना है और इसमें से मिडी फ़ाइल (Wav फ़ाइल से iewrite midi फ़ाइल) उत्पन्न करना है, पिच, गतिशीलता, समय, ताल, phrasings, टन, articulation आदि से अधिकांश संगीत सुविधाओं को कैप्चर करना। प्रसंस्करण के लिए इस्तेमाल किया जाना है। मिडी से सीधे इन्हें कैप्चर करना संभव है, लेकिन WAV से मैं नहीं कह सकता कि कहां से शुरू करना है। मुझे उन क्षेत्रों पर शोध करना होगा जिन्हें आपने पहले कहा था - धन्यवाद स्टीव – Dolphin

+0

क्या मुझे इस प्रक्रिया के लिए मैटलैब का उपयोग करना है और जावा के साथ एकीकृत करना है? अग्रिम धन्यवाद स्टीव। आपने वास्तव में बड़ी तस्वीर पेंट की है। – Dolphin

+1

आपका स्वागत है। मूल पोस्ट में टिप्पणियों के प्रति मेरी प्रतिक्रिया देखें। –

4

यह क्षेत्र में नए होने के लिए एक बहुत बड़ा उपक्रम है, जब तक कि आप का मतलब यह न हो कि आप सामान्य रूप से सिग्नल विश्लेषण और फीचर डिटेक्शन से परिचित हैं और अधिक विशेष रूप से स्वचालित ट्रांसक्रिप्शन में देखना चाहते हैं।

एमआईडीआई रूपांतरण के लिए डब्ल्यूएवी के लिए कोई एपीआई नहीं है। Vamp फीचर निष्कर्षण प्लगइन के लिए एक ढांचा है, लेकिन स्वचालित ट्रांसक्रिप्शन करने के लिए आपको मौजूदा प्लगइन की सभी कार्यक्षमताओं का उपयोग करने की आवश्यकता होगी, साथ ही उनमें से किसी में मौजूद कार्यक्षमता को लागू करने की आवश्यकता होगी।

the vamp download page पर प्लगइन्स के विवरणों के माध्यम से ब्राउज़ करें, जो भी वर्णन आप समझ में नहीं आ रहे हैं वे विषय हैं जिन्हें आप शोध करना शुरू कर सकते हैं यदि आप ऐसा करना चाहते हैं।

+0

सुझाव स्मिथ के लिए धन्यवाद। कम से कम अब मुझे पता है कि एपीआई की तलाश करने का कोई मतलब नहीं है जो ऐसा करता है। क्या आप जावा कोड के साथ प्लग-इन का उपयोग कर सकते हैं? फ़ीचर निष्कर्षण - क्या मुझे एल्गोरिदम का उपयोग करना है? सिर्फ इसलिए कि मैं एक एल्गोरिदम जानता हूं कि मैं इसे कोड में कैसे डाल सकता हूं? क्या मुझे मैटलैब का उपयोग करना होगा और एक भाषा (जावा कहें) के साथ एकीकृत करना होगा? क्या आप कृपया मुझे एक तस्वीर दे सकते हैं? धन्यवाद फिर स्मिथ – Dolphin

+1

वैंप सी, सी ++ का उपयोग करता है। क्या कोई जावा प्लगइन्स और ऐसे संसाधन नहीं हैं? यह सबसे उपयोगी होगा। जावा कोड में प्लग-इन का उपयोग कैसे कर सकते हैं? अग्रिम धन्यवाद – Dolphin

+1

जावा अक्सर सिग्नल प्रोसेसिंग/विश्लेषण में नहीं देखा जाता है क्योंकि यह अपेक्षाकृत सीपीयू गहन है, और जब तक हाल ही में हार्डवेयर स्वीकार्य गति पर जावा में इस तरह की चीज करने के लिए पर्याप्त तेज़ नहीं था। ऐसा लगता है जैसे स्टीव को एक अच्छा सीसा मिला। उच्च स्तर के दृष्टिकोण के लिए सीएसएंड http://csounds.com/ जैसे पर्यावरण का उपयोग करने की संभावना भी है जो ध्वनि स्मृति को संश्लेषित करने और विश्लेषण करने के लिए बड़ी संख्या में उपकरण प्रदान करता है, जिसमें स्पष्ट स्मृति आवंटन और मुफ्त के बारे में कम चिंता होती है सी –

3

यदि आपको इस कार्य को स्वचालित करने की आवश्यकता नहीं है (यानी, ऐसी वेबसाइट के लिए जहां लोग एमपी 3 अपलोड कर सकते हैं और MIDI फ़ाइलों को वापस प्राप्त कर सकते हैं), तो आपको Melodyne जैसे टूल का उपयोग करने पर विचार करना चाहिए जो इसे पहले से ही काफी अच्छा है। स्टीव ने नोट किया, यह पूरा करने के लिए एक बहुत ही कठिन काम है, और इस समय मौजूद सर्वश्रेष्ठ एल्गोरिदम और समाधान भी 100% विश्वसनीय नहीं हैं।

तो यदि आप स्टूडियो काम कर रहे हैं और कुछ रूपांतरण करने की ज़रूरत है, तो शायद यह आपको इस कार्य के लिए पहले से डिज़ाइन किए गए टूल का उपयोग करने के लिए थोड़ा सा समय (और बहुत सी सिरदर्द) बचाएगा।

1

डॉल्फिन, ब्रूस होने के लिए खेद है, लेकिन आपने समस्या को पूरी तरह से कम करके आंका है। आप जो हासिल करना चाहते हैं - एक पूर्ण पियानो ध्वनि प्रतिलेख जिसमें खेल के दौरान उपयोग किए जाने वाले सभी मापदंडों को शामिल किया गया है, उन लोगों के साथ बहुत अधिक शोध की आवश्यकता होगी जिन्होंने कई वर्षों तक इस क्षेत्र में काम किया है। सिग्नल प्रोसेसिंग में पीएचडी के एक समूह को भी आपके काम के करीब आने के लिए बहुत सारे काम निवेश करना होगा। संगीत प्रतिलेखन को दशकों के काम की भी आवश्यकता है ताकि आधा रास्ते भरोसेमंद भी काम किया जा सके। मेरा सुझाव है कि आप एक अलग समस्या चुनते हैं जिसे आप इससे बेहतर प्रबंधन कर सकते हैं।

1

यह एक ऐसा क्षेत्र है जो अभी भी विकास में बहुत अधिक है, फिर भी, कुछ (प्रयोगात्मक) एल्गोरिदम उपलब्ध हैं।

आप सोनिक एनोटेटर इंस्टॉल कर सकते हैं और कुछ वैंप प्लगइन्स का उपयोग कर सकते हैं।

उदाहरण के लिए:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi 

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi 

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi 
संबंधित मुद्दे