2009-03-30 9 views
16

संगीत फ़ाइल को देखते हुए, क्या हर उपकरण को विभाजित करना संभव है? अर्थात। मान लें कि मेरे पास कुछ Song.mp3 है, और उस गीत में वोकल्स, गिटार, बास और ड्रम हैं। मैं 4 "ट्रैक" प्राप्त करना चाहता हूं - प्रत्येक विशिष्ट उपकरण के लिए एक।संगीत फ़ाइल में विशिष्ट उपकरण

मेरा अनुमान है कि यह है कि यह ऐसा करने के लिए, यह देखते हुए कि उपकरणों ओवरलैप कर सकते हैं लगभग असंभव है, और यह भेद करने के लिए ओवरलैपिंग आवाज अकेले उपकरणों जाने बेहद मुश्किल है।

हालांकि एक पुस्तकालय, या एक एल्गोरिदम है, या ऐसा करने का कुछ तरीका है, मैं यह सुनकर उत्सुक हूं कि कैसे।

+0

यह एक कठिन समस्या है! मुझे नहीं लगता कि सॉफ्टवेयर मौजूद है जो मिश्रित रिकॉर्डिंग में कौन से नोट्स बजाए जा रहे हैं, स्वचालित रूप से विश्वसनीय रूप से पहचान सकते हैं, अकेले ट्रैक को अलग-अलग ट्रैक में छोड़ दें। – Miles

+0

-no-anser --- क्या आपने अपनी समस्या हल की है? आप किस पर काम कर रहे हैं? क्या हमारे पास ओवरलैप – relascope

उत्तर

27

मेरे स्नातक परियोजना एक MIDI फ़ाइल के लिए WAV फ़ाइल से नोटों के लिप्यंतरण के साथ निपटा। हमने एक उपकरण के केवल साधारण मामले को संभाला, संभवतः एक समय में एक से अधिक नोट खेलना (उदाहरण के लिए एक पियानो)। शुरू करने से पहले इस विषय में हमारे शोध से पता चला कि यह (यानी केवल एक उपकरण) गैर-तुच्छ माना जाता है। असल में, समस्या यह है:

  • यह पता लगाएं कि किसी भी समय आवृत्तियों क्या खेल रहे हैं। यह एक समय में छोटी खिड़कियों के डीएफटी/एफएफटी द्वारा किया जा सकता है।
  • अनुमान लगाना जो आवृत्तियों एक ही नोट के harmonies हैं कुछ अनुमान का उपयोग करें, और जो विभिन्न नोट्स के हैं। यह आसान हो सकता है यदि आप जानते हैं कि कौन सा उपकरण चल रहा है, लेकिन सामान्य मामले में यह मुश्किल है, क्योंकि प्रत्येक सद्भाव की परिमाण उपकरण से भिन्न होती है। उदाहरण के लिए, आपके पास एक उपकरण से दो सीएस एक ऑक्टेट हो सकता है, या आपके पास एक सी हो सकता है लेकिन एक अलग उपकरण से।
  • आपको पता है कि प्रत्येक बार कौन से नोट खेल रहे हैं, आपको अनुमान लगाना होगा कि जब आप नोट्स में ब्रेक लेते हैं। आपके पास एक लंबा नोट या लघु नोट्स की एक श्रृंखला हो सकती है। प्रारंभिक डीएफटी के लिए उपयोग की जाने वाली खिड़कियों के आकार के आधार पर, आप यहां अलग-अलग परिणाम प्राप्त कर सकते हैं।

अब, अगर आप एक समय में एक से अधिक साधन है, और कोई दो एक समय में उसके एक ही नोट या harmonies खेल रहे हैं, तो आप पर कुछ अनुमानी का उपयोग कर अलग उपकरणों बताने के लिए सक्षम हो सकता है सामंजस्य की सीमाएं या नोट्स के अनुक्रमों पर वे खेल रहे हैं। सबसे अधिक संभावना है कि ऐसे समय होंगे जब दो यंत्र एक ही नोट खेल रहे हों। तब आपके पास यह तय करने का कोई तरीका नहीं है कि कोई (ए) एक यंत्र बजाने वाला यंत्र है, (बी) एक ही मात्रा में खेल रहे दो यंत्र, (सी) एक नरम खेल रहा है और दूसरा जोर से खेल रहा है या (डी) कोई भी इसका संयोजन

वैसे भी, यह हल करने में समस्याओं की छोटी सूची है। मुझे किसी भी एल्गोरिदम के बारे में पता नहीं है जो सामान्य मामले में इसे हल करता है। मुझे नहीं लगता कि यह समस्या अभी तक हल हो गई है।

संपादित करें: मेरे परियोजना प्रस्तुति http://www-sipl.technion.ac.il/new/Archive/Special_Events/sipl2004/Projects_PowerPoint/WAV-to-MIDI.pdf

+0

समस्या का अच्छा विवरण, बीटीडब्ल्यू। – dmckee

+0

दिलचस्प उत्तर के लिए धन्यवाद। मैं इसे स्वीकार किए गए उत्तर के रूप में चिह्नित करने जा रहा हूं हालांकि यह तकनीकी रूप से समस्या को हल नहीं करता है, यह विचार के लिए कुछ बहुत ही रोचक भोजन प्रदान करता है। धन्यवाद! :) – FreeMemory

+0

मुझे लगता है कि आपने "सद्भावना" शब्द का उपयोग किया था जहां आप "हार्मोनिक" का उपयोग करना चाहते थे। – Mud

