2012-10-23 39 views
6

में एक ऑडियो फ़ाइल के तरंग पैटर्न प्राप्त करें मैं सोच रहा हूं कि मैं ऑडियो फ़ाइल से आयाम जैसे संगीत जानकारी कैसे प्राप्त कर सकता हूं?जावा

मान लें कि हमारे पास एक कच्ची ऑडियो फ़ाइल है, जो मैं फ़ाइल से डेटा निकालना चाहता हूं जो मुझे http://www1.icsi.berkeley.edu/Speech/mr/nearfar.html जैसे वक्र उत्पन्न करने की अनुमति देता है। एक बार मैं इस वक्र प्राप्त किया है, मैं, FFT प्रदर्शन करेंगे आदि

enter image description here

मैं जावा ध्वनि में समाधान के लिए खोज करने के लिए कोशिश कर रहे हैं, लेकिन क्या मैं केवल अब तक पता है कि मैं में डेटा डालना कर सकते हैं byte[]AudioInputStream का उपयोग कर। लेकिन मैं byte[] को double[] में कैसे अनुवाद करूं जिसमें ध्वनि के बारे में वास्तविक जानकारी है? इस मामले में, double[] में मान आयाम का प्रतिनिधित्व करते हैं।

क्या कोई जावा में इस समस्या को हल करने का समाधान प्रदान कर सकता है?

उत्तर

5

ठेठ wav फ़ाइल, 16 बिट थोड़ा endian है ताकि आप प्रत्येक लगातार दो बाइट्स, B1 और B2 ले जा सकते हैं, और इस प्रकार आयाम मिलता है:

(double) (b2 << 8 | b1 & 0xFF)/32767.0; 

यदि इनपुट स्टीरियो है, पहले दो बाइट्स होगा चैनल छोड़ दिया जाए, फिर दाएं चैनल के लिए दो बाइट्स।

+0

बेशक, सबसे पहले आपको शीर्षलेख को पढ़ने की आवश्यकता है। –

+2

@BjornRoche: ओपी ने 'ऑडियो इनपुट स्ट्रीम' का उपयोग करने के बारे में बात की, यह हेडर छोड़ देता है और केवल वैध पीसीएम बाइट देता है। –

+0

ओह। तुम सही हो, क्षमा करें। –