से फास्ट फूरियर ट्रांसफॉर्म डेटा निकालें मैं एक उपकरण बना रहा हूं जो सर्वर पर चलने और ध्वनि फ़ाइलों का विश्लेषण करने वाला है। मैं रूबी में ऐसा करना चाहता हूं क्योंकि मेरे सभी अन्य उपकरण रूबी में भी लिखे गए हैं। लेकिन मुझे इसे पूरा करने का एक अच्छा तरीका खोजने में परेशानी हो रही है।फ़ाइल
मुझे मिले कई उदाहरण विज़ुअलाइज़र और ग्राफिकल सामान कर रहे हैं। मुझे बस एफएफटी डेटा चाहिए, और कुछ नहीं। मुझे ऑडियो डेटा प्राप्त करने की आवश्यकता है, और उस पर एक एफएफटी करें। मेरा अंत लक्ष्य सभी आवृत्तियों (भारित आयाम), बीपीएम, और शायद कुछ अन्य अच्छी विशेषताओं पर औसत/औसत/मोड, 25 वीं-प्रतिशत, और 75 वें-प्रतिशत की गणना करने के लिए कुछ अन्य चीजों की गणना करना है, बाद में समान ध्वनि को क्लस्टर करने में सक्षम होना ।
सबसे पहले मैं माणिक ऑडियो और fftw3 का उपयोग करने की कोशिश की, लेकिन मैं जाना दो वास्तव में एक साथ काम करने के लिए कभी नहीं। प्रलेखन अच्छा नहीं था इसलिए मुझे वास्तव में पता नहीं था कि डेटा किस प्रकार घूम रहा था। अगला मैंने bplay/ब्रेक का उपयोग करने की कोशिश की और मेरी रूबी स्क्रिप्ट को केवल STDIN का उपयोग करने के लिए सीमित करें और उस पर एक एफएफटी निष्पादित करें (अभी भी fftw3 का उपयोग कर)। लेकिन मुझे काम करने के लिए bplay/brec नहीं मिल सका क्योंकि सर्वर के पास ध्वनि कार्ड नहीं है और मैंने पहले ऑडियो डिवाइस पर जाने के बिना सीधे ऑडियो को STDOUT तक प्रबंधित करने का प्रबंधन नहीं किया था। तो अब मैं अटक कर रहा हूँ और गूगल पर किसी भी अधिक अच्छे परिणाम नहीं मिल सकता है
# extracting audio from wav with ruby-audio
buf = RubyAudio::Buffer.float(1024)
RubyAudio::Sound.open(fname) do |snd|
while snd.read(buf) != 0
# ???
end
end
# performing FFT on audio
def get_fft(input, window_size)
data = input.read(window_size).unpack("s*")
na = NArray.to_na(data)
fft = FFTW3.fft(na).to_a[0, window_size/2]
return fft
end
:
यहाँ निकटतम मैं मिल गया है है। तो शायद आप लोग मेरी मदद कर सकते हैं?
धन्यवाद!
शायद यह पिछली चर्चा उपयोगी हो सकता है: http://stackoverflow.com/questions/2834548/ruby-play-pause-resume -एएसी-ऑडियो-फाइलें – fmendez
क्या आप विस्तारित कर सकते हैं कि आप क्यों फंस गए हैं? चीजों को कैसे काम करना चाहिए, इस बारे में आपकी समझ में त्रुटि संदेश या अंतराल शामिल करें। –
मैंने अभी तक अपना कोड जोड़ा है। रूबी-ऑडियो का उपयोग करके डेटा पढ़ने और fftw3 का उपयोग करके एफएफटी निकालने के बीच मेरे पास एक बड़ा अंतर है। तीन प्रश्न चिह्नों के साथ टिप्पणी देखें। मेरे पास बफ के अंदर WAV डेटा है लेकिन मुझे नहीं पता कि डेटा वास्तव में क्या है/प्रतिनिधित्व करता है। क्या वहां हेडर हैं? क्या यह संकुचित/एन्कोडेड है? इत्यादि, आदि। मैं डेटा को get_fft में प्राप्त करना चाहता हूं (जिसे किसी अन्य एसओ पोस्ट से लगभग वर्बैटिम लिया जाता है)। –