Üç boyutlu ses ve baş hareketini izleme

Android 13, OEM'lerin Tedarikçi firmaya özel gereksinimlere gerek kalmadan uzamsal ses ve baş hareketini destekleme SDK'ları kullanabilirsiniz.

Üç boyutlu ses, çevreyi çevreleyen bir ses alanı oluşturmak için kullanılan bir teknolojidir dinleyicidir. Üç boyutlu ses, kullanıcıların kanalları ve ayrı ayrı sesleri algılamasını sağlar. transdüserlerin fiziksel konumlarından farklı konumlarda oynatma için kullanılan ses sistemi. Örneğin, üç boyutlu ses, kullanıcıya kulaklık üzerinden çok kanallı müzik dinleme olanağı sağlar. Mekansal özellikleri kullanma ses, kulaklık kullanıcıları önlerindeki konuşmaları algılayabilir ve Ancak oynatma için yalnızca iki transdüser kullanın.

Kafa hareketi izleme özelliği, kullanıcının üç boyutlu sesin yapısını anlamasına yardımcı olur kafalarının etrafında simüle edilen sahne. Bu deneyim yalnızca Gecikme süresi düşüktür. Burada gecikme, kullanıcının kullanıcının e-posta ile başlarını hareket ettirir ve sanal hoparlörün yerinin hareket ettiğini ne zaman duyduklarını buna göre hazırlar.

Android 13 üç boyutlu ses ve kafa optimizasyonu için optimizasyon yapar mümkün olan en düşük seviyede mekansal ses işleme sunarak gecikmeyi mümkün olan en düşük gecikmeyi elde etmek için gereklidir.

Mimari

Android 13'te değiştirilmiş Android ses çerçevesi ve API Ekosistemde uzamsal ses teknolojisinin benimsenmesini kolaylaştırır.

Aşağıdaki şekilde, Android 13'te ses ardışık düzeni mimarisi:

üç boyutlu-ses

Şekil 1. Mekanizmalı ses ardışık düzeni mimarisi

Yeni modelde ses çerçevesinin bir parçası olan ses uzaklaştırıcı, ses çerçevesinin bir parçası. kod çözücüden ayrıştırılır. Ekran konumu belirleyici, karma ses içeriklerini ve Ses HAL'ye stereo yayın oluşturur. Uzamlaştırıcıyı kameradan ve kod çözücü, OEM'lerin kod çözücü ve mekansallaştırıcı için farklı tedarikçiler seçebilmesini sağlar baş takibi için istenen gidiş dönüş gecikmesini elde etmektir. Bu yeni model Ayrıca, baş takibi için sensör çerçevesine kancalar da içerir.

Aşağıdaki şekilde, ses çerçevesinin sistem mimarisi gösterilmektedir seslendirme ve baş hareket izleme efekti için:

uzamsal-sis-kezi

Şekil 2. Mekanizasyon aracı ve baş hareketini izleyen sistem mimarisi

Tüm uzamsal ses API'leri herkese açık olarak gruplandırılır. Uygulama düzeyinde Spatializer sınıfı. SpatializerHelper Yönetilecek Sistem Arayüzü bileşenlerine sahip ses hizmeti arayüzlerinde sınıf Platforma ve bağlı cihaza göre mekanleştiriciyle ilgili işlevler özellikler. Ses politikası hizmetindeki yeni Spatializer sınıfı, Şuna göre çok kanallı karıştırma ve konumlandırma için gereken ses grafiği: OEM tarafından ifade edilen özelliklerin, bağlı cihazlar ve etkin kullanım alanları. Yeni bir mikser sınıfı SpatializerThread, çok kanallı kanalları karıştırıp elde edilen karışımı, işleme sonrası FX'e iletir. ses HAL'ye stereo çıkış oluşturan bir motor içerir. Kafa hareketi izleme için Kafa hareketi izlemeyle ilgili SpatializerPoseController sınıf grubu işlevleri, yapay zekayı kullanan sensör sinyallerini birleştirmek ve filtrelemek için efekt motoruna aktarılır. Kafa hareketi izleme sensörü verileri, HID protokolü üzerinden aktarılır edinemezsiniz.

Android 13 ses ardışık düzeni mimarisindeki değişiklikler şu konularda iyileştirme yapabilirsiniz:

  • Dengeleyici ile kulaklık arasındaki gecikme azaltılıyor.
  • Uygulama geliştiricilere hizmet sunmak için birleştirilmiş API'ler sağlama.
  • Baş hareketi izleme durumunu sistem API'leri aracılığıyla kontrol etme.
  • Kafa hareketi izleme sensörlerini keşfetme ve bunları etkin ses cihazlarıyla ilişkilendirme.
  • Çeşitli sensörlerden gelen sinyalleri birleştirme ve mümkün olan baş duruşunu hesaplama etki motoru tarafından tüketilir.

Yanlılık dengelemesi, hareketsizlik algılama ve hız sınırlaması gibi işlevler baş izleme yardımcı programı kitaplığı kullanılarak uygulanması gerekir.

Üç boyutlu ses API'leri

Android 13 üç boyutlu ses sistemi ve geliştirici sunuyor API'ler.

OEM'ler, uygulama davranışını özellik kullanılabilirliğine ve etkin duruma göre uyarlayabilir. ve sistem API'leri tarafından ayarlanır. Uygulamalar ayrıca ses özelliklerini üç boyutlu sesi devre dışı bırakma sağlamak veya ses akışının mümkün olduğunu uzamsal ses için zaten işlenmiş.

