एमएफसीसी की गणना / समझने में सहायता करें: मेल-फ़्रीक्वेंसी सिफस्ट्रम गुणांक


17

मैं बिट्स और टुकड़े ऑनलाइन पढ़ रहा हूं, लेकिन मैं अभी यह सब एक साथ नहीं कर सकता। मुझे संकेतों / डीएसपी सामानों की कुछ पृष्ठभूमि ज्ञान है जो इसके लिए पर्याप्त आवश्यक शर्तें होनी चाहिए। मैं अंततः इस एल्गोरिथ्म को जावा में कोडिंग में दिलचस्पी रखता हूं, लेकिन मैं इसे अभी तक पूरी तरह से समझ नहीं पाया हूं कि मैं यहां क्यों हूं (यह गणित के रूप में गिना जाता है?)।

यहाँ मुझे लगता है कि यह मेरी जानकारी के अंतराल के साथ कैसे काम करता है।

  1. अपने ऑडियो भाषण नमूने के साथ शुरू करें, एक .wav फ़ाइल कहें, जिसे आप एक सरणी में पढ़ सकते हैं। इस सरणी कॉल , जहां से पर्वतमाला (ताकि नमूने)। मान ऑडियो की तीव्रता के अनुरूप हैं जो मुझे लगता है - आयाम।एन , , , एन - एनx[n]n0,1,,N1N

  2. ऑडियो सिग्नल को 10ms के अलग-अलग "फ्रेम" में विभाजित करें या जहां आप भाषण सिग्नल को "स्थिर" मानते हैं। यह परिमाणीकरण का एक रूप है। इसलिए यदि आपकी नमूना दर 44.1KHz है, तो 10ms 441 नमूनों के बराबर है, या मान हैं ।x[n]

  3. एक फूरियर रूपांतरण (गणना के लिए एफएफटी) करें। अब यह पूरे सिग्नल पर या प्रत्येक अलग फ्रेम पर किया जाता है ? मुझे लगता है कि एक अंतर है क्योंकि सामान्य रूप से फूरियर ट्रांसफॉर्म एक सिग्नल के सभी तत्वों को देखता है, इसलिए साथ शामिल हो गया। साथ शामिल हो गए जहां छोटे फ्रेम हैं। वैसे भी, हम कहते हैं कि हम कुछ FFT करते हैं और बाकी के लिए साथ समाप्त होते हैं ।एफ ( एक्स [ एन ] ) एफ ( एक्स 1 [ एन ] ) एफ ( एक्स 2 [ एन ] ) ... एफ ( एक्स एन [ एन ] ) x मैं [ एन ] एक्स [ कश्मीर ]x[n]F(x[n])F(x1[n])F(x2[n])F(xN[n])xi[n]X[k]

  4. मेल पैमाने पर मैपिंग, और लॉगिंग। मुझे पता है कि नियमित आवृत्ति संख्याओं को मेल स्केल में कैसे बदला जाए। प्रत्येक के लिए के : ( "X- अक्ष 'अगर तुम मुझे अनुमति देंगे), आप सूत्र यहाँ कर सकते हैं http://en.wikipedia.org/wiki/Mel_scale । लेकिन कैसे "y- मान" या के आयाम के बारे में ? क्या वे केवल एक ही मान बने रहते हैं लेकिन नए मेल (x-) अक्ष पर उपयुक्त स्थानों पर स्थानांतरित हो जाते हैं? मैंने कुछ कागजों में देखा कि के वास्तविक मूल्यों को लॉग करने के बारे में कुछ था क्योंकि अगर जहां उन संकेतों में से एक को शोर होने के लिए माना जाता है जो आप नहीं चाहते हैं , इस समीकरण पर लॉग ऑपरेशन गुणात्मक शोर को additive शोर में बदल देता है, जो उम्मीद है कि फ़िल्टर किया जा सकता है (?)।kX[k]X[k]X[k]X[k]=A[k]B[k]

  5. अब अंतिम चरण ऊपर से अपने संशोधित का डीसीटी लेना है (हालांकि यह संशोधित हो रहा है)। फिर आप इस अंतिम परिणाम के आयाम लेते हैं और वे आपके एमएफसीसी हैं। मैं उच्च आवृत्ति मूल्यों को दूर फेंकने के बारे में कुछ पढ़ता हूं।X[k]

तो मैं वास्तव में लोहे की कोशिश कर रहा हूं कि कैसे इन लोगों को कदम से गणना करें, और स्पष्ट रूप से कुछ चीजें मुझे ऊपर से हटा रही हैं।

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

अंत में, वहाँ कुछ मैं MFCC 13 गुणांक होने के बारे में देखा है?


1
यह एक महान सवाल है, लेकिन जवाब देने के लिए यहां बहुत कुछ है। मैं इसे 2-3 अलग-अलग प्रश्नों में तोड़ने की सलाह दूंगा (यदि आप निरंतरता रखना चाहते हैं तो आप एक से दूसरे का संदर्भ ले सकते हैं) तो यह अधिक आसानी से उत्तर दिया जा सकता है।
जोंस्का १३'१३

चूंकि आपने पहले मैथ्स पर एक ही प्रश्न पूछा है।
दिलीप सरवटे

मैंने गणित पर संस्करण को हटा दिया। ईएस
यंगमनी

बहुत अच्छा और जानकारीपूर्ण ट्यूटोरियल धन्यवादsssssssssssss

1
हे यू ने आपके प्रश्न में कहा कि "मेल स्केल पर मैपिंग, और लॉगिंग। मैं जानता हूं कि नियमित आवृत्ति संख्याओं को मेल स्केल में कैसे परिवर्तित किया जाए।" क्या आप इस भाग की गणना करने में मेरी मदद कर सकते हैं। जैसा कि मेरे पास x [k] = 1 * 184 का मेरा FFt आउटपुट है लेकिन मेरा त्रिकोणीय बैंड पास फिल्टर 20 * 3 का है। फिर मैं कैसे दोनों को गुणा कर सकता हूं। कृपया ASAp
आयुष अग्रवाल

जवाबों:


25

क्रमशः...

1. और 2 । यह सही है। ध्यान दें कि आमतौर पर फ्रेम अतिव्यापी होते हैं, उदाहरण के लिए, फ्रेम 0 नमूने 0 से 440 हैं; फ्रेम 1 के नमूने 220 से 660 हैं; फ्रेम 2 के नमूने 440 से 880 और इतने पर ... ध्यान दें कि फ्रेम में नमूनों के लिए एक विंडो फ़ंक्शन लागू किया गया है।

। फूरियर रूपांतरण प्रत्येक फ्रेम के लिए किया जाता है। इसके पीछे प्रेरणा सरल है: एक भाषण संकेत समय के साथ बदलता रहता है, लेकिन छोटे खंडों पर स्थिर होता है। आप व्यक्तिगत रूप से प्रत्येक छोटे खंड का विश्लेषण करना चाहते हैं - क्योंकि इस खंड पर संकेत सरल रूप से कुछ गुणांकों द्वारा कुशलतापूर्वक वर्णित किया जा सकता है। किसी को "हैलो" कहने के बारे में सोचें। आप एक बार में सभी ध्वनि का विश्लेषण करके एक ही स्पेक्ट्रम (FFT के अस्थायी जानकारी को ध्वस्त) में ध्वस्त सभी phonemes देखना नहीं चाहते हैं। आप "hhhhheeeeeeeeeeelloooooooooo" शब्द को मंच द्वारा पहचानना चाहते हैं, इसलिए इसे छोटे खंडों में विभाजित करना होगा।

। "मैपिंग टू द मेल स्केल" भ्रामक है और शायद इसीलिए आप भ्रमित हो रहे हैं। इस कदम के लिए एक बेहतर विवरण होगा: "मेल-स्केल किए गए आवृत्तियों को देखते हुए फिल्टर के माध्यम से सिग्नल ऊर्जा की गणना करें"। यहां बताया गया है कि यह कैसे किया जाता है। हम आवृत्तियों (आमतौर पर इस्तेमाल किया जाने वाला मूल्य एन = 40 ) पर विचार करते हैं, समान रूप से 20 हर्ट्ज (श्रवण सीमा के नीचे) और Nyquist आवृत्ति के बीच, मेल पैमाने के अनुसार दूरी पर है। व्यावहारिक उदाहरण: संकेत 8kHz पर नमूना लिया गया है और हम 40 डिब्बे चाहते हैं। चूंकि 4kHz (Nyquist) 2250 मेल है, फ़िल्टरबैंक केंद्र आवृत्तियाँ होंगी: 0 मेल, 2250/39 मेल, 2 x 2250/39 मेल .. 2250 मेल।NN=40

एक बार इन आवृत्तियों को परिभाषित करने के बाद, हम इनमें से प्रत्येक आवृत्तियों के आसपास एफएफटी परिमाण (या ऊर्जा) की एक भारित राशि की गणना करते हैं।

निम्नलिखित तस्वीर को देखो, 12 डिब्बे के साथ एक फिल्टर बैंक का प्रतिनिधित्व:

12 चैनलों के साथ मेल आवृत्ति फ़िल्टरबैंक

8 वें बिन में 2kHz का केंद्र आवृत्ति है। 8 वीं बिन में ऊर्जा 1600 से 2800 हर्ट्ज तक के भारित एफएफटी ऊर्जाओं द्वारा प्राप्त की जाती है - लगभग 2kHz पर भार के साथ।

कार्यान्वयन नोट: भारित रकम का यह गुच्छा एक ही ऑपरेशन में किया जा सकता है - एफएफटी ऊर्जा वेक्टर द्वारा एक "फिल्टरबैंक मैट्रिक्स" का एक गुणा।

इसलिए इस स्तर पर हमने FFT स्पेक्ट्रम को "चित्रण में 40 (12 चित्रण) ऊर्जा मूल्यों के एक सेट में, प्रत्येक को अलग-अलग रेंज के आवृत्तियों के समान" सारांशित किया है। हम इन मूल्यों का लॉग लेते हैं।

KK=13


मेल फ़िल्टरबैंक के बारे में बस एक त्वरित प्रश्न - ऊंचाई / आयाम 1.8 से - 2 है यह महत्वपूर्ण है या क्या वे इकाई (1) ऊंचाई हो सकते हैं?
यंगमोनी

1
यह महत्वपूर्ण नहीं है। एक अधिकतम का उपयोग करने का प्रभाव। 1.0 बनाम 2.0 पर आयाम केवल चरण 4 में एक निरंतर द्वारा लॉग-ऊर्जा को स्थानांतरित कर देगा, और इस प्रकार केवल चरण 5 पर पहले गुणांक को प्रभावित करेगा (जो अक्सर वैसे भी त्याग दिया जाता है)। ध्यान दें कि कुछ कार्यान्वयन ऊर्जा के सामान्यीकरण का उपयोग कर रहे हैं ताकि फ़िल्टर व्यापक हो, कम इसका चरम आयाम ( i.imgur.com/IOaLa.gif ) है। यह मान्यता अनुप्रयोगों में मामूली प्रदर्शन परिवर्तन का कारण हो सकता है। यदि आप उपयोग में MFCC कार्यान्वयन को देखते हैं, तो वास्तव में प्रत्येक चरण में कई छोटे बदलाव होते हैं - bit.ly/ULatdL
pichenettes

यह यहां एक पुराना विषय है, लेकिन ग्राफ के बारे में कुछ पूछना है। यदि Nyquist 4kHz है तो उन बैंड-सीमित फ़िल्टर बिंदु 4kHz से अधिक क्यों हैं। क्या यह MFCC के लिए ठीक है। आम तौर पर, आप Nyquist को पास करने के लिए फ़िल्टर नहीं चाहते हैं? क्या मैं सही हू?
सिल्डर

2
क्या आपके पास ऐसा संदर्भ है कि क्यों N = 40 मेल फ़िल्टरबैंक आवृत्तियों (या 26, एक और सामान्य मूल्य जो मैंने देखा है) का उपयोग किया जाता है?
जेम्स ओवर्स

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