Android 10 में, एक साथ एक से ज़्यादा ऑडियो कैप्चर करने की सुविधा को बेहतर बनाया गया है. उदाहरण के लिए, अगर उपयोगकर्ता को किसी सुलभता सेवा की मदद से, वॉइस कमांड देकर किसी वीओआईपी कॉल या वीडियो रिकॉर्ड करने वाले ऐप्लिकेशन को कंट्रोल करना है.
ऑडियो फ़्रेमवर्क, नीति को लागू करता है. इससे, सामान्य ऐप्लिकेशन के साथ-साथ सिर्फ़ कुछ खास ऐप्लिकेशन को ऑडियो रिकॉर्ड करने की अनुमति मिलती है.
एक साथ कई ऐप्लिकेशन से ऑडियो रिकॉर्ड करने से जुड़ी नीति को लागू करने के लिए, रिकॉर्ड किए गए ऑडियो को बंद किया जाता है. इसके बजाय, किसी ऐप्लिकेशन को रिकॉर्डिंग शुरू करने से नहीं रोका जाता. इससे फ़्रेमवर्क, कैप्चर की सुविधा के चालू इस्तेमाल के उदाहरणों की संख्या और टाइप में होने वाले बदलावों को डाइनैमिक तरीके से ठीक कर पाता है. साथ ही, इससे किसी ऐप्लिकेशन को, रिकॉर्डिंग शुरू करने से भी रोका जाता है. ऐसा तब होता है, जब वह किसी दूसरे ऐप्लिकेशन की रिकॉर्डिंग पूरी करने के बाद, माइक्रोफ़ोन का पूरा ऐक्सेस वापस पा लेता है.
ऑडियो एचएएल और ऑडियो सबसिस्टम के लिए इसका मतलब है कि उन्हें एक साथ कई ऐक्टिव इनपुट स्ट्रीम के साथ काम करना चाहिए. भले ही, कुछ मामलों में किसी ऐक्टिव क्लाइंट को सिर्फ़ एक स्ट्रीम से नॉन-साइलेंट ऑडियो मिल रहा हो.
सीडीडी से जुड़ी ज़रूरी शर्तें
एक साथ कई फ़ोटो कैप्चर करने की सुविधा के लिए ज़रूरी शर्तों के बारे में जानने के लिए, सीडीडी देखें.
ऑडियो एचएएल से स्थितियां कैप्चर करना
एक साथ कैप्चर होने की प्रोसेस के दौरान, चालू इनपुट स्ट्रीम की संख्या, इनपुट के लिए डिवाइस चुनने या प्री-प्रोसेसिंग कॉन्फ़िगरेशन से जुड़ी स्थितियां अलग-अलग हो सकती हैं.
एक साथ कई टास्क तब हो सकते हैं, जब:
- ऐप्लिकेशन प्रोसेसर (एपी) से कई इनपुट स्ट्रीम
- इनपुट स्ट्रीम और वॉइस कॉल
- इनपुट स्ट्रीम और ऑडियो डीएसपी, जो कम बिजली वाले हॉटवर्ड डिटेक्शन को लागू करता है
एपी इनपुट स्ट्रीम की एक साथ होने वाली गतिविधि
ऑडियो नीति कॉन्फ़िगरेशन फ़ाइल audio_policy_configuration.xml
का इस्तेमाल, ऑडियो फ़्रेमवर्क करता है. इससे यह तय होता है कि एक साथ कितनी इनपुट स्ट्रीम खोली और चालू की जा सकती हैं.
ऑडियो एचएएल, खुली और चालू कॉन्फ़िगरेशन फ़ाइल में दी गई हर इनपुट प्रोफ़ाइल (भूमिका sink
का mixPort
) के कम से कम एक इंस्टेंस के साथ काम करना चाहिए.
डिवाइस चुनना
जब कई ऐक्टिव क्लाइंट एक ही एचएएल इनपुट स्ट्रीम से जुड़े होते हैं, तो फ़्रेमवर्क इस्तेमाल के उदाहरण की प्राथमिकता के आधार पर इस इनपुट स्ट्रीम के लिए सही डिवाइस चुनता है.
जब कई इनपुट स्ट्रीम चालू होती हैं, तो हर स्ट्रीम के लिए डिवाइस की अलग सेटिंग चुनी जा सकती है.
अगर टेक्नोलॉजी काम करती है, तो हमारा सुझाव है कि ऑडियो एचएएल और सबसिस्टम, अलग-अलग डिवाइसों से अलग-अलग स्ट्रीम कैप्चर करने की अनुमति दें. जैसे, ब्लूटूथ हेडसेट और डिवाइस में पहले से मौजूद माइक.
अगर साथ काम नहीं करता है (उदाहरण के लिए, दो डिवाइस का डिजिटल ऑडियो इंटरफ़ेस या बैक एंड एक ही है), तो ऑडियो एचएएल को यह चुनना होगा कि डिवाइस चुनने के कंट्रोल को कौनसी स्ट्रीम कंट्रोल करेगा.
इस मामले में:
- नतीजे की स्थिति एक जैसी होनी चाहिए और एक ही स्थिति को दोहराए जाने पर एक ही डिवाइस को चुनना ज़रूरी है.
- एक साथ कई डिवाइसों पर स्ट्रीम करने की सुविधा बंद होने के बाद, बचे हुए डिवाइसों पर स्ट्रीम करने के लिए, उस डिवाइस पर स्ट्रीमिंग की जानी चाहिए जिस पर शुरुआत में अनुरोध किया गया था.
अगर इस्तेमाल के कुछ मामलों के बीच ऑडियो एचएएल से प्राथमिकता का क्रम तय होता है, तो वही क्रम अपनाएं जो source_priority()
में frameworks/av/services/audiopolicy/common/include/policy.h
में बताया गया है
डेटा को पहले से प्रोसेस करने का विकल्प
ऑडियो फ़्रेमवर्क, addEffect()
या removeEffect()
एचएएल तरीकों का इस्तेमाल करके, इनपुट स्ट्रीम पर प्रीप्रोसेसिंग का अनुरोध कर सकता है.
किसी इनपुट स्ट्रीम पर प्रीप्रोसेसिंग के लिए, ऑडियो फ़्रेमवर्क सिर्फ़ उस कॉन्फ़िगरेशन को चालू करता है जो इनपुट स्ट्रीम पर सबसे ज़्यादा प्राथमिकता वाले ऐक्टिव इस्तेमाल के उदाहरण से जुड़ा हो. हालांकि, इस्तेमाल के उदाहरण को चालू और बंद करने के दौरान, कुछ ओवरलैप हो सकता है. इससे एक ही इनपुट स्ट्रीम पर, एक साथ दो प्रोसेस (उदाहरण के लिए, गूंज कम करने वाले टूल के दो इंस्टेंस) चल सकती हैं. इस मामले में, HAL लागू करता है कि कौनसा अनुरोध स्वीकार किया गया है. यह चालू अनुरोधों को ट्रैक करता है और दोनों में से किसी भी प्रोसेस को बंद करने पर सही स्थिति को पहले जैसा करता है.
जब एक साथ कई कैप्चर स्ट्रीम चालू होती हैं, तो अलग-अलग स्ट्रीम पर प्री-प्रोसेसिंग के अलग-अलग अनुरोध चलाए जा सकते हैं.
एचएएल और ऑडियो सबसिस्टम के लागू होने से, अलग-अलग स्ट्रीम पर अलग-अलग प्री प्रोसेसिंग लागू की जा सकती है. भले ही, वे एक ही इनपुट डिवाइस का इस्तेमाल करते हों. इसका मतलब है कि प्राइमरी कैप्चर सोर्स से स्ट्रीम को अलग करने के बाद, प्री प्रोसेसिंग को लागू किया जाना चाहिए.
अगर किसी ऑडियो सबसिस्टम पर तकनीकी वजहों से ऐसा करना मुमकिन नहीं है, तो ऑडियो एचएएल को प्राथमिकता के ऐसे नियम लागू करने चाहिए जो डिवाइस चुनने में दिए गए नियमों जैसे हों.
AP से कैप्चर और एक साथ किए गए वॉइस कॉल
वॉइस कॉल के दौरान AP से कैप्चर किया जा सकता है. Android 10 में यह स्थिति नई नहीं है. यह सीधे तौर पर, एक साथ कई फ़ोटो लेने की सुविधा से जुड़ी नहीं है. हालांकि, इस स्थिति के लिए दिशा-निर्देशों के बारे में बताना ज़रूरी है.
कॉल के दौरान, एपी से दो अलग-अलग तरह के कैप्चर की ज़रूरत होती है.
- कॉल के आरएक्स और टीएक्स पाथ कैप्चर करना
- इनपुट डिवाइस से ऑडियो रिकॉर्ड करना (उदाहरण के लिए, डिवाइस में पहले से मौजूद माइक)
कॉल के इनपुट और आउटपुट को रिकॉर्ड करना
कॉल के इनपुट और आउटपुट को रिकॉर्ड करने की सुविधा, ऑडियो सोर्स AudioSource.VOICE_UPLINK
या AudioSource.VOICE_DOWNLINK
और/या डिवाइस AudioDevice.IN_TELEPHONY_RX
के इस्तेमाल से ट्रिगर होती है.
ऑडियो एचएएल को डिवाइस AudioDevice.IN_TELEPHONY_RX
से उपलब्ध रूट के साथ, इनपुट प्रोफ़ाइल (भूमिका sink
का mixPort
) पर दिखाना चाहिए.
जब कोई कॉल कनेक्ट होती है (ऑडियो मोड AudioMode.IN_CALL
है), तो हो सकता है कि AudioDevice.IN_TELEPHONY_RX
डिवाइस से कम से कम एक कैप्चर स्ट्रीम चालू हो.
कॉल चालू होने पर, इनपुट डिवाइसों से कैप्चर करना
जब कोई कॉल चालू हो (ऑडियो मोड AudioMode.IN_CALL
हो), तो एपी से इनपुट स्ट्रीम खोली और चालू की जा सकती हैं. इस बारे में एपी इनपुट स्ट्रीम की एक साथ होने वाली गतिविधि सेक्शन में बताया गया है.
हालांकि, अगर एपी इनपुट स्ट्रीम के अनुरोधों में कोई विरोधाभास होता है, तो डिवाइस चुनने और पहले से प्रोसेस करने के लिए, हमेशा वॉइस कॉल को प्राथमिकता दी जानी चाहिए.
डीएसपी और एपी से एक साथ डेटा कैप्चर करना
जब ऑडियो सबसिस्टम में कम पावर वाले ऑडियो कॉन्टेक्स्ट या हॉटवर्ड डिटेक्शन फ़ंक्शन के साथ काम करने वाला डीएसपी होता है, तो इसे लागू करने पर एपी और ऑडियो डीएसपी, दोनों से एक साथ ऑडियो कैप्चर कर सकते हैं.
इसमें, शुरुआती डिटेक्शन फ़ेज़ के दौरान डीएसपी से कैप्चर किए गए डेटा और डीएसपी से डिटेक्शन ट्रिगर होने के बाद, AudioSource.HOTWORD
के साथ एपी से कैप्चर किए गए डेटा, दोनों शामिल हैं.
यह जानकारी, लागू करने के डिस्क्रिप्टर: ISoundTriggerHw.Properties.concurrentCapture = true
के ज़रिए, साउंड ट्रिगर एचएएल की ओर से रिपोर्ट किए गए एक साथ कैप्चर करने के फ़्लैग से दिखनी चाहिए.
ऑडियो एचएएल को हॉटवर्ड कैप्चर के लिए, AudioInputFlag.HW_HOTWORD
फ़्लैग की मदद से पहचानी गई प्रोफ़ाइल को भी एक्सपोज़ और इनपुट करना चाहिए. लागू करने की प्रक्रिया से इस प्रोफ़ाइल पर कई स्ट्रीम को खोलने और चालू करने में मदद मिलनी चाहिए. यह संख्या, कम से कम उन साउंड मॉडल की संख्या के बराबर होनी चाहिए जिन्हें साउंड ट्रिगर एचएएल के साथ एक साथ लोड किया जा सकता है.
अन्य इनपुट प्रोफ़ाइलें चालू होने पर, इस इनपुट प्रोफ़ाइल से कैप्चर किया जा सकता है.
Assistant को लागू करने पर क्या असर पड़ेगा
डेटा के इस्तेमाल और उपयोगकर्ता को सूचना देने से जुड़ी ज़रूरी शर्तें
अगर माइक का एक साथ इस्तेमाल करने का गलत इस्तेमाल किया जाता है, तो उपयोगकर्ता का निजी डेटा लीक हो सकता है. इसलिए, हमें उन ऐप्लिकेशन पर ये शर्तें और गारंटी लागू करनी होंगी जो पहले से लोड किए गए ऐप्लिकेशन हैं और Assistant की भूमिका निभाने के लिए कहते हैं.
- माइक्रोफ़ोन से इकट्ठा किया गया डेटा, डिवाइस से तब तक बाहर नहीं जाना चाहिए, जब तक उपयोगकर्ता Assistant के साथ इंटरैक्ट नहीं कर रहा है. उदाहरण के लिए, हॉटवर्ड ट्रिगर होने के बाद.
- एक साथ सुनने वाले ऐप्लिकेशन को, हॉटवर्ड का पता चलने के बाद उपयोगकर्ता को विज़ुअल से जुड़े संकेत देने चाहिए. इससे उपयोगकर्ताओं को यह समझने में मदद मिलती है कि आगे की बातचीत, Assistant जैसे किसी दूसरे ऐप्लिकेशन पर होगी.
- उपयोगकर्ताओं के पास माइक्रोफ़ोन या Assistant के ट्रिगर को बंद करने की सुविधा होनी चाहिए.
- जब ऑडियो रिकॉर्डिंग सेव की जाती हैं, तो उपयोगकर्ताओं के पास किसी भी समय रिकॉर्डिंग को ऐक्सेस करने, देखने, और मिटाने का विकल्प होना चाहिए.
Android 10 के काम करने के तरीके में किए गए सुधार
Assistant एक-दूसरे को ब्लॉक नहीं कर रही हैं
Android 9 या इससे पहले के वर्शन वाले डिवाइस पर, अगर हमेशा चालू रहने वाली दो Assistant हैं, तो हो सकता है कि उनमें से सिर्फ़ एक ही डिवाइस के लिए इस्तेमाल होने वाले हॉटवर्ड को सुन रहा हो. इस वजह से, दोनों सहायक के बीच स्विच करना पड़ा. Android 10 में, डिफ़ॉल्ट Assistant और दूसरी Assistant, एक साथ सुन सकती हैं. इससे, दोनों Assistant का इस्तेमाल करने वाले लोगों को बेहतर अनुभव मिलता है.
माइक चालू रखने वाले ऐप्लिकेशन
जब Shazam या Waze जैसे ऐप्लिकेशन माइक को चालू रखते हैं, तब भी डिफ़ॉल्ट Assistant, हॉटवर्ड सुन सकती है.
डिफ़ॉल्ट Assistant ऐप्लिकेशन के अलावा, अन्य Assistant ऐप्लिकेशन के लिए Android 10 में कोई बदलाव नहीं हुआ है.
ऑडियो एचएएल लागू करने का सैंपल
इस दस्तावेज़ में दिए गए दिशा-निर्देशों का पालन करने वाले ऑडियो एचएएल को लागू करने का उदाहरण, AOSP में देखा जा सकता है.