Geliştiricilere yönelik API'ler için Spatializer bölümüne bakın.

OEM'ler, Ses ve Bluetooth ayarları kullanıcı arayüzünü uygulamak için sistem API'lerini kullanabilir. Kullanıcının uzamsal sesin ve başın durumunu kontrol etmesini sağlayan özelliğini kullanıyor. Kullanıcı, üç boyutlu sesi etkinleştirebilir veya devre dışı bırakabilir için ses ayarları kullanıcı arayüzünde hoparlör ve kablolu kulaklığınızı bulun. Uzamsal hoparlörün ses ayarı yalnızca Üç Boyutlulaştırıcı efekti varsa kullanılabilir uygulama, ötesi modu desteklemektedir.

Kullanıcı ayrıca Her cihazın Bluetooth cihaz ayarı. Kafa hareketi izleme ayarı kullanılabilir yalnızca Bluetooth mikrofonlu kulaklık, kafa hareketi izleme sensörünü gösteriyorsa kullanılabilir.

Üç boyutlu ses için varsayılan ayarlar desteklenir. Bkz. Spatializer.java sayfasını ziyaret edin.

Sensor.TYPE_HEAD_TRACKER türünde yeni baş izleme sensörü Sensör çerçevesi ve Sensör HAL tarafından dinamik bir sensör olarak gösterilir Bluetooth veya USB.

Üç boyutlu sesi entegre etme

OEM'ler, mekansalleştirici efekt motorunun yanı sıra üç boyutlu ses desteği için kullanılan bir platform.

Gereksinimler

Üç boyutlu sesin entegre edilmesi için aşağıdaki gereksinimlerin karşılanması gerekir:

  • Ses HAL ve ses DSP'si, üç boyutlu görüntü için özel bir çıkış yolunu desteklemelidir. ses.
  • Kafa hareketini izleyen dinamik üç boyutlu ses için kulaklıkların yerleşik kafası olmalıdır takip cihazı sensörleri.
  • Uygulama, baş takibi için önerilen standarda uygun olmalıdır HID protokolü üzerinden Bluetooth mikrofonlu kulaklığı telefona bağlayın.
  • Ses HAL 7.1 sürümü Üç boyutlu ses desteği için gereklidir.

Üç boyutlu sesi entegre etmek için aşağıdaki adımları uygulayın:

  1. device.mk dosyanızda üç boyutlu ses desteğini aşağıdaki şekilde beyan edin:

    PRODUCT_PROPERTY_OVERRIDES += \
         ro.audio.spatializer_enabled=true
    

    Bu işlem, AudioService ürününün mekansalleştirici desteğini başlatmasına neden olur.

  2. Üç boyutlu ses miksi için özel çıkış bildir audio_policy_configuration.xml, şu şekildedir:

    <audioPolicyConfiguration>
      <modules>
       <module>
         <mixPorts>
         <mixPort name="spatializer" role="source"   flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
           <profile name="sa" format="AUDIO_FORMAT_PCM_FLOAT"
             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
    
  3. audio_effects.xml uygulamasında mekansalleştirici efekti kitaplığını aşağıdaki gibi tanımlayın:

    <audio_effects_conf>
          <libraries>
             <library name="spatializer_lib" path="libMySpatializer.so"/>
              …
             </libraries>
          <effects>
           <effect name="spatializer" library="spatializer_lib" uuid="myunique-uuid-formy-spatializereffect"/>
    
  4. Mekanizasyon efektini uygulayan tedarikçiler aşağıdakilere uymalıdır:

    • Efekt'teki diğer efektlerle aynı temel yapılandırma ve kontrol HAL.
    • Çerçevenin desteklenenleri keşfetmesi için gereken belirli parametreler özellikler ve yapılandırma, örneğin:

      • SPATIALIZER_PARAM_SUPPORTED_LEVELS
      • SPATIALIZER_PARAM_LEVEL
      • SPATIALIZER_PARAM_HEADTRACKING_SUPPORTED
      • SPATIALIZER_PARAM_HEADTRACKING_MODE
      • SPATIALIZER_PARAM_SUPPORTED_CHANNEL_MASKS
      • SPATIALIZER_PARAM_SUPPORTED_SPATIALIZATION_MODES
      • SPATIALIZER_PARAM_HEAD_TO_STAGE

    Daha fazla bilgi için bkz. effect_spatializer.h.

Öneriler

OEM'lerin uygulama sırasında aşağıdaki yönergeleri kullanmasını öneririz:

  • Birlikte çalışabilirliği kolaylaştırmak ve gecikme yaşamak için mümkün olduğunda LE Audio kullanın hedefler.
  • Sensör hareket algılamasından gelen sese kadar gidiş dönüş gecikmesi: iyi bir kullanıcı deneyimi için 150 ms'den az olması gerekir.
  • Gelişmiş Ses Dağıtım Profili (A2DP) ile Bluetooth (BT) Classic için:
    • Opus gibi düşük gecikmeli bir codec kullanın.
    • Gecikme denetimi işlevlerini Ses HAL'sinde uygulayın. Bu, baş takibi aşağıdaki durumlarda güç ve performans optimizasyonu sağlar: ve uygun olmayan koşullarda baş hareketini devre dışı bırakmak gibi.

Doğrulama

Üç boyutlu ses özelliğinin işlevselliğini doğrulamak için CTS testlerini kullanın SpatializerTest.java içinde bulabilirsiniz.

Uzamsallaştırma veya baş izleme algoritmalarının yanlış uygulanması, Gidiş dönüş gecikmesi önerisinin yerine getirilmemesi Öneriler.