धीमा संगीत बजाना जबकि आवृत्ति बनाए रखना


10

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


1
नीचे दिए गए उत्तर के अलावा, कृपया अधिक जानकारी के लिए इस लिंक को देखें।
a_A

जवाबों:


5

हाँ, हम में से कुछ इसे कर सकते हैं, आप पिच को प्रभावित किए बिना गति बढ़ा सकते हैं या धीमा कर सकते हैं, कुछ लोग टाइम स्ट्रेच के इस एप्लिकेशन को कॉल करते हैं, इसे करने के विभिन्न तरीके हैं, आप आवृत्ति डोमेन या समय डोमेन में कर सकते हैं, आपको चुनने की आवश्यकता होगी आपके लिए सबसे अच्छा क्या है, आपको प्रत्येक के कुछ फायदे और नुकसान मिलेंगे।

समय क्षेत्र:

टाइम डोमेन में आप कुछ तकनीकों की कोशिश कर सकते हैं जैसे:

  • TDHS (टाइम डोमेन हार्मोनिक सैकलिंग)
  • SOLA (सिंक्रोनस ओवरलैप जोड़ें)
  • PSOLA (पिच तुल्यकालिक ओवरलैप जोड़ें)
  • WSOLA (वेवफॉर्म समानता ओवरलैप जोड़ें)

पेशेवरों: तेज है, कुछ एल्गोरिदम समझने में आसान हैं, मोनोफोनिक ध्वनियों में अच्छी गुणवत्ता है।

