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 erişilebilirlik hizmeti tarafından sağlanan sesli komutlarla kontrol etmek istiyorsa.
Ses çerçevesi, yalnızca belirli ayrıcalıklı uygulamaların normal uygulamalarla eşzamanlı olarak yakalama yapmasına izin veren politikayı uygular.
Eşzamanlılık politikası, bir uygulamanın ses yakalamaya başlamasını engellemek yerine yakalanan sesini kapatarak uygulanır. Bu sayede çerçeve, etkin yakalama kullanım alanlarının sayısındaki ve türlerindeki değişiklikleri dinamik olarak ele alabilir. Ayrıca, başka bir uygulama yakalamayı bitirdikten sonra mikrofona tam erişimi geri kazanabileceği durumlarda uygulamanın yakalamaya başlamasını engellemez.
Ses HAL'si ve ses alt sistemi, bazı durumlarda yalnızca bir akış etkin bir istemciye sessiz olmayan ses sağlasa bile aynı anda birden fazla etkin giriş akışını desteklemelidir.
CDD koşulları
Eşzamanlı yakalama desteğiyle ilgili şartlar için CDD'ye bakın.
Ses HAL'den durum 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ı durumlarla sonuçlanabilir.
Eşzamanlılık aşağıdaki durumlarda gerçekleşebilir:
- Uygulama işlemcisinden (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, açık ve etkin yapılandırma dosyasında listelenen her giriş profilinin en az bir örneğini (mixPort
rolü sink
) desteklemelidir.
Cihaz Seçimi
Aynı HAL giriş akışına birden fazla 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ışın farklı bir cihaz seçimi olabilir.
Teknoloji uyumluysa ses HAL'sinin ve alt sisteminin, farklı cihazlardan (ör. Bluetooth kulaklık ve yerleşik mikrofon) farklı akışların yakalanmasına izin vermesi önerilir.
Uyumsuzluk varsa (ör. iki cihaz aynı dijital ses arayüzünü veya arka ucu paylaşıyorsa) ses HAL'ı, hangi akışın cihaz seçimini kontrol edeceğini seçmelidir.
Bu durumda:
- Ortaya çıkan durum tutarlı olmalı ve aynı senaryo tekrarlandığında aynı cihaz seçimi sunulmalı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 source_priority()
adresindeki frameworks/av/services/audiopolicy/common/include/policy.h
bölümünde bulunan 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 isteğinde bulunabilir.
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 bir miktar çakışma olabilir. Bu durumda, aynı giriş akışında aynı anda iki etkin işlem (örneğin, iki yankı giderici örneği) çalışır. 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.
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ı kullanıyor olsalar bile farklı akışlara farklı ön işlemlerin uygulanmasına olanak tanımalıdır. Yani, ön işleme, akışlar birincil yakalama kaynağından ayrıştırıldıktan sonra 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 etkin durumdayken gerçekleşebilir. Bu durum Android 10'da yeni değildir ve doğrudan eşzamanlı çekim özelliğiyle ilgili olmasa da bu senaryoyla ilgili yönergeleri belirtmek faydalı olacaktır.
Bir görüşme sırasında AP'den iki farklı türde yakalama yapılması gerekir.
Arama RX ve TX'ini yakalama
Arama RX ve TX'ini yakalama işlemi, 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, cihaz AudioDevice.IN_TELEPHONY_RX
'den kullanılabilir bir rota ile giriş profilinde (sink
rolünün mixPort
) gösterilmelidir.
Bir arama bağlandığında (ses modu AudioMode.IN_CALL
), cihaz AudioDevice.IN_TELEPHONY_RX
'dan en az bir etkin kayıt akışı olması gerekir.
Arama etkin olduğunda giriş cihazlarından kayıt yapma
Bir görüşme 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 cihaz seçimi ve ön işleme önceliği, AP giriş akışlarından gelen isteklerle çakışma olması durumunda her zaman sesli arama tarafından belirlenmelidir.
TTP ve AP'den eşzamanlı yakalama
Ses alt sistemi, düşük güçte ses bağlamını veya özel kelime algılama işlevlerini destekleyen bir DSP içerdiğinde uygulama, AP ve ses DSP'sinden eşzamanlı yakalamayı desteklemelidir.
Buna hem ilk algılama aşamasında DSP tarafından yakalama hem de DSP tarafından algılama tetiklendikten sonra AudioSource.HOTWORD
ile AP tarafından yakalama dahildir.
Bu, 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'si, AudioInputFlag.HW_HOTWORD
işaretiyle tanımlanan, etkin kelime yakalamaya özel bir profili de kullanıma sunmalı ve bu profile giriş yapmalıdır. Uygulama, bu profilde en az ses tetikleyici HAL tarafından eşzamanlı olarak yüklenebilen ses modeli sayısı kadar akışın açılmasını ve etkinleştirilmesini desteklemelidir.
Diğer giriş profilleri etkin durumdayken bu giriş profilinden yakalama işlemi yapılabilmelidir.
Asistan uygulamaları üzerindeki etkisi
Veri kullanımı ve kullanıcı bildirimi ile ilgili şartlar
Aynı anda mikrofon kullanımı kötüye kullanıldığında kullanıcıların özel verileri sızdırılabileceğinden, Asistan rolünü almak isteyen ayrıcalıklı önceden yüklenmiş uygulamalara aşağıdaki koşulların ve garantilerin uygulanması gerekir.
- Mikrofon aracılığıyla toplanan veriler, kullanıcı Asistan ile etkileşimde bulunmadığı sürece cihazdan ayrılmamalıdır. Örneğin, etkinleştirme kelimesi tetiklendikten sonra.
- Aynı anda dinleme yapan uygulamalar, etkin kelime algılandıktan sonra kullanıcıya görsel ipuçları vermelidir. 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 devre dışı bırakabilmelidir.
- Ses kayıtları saklandığında kullanıcılar, kayıtlarına istediği zaman erişebilmeli, bunları inceleyebilmeli ve silebilmelidir.
Android 10'da işlevsel iyileştirmeler
Asistanlar birbirini engellemiyor
Android 9 veya önceki sürümlerde, cihazda her zaman açık iki Asistan olduğunda bunlardan yalnızca biri etkin 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 dinleyebilir. 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ında Android 10'da davranış değişikliği olmaz.
Örnek ses HAL uygulaması
Bu belgedeki yönergelere uygun bir ses HAL uygulaması örneğini AOSP'de bulabilirsiniz.