Eşzamanlı Yakalama

Android 10, örneğin kullanıcı bir erişilebilirlik hizmeti tarafından sağlanan sesli komutlarla bir VoIP aramasını veya video kaydediciyi kontrol etmek isterse, aynı anda birden fazla etkin ses yakalamanın gerçekleşmesini gerektiren kullanıcı deneyimini geliştirir.

Ses çerçevesi, yalnızca belirli ayrıcalıklı uygulamaların normal uygulamalarla eşzamanlı olarak yakalamasına izin veren politikayı uygular.

Eşzamanlılık ilkesi, bir uygulamanın yakalamaya başlamasını engellemek yerine, yakalanan sesi susturarak uygulanır. Bu, çerçevenin, başka bir uygulama yakalamayı bitirdikten sonra mikrofona tam erişimi kurtarabileceği bir durumda, bir uygulamanın yakalamaya başlamasını engellemeden, etkin yakalama kullanım durumlarının sayısı ve türlerindeki değişiklikleri dinamik olarak ele almasına olanak tanır.

Ses HAL ve ses alt sisteminin sonucu, bazı durumlarda aktif bir istemciye sessiz olmayan ses sağlayan tek bir akış olsa bile, birkaç aktif giriş akışını aynı anda desteklemeleri gerektiğidir.

CDD gereksinimleri

Eşzamanlı yakalama desteği gereksinimleri için CDD'ye bakın.

Ses HAL'den durumları yakalayın

Eşzamanlı bir yakalama senaryosu, etkin giriş akışlarının sayısı, giriş aygıtı seçimi veya ön işleme yapılandırması açısından farklı durumlara neden olabilir.

Aşağıdakiler arasında eşzamanlılık olabilir:

  • Uygulama işlemcisinden (AP) birkaç giriş akışı
  • Giriş akışları ve sesli arama
  • Giriş akışları ve düşük güçlü özel kelime algılama uygulayan bir ses DSP'si

AP giriş akışlarının eşzamanlı etkinliği

Ses ilkesi yapılandırma dosyası audio_policy_configuration.xml , ses çerçevesi tarafından aynı anda kaç giriş akışının açılıp etkinleştirilebileceğini belirlemek için kullanılır.

En azından, ses HAL'ı, açık ve etkin yapılandırma dosyasında listelenen her bir giriş profilinin ( mixPort rol sink ) en az bir örneğini desteklemelidir.

Cihaz seçimi

Aynı HAL giriş akışına birkaç aktif istemci eklendiğinde, çerçeve, kullanım senaryosu önceliğine göre bu giriş akışı için uygun cihazı seçer.

Birkaç giriş akışı etkin olduğunda, her akış farklı bir cihaz seçimine sahip olabilir.

Teknoloji uyumluysa, ses HAL ve alt sisteminin Bluetooth kulaklık ve yerleşik mikrofon gibi farklı cihazlardan farklı akışların yakalanmasına izin vermesi önerilir.

Bir uyumsuzluk varsa (örneğin, iki cihaz aynı dijital ses arabirimini veya arka ucu paylaşır), ses HAL'ı, cihaz seçimini hangi akışın kontrol edeceğini seçmelidir.

Bu durumda:

  • Ortaya çıkan durum tutarlı olmalı ve aynı senaryo tekrarlandığında aynı cihaz seçimini sunmalıdır.
  • Eşzamanlılık durumu sona erdiğinde, kalan etkin akış, bu akışta başlangıçta istenen cihaza yönlendirilmelidir.

Etkin kullanım durumları arasında ses HAL'ı tarafından bir öncelik sırası tanımlanırsa, frameworks/av/services/audiopolicy/common/include/policy.h içindeki source_priority() içinde bulunanla aynı sırayı izleyin.

Ön işleme seçimi

Ses çerçevesi, addEffect() veya removeEffect() HAL yöntemlerini kullanarak bir giriş akışında ön işleme talep edebilir.

Belirli bir giriş akışında ön işleme için, ses çerçevesi yalnızca giriş akışındaki en yüksek öncelikli aktif kullanım durumuna karşılık gelen konfigürasyonu etkinleştirir. Ancak, kullanım senaryosu etkinleştirme ve devre dışı bırakma sırasında, aynı giriş akışında iki eşzamanlı etkin işlemin (örneğin, iki yankı iptali örneği) çalışmasına neden olan bir miktar çakışma olabilir. Bu durumda, HAL uygulaması hangi isteğin kabul edileceğini seçer; etkin istekleri izler ve herhangi bir işlem devre dışı bırakıldığında doğru durumu geri yükler.

Birkaç yakalama akışı aynı anda etkin olduğunda, farklı akışlarda farklı ön işleme istekleri çalıştırılabilir.

HAL ve ses alt sistemi uygulamaları, aynı giriş cihazını paylaşsalar bile, farklı akışlara farklı ön işlemelerin uygulanmasına izin vermelidir. Yani, birincil yakalama kaynağından akışları ayrıştırdıktan sonra ön işleme uygulanmalıdır.

Belirli bir ses alt sisteminde teknik nedenlerle mümkün değilse, ses HAL'ı, Cihaz seçimi bölümünde listelenenlere benzer öncelik kuralları uygulamalıdır.

