वॉयस ओनली रिकॉर्डिंग में कहां गायन शुरू होता है, इसकी पहचान करें


14

मेरे पास थोड़ा कराओके-शैली वाला ऐप है जहां एक उपयोगकर्ता एक गीत के 4 पंक्तियों को गाता है, जिसमें प्रत्येक पंक्ति के बीच एक दूसरा अंतर होता है। कोई बैकिंग संगीत नहीं है, इसलिए यह केवल आवाज है, उम्मीद है कि समस्या को हल करना आसान है।

मैं सबसे मजबूत तरीके की तलाश कर रहा हूं ताकि यह पता लगाया जा सके कि मेरी रिकॉर्डिंग में उपयोगकर्ता लाइन 1 गाना शुरू करता है और समाप्त होता है, गायन लाइन 2 समाप्त होता है, आदि।

मैंने एक सरल-मन के एल्गोरिथ्म के साथ मिलकर काम किया है जो रिकॉर्डिंग में बहुत कम पृष्ठभूमि शोर होता है (जैसे कि ऐसा होता है?), लेकिन यह सबसे छोटे शोर की उपस्थिति में टुकड़ों तक गिर जाता है।

क्या कोई मुझे और मजबूत होने की ओर इशारा कर सकता है?


मेरा उत्तर आपकी मदद कर सकता है - dsp.stackexchange.com/a/1543/440
मेहता

कुछ रिकॉर्डिंग में आवाज एकमात्र ऐसा साधन है जो दोनों चैनलों में समान आयाम के साथ बजाया जाता है। आप स्टीरियो रिकॉर्डिंग से आवाज निकालने के लिए इस जानकारी का उपयोग कर सकते हैं।
जादेर डायस

जवाबों:


4

यदि पृष्ठभूमि शोर सफेद-ईश है, तो आप वर्णक्रमीय सपाटता को माप सकते हैं और इसे ध्वनि मान सकते हैं जब आयाम कुछ सीमा से ऊपर है और वर्णक्रमीय सपाटता कुछ सीमा से नीचे है।

मूल रूप से आप सिर्फ सिग्नल के एक कूबड़ का FFT लेते हैं, फिर अंकगणितीय माध्य द्वारा स्पेक्ट्रम के परिमाण के ज्यामितीय माध्य को विभाजित करते हैं।

आप केवल आवृत्ति क्षेत्रों पर जोर देने के लिए एक बैंड-पास फिल्टर का उपयोग कर सकते हैं जहां मानव आवाज आमतौर पर बैठती है (वर्णक्रमीय सपाटता को मापने से पहले FFT के अवांछित क्षेत्रों को 0 पर सेट करने के रूप में सरल है)


एंडोलिथ, आपके अनुभव में, यदि आप वर्णक्रमीय सपाटता को मापने से पहले सिर्फ परिमाण को बढ़ाते हैं, तो क्या इससे बड़ा फर्क पड़ता है?
स्पेसी

@ मोहम्मद: मुझे इसके साथ कोई अनुभव नहीं है। :) मैंने एक पिछला प्रश्न पूछा क्योंकि मुझे युक्ति समझ में नहीं आई, और मुझे अभी भी यकीन नहीं है कि कौन सा तरीका सही है। मुझे नहीं लगता कि चौकोर कोई व्यावहारिक अंतर बनाता है, हालांकि। यदि आप केवल थ्रेशोल्ड पास करते समय ट्रिगर कर रहे हैं, तो यह पहचान योग्य रूप से प्रतिक्रिया करना चाहिए कि क्या चुकता है या नहीं (मान लें कि आप थ्रेशोल्ड को मिलान करने के लिए समायोजित करते हैं), इसलिए परिमाण केवल कम्प्यूटेशनल रूप से सस्ता है।
एंडोलिथ

@ इंडोलिथ, यह एक लंबा शॉट है: क्या आप जानते हैं कि मैटलैब में इस दृष्टिकोण को कैसे लागू किया जाए? मैं यहां बताए गए सभी दृष्टिकोणों का परीक्षण करना चाहता हूं कि वास्तव में मैटलैब (सप्तक) कौन सा है?
माइक होगन

@ माइक हॉगन: नहीं, मैंने लंबे समय में मैटलैब का इस्तेमाल नहीं किया है। : / इसके अलावा वास्तविक काम करने की आवश्यकता होगी। :) मेरे पास पहले से लिखा हुआ कुछ भी नहीं है। सिग्नल को छोटे-छोटे हिस्सों में तोड़ें, हर एक का FFT करें, और प्रत्येक FFT के लिए, परिमाण के अंकगणितीय माध्य से ज्यामितीय माध्य को विभाजित करें। उच्च संख्या शोर कर रहे हैं, कम संख्या टनल हैं।
एंडोलिथ

3

मैंने अतीत में स्पेक्ट्रल-फ्लक्स का उपयोग किया है और यह अच्छी तरह से काम करता है। मूल विचार यह है कि आप जिस बैंड के बारे में परवाह करते हैं, उसके संकेत का एक स्पेक्ट्रोग्राम बनाएं। हमें मान लें कि आपकी आवृत्ति y- अक्ष पर है, और आपका समय x- अक्ष पर है, जैसे

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

