11

का उपयोग करके पिच डिटेक्शन मैं संगीत नोट्स के पिच का पता लगाने के लिए एएनएन का उपयोग करने की कोशिश कर रहा हूं। नेटवर्क एक साधारण दो-परत एमएलपी है, जिसका इनपुट मूल रूप से एक डीएफटी (औसत और लॉगरिदमिक रूप से वितरित) होता है, और 12 आउटपुट एक विशेष ऑक्टेट के 12 नोटों के अनुरूप होते हैं।तंत्रिका नेटवर्क

नेटवर्क को कुछ उपकरण (एक समय में एक नोट) और "चुप्पी" के कुछ नमूने द्वारा खेले गए 12 नोटों के कई नमूने के साथ प्रशिक्षित किया जाता है।

परिणाम वास्तव में अच्छे हैं। नेटवर्क विभिन्न उपकरणों द्वारा सटीक रूप से खेले गए उन नोटों का पता लगाने में सक्षम है, यह ध्वनि के लिए अपेक्षाकृत कमजोर है, और यहां तक ​​कि एक गीत चलाते समय भी पूरी तरह से इसे साफ नहीं करता है।

लक्ष्य, पॉलीफोनिक ध्वनि का पता लगाने में सक्षम होना है। ताकि जब दो या दो से अधिक नोट एक साथ खेला जाए, तो दो संबंधित न्यूरॉन्स आग लग जाएंगे। आश्चर्य की बात यह है कि नेटवर्क वास्तव में कुछ हद तक पहले से ही करता है (केवल मोनोफोनिक नमूनों पर प्रशिक्षित किया जा रहा है), हालांकि मोनोफोनिक नोट्स के मुकाबले कम लगातार और कम सटीक है। मेरा सवाल यह है कि मैं पॉलीफोनिक ध्वनि को पहचानने की अपनी क्षमता को कैसे बढ़ा सकता हूं?

समस्या यह है कि मैं वास्तव में समझ में नहीं आता कि यह वास्तव में क्यों काम करता है। विभिन्न नोट्स (या उनके डीएफटी) मूल रूप से अंतरिक्ष में अलग-अलग बिंदु हैं जिनके लिए नेटवर्क को प्रशिक्षित किया जाता है। इसलिए मैं देखता हूं कि यह समान आवाज़ (आस-पास के बिंदु) को क्यों पहचानता है, लेकिन यह नोट्स के संयोजन के लिए आउटपुट "निष्कर्ष" कैसे नहीं करता है (जो प्रत्येक प्रशिक्षण उदाहरणों से दूर बिंदु बनाते हैं)। वैसे ही एक और नेटवर्क जिसे प्रशिक्षित किया जाता है (0,0) (0,1) (1,0) = (0), "निष्कर्ष निकालने" की अपेक्षा नहीं है (1,1) = (1)।

ब्रूट फोर्स एप्रोच इस नेटवर्क को जितना संभव हो उतने पॉलीफोनिक नमूने के साथ प्रशिक्षित करना है। हालांकि, चूंकि नेटवर्क किसी भी तरह से मोनोफोनिक नमूनों से विचार को समझता है, शायद यहां कुछ और अधिक फायदेमंद है।

कोई बात नहीं? (लंबाई के लिए खेद है, बीटीडब्ल्यू :)।

उत्तर

6

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

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

संयोग से, आप इसके लिए एक तंत्रिका नेटवर्क का उपयोग क्यों करते हैं? ऐसा लगता है कि सिर्फ डीएफटी को देखते हुए और कहें, अधिकतम आवृत्ति लेना आपको बेहतर परिणाम देगा।

+3

बस अधिकतम आवृत्ति लेने बहुत अविश्वसनीय है – finnw

2

मैंने 2 साइन लहरों के बीच अंतर का पता लगाने पर सीटीआरएनएन (सतत समय आवर्ती तंत्रिका नेटवर्क) विकसित करने के साथ प्रयोग किया। मुझे मध्यम सफलता मिली, लेकिन इन न्यूरॉन्स के बैंक (यानी कोचलेर के समान बैंड में) के साथ पालन करने का समय कभी नहीं था।

1

पिच का पता लगाने वाले कोड के छोटे स्निपेट उत्पन्न करने के लिए Genetic Programming (जीपी) को नियोजित करने का एक संभावित दृष्टिकोण होगा। इस तरह आप पिच डिटेक्शन कैसे काम करते हैं, इस बारे में एक नियम उत्पन्न करने में सक्षम होंगे, जो उम्मीद है कि मानव पठनीय होगा।

3

Anssi Klapuri एक अच्छी तरह से सम्मानित ऑडियो शोधकर्ता, जो तंत्रिका नेटवर्क का उपयोग कर पॉलीफोनिक रिकॉर्डिंग पर पिच का पता लगाने प्रदर्शन करने के लिए एक विधि प्रकाशित किया है।

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

https://www.cs.tut.fi/sgn/arg/klap/phd/klap_phd.pdf

पिच जांच पॉलीफोनिक रिकॉर्डिंग पर एक बहुत ही मुश्किल विषय है और कई विवादों में शामिल है - पढ़ने का एक बहुत कुछ करने के लिए तैयार रहना। नीचे दिए गए लिंक एक और दृष्टिकोण पॉलीफोनिक रिकॉर्डिंग जो मैं एक नि: शुल्क एप्लिकेशन PitchScope प्लेयर कहा जाता है के लिए विकसित पर पता लगाने पिच में शामिल है। मेरा सी ++ स्रोत कोड GitHub.com पर उपलब्ध है, और नीचे दिए गए लिंक के भीतर संदर्भित किया गया है। का एक नि: शुल्क निष्पादन योग्य संस्करण पिचस्कोप प्लेयर वेब पर भी उपलब्ध है और विंडोज पर चलता है।

Real time pitch detection

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