मुख्य कंटेंट तक स्किप करें

स्ट्रीमिंग साउंड वेव

वॉइस एक्टिविटी डिटेक्शन (VAD) के लिए, इस पेज को देखें।

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

एक स्ट्रीमिंग साउंड वेव बनाना

सबसे पहले आपको एक स्ट्रीमिंग साउंड वेव बनाना चाहिए। कृपया ध्यान दें कि आपको इसे एक स्ट्रॉन्ग रेफरेंस के रूप में ट्रीट करना चाहिए ताकि समय से पहले डिस्ट्रक्शन को रोका जा सके (उदाहरण के लिए ब्लूप्रिंट्स में इसे एक अलग वेरिएबल को असाइन करके या C++ में UPROPERTY() का उपयोग करके)।

स्ट्रीमिंग साउंड वेव नोड बनाएं

ध्वनि तरंग बजाना

आप फिर उस ध्वनि तरंग को बजा सकते हैं। हालांकि, अभी ऐसा करना आवश्यक नहीं है, आप ध्वनि तरंग को बाद में बजाना शुरू कर सकते हैं।

ध्वनि तरंग बजाने के विभिन्न उदाहरण

ऑडियो डेटा का पूर्व-आवंटन

वैकल्पिक रूप से, आप ऑडियो डेटा (बाइट्स) का पूर्व-आवंटन कर सकते हैं ताकि हर बार नया ऑडियो डेटा जोड़ने पर पूरे PCM बफर को फिर से आवंटित करने से बचा जा सके।

Pre Allocate Audio Data नोड

ऑडियो डेटा जोड़ना

मौजूदा बफर के अंत में ऑडियो डेटा जोड़ने के लिए, डायनामिक रूप से ऑडियो डेटा जोड़ने के लिए उपयुक्त फ़ंक्शन का उपयोग करें। प्लेबैक इन अपेंड्स के क्यू अनुक्रम का पालन करेगा।

Append Audio Data node

त्वरित या विकृत ऑडियो प्लेबैक से बचना

जब आप साउंड वेव के चलते समय ऑडियो डेटा स्ट्रीम कर रहे होते हैं, तो विशिष्ट परिदृश्यों में आपको त्वरित या विकृत ऑडियो प्लेबैक का अनुभव हो सकता है। यह समस्या आमतौर पर तब होती है जब:

  1. साउंड वेव प्लेबैक वर्तमान बफर के अंत के निकट/पर हो
  2. नया ऑडियो डेटा लगातार स्ट्रीमिंग साउंड वेव में कतारबद्ध किया जा रहा हो
  3. प्लेबैक इनकमिंग डेटा स्ट्रीम तक पहुँच जाता है

आप बिना किसी समस्या के किसी भी समय ऑडियो डेटा को पॉप्युलेट करना बंद कर सकते हैं। हालाँकि, उन परिदृश्यों के लिए जहाँ आपको निरंतर स्ट्रीमिंग की आवश्यकता होती है (जैसे रियल-टाइम ऑडियो स्ट्रीमिंग), आपके ऑडियो डेटा स्ट्रीमिंग की विश्वसनीयता के आधार पर दो दृष्टिकोण हैं:

विश्वसनीय, सुसंगत स्ट्रीमिंग के लिए: पहला चंक प्राप्त होने के तुरंत बाद प्लेबैक शुरू करने के लिए OnPopulateAudioState डेलिगेट का उपयोग करें।

अविश्वसनीय स्ट्रीमिंग के लिए (नेटवर्क समस्याएँ, रुक-रुक कर डेटा): प्लेबैक शुरू करने से पहले एक बड़ा बफर बनाने के लिए OnPopulateAudioState ट्रिगर होने के बाद भी एक अतिरिक्त विलंब जोड़ें।

प्लेबैक समस्याओं से बचने के लिए OnPopulateAudioState का उपयोग

नोट: आप किसी भी समय ऑडियो डेटा को पॉप्युलेट करना बंद कर सकते हैं, इससे प्लेबैक में कोई समस्या नहीं होगी। सटीक दृष्टिकोण आपके ऑडियो डेटा स्ट्रीमिंग की विश्वसनीयता पर निर्भर करता है - सुसंगत स्ट्रीम के लिए तत्काल प्लेबैक का उपयोग करें, या अविश्वसनीय स्ट्रीम (जैसे, नेटवर्क कनेक्टिविटी समस्याएं) के लिए अतिरिक्त बफरिंग विलंब जोड़ें।

उदाहरण उपयोग

अंत में, आपका कार्यान्वयन इस तरह दिख सकता है:

स्ट्रीमिंग साउंड वेव का उपयोग करने का एक उदाहरण

ऑडियो स्टेट पॉप्युलेट करने पर

OnPopulateAudioState डेलीगेट OnPopulateAudioData के समान ही कार्य करता है लेकिन पॉप्युलेट किए गए ऑडियो डेटा को प्रसारित नहीं करता। यह तब उपयोगी हो सकता है जब आप ऑडियो डेटा के पॉप्युलेट होने को ट्रैक करना चाहते हैं बिना पॉप्युलेट किए गए ऑडियो डेटा की सरणी पास किए, जो प्रदर्शन में सुधार कर सकता है।

ऑडियो स्टेट पॉप्युलेट करने पर डेलीगेट

PCM डेटा के साथ कार्य करना

प्लेबैक के दौरान PCM डेटा तक वास्तविक समय पहुंच के लिए, PCM डेटा हैंडलिंग देखें।