2010-10-18 8 views
10

मैं ध्वनि फ़ाइलों (लहर) की तुलना करने के तरीके पर कुछ शोध कर रहा हूं। असल में मैं एक माइक्रोफ़ोन से ध्वनि के साथ संग्रहीत ध्वनिफाइल (WAV) की तुलना करना चाहता हूं। तो अंत में मैं अपने स्वयं के कुछ वॉइस कमांड को प्री-स्टोर करना चाहता हूं और फिर जब मैं अपना ऐप चलाता हूं तो मैं पूर्व-संग्रहीत फ़ाइलों की तुलना माइक्रोफोन से इनपुट के साथ करना चाहता हूं।ऑडियो फ्रेम में क्या होता है?

मेरा विचार कुछ मार्जिन में डालना था क्योंकि तुलनात्मक रूप से एक पंक्ति में दो बार कुछ कहना मुश्किल होगा।

तो कुछ googling के बाद मुझे लगता है कि अजगर इस मॉड्यूल को लहर और Wave_read ऑब्जेक्ट नाम दिया है।

पढ़ता है और रिटर्न ज्यादा से ज्यादा n ऑडियो के फ्रेम, बाइट्स की एक स्ट्रिंग के रूप: यह वस्तु एक समारोह नामित readframes (एन) है।

इन बाइट्स में क्या होता है? मैं लहरों के माध्यम से लूपिंग के बारे में सोच रहा हूं, उस समय फ्रेम द्वारा फ्रेम की तुलना में एक फ्रेम।

+2

बाइट्स में पीसीएम डेटा होता है। क्या आप आवाज पहचान करने की कोशिश कर रहे हैं? ऐसा लगता है जैसे आप अपने सिर पर रास्ते में हैं। आपको इस विषय पर शोध करना चाहिए। – JoshD

+0

आह, फिर यह लानत :) उत्तर के लिए धन्यवाद। आप इसे आवाज पहचान कह सकते हैं, लेकिन जिस तरह से मैंने इसके बारे में सोचा था वह सरल फ़ाइल तुलना थी जो बहुत आसान होगी। मेरे मामले में यह केवल एक ही ध्वनि बनाने का विश्लेषण करेगा, विश्लेषण नहीं करेगा और – Jason94

+1

शब्दों की व्याख्या करने का प्रयास करेगा, यह अभी भी आवाज पहचान है। यहां तक ​​कि आपकी आवाज़ में एक मामूली बदलाव या गति अंतर भी जंगली रूप से अलग ऑडियो डेटा देने जा रहा है ताकि आप इसे फ्रेम द्वारा फ्रेम की तुलना नहीं कर सकें। – Soviut

उत्तर

28

एक ऑडियो फ्रेम, या नमूना में समय पर उस विशेष बिंदु पर आयाम (जोर) जानकारी शामिल है। ध्वनि उत्पन्न करने के लिए आवृत्तियों का उत्पादन करने के लिए अनुक्रम में हजारों फ्रेम खेला जाता है।

सीडी गुणवत्ता ऑडियो या असम्पीडित तरंग ऑडियो के मामले में, प्रति सेकंड लगभग 44,100 फ्रेम/नमूने हैं। उन फ्रेमों में से प्रत्येक में 16-बिट रिज़ॉल्यूशन होते हैं, जो ध्वनि स्तर के काफी सटीक प्रतिनिधित्व के लिए अनुमति देते हैं। इसके अलावा, क्योंकि सीडी ऑडियो स्टीरियो है, वास्तव में दो बार अधिक जानकारी है, बाएं चैनल के लिए 16-बिट्स, दाईं ओर 16-बिट्स।

जब आप एक फ्रेम प्राप्त करने के लिए अजगर में ध्वनि मॉड्यूल का उपयोग, यह हेक्साडेसिमल वर्णों की एक श्रृंखला के रूप में लौटा दी जाएगी: एक 8 बिट मोनो संकेत के लिए

  • एक चरित्र।
  • 8-बिट स्टीरियो के लिए दो अक्षर।
  • 16-बिट मोनो के लिए दो अक्षर।
  • 16-बिट स्टीरियो के लिए चार वर्ण।

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

+1

प्रति सेकंड 75 फ्रेम? क्या आपका मतलब 44100 नहीं है? – corvuscorax

+0

हां, मूल रूप से वह था (संपादन देखें) लेकिन यह मुझ पर संशोधित किया गया है। मैं इसे तब तक बदलने जा रहा हूं जब तक कि जो भी संपादन कर रहा हो, वह ऑडियो के फ्रेम की व्याख्या को समझा सके। – Soviut

+1

यह इस तथ्य से कुछ भ्रम हो सकता है कि रेड बुक सीडी प्लेयर प्रति सेकंड डिस्क से 75 सेक्टर पढ़ते हैं, लेकिन यह इस चर्चा के प्रयोजनों के लिए अप्रासंगिक होना चाहिए – corvuscorax

7

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

+1

इस उत्तर में जोड़ने के लिए ... समस्या को हम डिजिटल रूप से बनाम ऑडियो का प्रतिनिधित्व करते हैं, हम कैसे ध्वनि को समझते हैं। हम आवृत्तियों और उनकी बातचीत सुनते हैं। हम सीधे लहर के प्रत्येक वृद्धि और गिरावट को नहीं समझते हैं। फिर भी, जब हम पीसीएम के रूप में डिजिटल रूप से ऑडियो कैप्चर करते हैं, तो हम प्रति सेकंड हजारों बार दबाव स्तर माप रिकॉर्ड कर रहे हैं। हम आवृत्ति डोमेन में सुनते हैं, लेकिन पीसीएम ऑडियो समय डोमेन में है। तुलना करने शुरू करने के लिए भी शुरू करने के लिए, हमें आवृत्ति डोमेन में हमारे डिजिटल ऑडियो प्राप्त करने के लिए पहले फूरियर ट्रांसफॉर्म चलाने की आवश्यकता है। – Brad

5

पहली चीज आपको डेटा को अपनी आवृत्तियों में बदलने के लिए एक चौकोर परिवर्तन है। हालांकि यह जटिल है। मैं ध्वनि पहचान पुस्तकालयों का उपयोग यहां नहीं करता क्योंकि ऐसा लगता है कि आप केवल आवाज रिकॉर्ड नहीं करते हैं। फिर आप अलग-अलग समय बदलावों का प्रयास करेंगे (यदि ध्वनियों को बिल्कुल गठबंधन नहीं किया जाता है) और उस व्यक्ति का उपयोग करें जो आपको सबसे अच्छी समानता देता है - जहां आपको एक समानता कार्य परिभाषित करना है। ओह और आपको दोनों सिग्नल (समान अधिकतम जोर) को सामान्य बनाना चाहिए।

5

मुझे विश्वास है कि स्वीकृत विवरण थोड़ा गलत होना चाहिए।

फ्रेम कुछ हद तक ग्राफिक्स स्वरूपों में की तरह प्रतीत होता है। स्टीरियो @ 16 बिट्स/नमूना के लिए, फ्रेम आकार 2*sizeof(short) = 4 बाइट्स है। गैर-अवरुद्ध स्टीरियो @ 16 बिट्स/नमूना के लिए, बाएं चैनल के नमूने एक दूसरे के बाद एक हैं, इसलिए फ्रेम आकार केवल sizeof(short) है।

+0

कैसे इंटरलेव किया गया है या नहीं? अधिक आम क्या है? – jiggunjer

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