2011-10-31 10 views
8

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

मेरी समझ से, मुझे सिग्नल की मौलिक आवृत्तियों को प्राप्त करने के लिए एक एफएफटी करने की आवश्यकता है।

तो अब, मैं 44100 हर्ट्ज पर माइक्रोफ़ोन का नमूना देना चाहता हूं। यदि मैं 50% ओवरलैप के साथ नमूना आकार 512 की स्लाइडिंग विंडो का उपयोग करता हूं, तो इसका मतलब है कि मुझे प्रत्येक 256 नमूने, या 0.00580 सेकेंड में एक एफएफटी करने की आवश्यकता है।

यह दर वास्तव में उच्च लगता है, खासकर यदि मैं एंड्रॉइड के लिए जावा में प्रोग्राम करता हूं। क्या मेरा स्मार्टफोन उस गति को संभालने में सक्षम होगा? मुझे पता है कि आप एंड्रॉइड पर सी/सी ++ में प्रोग्राम कर सकते हैं, लेकिन मैं इसे समय के साथ जावा के साथ रखना चाहता हूं।

+0

पर विचार वहाँ मौलिक आवृत्ति अन्य तो FFT –

+0

आकलन के अन्य तरीके हैं कि मुझे नहीं लगता कि ओपी वास्तव में पिच मान्यता (यानी प्रमुख आवृत्ति को ढूंढने) के अर्थ में "मौलिक आवृत्ति" वाक्यांश का उपयोग करने के लिए है, क्योंकि आमतौर पर ऐसा कुछ नहीं होगा जिसे आप आवाज पहचान के लिए उपयोग करेंगे। – MusiGenesis

उत्तर

9

वास्तविक-से-जटिल एफएफटी करने के लिए ~ 5/2 एन एलजी एन फ्लोटिंग-पॉइंट ऑपरेशंस (जोड़ और गुणा) की आवश्यकता होती है। अपने मामले, एन = 512, इसलिए में:

flops per fft ~= (5/2) * 512 * 9 = 11520 

तो प्रति सेकंड 172 FFTs प्रति सेकंड के बारे में 2 लाख से चल बिन्दु आपरेशनों की आवश्यकता है। यह बहुत पसंद है, लेकिन यह वास्तव में बहुत से नहीं है। एक विशिष्ट armv7-class स्मार्टफ़ोन का हार्डवेयर सैकड़ों लाखों या प्रति सेकेंड फ्लोटिंग-पॉइंट ऑपरेशंस के लिए सक्षम है।

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

+0

आपको एफएफटी प्रति एफएफटी के लिए अनुमान कहां मिला? क्या आप मुझे कुछ साहित्य के लिए इंगित कर सकते हैं? मुझे ओ (एन एलजी एन) को Cooley-Tukey एल्गोरिदम से बंधे हुए पता है, लेकिन मैंने एक फ्लॉप अनुमान नहीं देखा है। – stackoverflowuser2010

+0

मूल Cooley-Tukey पेपर वास्तव में एक और परिष्कृत 5 एन एलजी एन फ्लॉप गिनती देता है; लोग आम तौर पर उस गिनती का उपयोग करते हैं (और इसलिए वास्तविक-से-जटिल एफएफटी के लिए 5/2 एन एलजी एन, भले ही यह बिल्कुल सही नहीं है)। हकीकत में, अधिक परिष्कृत एल्गोरिदम (जैसा कि सामान्य अभ्यास में उपयोग किया जाता है) वास्तव में कुछ हद तक कम फ्लॉप की आवश्यकता होती है। मुझे यकीन नहीं है कि वर्तमान अत्याधुनिक कला क्या है, लेकिन मुझे विश्वास है कि यह लगभग 4 एन एलजी एन था जब मैंने देखा था। –

+0

@ stackoverflowuser2010: एफएफटी पर विकिपीडिया पेज के निरंतर काम के लिए सीमाओं पर हाल के काम के कुछ अच्छे लिंक हैं। –

5

iPhone के लिए, iOS के लिए ढांचे में तेजी लाने सभी FFTs आप CPU समय के 1% के आदेश पर का उपयोग कर निर्दिष्ट कर सकते हैं (सटीक प्रतिशत पर डिवाइस मॉडल और FFT डेटा प्रकार निर्भर करता है)।

एंड्रॉइड के लिए, आप प्रोसेसर गहन संख्यात्मक गणनाओं के लिए एनडीके मूल पुस्तकालय का उपयोग करने पर विचार करना चाहेंगे।

यह भी ध्यान दें कि एक एफएफटी आपको शीर्ष आवृत्तियों प्रदान करेगा, जिसमें मूलभूत या आवाज पिच आवृत्ति शामिल नहीं होगी।

जोड़ा गया: यह Java benchmark web page सुझाव देता है कि एंड्रॉइड फोन अच्छी तरह लिखित मैट्रिक्स गणित के लिए जावा का उपयोग करके 5 से 50 एमएफएलओप्स की सीमा में सक्षम हैं। एमएफएलओपीएस में लगभग एक ही प्रदर्शन सीमा के आसपास एक अच्छी तरह लिखित एफएफटी गिरनी चाहिए। @ स्टीफन कैनन ने पोस्ट किया कि आपके स्पेक के लिए 2 एमएफएलओपीएस के आदेश की आवश्यकता हो सकती है।

+0

दिलचस्प ... क्यों नीचे वोट? – hotpaw2

+0

कल्पना नहीं कर सकता कि कोई इसे वोट क्यों देगा। –

+0

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

3

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

1

एक तरफ के रूप में आप शायद अपनी नमूना दर को कम करके अपना गणना समय घटा सकते हैं। भाषण में 8 किलोहर्ट्ज़ से अधिक ऊर्जा नहीं है, इसलिए आप अधिक सटीकता खोए बिना किसी भी एफएफटी करने से पहले अपने ऑडियो को 16 किलोहर्ट्ज तक घटा सकते हैं। 16 किलोहर्ट्ज पर आपके एफएफटी छोटे होंगे, और इतनी तेज़ी से।

Wikipedia claims कि 16 kHz डेस्कटॉप अनुप्रयोगों में वाक् पहचान के लिए एक मानक नमूना दर है।

(मुझे लगता है कि इस ओपी के सवाल का जवाब नहीं है, लेकिन मैं इसे फिर भी उसे करने के लिए उपयोगी हो सकता है, अपने आवेदन दिया लगता है।)

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