2013-06-26 11 views
6

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

अब तक मैं wav फाइलों पर परीक्षण किया गया है, FFt on MATLAB का उपयोग कर, लेकिन जब यह वास्तविक समय की बात आती है, तो सिस्टम वास्तव में-वास्तव में तेजी से की जरूरत है।

दृष्टिकोण की किस तरह मैं, बोर्ड की प्रकार इस्तेमाल कर सकते हैं पर कोई सुझाव (मैं Arduino का उपयोग करने का सोचा है)। मैं, इस्तेमाल कर सकते हैं, क्योंकि मैं इसे सीधे सी

को बदलने
+1

+1 दिलचस्प परियोजना, मैं अभी तक संगीत प्रतिलेखन के साथ काम नहीं किया है, लेकिन मेरी राय में आप छोटे-छोटे टुकड़ों में टुकड़ा रिकॉर्ड और उन्हें प्रतिलेख के की आवश्यकता होगी। –

+0

मुझे लगता है कि इस प्रकार का दृष्टिकोण केवल स्टैंड-अलोन नोट्स को ट्रांसक्रिप्ट करने के लिए उपयुक्त होगा। ट्रांसक्रिप्टिंग तार शायद कोई अच्छा नतीजे नहीं लाएंगे। एक मिडी-कीबोर्ड बहुत आसान होगा। –

+0

बहुत ही रोचक परियोजना। क्या आप हमें बता सकते हैं कि आपका वर्तमान एफएफटी-आधारित कार्यान्वयन कितना तेज़ है? मैंने सोचा था कि एफएफटी ओ (एन लॉग (एन)) माना जाता था, जो पहले से ही बहुत तेज है। – Oli

उत्तर

1

कोई सुझाव दृष्टिकोण की किस तरह मैं इस्तेमाल कर सकते हैं पर बजाय मेरी MATLAB code स्थानांतरित करना चाहते हैं, बोर्ड के प्रकार (मैं Arduino का उपयोग करने का सोचा है)। मैं, इस्तेमाल कर सकते हैं, क्योंकि मैं इसे सीधे सी

में परिवर्तित करने के बजाय मेरी MATLAB कोड स्थानांतरित करना चाहते हैं

आप अपने प्रोजेक्ट के विभिन्न दृष्टिकोणों है कि मैं के बारे में सोच सकते हैं कर सकते हैं:

  1. पहले वहाँ कुछ पियानो हैं जिनके पास एक इलेक्ट्रॉनिक डिवाइस है जो वेग और स्थिति के साथ मिडी इंटरफ़ेस के माध्यम से खेले गए नोट्स को आउटपुट कर सकता है। खेला गया नोट ट्रैक करने के लिए यह सबसे सटीक और तेज़ समाधान है, हालांकि बहुत अधिक DIY नहीं है। कंप्यूटर की ओर, आपको केवल मिडी इंटरफ़ेस की आवश्यकता होगी (जिसे आसानी से आर्डिनो का उपयोग करके किया जा सकता है) और एक ऐसा सॉफ़्टवेयर है जो MIDI नोट्स को स्कोर में बदल देता है;
  2. फिर, आप उस व्यवहार की नकल कर सकते हैं, पियानो के कीबोर्ड को सेंसर को तारों से तारित करके जो वेग को मापने में सक्षम होंगे और कौन सा नोट खेला गया है। ऐसी कई रणनीतियां हैं जिनका आप उपयोग कर सकते हैं (यांत्रिकी पर लेजर का उपयोग करके, दबाव स्विच करने के लिए ...), यह सब उस निवेश पर निर्भर करता है जिसे आप तैयार करने के लिए तैयार हैं; वहां एक arduino (मेगा या देय की तरह) एक अच्छा समाधान हो सकता है।
  3. लेकिन जैसा कि आप एफएफटी के बारे में बात कर रहे थे, मुझे लगता है कि आप पियानो द्वारा बनाई गई ध्वनि रिकॉर्ड करना और चाबियाँ पहचानना चाहते हैं। वहां आपने संगीत अनुसंधान पर कला ज्ञान की स्थिति को मारा, आप जिस समस्या को पूरा करेंगे, वह multiple f0 detection inpolyphonic music है, हालांकि strategies specific to piano हैं, यह अभी भी एक बहुत ही सक्रिय शोध क्षेत्र है।
  4. मान लें कि आप केवल ट्रांसक्रिप्शन के लिए मोनोफोनिक पहचान कर रहे हैं। समस्या यह होगी कि Arduino में शामिल एनालॉजिकल-डिजिटल कनवर्टर बस बेकार है, इसकी 10bit की परिभाषा है जो कि कुछ भी उपयोगी खोजने के लिए बहुत कम है। Arduino DUE के साथ, आपके पास थोड़ा और परिभाषा हो सकती है क्योंकि इसमें 16-चैनल 12-बिट 1 एमएसपीएस एडीसी है। जो अभी भी एक अच्छा प्रतिलेखन के लिए ज्यादा नहीं है। तो आपको या तो Linear LTC2383-16 जैसे बाहरी एडीसी का उपयोग करना होगा जो कि 16 बिट 1 एमएसपीएस है और इसमें एक एसपीआई इंटरफेस है, जो खेलना शुरू करने के लिए न्यूनतम है। इसके पीछे आपको सही माइक्रोफ़ोन ढूंढना होगा और एडीसी और माइक्रोफ़ोन के बीच अच्छे इलेक्ट्रॉनिक्स बनाना होगा (जिसे मैं ज्यादा नहीं जानता)।
  5. अंत में, क्या एक छोटा कंप्यूटर (जैसे Beaglebone या रास्पबेरीपीआई 5) लेना आसान नहीं होगा, वास्तव में एक अच्छा यूएसबी एडीसी/साउंड कार्ड प्लग करें, और उस बोर्ड का उपयोग ट्रांसक्रिप्शन के माध्यम से पाइप करने के लिए करें? आप अपने सॉफ़्टवेयर को क्लाउड सर्वर (जैसे Google एपेंगेन या एडब्लूएस) पर भी चला सकते हैं जिसमें आपके मैटलैब को खुशी से चलाने के लिए पर्याप्त प्रोसेसर है।

तो संगीत का एक अच्छा वास्तविक समय और एम्बेडेड ट्रांसक्रिप्शन बनाने के लिए, सबसे अच्छा समाधान पहला समाधान है (या दूसरा यदि आप वास्तव में DIY जाना चाहते हैं)। यदि आप वास्तव में "वायु" इंटरफेस से गुजरना चाहते हैं, तो मुझे लगता है कि अच्छा समाधान पांचवां है।

और आखिरकार, कोड के बारे में, मैं सलाह देता हूं कि आप अपने कोड को मैटलैब से पायथन (यदि आप सी/सी ++ कोड लिखना नहीं चाहते हैं) को कन्वर्ट करने के लिए सलाह देते हैं तो यह काफी तेजी से चल जाएगा। तो आप यह पता लगा सकते हैं कि मैटलैब कितना खराब है, जब मैं आईआरकैम के लिए काम कर रहा था, मैंने एक उपकरण लिखा है जो मैटलैब स्रोत कोड को सी ++ स्रोत कोड में परिवर्तित कर रहा था, और एक बार संकलित परिणाम 40x तेज था।

HTH

संबंधित मुद्दे