1

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

2

प्रत्येक उपकरण में एक विशेषता नकली उत्तेजना होती है, इसलिए यदि आप एकल नोट्स (डीएफटी/एफएफटी के साथ) अलग करते हैं और उस समय अन्य आवृत्तियों की तुलना करते हैं, तो आप कम से कम विभिन्न प्रकार के उपकरणों को अलग कर सकते हैं।

+0

हो सकता है मुझे नहीं लगता कि आप केवल डीएफटी के साथ बहुत दूर होंगे, लेकिन यह एकमात्र ऐसा उत्तर है जिसे मैं अब तक दूरस्थ रूप से सही मानता हूं। अलग-अलग उपकरणों को अलग करना वास्तव में एक कठिन सिग्नल प्रोसेसिंग कार्य है। आपके पास कुछ आवृत्तियों को अलग-अलग आवृत्तियों को चुनना पड़ सकता है, लेकिन यह है। –

+1

डीएफटी/एफएफटी में बास नोट्स को अलग करने के लिए पर्याप्त रिज़ॉल्यूशन नहीं है जबतक कि आप अपनी एफएफटी विंडो * बहुत * बड़ी नहीं बनाते। और यह एक ही समय में खेले गए विभिन्न नोटों के हार्मोनिक्स को अलग करने के लिए कोई जादू नहीं करता है। –

+0

इस तरह से अधिक निश्चितता प्राप्त करने के लिए कठिन, विशेष रूप से वास्तविक उपकरणों की रिकॉर्डिंग के साथ (संश्लेषित सिग्नल के विपरीत), लेकिन यह एक साफ ट्रैक जैसा लगता है यदि आपको * एक ट्रैक को अलग करने की कोशिश करनी चाहिए। आसान नहीं है। – dmckee

-1

एमपी 3 एक हानिकारक प्रारूप है। यह किसी व्यक्ति की ध्वनिक प्रतिक्रिया को मॉडलिंग करके और जानकारी को फेंक कर काम करता है जो यह मानता है कि कोई व्यक्ति नहीं सुन सकता है। संक्षेप में संक्षेप में वाद्य यंत्र जो नरम उपकरणों को ढंकते हैं - नरम व्यक्ति को छिड़क दिया जाता है। इसका मतलब यह है कि आप कभी भी एमपी 3 में जो मूल रूप से गए थे, उसे निकालने में सक्षम नहीं होंगे।

मैं एक दोस्त है जो एक ध्वनि इंजीनियर है और वह हमेशा लोग हैं, जो उसे एक ट्रैक एक एमपी 3 के रूप में दर्ज फिर से इंजीनियर पूछने के लिए कहने के लिए "नहीं" है।

कुछ हफ्ते पहले मैं एक अध्ययन में सुझाव दिया है कि युवा पीढ़ी को वास्तव में और अधिक पूर्ण प्रारूपों से अधिक एमपी 3 के की आवाज को प्राथमिकता के रूप में है कि क्या वे के साथ बड़े हुए देखा।

+0

मैं ओजीजी जैसे गैर-हानि रहित प्रारूप के लिए बसने के इच्छुक हूं। अनिवार्य रूप से: किसी भी व्यापक रूप से उपलब्ध प्रारूप। – FreeMemory

+0

तब मैं tsttenner के दृष्टिकोण का सुझाव दे रहा था। समय डोमेन में संगीत प्राप्त करें, आवृत्ति डोमेन में कनवर्ट करें, आवृत्तियों के बैंड के लिए स्कैन करें और फिर अलग-अलग उपकरणों द्वारा उत्पादित नोट्स के साथ प्रयास करें और उन्हें मिलान करें। मुझे एक शोध स्तर परियोजना की तरह लगता है! –

0

लंबी कहानी कम: आप यदि आपके चार उपकरणों शुद्ध साइन-तरंगों खेलने सिंथेसाइज़र हैं को छोड़कर नहीं कर सकते।

+0

शुद्ध साइन लहरें (सैद्धांतिक रूप से) आवश्यक नहीं हैं। आपको प्रत्येक उपकरण के लिए * रैखिक रूप से स्वतंत्र * हार्मोनिक्स के वितरण को अवश्य जानना चाहिए। और आपके पास प्रत्येक नोट पर पर्याप्त डेटा होना चाहिए, जो कुछ बाधाओं को रखता है कि कितना जटिल और समान वितरण हो सकता है। – dmckee

8

मैं वास्तव में एक बहुत ही दिलचस्प ICA (स्वतंत्र घटक विश्लेषण) कहा जाता एल्गोरिथ्म टकरा है पर पाया जा सकता। इस एल्गोरिदम के पीछे की अवधारणा सिग्नल प्रोसेसिंग दुनिया से नहीं आती है, लेकिन संभाव्य सिद्धांतों से। हमने इसे दो गाने को अलग करने के लिए उपयोग किया जो एकल एमपी 3 फ़ाइल में मिश्रित थे। आप Matlab \ C++ \ Python में FastICA here नामक कार्यान्वयन लाइब्रेरी पा सकते हैं। इसे एक शॉट दें यह वास्तव में अच्छा है।

+0

अधिक सीधे, 'sklearn' में एक कार्यान्वयन है (देखें [यहां] (http://scikit-learn.org/dev/auto_examples/decomposition/plot_ica_blind_source_separation.html)) – MichaelChirico

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