گرفتن همزمان

اندروید 10 تجربه کاربری را بهبود می‌بخشد که به بیش از یک ضبط صوتی فعال نیاز دارد تا همزمان اتفاق بیفتد، برای مثال، اگر کاربر بخواهد یک تماس VoIP یا ضبط ویدیو را با دستورات صوتی ارائه شده توسط یک سرویس دسترسی کنترل کند.

چارچوب صوتی این خط‌مشی را اجرا می‌کند که به برنامه‌های خاص اجازه می‌دهد همزمان با برنامه‌های معمولی عکس بگیرند.

خط مشی همزمانی با خاموش کردن صدای ضبط شده آن به جای جلوگیری از شروع ضبط برنامه اجرا می شود. این به چارچوب اجازه می‌دهد تا به صورت پویا تغییرات در تعداد و انواع موارد استفاده از عکس‌برداری فعال را بررسی کند، بدون اینکه مانع از شروع ضبط برنامه در موردی شود که بتواند دسترسی کامل به میکروفون را پس از پایان گرفتن برنامه دیگر بازیابی کند.

پیامد HAL صوتی و زیرسیستم صوتی این است که آنها باید چندین جریان ورودی فعال را به طور همزمان پشتیبانی کنند، حتی اگر در برخی موارد، فقط یک جریان صدای غیر بی صدا را برای یک کلاینت فعال ارائه دهد.

الزامات CDD

برای الزامات پشتیبانی از ضبط همزمان به CDD مراجعه کنید.

موقعیت ها را از HAL صوتی ضبط کنید

سناریوی ضبط همزمان می‌تواند در موقعیت‌های متفاوتی از نظر تعداد جریان‌های ورودی فعال، انتخاب دستگاه ورودی یا پیکربندی پیش‌پردازش منجر شود.

همزمانی می تواند بین موارد زیر اتفاق بیفتد:

  • چندین جریان ورودی از پردازنده برنامه (AP)
  • جریان های ورودی و تماس صوتی
  • جریان های ورودی و یک DSP صوتی که تشخیص کلمه کلیدی کم مصرف را پیاده سازی می کند

فعالیت همزمان جریان های ورودی AP

فایل پیکربندی خط مشی صوتی audio_policy_configuration.xml توسط چارچوب صوتی برای تعیین اینکه چه تعداد جریان ورودی را می توان همزمان باز و فعال کرد استفاده می شود.

حداقل، HAL صوتی باید حداقل یک نمونه از هر نمایه ورودی ( mixPort of role sink ) فهرست شده در فایل پیکربندی باز و فعال را پشتیبانی کند.

انتخاب دستگاه

هنگامی که چندین مشتری فعال به یک جریان ورودی HAL متصل می شوند، چارچوب دستگاه مناسب را برای این جریان ورودی بر اساس اولویت استفاده انتخاب می کند.

هنگامی که چندین جریان ورودی فعال هستند، هر جریان می تواند دستگاه انتخاب متفاوتی داشته باشد.

اگر این فناوری سازگار است، توصیه می‌شود HAL و زیرسیستم صوتی اجازه دهند جریان‌های مختلف از دستگاه‌های مختلف مانند هدست بلوتوث و میکروفون داخلی ضبط شوند.

اگر ناسازگاری وجود داشته باشد (مثلاً دو دستگاه از یک رابط صوتی دیجیتال یا انتهای پشتی مشترک استفاده می کنند)، HAL صوتی باید انتخاب کند که کدام جریان انتخاب دستگاه را کنترل می کند.

در این مورد:

  • حالت حاصل باید سازگار باشد و در صورت تکرار همان سناریو، انتخاب دستگاه یکسانی را ارائه دهد.
  • هنگامی که حالت همزمانی به پایان می رسد، جریان فعال باقی مانده باید به دستگاه درخواست شده اولیه در این جریان هدایت شود.

اگر ترتیب اولویت توسط HAL صوتی بین موارد استفاده فعال تعریف شده است، همان ترتیبی را که در source_priority() در frameworks/av/services/audiopolicy/common/include/policy.h یافت می شود، دنبال کنید.

انتخاب پیش پردازش

فریم ورک صوتی می‌تواند با استفاده از روش‌های HAL addEffect() یا removeEffect() درخواست پیش پردازش روی یک جریان ورودی کند.

برای پیش پردازش در یک جریان ورودی معین، چارچوب صوتی فقط پیکربندی مربوط به مورد استفاده فعال با اولویت را در جریان ورودی فعال می کند. با این حال، ممکن است در حین فعال‌سازی و غیرفعال‌سازی موارد استفاده، همپوشانی‌هایی وجود داشته باشد که باعث می‌شود دو فرآیند فعال همزمان (به عنوان مثال، دو نمونه لغو اکو) در یک جریان ورودی اجرا شوند. در این مورد، پیاده سازی HAL انتخاب می کند که کدام درخواست پذیرفته شود. درخواست های فعال را پیگیری می کند و در صورت غیرفعال شدن هر یک از فرآیندها وضعیت صحیح را بازیابی می کند.

هنگامی که چندین جریان ضبط به طور همزمان فعال هستند، ممکن است درخواست های پیش پردازش متفاوتی در جریان های مختلف اجرا شوند.

پیاده‌سازی HAL و زیرسیستم صوتی باید امکان اعمال پیش پردازش متفاوت را در جریان‌های مختلف، حتی اگر دستگاه ورودی یکسانی داشته باشند، فراهم کند. یعنی، پیش پردازش باید پس از دمکس کردن جریان ها از منبع ضبط اولیه اعمال شود.

