Android 10, birden fazla aktif ses yakalamanın aynı anda gerçekleşmesini gerektiren kullanıcı deneyimini geliştirir (örneğin, kullanıcı bir erişilebilirlik hizmeti tarafından sağlanan sesli komutlarla bir VoIP aramasını veya video kaydediciyi kontrol etmek isterse).
Ses çerçevesi, yalnızca belirli ayrıcalıklı uygulamaların normal uygulamalarla eşzamanlı olarak yakalanması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, başka bir uygulamanın yakalamayı bitirdikten sonra mikrofona tam erişimi kurtarabildiği bir durumda, bir uygulamanın yakalamaya başlamasını engellemeden, çerçevenin aktif yakalama kullanım durumlarının sayısı ve türündeki değişiklikleri dinamik olarak ele almasına olanak tanır.
Ses HAL ve ses alt sistemi için sonuç, bazı durumlarda yalnızca bir akışın aktif bir istemciye sessiz olmayan ses sağlamasına rağmen aynı anda birden fazla aktif giriş akışını desteklemesi gerektiğidir.
CDD gereksinimleri
Eşzamanlı yakalama desteği gereksinimleri için CDD'ye bakın.
Ses HAL'inden durumları yakalayın
Eşzamanlı bir yakalama senaryosu, aktif giriş akışlarının sayısı, giriş cihazı seçimi veya ön işleme konfigürasyonu açısından farklı durumlarla sonuçlanabilir.
Eşzamanlılık aşağıdakiler arasında gerçekleşebilir:
- Uygulama işlemcisinden (AP) çeşitli giriş akışları
- Giriş akışları ve sesli arama
- Giriş akışları ve düşük güçlü özel kelime algılamayı uygulayan bir ses DSP'si
AP giriş akışlarının eşzamanlı etkinliği
Ses politikası yapılandırma dosyası audio_policy_configuration.xml
ses çerçevesi tarafından aynı anda kaç giriş akışının açılıp aktif olabileceğini belirlemek için kullanılır.
Ses HAL'nin en azından açık ve etkin yapılandırma dosyasında listelenen her giriş profilinin (rol sink
mixPort
) en az bir örneğini desteklemesi gerekir.
Cihaz seçimi
Aynı HAL giriş akışına birden fazla aktif istemci bağlandığında çerçeve, kullanım durumu önceliğine göre bu giriş akışı için uygun cihazı seçer.
Birkaç giriş akışı etkin olduğunda her akışın farklı bir cihaz seçimi olabilir.
Teknoloji uyumluysa, ses HAL'inin 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 arayüzünü veya arka ucu paylaşıyorsa), ses HAL'nin cihaz seçimini hangi akışın kontrol edeceğini seçmesi gerekir.
Bu durumda:
- Ortaya çıkan durumun tutarlı olması ve aynı senaryo tekrarlandığında aynı cihaz seçimini sunması gerekir.
- Eşzamanlılık durumu sona erdiğinde, kalan aktif akışın bu akışta başlangıçta istenen cihaza yönlendirilmesi gerekir.
Aktif kullanım durumları arasında ses HAL tarafından bir öncelik sırası tanımlanmışsa, frameworks/av/services/audiopolicy/common/include/policy.h
dosyasındaki source_priority()
de bulunan sıranın aynısını izleyin.
Ön işleme seçimi
Ses çerçevesi, addEffect()
veya removeEffect()
HAL yöntemlerini kullanarak bir giriş akışında ön işleme talebinde bulunabilir.
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. Bununla birlikte, kullanım senaryosunun etkinleştirilmesi ve devre dışı bırakılması sırasında bir miktar çakışma olabilir ve bu da aynı giriş akışında eşzamanlı iki etkin işlemin (örneğin, iki yankı iptalcisi örneğinin) çalışmasına neden olabilir. Bu durumda HAL uygulaması hangi isteğin kabul edileceğini seçer; etkin istekleri takip eder ve her iki işlem de 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şlemenin uygulanmasına izin vermelidir. Yani, akışların birincil yakalama kaynağından ayrıştırılmasından sonra ön işleme uygulanmalıdır.
Belirli bir ses alt sisteminde teknik nedenlerden dolayı bu mümkün değilse ses HAL'nin, Cihaz seçimi bölümünde listelenenlere benzer öncelik kuralları uygulaması gerekir.
Eşzamanlı sesli arama ve AP'den yakalama
AP'den yakalama sesli arama etkinken gerçekleşebilir. Bu durum Android 10'da yeni değil ve eşzamanlı yakalama özelliğiyle doğrudan ilgili değil ancak bu senaryoya yönelik yönergelerden bahsetmekte fayda var.
Bir çağrı sırasında AP'den iki farklı yakalama türü gereklidir.
Arama RX ve TX'i yakalayın
Arama RX ve TX'in yakalanması, AudioSource.VOICE_UPLINK
veya AudioSource.VOICE_DOWNLINK
ses kaynağının ve/veya AudioDevice.IN_TELEPHONY_RX
cihazının kullanılmasıyla tetiklenir.
Ses HAL'leri, AudioDevice.IN_TELEPHONY_RX
aygıtındaki mevcut bir rota ile giriş profilinde (rol sink
mixPort
) gösterilmelidir.
Bir çağrı bağlandığında (ses modu AudioMode.IN_CALL
), AudioDevice.IN_TELEPHONY_RX
aygıtından en az bir aktif yakalama akışının olması mümkün olmalıdır.
Bir çağrı aktifken 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 gelen 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şlemeye yönelik öncelik her zaman sesli çağrı tarafından yönlendirilmelidir.
DSP ve AP'den eşzamanlı yakalama
Ses alt sistemi, düşük güçlü ses bağlamını veya özel kelime 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ı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'si aynı zamanda AudioInputFlag.HW_HOTWORD
işaretiyle tanımlanan özel sözcük yakalamaya özel profili ortaya çıkarmalı ve giriş yapmalıdır. Uygulama, bu profil üzerinde en azından ses tetikleyici HAL tarafından eş zamanlı olarak yüklenebilecek ses modeli sayısına eşit sayıda akışın açılmasını ve etkinleştirilmesini desteklemelidir.
Diğer giriş profilleri etkinken bu giriş profilinden yakalama mümkün olmalıdır.
Asistan uygulamalarına yönelik çıkarımlar
Veri kullanımı ve kullanıcı bildirimine ilişkin gereksinimler
Eşzamanlı mikrofon kullanımı, kötüye kullanılması durumunda kullanıcıya özel verileri sızdırabileceğinden, Asistan rolünü üstlenmeyi isteyen ayrıcalıklı, önceden yüklenmiş uygulamalara aşağıdaki koşulların ve garantilerin uygulanmasına ihtiyacımız var.
- Kullanıcı Asistan'la etkileşime girmediği sürece mikrofon aracılığıyla toplanan veriler cihazdan çıkmamalıdır. Örneğin, özel kelime tetiklendikten sonra.
- Eş zamanlı olarak dinleyen uygulamalar, özel kelime tespit edildikten sonra kullanıcıya görsel ipuçları sağlamalıdır. Bu, kullanıcıların daha sonraki görüşmelerin Asistan gibi farklı bir uygulama aracılığıyla yapılacağını anlamalarına yardımcı olur.
- Kullanıcılar mikrofonu veya Asistan tetikleyicilerini kapatma olanağına sahip olmalıdır.
- Ses kayıtları depolandığında, kullanıcılar kayıtlara istedikleri zaman erişme, bunları 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 kelimeyi dinliyor olabilir. Bu nedenle iki Asistan arasında geçiş yapma ihtiyacı doğdu. Android 10'da varsayılan Asistan, diğer Asistanla eş zamanlı olarak dinleyebilir. Bu, her iki Asistana sahip 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 hâlâ özel sözcüğü dinliyor olabilir.
Varsayılan olmayan Asistan uygulamalarının Android 10 davranışında herhangi bir değişiklik yoktur.
Örnek ses HAL uygulaması
Bu belgedeki yönergelere uygun bir ses HAL uygulamasının örneğini AOSP'de bulabilirsiniz.