2012-01-02 25 views
12

का उपयोग कर एमपी 3 फ़ाइल की गीत आवृत्ति निकालने के लिए मैं एक गीत का विश्लेषण करने और मार्कर बनाने के लिए एचटीएमएल 5 वेब ऑडियो एपीआई का उपयोग कर रहा हूं जब औसत ध्वनि आवृत्ति एक निश्चित मूल्य से नीचे गिर जाती है। मौजूदा ऑडियो नोड आधारभूत संरचना का उपयोग करके, मैंने ऐसा करने में कामयाब रहा लेकिन ध्वनि का विश्लेषण केवल तभी किया जाता है जब गीत खेला जाता है।एचटीएमएल 5 वेब ऑडियो एपीआई

जो भी मैं चाहता हूं, वह पहले से ही गीत का विश्लेषण करना है, इसलिए मैं चुप्पी मार्कर निकाल सकता हूं, और उन्हें CUE बटन में बदल सकता हूं, जिसे उपयोगकर्ता पूरे गीत में स्थानांतरित करने के लिए उपयोग कर सकता है।

जाहिर है, यह विश्लेषण करने के लिए पहले गीत को पूरा करने पर भरोसा करना बहुत धीमा होगा, विशेष रूप से, यदि गीत 50 मिनट पॉडकास्ट जैसा कुछ है। मैंने playbackRate को 10x तक तेज करने की कोशिश की, लेकिन इससे मदद नहीं मिलती है।

मुझे लगता है कि समाधान वेब ऑडियो एपीआई छोड़ने और कच्चे ऐरेबफर का विश्लेषण करने में निहित है, हालांकि, मुझे नहीं पता कि कहां से शुरू करना है।

सुझाव? विचार?

उत्तर

5

मैं एक प्रस्तुति जो वास्तव में इस का वर्णन करता है में एक स्लाइड को खोजने के लिए सक्षम किया गया है: here

एपीआई के सामान्य उपयोग वास्तविक समय में ऑडियो कार्रवाई करने के लिए है। इसके बजाय, हम पूरे सिस्टम के माध्यम से प्रक्रिया पूर्व कर सकते हैं ऑडियो और प्राप्त परिणाम:

केवल समस्या यह है कि ऑडियो एपीआई की मेरी समझ को देखने के लिए क्या 'चाल' कोड नमूने से है भी साधारण है है:

var sampleRate = 44100.0; 
var length = 20; // seconds 
var ctx = new webkitAudioContext(2, sampleRate * length, sampleRate); 
ctx.oncomplete = function(e) { 
    var resultAudioBuffer = e.renderedBuffer; 
    ... 
}; 

function convolveAudio(audioBuffer, audioBuffer2) { 
    var source = ctx.createBufferSource(); 
    var convolver = ctx.createConvolver(); 
    source.buffer = audioBuffer; 
    convolver.buffer = audioBuffer2; 

    // source -> convolver -> destination. 
    source.connect(convolver); 
    convolver.connect(ctx.destination); 

    source.noteOn(0); 
    ctx.startRendering(); 
} 

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

+1

यह आश्चर्यजनक है कि आप तीन वर्षों में कितना सीखते हैं, इस जवाब पर अभी एक उथल-पुथल है और अब इसे पढ़ने से बच्चे के खेल की तरह लगता है :)। –

-2

उपरोक्त संकल्प एक चौकोर परिवर्तन का वर्णन कर रहा है, जो आपके ऑडियो को समय के साथ एक तीव्रता से आवृत्ति पर तीव्रता तक ले जाता है। मैं googling जावास्क्रिप्ट चौकोर परिवर्तन का सुझाव देते हैं। आप जो खोज रहे हैं उसके आधार पर, मैंने इस विषय पर कई उपयोगी लिंक देखे हैं।