स्पेक्ट्रोग्राम से ऑडियो सिग्नल का पुनर्निर्माण


19

मेरे पास गाने का एक सेट है, जिसके लिए मैंने 50% ओवरलैप के साथ हैमिंग विंडो का उपयोग करके परिमाण स्पेक्ट्रोग्राम निकाला। स्पेक्ट्रोग्राम निकालने के बाद, मैंने प्रिंसिपल कंपोनेंट्स एनालिसिस (पीसीए) का उपयोग करते हुए कुछ आयामी कमी की। निचले आयाम में इसे कम करने के बाद, मैंने स्पेक्ट्रोग्राम को कम आयामों से फिर से संगठित किया। तो अब, मूल स्पेक्ट्रोग्राम और पुनर्निर्मित स्पेक्ट्रोग्राम के बीच कुछ त्रुटि होगी। मैं इस स्पेक्ट्रोग्राम को ऑडियो सिग्नल में परिवर्तित करना और इसे प्ले करना चाहूंगा, ताकि मुझे पता चल सके कि निचले आयामों से पुन: निर्मित होने पर, ऑडियो कैसे ध्वनि करता है।

क्या माटलाब कहने में कोई फ़ंक्शन उपलब्ध है। एक ऑडियो सिग्नल के लिए एक परिमाण स्पेक्ट्रोग्राम परिवर्तित करने के लिए ??


2
आप वास्तव में एसटीएफटी चाहते हैं और एसटीएफटी का उलटा। "स्पेक्ट्रोग्राम" एसटीएफटी के परिमाण के ऊष्मा मानचित्र का सिर्फ एक नाम है, और अकेले परिमाण किसी संकेत को फिर से बनाने के लिए पर्याप्त नहीं है। को देखो mathworks.com/matlabcentral/fileexchange/12902-dafx-toolbox/... ?
एंडोलिथ

4
@ एंडोलिथ की टिप्पणी पर विस्तार करने के लिए, जब आप एसटीएफटी से स्पेक्टरग्राम तक जाते हैं तो आप जो याद कर रहे हैं वह चरण सूचना है, जो आपके सिग्नल की आवृत्ति डोमेन प्रतिनिधित्व का एक महत्वपूर्ण घटक है।
ब्योर्न रोश

तो इसका मतलब है कि अगर मैं मूल ऑडियो सिग्नल को फिर से बनाना चाहता हूं, तो मुझे एसटीएफटी के चरण के साथ-साथ दोनों आयामों की आवश्यकता है? लेकिन ऑडियो सुविधाओं का निर्माण करने के लिए उदारता से, | एस | कॉम्प्लेक्स नं के आयाम का उपयोग किया जाता है और चरण की जानकारी को छोड़ दिया जाता है। मैंने पीसीए का प्रदर्शन उस स्पेक्ट्रोग्राम पर किया है जिसे मैंने M के रूप में परिकलित किया है , जो कि मेल फ़िल्टरबैंक गुणा मैट्रिक्स है। तो कैसे आप दिए गए ऑडियो संकेत फिर से संगठित करना एक्स , एक्स के लिए सन्निकटन पीसीए के बाद मिल गया? X=log(M|S|)X^
user76170

@endolith: मैंने उस लिंक का उपयोग करने की कोशिश की, जो आपने mathworks.com/matlabcentral/fileexchange/12902-dafx-toolbox/… दिया था। मैंने चरण और आयाम जानकारी दोनों का उपयोग किया है ( ऊपर के फ़ंक्शन के इनपुट के रूप में जटिल )। इसके इस्तेमाल से मैंने सिग्नल बजाने की कोशिश की और यह तड़का लगा। ऐसा क्यों होता है ? फिर मैंने मूल संकेत के बीच के मान की गणना की और ऊपर के रूप में उलटा एसटीएफटी प्रक्रिया से प्राप्त किया गया और इसमें 3.46 * 10 ^ 3 का बहुत बड़ा मूल्य दिखाया गया। किसी भी विचार यह क्यों होता है ?? S
user76170

@ user76170: चॉपी इसलिए है क्योंकि एसटीएफटी सिग्नल को तख्ते में काटता है, कभी-कभी ओवरलैपिंग करता है, और आपको उन्हें उसी तरह से फिर से बनाना होगा जिस तरह से उनका निर्माण किया गया था या हर एक पर असंतोष होगा। क्या आपने उस लिंक से STFT और ISTFT फ़ंक्शन का उपयोग किया था? देखो अस्थिर संकेत के तरंग में आप देख सकते हैं कि समस्या क्या है।
14 सितंबर

जवाबों:


15

यदि स्पेक्ट्रोग्राम की गणना कम समय के परिमाण के रूप में की जाती है, तो ओवरलैपिंग से चार बैरियर बदल जाते हैं , तो विंडो , तब स्पेक्ट्रोग्राम में कुछ चरण की जानकारी होती है।

निम्नलिखित पुनरावृत्तियों काम करते हैं:

xn+1=istft(Sexp(iangle(stft(xn))))

, स्पेक्ट्रोग्राम है, स्टफ्ट फॉरवर्ड-शॉर्ट टाइम फॉयर ट्रांसफॉर्म है, आईसट इनवर्स-शॉर्ट टाइम फॉयर ट्रांसफॉर्म है।Sstftisft