AP'den eşzamanlı sesli arama ve yakalama

AP'den yakalama, sesli arama etkinken gerçekleşebilir. Bu durum Android 10'da yeni değil ve doğrudan eşzamanlı yakalama özelliği ile ilgili değil ancak bu senaryo için yönergelerden bahsetmekte fayda var.

Bir arama sırasında AP'den iki farklı yakalama türü gerekir.

Çağrı RX ve TX yakalama

Çağrı RX ve TX yakalama, AudioSource.VOICE_UPLINK veya AudioSource.VOICE_DOWNLINK ses kaynağı ve/veya AudioDevice.IN_TELEPHONY_RX cihazının kullanılmasıyla tetiklenir.

Ses HAL'leri, AudioDevice.IN_TELEPHONY_RX aygıtından uygun bir yolla giriş profilinde (rol sink mixPort ) gösterilmelidir.

Bir çağrı bağlandığında (ses modu AudioMode.IN_CALL ), AudioDevice.IN_TELEPHONY_RX cihazından en az bir aktif yakalama akışı olması mümkün olmalıdır.

Bir arama etkinken giriş cihazlarından yakalama

Bir çağrı etkin olduğunda (ses modu AudioMode.IN_CALL ), AP giriş akışlarının eşzamanlı etkinliği bölümünde belirtildiği gibi AP'den giriş akışlarını açmak ve etkinleştirmek mümkün olmalıdır.

Ancak, AP giriş akışlarından gelen isteklerle bir çakışma olması durumunda, cihaz seçimi ve ön işleme için öncelik her zaman sesli arama tarafından yönlendirilmelidir.

DSP ve AP'den eşzamanlı yakalama

Ses alt sistemi, düşük güçlü ses bağlamını veya özel sözcük algılama işlevlerini destekleyen bir DSP içerdiğinde, uygulama, AP'den ve ses DSP'sinden eşzamanlı yakalamayı desteklemelidir. Bu, hem ilk algılama aşaması sırasında DSP tarafından yakalamayı hem de algılama DSP tarafından tetiklendikten sonra AudioSource.HOTWORD ile AP tarafından yakalamayı içerir.

Bu, ses tetikleyicisi HAL tarafından uygulama tanımlayıcısı aracılığıyla bildirilen eşzamanlı yakalama bayrağı tarafından yansıtılmalıdır: ISoundTriggerHw.Properties.concurrentCapture = true .

Ses HAL'ı ayrıca AudioInputFlag.HW_HOTWORD bayrağıyla tanımlanan özel sözcük yakalamaya özel profili göstermeli ve girmelidir. Uygulama, bu profilde en az ses tetikleyicisi HAL tarafından aynı anda yüklenebilen ses modeli sayısına eşit sayıda akışın açılmasını ve etkinleştirilmesini desteklemelidir.

Diğer giriş profilleri aktifken bu giriş profilinden yakalama mümkün olmalıdır.

Asistan uygulamaları için çıkarım

Veri kullanımı ve kullanıcı bildirimi ile ilgili gereksinimler

Eşzamanlı mikrofon kullanımı kötüye kullanılırsa kullanıcının özel verilerini sızdırabileceğinden, Asistan rolünü üstlenmek isteyen ayrıcalıklı önceden yüklenmiş uygulamalara uygulanabilmesi için aşağıdaki koşullara ve garantilere ihtiyacımız var.

  • Mikrofon aracılığıyla toplanan veriler, kullanıcı Asistan ile etkileşime girmedikçe cihazdan ayrılmamalıdır. Örneğin, özel kelime tetiklendikten sonra.
  • Eşzamanlı olarak dinleyen uygulamalar, özel kelime algılandıktan sonra kullanıcıya görsel ipuçları sağlamalıdır. Bu, kullanıcıların daha fazla konuşmanın Asistan gibi farklı bir uygulamadan geçeceğini anlamalarına yardımcı olur.
  • Kullanıcılar mikrofonu veya Asistan tetikleyicilerini kapatabilmelidir.
  • Ses kayıtları depolandığında, kullanıcılar istedikleri zaman kayıtlara erişme, inceleme ve silme olanağına sahip olmalıdır.

Android 10 için işlevsel iyileştirmeler

Asistanlar birbirini engellemiyor

Android 9 veya önceki sürümlerde, cihazda her zaman açık olan iki Asistan olduğunda, bunlardan yalnızca biri özel sözcüğü dinliyor olabilir. Bu nedenle, iki Asistan arasında geçiş yapılması gerekiyordu. Android 10'da varsayılan Asistan, diğer Asistan ile aynı anda dinliyor olabilir. Bu, her iki Asistanı olan kullanıcılar için çok daha sorunsuz bir deneyim sağlar.

Mikrofonu açık tutan uygulamalar

Shazam veya Waze gibi uygulamalar mikrofonu açık tuttuğunda, varsayılan Asistan hala özel kelimeyi dinliyor olabilir.

Varsayılan olmayan Asistan uygulamaları için Android 10'un davranışında herhangi bir değişiklik yoktur.

Örnek ses HAL uygulaması

Bu belgedeki yönergelere uygun bir sesli HAL uygulaması örneği AOSP'de bulunabilir.