اگر به دلایل فنی در یک زیرسیستم صوتی معین امکان‌پذیر نباشد، HAL صوتی باید قوانین اولویت را مشابه موارد فهرست شده در انتخاب دستگاه اعمال کند.

تماس صوتی و ضبط همزمان از AP

هنگامی که تماس صوتی فعال است، ضبط از AP ​​ممکن است اتفاق بیفتد. این وضعیت در اندروید 10 جدید نیست و ارتباط مستقیمی با ویژگی ضبط همزمان ندارد، اما ذکر دستورالعمل‌های این سناریو مفید است.

دو نوع مختلف عکسبرداری از AP ​​در طول تماس مورد نیاز است.

تماس RX و TX را ضبط کنید

ضبط تماس RX و TX با استفاده از منبع صوتی AudioSource.VOICE_UPLINK یا AudioSource.VOICE_DOWNLINK و/یا دستگاه AudioDevice.IN_TELEPHONY_RX انجام می شود.

HAL های صوتی باید در نمایه ورودی ( mixPort of role sink ) با یک مسیر در دسترس از دستگاه AudioDevice.IN_TELEPHONY_RX قرار بگیرند.

وقتی تماسی متصل است (حالت صوتی AudioMode.IN_CALL است)، باید حداقل یک جریان ضبط فعال از دستگاه AudioDevice.IN_TELEPHONY_RX وجود داشته باشد.

وقتی تماس فعال است، از دستگاه های ورودی عکس بگیرید

وقتی تماسی فعال است (حالت صوتی AudioMode.IN_CALL است)، باید بتوان جریان های ورودی را از AP ​​همانطور که در بخش فعالیت همزمان جریان های ورودی AP مشخص شده است، باز و فعال کرد.

با این حال، اولویت برای انتخاب دستگاه و پیش پردازش همیشه باید بر اساس تماس صوتی باشد در صورتی که با درخواست‌های جریان‌های ورودی AP تداخلی وجود داشته باشد.

ضبط همزمان از DSP و AP

هنگامی که زیرسیستم صوتی دارای یک DSP است که زمینه صوتی کم مصرف یا توابع تشخیص کلمه کلیدی را پشتیبانی می کند، پیاده سازی باید از ضبط همزمان از AP ​​و DSP صوتی پشتیبانی کند. این شامل هر دو ضبط توسط DSP در مرحله تشخیص اولیه و ضبط توسط AP با AudioSource.HOTWORD پس از شناسایی توسط DSP می شود.

این باید توسط پرچم ضبط همزمان گزارش شده توسط ماشه صوتی HAL از طریق توصیفگر پیاده سازی منعکس شود: ISoundTriggerHw.Properties.concurrentCapture = true .

HAL صوتی همچنین باید نمایه و نمایه ورودی ویژه ضبط کلمه کلیدی را که با پرچم AudioInputFlag.HW_HOTWORD شناسایی شده است، نمایش دهد. این پیاده سازی باید از باز کردن و فعال کردن تعدادی جریان در این نمایه حداقل برابر با تعداد مدل های صوتی که می توانند همزمان توسط ماشه صوتی HAL بارگذاری شوند، پشتیبانی کند.

عکسبرداری از این نمایه ورودی باید زمانی که سایر پروفایل های ورودی فعال هستند امکان پذیر باشد.

مفهوم برای پیاده سازی دستیار

الزامات مربوط به استفاده از داده و اطلاع رسانی کاربر

از آنجایی که استفاده همزمان از میکروفون، در صورت سوء استفاده، می‌تواند اطلاعات خصوصی کاربر را درز کند، ما باید شرایط و ضمانت‌های زیر را برای برنامه‌های از پیش بارگذاری‌شده ممتازی که می‌خواهند نقش «دستیار» را نگه دارند، اعمال کنیم.

  • داده‌های جمع‌آوری‌شده از طریق میکروفون نباید از دستگاه خارج شوند، مگر اینکه کاربر با «دستیار» تعامل داشته باشد. به عنوان مثال، پس از راه اندازی کلمه کلیدی.
  • برنامه هایی که به طور همزمان گوش می دهند باید پس از شناسایی کلمه کلیدی، نشانه های بصری را به کاربر ارائه دهند. این به کاربران کمک می‌کند بفهمند که مکالمات بعدی از طریق برنامه دیگری مانند Assistant انجام می‌شود.
  • کاربران باید این امکان را داشته باشند که میکروفون یا تریگرهای دستیار را خاموش کنند.
  • هنگامی که صداهای ضبط شده ذخیره می شوند، کاربران باید توانایی دسترسی، بررسی و حذف فایل های ضبط شده را در هر زمان داشته باشند.

بهبودهای عملکردی برای اندروید 10

دستیاران یکدیگر را مسدود نمی کنند

در اندروید 9 یا پایین‌تر، وقتی دو دستیار همیشه روشن روی دستگاه وجود دارد، تنها یکی از آنها می‌تواند به کلمه کلیدی آن گوش دهد. از این رو، نیاز به جابجایی بین دو دستیار وجود داشت. در اندروید 10، دستیار پیش فرض می تواند همزمان با دستیار دیگر گوش کند. این منجر به تجربه بسیار روان تری برای کاربران با هر دو دستیار می شود.

برنامه هایی که میکروفون را باز نگه می دارند

وقتی برنامه‌هایی مانند Shazam یا Waze میکروفون را باز نگه می‌دارند، دستیار پیش‌فرض همچنان می‌تواند به کلمه کلیدی گوش دهد.

برای برنامه های غیر پیش فرض دستیار، هیچ تغییری در رفتار اندروید 10 وجود ندارد.

نمونه اجرای HAL صوتی

نمونه ای از اجرای HAL صوتی مطابق با دستورالعمل های این سند را می توان در AOSP یافت.