मैं सीधे @edouard पर टिप्पणी करना चाहूंगा, लेकिन मेरे पास पर्याप्त प्रतिष्ठा नहीं है। क्या किसी को पता है कि उसके जवाब में क्या हूं ? इसके अलावा, मैं x 0 कैसे आरंभ करूंगा ? बस यादृच्छिक? है x n यात्रा पर पूरा पुनर्निर्मित संकेत n या बस n वें के गुणांक एक्स ? धन्यवाद। ix0xnnnthx
पीआर

1
@PR यह इकाई काल्पनिक संख्या है, 1
पीटर के.एच.

3

मेरे पास @edouard के उत्तर को समझने के लिए थोड़ा कठिन समय था, जो सही काम कर रहा है। Https://dsp.stackexchange.com/a/3410/9031 से तुलना करें , जिसका उपयोग मैं अपने पुनर्निर्माण को लागू करने के लिए करता था।

ixnnthx0


2

आप एक फिल्टर को डिजाइन करने के लिए मूल स्पेक्ट्रोग्राम बनाम पुनर्निर्मित स्पेक्ट्रोग्राम का उपयोग कर सकते हैं जिसकी परिमाण प्रतिक्रिया एक स्पेक्ट्रोग्राम को दूसरे में बदल देती है। फिर आप इस फ़िल्टर को मूल समय डोमेन डेटा पर लागू कर सकते हैं, या मूल एफएफटी के लिए ओवरलैप जोड़ सकते हैं / तेजी से कन्वर्जन फ़िल्टरिंग को बचा सकते हैं।


|S||S||S^|

2
एक स्पेक्ट्रोग्राम मैट्रिक्स हानिरहित है, इसलिए इसका उपयोग पुनर्निर्माण के लिए नहीं किया जा सकता है। लेकिन अगर आप अपने इच्छित स्पेक्ट्रोग्राम का उत्पादन करने के लिए एक ट्रांसफॉर्मेशन को रिवर्स कर सकते हैं, तो आप इसे मूल गैर-हानिपूर्ण समय डोमेन डेटा या संभवतः मूल जटिल परिणाम FFT पर लागू कर सकते हैं।
हॉटपावर

S|S||S|

1
@ user76170 इसका लंबा और छोटा कारण यह है कि आपको अपने सिग्नल को फिर से संगठित करने से पहले जटिल एसटीएफटी की आवश्यकता होती है। यदि आपके पास बस परिमाण STFT है, तो यह पर्याप्त नहीं है। इस नियम के अपवाद हैं, लेकिन आम तौर पर, आपको जटिल एसटीएफटी की आवश्यकता है, न कि केवल परिमाण।
तारिणी ज़ियाई

|S||S^|

-1

यदि आप कम्प्यूटेशन जटिलता के बारे में चिंतित नहीं हैं, तो स्पेक्ट्रोग्राम से ऑडियो सिग्नल को पलटने के लिए ग्रिफिन-लिम एल्गोरिथ्म का उपयोग करें।


क्या आप कृपया अपने उत्तर को थोड़ा बढ़ा सकते हैं? शायद एल्गोरिथ्म में एक प्रतिनिधि पेपर या लिंक जोड़ना और इस प्रश्न ()?) के लिए एक संक्षिप्त विवरण
A_A

अगर मैं आपके प्रश्न को सही ढंग से समझता हूं, तो संक्षेप में, आप मूल चरण की जानकारी का उपयोग किए बिना ऑडियो सिग्नल को एक स्पेक्ट्रोग्राम से फिर से संगठित करना चाहते हैं। ग्रिफिन-लिम एल्गोरिथ्म को इनपुट के रूप में एक स्पेक्ट्रोमीटर मैट्रिक्स की आवश्यकता होती है और पुनरावृत्त चरण का पुन: निर्माण करता है। आप पेपर का उल्लेख कर सकते हैं ieeexplore.ieee.org/document/1164317
जितेन्द्र धीमान

मुझे जानकारी देने के लिए धन्यवाद। बस इस बात को स्पष्ट करने के लिए। यह प्रतिक्रिया मेरी समीक्षा कतार में "कम गुणवत्ता" के रूप में पॉप अप हुई। "समीक्षा" के संदर्भ में मेरे पास जो विकल्प हैं, उनमें "सुधार" के लिए टिप्पणियां प्रदान करना शामिल है। इस उत्तर के लिए डीएसपीई में आम तौर पर सामने आने वाले उत्तर के अनुरूप आने के लिए, यह ग्रिफिन लिम एल्गोरिथ्म में थोड़ा सा जाना होगा, यह दिखाने के लिए कि ओपी क्या पूछ रहा है यह कैसे प्रासंगिक है। भविष्य के किसी भी संपादन, आप सीधे अपने जवाब के लिए आवेदन कर सकते हैं। इस बात का विशेष रूप से "मुझे" संतुष्ट करने के लिए नहीं है, यह एक सवाल का शानदार जवाब देने का एक सार्थक सेट है
A_A

यदि आपके पास मूल FFT जानकारी नहीं है तो सबसे अच्छा जवाब यहाँ (ग्रिफिन-लिम का उपयोग करके) है। टाइमसैनब.गिथुबियो.आईओ /…
आर्टेमी क्रिम्स्की
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.