अब, बस कॉलम का अंतर लें। यही है, एक कॉलम लें, और उसके पहले कॉलम से खुद को घटाएं, और सभी कॉलमों के लिए करें। (स्पष्ट रूप से प्रारंभ कॉलम छोड़कर)। फिर सभी बैंड में योग करें। यही है, बस सभी पंक्तियों को एक साथ जोड़ दें।

आप एक 1-डी सिग्नल के साथ समाप्त होंगे जो आपके सिग्नल ऑनसेट को संहिताबद्ध करता है । इससे आपको पता चल जाएगा कि आपकी आवाज कहां से शुरू होती है।

संपादित करें:

अब जब आपने ऑनसेट का पता लगा लिया है, यदि आप इसके विपरीत का पता लगाना चाहते हैं, (अर्थात, जब कोई सिग्नल गतिविधि से कोई भी नहीं जाता है), तो स्पेक्ट्रल फ्लक्स वास्तव में आपको यह जानकारी देता है। जब भी आप एक शुरुआत करते हैं, तो आपके पास एक सकारात्मक शिखर होगा, और जहां भी आपके पास एक 'डिसेट' (बेहतर शब्द की कमी) है, तो आपके पास एक नकारात्मक शिखर होगा।

मैं अपने संकेत के कुल प्रारंभ और समय को रोकने के लिए पहला सकारात्मक शिखर, और अंतिम नकारात्मक चोटी ले जाऊंगा।


मोहम्मद, आप "पंक्ति" से क्या मतलब है?
माइक होगन

@ मायकेहोगन कृपया मेरे संपादन देखें, मैंने उत्तर को फिर से लिखा।
स्पेसी

हालांकि यह किसी भी चीज़ के ऑनसेट नहीं मिलेंगे? ड्रम हिट या अन्य आवेगी शोर का भी पता लगाया जाएगा। यह टोनल ध्वनियों और शोर ध्वनियों के बीच अंतर नहीं करता है।
endolith

@endolith आप एक अच्छी बात उठाते हैं - हालाँकि मेरा मानना ​​है कि यह अभी भी काम कर सकता है। मेरा तर्क यह है कि इस परिदृश्य में, आप या तो ध्वनि + संगीत अवस्था में हैं, या केवल संगीत अवस्था में हैं। वर्णक्रमीय प्रवाह की गणना करते समय, आप वास्तव में आवाज + संगीत और सिर्फ संगीत के बीच डेल्टा की गणना कर रहे हैं। (निश्चित रूप से मुझे इसे और अधिक विश्लेषण करने की आवश्यकता होगी, लेकिन मैं इसे अभी कैसे सोचता हूं) :-P
Spacey

1
@endolith मैं बस फिर से पढ़ता हूं और ओपी कह रहा है कि केवल आवाज है, (जाहिर है कि यह एक साधारण ऐप है), इसलिए इस मामले में यह सिर्फ वीएस कुछ भी नहीं होगा।
स्पेसी

2

अपने अनुभव से मैं मेल-फ़्रीक्वेंसी-सीफ़स्ट्रम-गुणांक (एमएफसीसी) में देखने की कोशिश करूंगा । यदि आपके पास एफएफटी उपलब्ध है तो एमएफसीसी को लागू करना काफी आसान है और इसका उपयोग आमतौर पर आवाज प्रसंस्करण में किया जाता है।

एमएफसीसी के साथ, आपको वास्तविक आवाज डेटा को शोर से अलग करने में सक्षम होना चाहिए।


@endolith, वह लिंक मेरे से पूरी तरह परे है! क्या आप किसी भी खुले स्रोत कार्यान्वयन के बारे में जानते हैं जो मैं देख सकता हूं, या यह कैसे काम करता है के चरण नुस्खा द्वारा एक और कदम?
माइक होगन

2

" स्पेक्ट्रल फ्लक्स " ("वर्णक्रमीय अंतर" के रूप में भी जाना जाता है) "शुरुआत का पता लगाने" के लिए एक सामान्य तरीका है। मूल रूप से आप सिग्नल के क्रमिक एफएफटी लेते हैं और एफएफटी बाल्टी के अंतर को अगले एक नमूने से जोड़ते हैं। "ऑनसेट" को आम तौर पर इस मूल्य में पर्याप्त "कूद" द्वारा दर्शाया जाएगा।

अन्य विचारों के लिए Google "शुरुआत का पता लगाना"।


2

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

गायन आमतौर पर एक पिच से युक्त एक संकेत सामग्री का अर्थ है, इसलिए आप एक पिच डिटेक्टर या अनुमानक (cepstrum, आदि) का उपयोग कर सकते हैं। आप पवित्रता को कुल संकेत ऊर्जा बनाम पिच के रूप में ज्ञात ऊर्जा के अंश की जांच कर सकते हैं, और यह कि अनुमानित पिच मानव आवाज की सीमा के भीतर है। यह अनियंत्रित शोर के लिए झूठी सकारात्मक दर को कम करेगा और साथ ही सामान्य स्वर सीमा के बाहर संगीत की आवाज़ भी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.