Android 10, aynı anda birden fazla etkin ses yakalama işleminin yapılmasını gerektiren kullanıcı deneyimini iyileştirir. Örneğin, kullanıcı bir VoIP görüşmesini veya video kaydediciyi bir erişilebilirlik hizmeti tarafından sağlanan sesli komutlarla kontrol etmek istiyorsa bu özellikten yararlanabilir.
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 politikası, bir uygulamanın kaydı başlatmasını engellemek yerine, yakalanan sesin kapatılmasıyla uygulanır. Bu sayede çerçeve, etkin kayıt kullanım alanlarının sayısı ve türlerindeki değişiklikleri dinamik olarak ele alabilir. Böylece, başka bir uygulamanın kaydı sona erdikten sonra mikrofona tam erişimi geri alabilen bir uygulamanın kaydı başlatmasını engellemez.
Ses HAL'i ve ses alt sisteminin bu durumda yapması gereken, bazı durumlarda etkin bir istemciye sessiz olmayan ses sağlayan tek bir akış olsa bile aynı anda birden fazla etkin giriş akışını desteklemektir.
CDD şartları
Eşzamanlı yakalama desteğiyle ilgili gereksinimler için CDD'ye bakın.
Ses HAL'inden durumları yakalama
Eşzamanlı yakalama senaryosu, etkin giriş akışlarının sayısı, giriş cihazı seçimi veya ön işleme yapılandırması açısından farklı durumlara neden olabilir.
Eşzamanlılık aşağıdakiler arasında gerçekleşebilir:
- Uygulama işlemciden (AP) gelen çeşitli giriş akışları
- Giriş akışları ve sesli arama
- Giriş akışları ve düşük güçte özel kelime algılama 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çılabileceğini ve etkin olabileceğini belirlemek için kullanılır.
Ses HAL'i en azından açık ve etkin yapılandırma dosyasında listelenen her giriş profilinden en az bir örneği (sink
rolünün mixPort
örneği) desteklemelidir.
Cihaz Seçimi
Aynı HAL giriş akışına birkaç etkin istemci bağlandığında çerçeve, kullanım alanı önceliğine göre bu giriş akışı için uygun cihazı seçer.
Birden fazla giriş akışı etkin olduğunda her akış farklı bir cihaz seçimine sahip 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.
Uyumsuzluk varsa (ör. iki cihaz aynı dijital ses arayüzünü veya arka ucunu paylaşıyorsa) ses HAL'i, cihaz seçimini hangi yayının kontrol edeceğini seçmelidir.
Bu durumda:
- Sonuçta 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 alanları arasında ses HAL'i tarafından bir öncelik sırası tanımlanmışsa frameworks/av/services/audiopolicy/common/include/policy.h
'teki source_priority()
bölümündeki sırayı uygulayın.
Ön işleme seçimi
Ses çerçevesi, addEffect()
veya removeEffect()
HAL yöntemlerini kullanarak bir giriş akışında ön işleme isteyebilir.
Ses çerçevesi, belirli bir giriş akışında ön işleme için yalnızca giriş akışındaki en yüksek öncelikli etkin kullanım alanına karşılık gelen yapılandırmayı etkinleştirir. Ancak kullanım alanı etkinleştirme ve devre dışı bırakma sırasında bazı çakışmalar olabilir. Bu da aynı giriş akışında iki eşzamanlı etkin işlemin (ör. iki yankı giderici örneği) çalışmasına neden olur. 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.
Aynı anda birden fazla yakalama akışı etkin olduğunda farklı ön işleme istekleri farklı akışlarda çalıştırılabilir.
HAL ve ses alt sistemi uygulamaları, aynı giriş cihazını paylaşsalar bile farklı akışlara farklı ön işleme uygulanmasına olanak tanımalıdır. Yani ön işleme, birincil yakalama kaynağından gelen akışların ardışık düzeni kaldırıldıktan sonra uygulanmalıdır.
Belirli bir ses alt sisteminde teknik nedenlerle bu mümkün değilse ses HAL'i, Cihaz seçimi bölümünde listelenenlere benzer öncelik kuralları uygulamalıdır.
AP'den eşzamanlı sesli arama ve kayıt
AP'den yakalama işlemi, sesli görüşme etkinken gerçekleşebilir. Bu durum Android 10'da yeni değildir ve doğrudan eşzamanlı çekim özelliğiyle ilgili değildir ancak bu senaryoya ilişkin kurallardan bahsetmek faydalı olacaktır.
Görüşme sırasında AP'den iki farklı türde yakalama gerekir.
Arama RX ve TX'sini yakalama
Aramanın alınması ve gönderilmesi, AudioSource.VOICE_UPLINK
veya AudioSource.VOICE_DOWNLINK
ses kaynağının ve/veya AudioDevice.IN_TELEPHONY_RX
cihazın kullanılmasıyla tetiklenir.
Ses HAL'leri, AudioDevice.IN_TELEPHONY_RX
cihazından kullanılabilen bir rotayla giriş profilinde (sink
rolünün mixPort
) gösterilmelidir.
Bir arama bağlıyken (ses modu AudioMode.IN_CALL
ise) AudioDevice.IN_TELEPHONY_RX
cihazından en az bir etkin yakalama akışı olmalıdır.
Arama etkinken giriş cihazlarından veri yakalama
Bir arama etkinken (ses modu AudioMode.IN_CALL
ise) AP giriş akışlarının eşzamanlı etkinliği bölümünde belirtildiği gibi AP'den giriş akışlarını açıp etkinleştirmek mümkün olmalıdır.
Ancak AP giriş akışlarından gelen isteklerle çakışma olması durumunda cihaz seçimi ve ön işleme önceliği her zaman sesli görüşmeye göre belirlenmelidir.
DSP ve AP'den eşzamanlı yakalama
Ses alt sistemi, düşük güç tüketimi gerektiren ses bağlamı veya özel kelime algılama işlevlerini destekleyen bir DSP içeriyorsa uygulama, AP'den ve ses DSP'sinden eşzamanlı olarak veri yakalamayı desteklemelidir.
Buna hem ilk algılama aşamasında DSP tarafından yapılan yakalama hem de algılama DSP tarafından tetiklendikten sonra AP tarafından AudioSource.HOTWORD
ile yapılan yakalama dahildir.
Bu durum, ses tetikleyici HAL tarafından uygulama tanımlayıcısı aracılığıyla bildirilen eşzamanlı yakalama işaretiyle yansıtılmalıdır: ISoundTriggerHw.Properties.concurrentCapture = true
.
Ses HAL'i, AudioInputFlag.HW_HOTWORD
işaretiyle tanımlanan kısa kelime yakalamaya özel giriş profilini de göstermeli ve girmelidir. Uygulama, bu profilde ses tetikleyici HAL tarafından eşzamanlı olarak yüklenebilecek ses modellerinin sayısına en az eşit sayıda akış açılmasını ve etkinleştirilmesini desteklemelidir.
Diğer giriş profilleri etkinken bu giriş profilinden çekim yapılabilir.
Asistan uygulamalarında ne gibi değişiklikler olacak?
Veri kullanımı ve kullanıcı bildirimi ile ilgili şartlar
Kötüye kullanılması durumunda eşzamanlı mikrofon kullanımı kullanıcının özel verilerini sızdırabileceğinden, Asistan rolünü üstlenmek isteyen ayrıcalıklı önceden yüklenmiş uygulamalara aşağıdaki koşulların ve garantilerin uygulanması gerekir.
- Kullanıcı Asistan ile etkileşimde bulunmadığı sürece mikrofon aracılığıyla toplanan veriler cihazdan dışarı çıkmamalı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 sonraki görüşmelerin Asistan gibi farklı bir uygulama üzerinden yapılacağını anlamalarına yardımcı olur.
- Kullanıcılar mikrofonu veya Asistan tetikleyicilerini kapatabilmelidir.
- Ses kayıtları saklandığında kullanıcılar kayıtlara istedikleri zaman erişebilir, kayıtları inceleyebilir ve silebilir.
Android 10 için işlevsel iyileştirmeler
Asistanlar birbirini engellemez.
Android 9 veya önceki sürümlerde, cihazda iki tane her zaman açık Asistan varsa bunlardan yalnızca biri kendi özel kelimesini dinleyebilir. Bu nedenle, iki asistan arasında geçiş yapılması gerekiyordu. Android 10'da varsayılan Asistan, diğer Asistan ile aynı anda dinleme yapabilir. Bu sayede, her iki Asistan'ı da kullanan kullanıcılar çok daha sorunsuz bir deneyim yaşar.
Mikrofonu açık tutan uygulamalar
Shazam veya Waze gibi uygulamalar mikrofonu açık tuttuğunda varsayılan Asistan, özel kelimeyi dinlemeye devam edebilir.
Varsayılan olmayan Asistan uygulamaları için Android 10'da davranışta herhangi bir değişiklik yoktur.
Örnek ses HAL uygulaması
Bu dokümandaki yönergelere uygun bir ses HAL'i uygulaması örneğini AOSP'de bulabilirsiniz.