विपक्ष: आम तौर पर आपको सही स्थिति में विभाजित करने के लिए एक बहुत अच्छी पिच ट्रैक की आवश्यकता होगी, यह करना मुश्किल है :-(, इसलिए यदि आपका पिच ट्रैक विफल रहता है या पॉलीफोनिक ध्वनियों में काम नहीं करता है तो यह एल्गोरिदम बहुत सारी चमक / कलाकृतियां देगा। आउटपुट ध्वनि में।

आवृत्ति डोमेन:

सभी बार खिंचाव जो मुझे पता है कि फ़्रीक्वेंसी डोमेन में चरण विकोडक तकनीकों में आधारित हैं ।

पेशेवरों: पॉलीफोनिक या मोनोफोनिक ध्वनियों में काम करेंगे।

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

मैं कह सकता हूं कि विंडो और हॉप आकार चरण वोकोडोर गुणवत्ता के लिए महत्वपूर्ण है, आम तौर पर हम 4xपुनरुत्थान के लिए ओवरलैप चुनते हैं, आकार 4096का एक लटका हुआ खिड़की मेरे कानों के लिए पर्याप्त है (बेशक अगर यू में इस आकार के लिए प्रसंस्करण शक्ति है) मानक चरण के शब्द विकोडक कुछ पुनर्संयोजक जोड़ सकते हैं, इस तरह की समस्याओं से बचने के लिए आपको शायद चरण को लॉक करने की आवश्यकता है।

डीटेल्ड के लिए मिलर पकेट और पोर्टनॉफ पेपर में एक नज़र डालें


आपके उत्तर के लिए धन्यवाद। दृष्टिकोण के सबसे भोले के साथ समस्या क्या है: फूरियर श्रृंखला में खिड़की के बिना पूरे समय अंतराल पर एक समारोह के रूप में पूरे समय पर समय संकेत का विस्तार करें और एक निरंतर द्वारा सभी आवृत्तियों को गुणा करें। मैं समझता हूं कि समय डोमेन में कोई भी स्थानीय त्रुटि सभी फूरियर गुणांक को प्रभावित करेगी। इसके अलावा, इस भोले-भाले गैर-स्थानीय दृष्टिकोण के नुकसान क्या हैं?
हंस

मैंने ऐसा कुछ भी कभी नहीं किया है, यह काम कर सकता है, स्पष्ट समस्या यह है कि यह काफी महंगा हो सकता है, यह निश्चित रूप से एक कुशल तरीका नहीं है, कल्पना करें कि आपके पास 44100Hz पर ऑडियो (1 मिनट) का एक टुकड़ा है, अब आप क्या प्रस्ताव कर रहे हैं आप कम से फूरियर आवेदन करना होगा है 44100 * 60 = 2646000, इसलिए इस तरह के प्रसंस्करण वास्तविक समय में किसी भी प्रयास करने के लिए मत भूलना एक बार और इस प्रक्रिया में अंक इस ,
ederwander

1
मुझे नहीं लगता कि मैंने जो पहले सुझाव दिया था वह शुद्ध गणितीय अर्थ (लागत और त्रुटि संवेदनशीलता की उपेक्षा) में काम करेगा।
हंस

3

आपके द्वारा वर्णित टूल / सिद्धांत वास्तव में संगीत प्रौद्योगिकी में अनुसंधान का एक बड़ा क्षेत्र है, जिसे मोटे तौर पर ऑडियो टाइम-स्केल संशोधन कहा जाता है। इस क्षेत्र का एक बड़ा घटक यह है कि आप समय के बाद होने वाली आवृत्ति में श्रव्य बदलावों को कैसे रोक सकते हैं। यह आपके आवेदन की बाधाओं या लक्ष्यों के आधार पर आवृत्ति और समय-डोमेन दोनों तरीकों से संपर्क किया जा सकता है। ऑडियो टाइम-स्केल / पिच संशोधन के लिए विकिपीडिया प्रविष्टि एक अच्छा प्रारंभिक बिंदु है।

यदि आप फ़्रीक्वेंसी / वेवलेट आधार का उपयोग करते हुए एक दृष्टिकोण को आगे बढ़ाने के इच्छुक हैं, तो आपकी खिड़की का आकार और आधार का चुनाव इस बात को प्रभावित करेगा कि आप सिग्नल को कितनी अच्छी तरह से सक्षम कर रहे हैं। एक उदाहरण के रूप में एसटीएफटी का उपयोग करने के लिए, एक लंबी खिड़की स्थिर साइनसोइड के लिए अच्छा प्रदर्शन करेगी लेकिन आपके संक्रमण को नष्ट कर देगी। एक छोटी विंडो आवृत्ति-डोमेन स्थानीयकरण की लागत पर एक बेहतर परिवर्तनीय प्रतिक्रिया प्रदान करेगी। अन्य तरंगिका ठिकानों का प्रदर्शन आधार पर आपके सिग्नल के प्रक्षेपण की प्रकृति पर निर्भर करेगा।


उत्तर के लिए बहुत बहुत धन्यवाद। क्या आपके पास इस समस्या के तरंगिका के आवेदन पर कोई संदर्भ है?
हंस

कृपया मेरी टिप्पणी नीचे दिए गए एडरवांडर के उत्तर के रूप में देखें। धन्यवाद।
हंस

2

नीचे Stephan एम। बर्नसी द्वारा C ++ (smbPitchShift.cpp) में एक सरल और मूल्यवान ट्यूटोरियल फंक्शन का लिंक दिया गया है, जो अपनी पिच को बदले बिना संगीत को धीमा या तेज़ कर सकता है।

उन्होंने यह कोड द वाइड ओपन लाइसेंस (WOL) के तहत जारी किया है। अपने आवेदन के भीतर, मैं वास्तविक समय में संगीत को धीमा करने के लिए उनके कार्य को अनुकूलित करने में सक्षम था - जबकि एक एमपी 3 फ़ाइल खेल रहा है और इसके अलावा एक ही समय में उस एमपी सिग्नल पर पिच का पता लगाने का काम कर रहा है।

मैंने बर्नसी की वेबसाइट पर एक लिंक भी शामिल किया है जिसमें संगीत के रूप में ऑडियो संकेतों के टाइम-स्ट्रेचिंग और पिच-शिफ्टिंग पर उनका विस्तृत वर्णन है।

https://github.com/AndyA/BatPhone/blob/master/pitchshift.c

http://blogs.zynaptiq.com/bernsee/time-pitch-overview/


मूल कोड लागू नहीं होता है time stretch, मूल कोड लागू होता है Pitch Shift, इस मामले में टाइम स्केल संशोधन लागू करने के लिए आपको गठबंधन करना होगा Pitch Shifit + Resample (interpolation), बर्नसी का कोड अच्छी तरह से काम करता है आकार की एक खिड़की का उपयोग करके 4096आप एक ऑक्टेव (ऊपर या नीचे) को शिफ्ट करने में सक्षम होंगे। , इसका मतलब है कि तदनुसार आप केवल 2.0x-0.5x के बीच कारकों का उपयोग करते हुए एक अच्छी गुणवत्ता के साथ समय का पैमाना बना पाएंगे, एक चरण वोकोडर एक ही खिड़की के आकार का उपयोग करके बेहतर परिणाम प्राप्त कर सकता है, और आप इन्हें एक्सट्रपलेशन करने में सक्षम होंगे के साथ बेहतर गुणवत्ता कारकों
ederwander

उफ़, अब यह याद रखना कि मुझे समय-खिंचाव को पूरा करने के लिए री-सैंपलिंग लागू करना था, ताकि मूल पिच को बदल न दिया जाए। लगता है कि बर्नसी ने अपने कोड में कुछ बदलाव किए हैं क्योंकि GitHub पर संस्करण जुड़ा हुआ है। उनका नया कोड उनकी वेबसाइट से डाउनलोड के लिए उपलब्ध है - यह उनके मूल विनिर्देश से स्थानांतरण की सीमा को बढ़ा सकता है। मैंने उसका मूल कोड ट्विक किया ताकि मैं 8x तक शिफ्ट कर सकूं।
जेम्स पॉल मिलार्ड

आपके कोड और बर्नसी पेज के बीच कोई अंतर नहीं है, मुख्य गणित अभी भी वही है, जो मजबूत अंतर मैं देख सकता हूं वह है 8192डाउनलोड पृष्ठ से कोड में खिड़की का आकार = , इसलिए आपको प्रसंस्करण के लिए 4x अधिक अंक करना होगा , मैं यह कहने के लिए वापस आया कि आधे खिड़की के आकार के साथ 8192/2=4096आप चरण वोकोडर के कुछ रहस्यों का उपयोग करके ऐसा ही कर सकते हैं, यहां मुद्दा यह है कि आप गुणवत्ता को बहुत कम प्रसंस्करण के साथ रख सकते हैं।
ederwander

हालाँकि मैंने बैटफोन को GitHub लिंक प्रदान किया है, यह मेरा कोड नहीं है। मैंने सिर्फ smbPitchShift () को देखने के लिए इंटरनेट खोज से इसे खींच लिया। मेरा कोड बर्नसी के संस्करण से बहुत संशोधित है, और इस फ़ाइल में स्थित है: github.com/CreativeDetectors/PitchScope_Player/blob/master/Src/…
James Paul Millard

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