Android 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 انجام میشود.
- کاربران باید این امکان را داشته باشند که میکروفون یا تریگرهای Assistant را خاموش کنند.
- هنگامی که صداهای ضبط شده ذخیره می شوند، کاربران باید توانایی دسترسی، بررسی و حذف فایل های ضبط شده را در هر زمان داشته باشند.
بهبودهای عملکردی برای اندروید 10
دستیاران یکدیگر را مسدود نمی کنند
در اندروید 9 یا پایینتر، وقتی دو دستیار همیشه روشن روی دستگاه وجود دارد، تنها یکی از آنها میتواند به کلمه کلیدی آن گوش دهد. از این رو، نیاز به جابجایی بین دو دستیار وجود داشت. در اندروید 10، دستیار پیش فرض می تواند همزمان با دستیار دیگر گوش کند. این باعث می شود تا کاربرانی که هر دو دستیار دارند تجربه بسیار روان تری داشته باشند.
برنامه هایی که میکروفون را باز نگه می دارند
وقتی برنامههایی مانند Shazam یا Waze میکروفون را باز نگه میدارند، دستیار پیشفرض همچنان میتواند به کلمه کلیدی گوش دهد.
برای برنامههای غیر پیشفرض دستیار، هیچ تغییری در رفتار اندروید 10 وجود ندارد.
نمونه اجرای HAL صوتی
نمونه ای از اجرای HAL صوتی مطابق با دستورالعمل های این سند را می توان در AOSP یافت.