पिच निष्कर्षण के लिए एएमडीएफ का उपयोग करते समय कम मौलिक से कैसे निपटें?


11

मैं अर्ध-आवधिक ऑडियो सिग्नल की मौलिक आवृत्ति का अनुमान लगाने के लिए औसत चुंबक अंतर फ़ंक्शन का उपयोग कर रहा हूं । एएमडीएफ को परिभाषित किया गया है

Dn=1Nnk=nN1|SkSkn|

जहां सिग्नल की लंबाई है। यह फ़ंक्शन न्यूनतम दिखाता है जब सिग्नल को इसकी अवधि के बराबर राशि द्वारा स्थानांतरित किया जाता है।N

यह वह कोड है जिसका उपयोग मैं पिच को निकालने के लिए कर रहा हूँ (Matlab में):

 a = amdf(f);
 a = a/max(a);
 [p l] = findpeaks(-a, 'minpeakprominence', 0.6);
 pitch = round(sample_freq/l(1);

हालाँकि, मैं एक ऑडियो सिग्नल के साथ काम कर रहा हूँ जहाँ मूलभूत आवृत्ति बहुत कम है:

ऑडियो सिग्नल का स्पेक्ट्रम

परिणाम के रूप में, एक पिच दोहरीकरण समस्या उत्पन्न होती है: पता चला न्यूनतम संकेत की अवधि के आधे से मेल खाती है (यानी दूसरा टॉनिक):

ऊपर संकेत के AMDF

मैंने सबसे बड़ी चोटी निकालने की कोशिश की और न केवल पहले, बल्कि कभी-कभी यह समस्या बनी हुई है। कम मौलिक से निपटने के लिए मैं अपने कोड और / या AMDF फ़ंक्शन को कैसे सुधार सकता हूं?


मनो-ध्वनिकी और मानवीय धारणा कथित पिच और ओक्टेव अनिश्चितता को प्रभावित करती है। यह निर्धारित करने के लिए प्रयोग की आवश्यकता हो सकती है कि सबसे बड़ी एएमडीएफ चोटी किन परिस्थितियों में एक श्रव्य अंतर बनाती है।
हॉटपावर 2

आपकी आवृत्तियाँ कितनी कम हैं? क्या मेरे सुनने के लिए कोई उदाहरण है?
ederwander

जवाबों:


10

इसे हम पिच-डिटेक्शन बिज़ में " ऑक्टेव प्रॉब्लम " कहते हैं।

सबसे पहले, मैं एएमडीएफ को एएसडीएफ में बदल दूंगा। और जैसे-जैसे लैग बढ़ता जाएगा मैं विंडो का आकार कम नहीं करता। (इसके अलावा, मैं इस धारणा को बदल रहा हूं कि मैं क्या अधिक पारंपरिक मानता हूं। " " एक असतत समय संकेत है।)x[n]

नमूना के पड़ोस में का औसत चुकता अंतर फ़ंक्शन (ASDF) है:x[n]x[n0]

Qx[k,n0]1Nn=0N1(x[n+n0N+k2]  x[n+n0N+k2+k])2

है floor()अगर समारोह और, फिर भी है ।k2=+12=2

अब, वर्ग का विस्तार करें और विचार करें कि योग रूप में क्या दिखते हैं (ऐसा नहीं है कि अनन्तता में जा रहा है, लेकिन यदि बड़ा है तो आपको एक विचार देने के लिए )। ASDF का सीधा संबंध स्वायत्तता से है। यह अनिवार्य रूप से ऑटोक्रेलेशन उल्टा हो गया है। ये कदम मैं तुम्हारे ऊपर छोड़ दूंगा। इस जवाब पर एक नज़र डालें।एनएन एन

इसलिए अब ASDF से परिभाषित इस परिमित-लंबाई " " (नमूना के पड़ोस में ) पर विचार करें:एक्स[n0]

आरएक्स[,n0]=आरएक्स[0,n0]-12क्यूएक्स[,n0]

कहाँ पे

आरएक्स[0,n0]1एनΣn=0एन-1(एक्स[n+n0-एन2])2

चूँकि और सभी lags , इसका मतलब है कि सभी lags ।क्यूएक्स[0,n0]=0क्यूएक्स[,n0]0आरएक्स[,n0]आरएक्स[0,n0]

मान लें कि साथ आवधिक है (और एक पूर्णांक होता है), तबएक्स[n]पीपी

एक्स[n+पी]=एक्स[n]n

और और किसी भी पूर्णांक संख्याओं के लिए ( एक पूर्णांक है)। तो तुम एक चोटी पर प्राप्त और कम से के किसी भी अन्य कई के बराबर अगर आवधिक है। यदि है नहीं पूरी तरह से समय-समय पर, हम क्या उम्मीद कर सकते हैं पर सबसे बड़ी चोटी है पर, एक और शिखर (लेकिन थोड़ा छोटा) के बड़े गुणकों के लिए (अवधि हम देख रहे) और उत्तरोत्तर छोटे चोटियों ।क्यूएक्स[पी,n0]=0आरएक्स[पी,n0]=आरएक्स[0,n0]आरएक्स[,n0]=0पीएक्स[n]एक्स[n]=0=पीपी

तो ऑक्टेव समस्या एक दो कारणों के कारण आती है। सबसे पहले, जरूरी एक पूर्णांक नहीं है। यह एक प्रक्षेप समस्या है, बड़ी बात नहीं है। पी

दूसरा कारण और अधिक कठिन समस्या यह है कि सबमोनोनिक्स है । विचार करें कि आप ए-440 हर्ट्ज पर एक अच्छा आवधिक स्वर सुन रहे हैं और यह ए की तरह लग रहा है जो कि मध्य सी से 9 सेमीिटोन्स ऊपर है। अब मान लीजिए कि कोई व्यक्ति उस टोन में बहुत छोटे आयाम जोड़ता है (जैसे 60 डीबी नीचे) ए -220? यह कैसा लगेगा और गणितीय रूप से "सत्य" अवधि क्या है?


अवधि के लिए "सही" चोटी चुनना ।

मान लें कि आप अपने नोट को डीसी-ब्लॉकिंग फिल्टर के माध्यम से चलाते हैं, ताकि का मतलब शून्य हो। यह पता चलता है कि प्रत्येक लिए का मतलब भी शून्य (या यदि बड़ा है तो इसके करीब ) हो सकता है। इसका मतलब है कि को शून्य से अधिक होने का योग (ओवर ) होना चाहिए जिसका मतलब है कि नीचे शून्य से ऊपर बहुत अधिक क्षेत्र है।एक्स[n]आरएक्स[,n0]n0एनआरएक्स[,n0]

ठीक है, इसलिए आसपास आसपास की शक्ति का प्रतिनिधित्व करता है और गैर-नकारात्मक होना चाहिए। कभी भी से अधिक नहीं होता है लेकिन आवधिक होने पर इसे उतना ही बड़ा कर सकता है। अगर । तो अगर साथ आवधिक है और आपके पास द्वारा अलग-अलग चोटियों का एक गुच्छा है और आपके पास एक विचार है कि उन चोटियों को कितना ऊंचा होना चाहिए। और अगर का DC घटक शून्य है, जिसका अर्थ है कि चोटियों के बीच में, इसका नकारात्मक मान होना चाहिएआरएक्स[0,n0]एक्स[n]n=n0आरएक्स[,n0]आरएक्स[0,n0]एक्स[n]आरएक्स[पी,n0]=आरएक्स[0,n0]एक्स[n+पी]=एक्स[n]एक्स[n]पीपीआरएक्स[,n0]

यदि था "अर्ध आवधिक", में से एक चक्र एक बहुत एक बगल चक्र की तरह दिखाई देगा, लेकिन नहीं इतना का एक चक्र की तरह आगे समय में संकेत नीचे। इसका मतलब है कि पहली चोटी या तीसरी पर दूसरी से अधिक होगी । व्यक्ति हमेशा सर्वोच्च शिखर को चुनने के लिए नियम का उपयोग कर सकता है और उच्चतम चोटी को हमेशा पहले वाले से उम्मीद करता है। लेकिन, अश्रव्य उपशामक होने के कारण, कभी-कभी ऐसा नहीं होता है। कभी-कभी दूसरी या संभवतः तीसरी चोटी ओह-सो-थोड़ा अधिक होती है। इसके अलावा, क्योंकि की संभावना पूर्णांक संख्या के नमूनों की नहीं है, लेकिन मेंएक्स[n]एक्स[n]एक्स[n]आरएक्स[पी,n0]आरएक्स[2पी,n0]आरएक्स[3पी,n0]पीआरएक्स[,n0]हमेशा एक पूर्णांक होता है, इसलिए सही शिखर पूर्णांक मानों के बीच में होगा । यहां तक कि अगर आप को जोड़ के लिए जहां चिकनी चोटी है थे (मेरा सुझाव है जो और द्विघात प्रक्षेप अच्छा पर्याप्त है), और कैसे उच्च यह वास्तव में पूर्णांक के बीच है , अपने प्रक्षेप alg एक चोटी से थोड़ा अधिक या थोड़ा कम की तुलना में यह वास्तव में है बना सकता है। तो सबसे ऊँची चोटी का चुनाव करने से आप पहली चोटी (या वाइस वर्सा) पर दूसरा प्रयोग कर सकते हैं, जब आप वास्तव में दूसरा चाहते थे।

तो किसी भी तरह आप के लिए है बाधा बढ़ाने के चोटियों ताकि पहले शिखर एक है मामूली आप इसे कैसे करते हैं दूसरे से अधिक लाभ, और चौथे (अगले सप्तक नीचे) पर दूसरा, आदि?

आप ऐसा गुणा करके की एक कम समारोह के साथ ताकि कम से शिखर कुछ कारक है, पर एक समान शिखर के सापेक्ष तक कम हो जाता । पता चलता है कि बिजली फ़ंक्शन (घातांक नहीं) ऐसा करता है। इतनी गणनाआरएक्स[,n0]=2पी=पी

-α आरएक्स[,n0]

तो, अगर साथ पूरी तरह से आवधिक थे , और गैर-पूर्णांक लिए प्रक्षेप मुद्दों की अनदेखी कर रहे थे , तोएक्स[n]पीपी

आरएक्स[2पी,n0]=आरएक्स[पी,n0]

परंतु

(2पी)-αआरएक्स[2पी,n0]=(2पी)-αआरएक्स[पी,n0]<पी-αआरएक्स[पी,n0]

वह कारक जिसके द्वारा एक सप्तक की पिच के शिखर को कम किया जाता है, वह अनुपात है

(2पी)-αआरएक्स[2पी,n0]पी-αआरएक्स[पी,n0]=(2पी)-αपी-α=2-α

इसलिए यदि आप अपनी पहली चोटी को दूसरी चोटी पर 1% बढ़ावा देना चाहते हैं, जिसका मतलब है कि आप पिच को उप-हार्मोनिक पिच नहीं चुनेंगे, जब तक कि उप-हार्मोनिक पिच ऑटोक्रेलेशन पहले से कम से कम 1% अधिक न हो। चोटी, आप से हल करेंगेα

2-α=0.99

यह वज़न या डी-ज़ोर देने या बाधा डालने के लिए सुसंगत तरीका है जो कि सबम्यूनिक पिच के नीचे एक सप्तक के समान होता है।

यह अभी भी आपको एक थ्रेसहोल्ड मुद्दे के साथ छोड़ देता है। आपको अच्छी तरह से का चयन करना होगा । लेकिन यह एक सुसंगत तरीका है जो दूसरी चोटी पर पहली चोटी पर जोर देता है, जो एक सप्तक कम है, लेकिन इतना नहीं है कि अगर नोट वास्तव में एक सप्तक कम है, लेकिन सभी समरूपों में ऊर्जा विषम की तुलना में मजबूत थी, हार्मोनिक्स, यह अभी भी दूसरी चोटी को चुने जाने की संभावना को छोड़ देगा।α


1
अपने अंतिम प्रश्न का उत्तर देने के लिए: यदि आप एक 220 हर्ट्ज आयाम जोड़ते हैं, तो पिच 220 हर्ट्ज होगी जहां 440 हर्ट्ज मौलिक (गणितीय रूप से बोलने) के बाद पहला हार्मोनिक है। मेरा मामला समान है, लेकिन उच्च हार्मोनिक्स भी हैं, इसलिए लापता मौलिक एक अवधारणात्मक दृष्टिकोण से कोई समस्या नहीं है। मुझे समझ में नहीं आता कि एएमडीएफ के साथ एएमडीएफ की जगह ओक्टेव समस्या को कैसे हल किया जा सकता है
firion

लेकिन सवाल का दूसरा आधा हिस्सा * "यह कैसा लगेगा"? इसका उत्तर दें और फिर देखें कि आप अपने पिच डिटेक्टर को क्या करना चाहते हैं।
रॉबर्ट ब्रिस्टो-जॉनसन

गणना और को टोन के उसी टुकड़े के लिए करने की कोशिश करें जो आपने AMDF के लिए किया है। एएमडीएफ को कुछ उल्टा-सीधा देखना चाहिए। आरएक्स[,n0]
रॉबर्ट ब्रिस्टो-जॉनसन

यदि आपके पास अन्य उच्च हार्मोनिक्स नहीं है, लेकिन सिर्फ 440 हर्ट्ज एक है, और 220 हर्ट्ज टोन पर्याप्त रूप से कम है, तो आपको 440 हर्ट्ज पिच सुनाई देगी। कुछ स्तर से ऊपर (मुझे नहीं पता कि कौन सा), आप 220 हर्ट्ज टोन और इतने ही 220 हर्ट्ज पिच भी सुनेंगे।
फ़िरियन

वहाँ एक कारण है कि मैंने कहा -60 डीबी है। अब आप अपने पिच डिटेक्टर को क्या कहना चाहते हैं, कि यह 220 हर्ट्ज या 440 हर्ट्ज का नोट है या कुछ और?
रॉबर्ट ब्रिस्टो-जॉनसन

0

स्वाभाविक रूप से, आवाज वाले भाषण की मौलिक आवृत्ति अंतराल में निहित होगी [70, 400] हर्ट्ज। तो, पहला कदम उस बैंड को अलग-थलग करने के लिए एक बैंडपास फ़िल्टर लागू करना होगा।

दूसरे, आप पावर स्पेक्ट्रम के लिए एक भारित फ़ंक्शन लागू कर सकते हैं। मौलिक के पास, वजन 1 के पास होना चाहिए, जबकि बैंड के अंत के करीब, वजन 0. के पास होना चाहिए। यह भार पाठ्यक्रम के सामान्यीकृत है। मैं कुछ सुपर-लीनियर की सिफारिश करूंगा: द्विघात, चतुष्कोणीय आदि - वास्तव में ऑक्टेव्स को मारना।


मैं वजन कैसे लागू कर सकता हूं? मुझे नहीं पता कि मौलिक कहां है। इसके अलावा, मेरा संकेत एक उपकरण का नोट है, इसलिए रेंज बड़ी है
firion
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.