Acquisizione simultanea

Android 10 migliora l'esperienza utente che richiede più di un acquisizione audio attiva contemporaneamente, ad esempio se l'utente vuole controllare una chiamata VoIP o un videoregistratore con i comandi vocali forniti da un servizio di accessibilità.

Il framework audio implementa il criterio che consente solo ad alcune app con privilegi di acquisire contemporaneamente con le app normali.

Il criterio di contemporaneità viene implementato silenziando l'audio acquisito anziché impedendo un'applicazione dall'avvio dell'acquisizione. In questo modo, il framework può gestire dinamicamente le modifiche al numero e ai tipi di casi d'uso di acquisizione attivi, senza impedire a un'app di avviare l'acquisizione nel caso in cui possa recuperare l'accesso completo al microfono dopo che un'altra app ha completato l'acquisizione.

La conseguenza per l'HAL audio e il sottosistema audio è che devono supportare contemporaneamente più stream di input attivi, anche se in alcuni casi solo uno stream fornisce audio non silenzioso a un client attivo.

Requisiti CDD

Consulta la sezione CDD per per il supporto dell'acquisizione simultanea.

Acquisisci situazioni dall'HAL audio

Uno scenario di acquisizione simultanea può comportare situazioni diverse in termini di numero di stream di input attivi, selezione del dispositivo di input o configurazione di preelaborazione.

La contemporaneità può verificarsi tra:

  • Diversi flussi di input dal processore delle applicazioni (AP)
  • Stream di input e una chiamata vocale
  • Stream di input e un DSP audio che implementa un rilevamento di hotword a bassa potenza

Attività contemporanea dei flussi di input AP

Il file di configurazione dei criteri audio audio_policy_configuration.xml viene utilizzato dal framework audio per determinare quanti stream di input possono essere aperti e attivi contemporaneamente.

Come minimo, l'HAL audio deve supportare almeno un'istanza di ogni profilo di input (mixPort di ruolo sink) elencato nel file di configurazione aperto e attivo.

Selezione del dispositivo

Quando più client attivi sono collegati allo stesso stream di input HAL, il framework selezione il dispositivo appropriato per questo stream di input in base alla priorità del caso d'uso.

Quando sono attivi più stream di input, ogni stream può avere un dispositivo diverso selezione.

Se la tecnologia è compatibile, è consigliabile che l'HAL audio e un sottosistema che consentono l'acquisizione di stream diversi da dispositivi diversi, ad esempio cuffie Bluetooth e microfono integrato.

Se esiste un'incompatibilità (ad esempio due dispositivi condividono la stessa interfaccia audio digitale o lo stesso back-end), l'HAL audio deve scegliere quale stream controlla la selezione del dispositivo.

In questo caso:

  • Lo stato risultante deve essere coerente e offrire la stessa selezione di dispositivi quando questo scenario è ripetuto.
  • Al termine dello stato di concorrenza, lo stream attivo rimanente deve essere indirizzato al dispositivo inizialmente richiesto su questo stream.

Se l'HAL audio definisce un ordine di priorità tra i casi d'uso attivi, segui lo stesso ordine trovato in source_priority() in frameworks/av/services/audiopolicy/common/include/policy.h

Selezione pre-elaborazione

Il framework audio può richiedere la pre-elaborazione su uno stream di input utilizzando i metodi HAL addEffect() o removeEffect().

Per l'elaborazione preliminare su un determinato stream di input, il framework audio attiva solo la configurazione corrispondente al caso d'uso attivo con la priorità più alta nello stream di input. Tuttavia, potrebbero verificarsi delle sovrapposizioni durante l'attivazione e la disattivazione del caso d'uso. causando l'esecuzione di due processi attivi simultanei (ad esempio, due istanze di cancellazione dell'eco) sullo stesso flusso di input. In questo caso, l'implementazione dell'HAL sceglie la richiesta da accettato; tiene traccia delle richieste attive e ripristina lo stato corretto il processo è disabilitato.

Quando sono attivi contemporaneamente più stream di acquisizione, è possibile eseguire richieste di preelaborazione diverse su stream diversi.

Le implementazioni dell'HAL e del sottosistema audio devono consentire di applicare pre-elaborazione diversa a stream diversi, anche se condividono lo stesso dispositivo di input. In altre parole, la pre-elaborazione deve essere applicata dopo il demuxing degli stream dall'origine di acquisizione principale.

Se non è possibile per motivi tecnici su un determinato sottosistema audio, è necessario utilizzare l'HAL per l'audio. regole di priorità simili a quelle elencate Selezione del dispositivo.

Chiamata vocale simultanea e acquisizione dall'AP

La cattura dall'AP può avvenire mentre è attiva una chiamata vocale. Questa situazione non è nuova in Android 10 e non è direttamente correlata alla funzionalità di acquisizione simultanea, ma è utile menzionare le linee guida per questo scenario.

Durante una chiamata sono necessari due diversi tipi di acquisizioni dall'AP.

Acquisisci RX e TX delle chiamate

La registrazione delle chiamate in entrata e in uscita viene attivata dall'uso dell'audio diAudioSource.VOICE_UPLINK o AudioSource.VOICE_DOWNLINK e/o del dispositivoAudioDevice.IN_TELEPHONY_RX.

Gli HAL audio devono essere esposti sul profilo di input (mixPort del ruolo sink) con un percorso disponibile dal dispositivo AudioDevice.IN_TELEPHONY_RX.

Quando una chiamata è connessa (la modalità audio è AudioMode.IN_CALL), dovrebbe essere possibile per avere almeno uno stream di acquisizione attivo dal dispositivo AudioDevice.IN_TELEPHONY_RX.

Acquisisci dai dispositivi di input quando la chiamata è attiva

Quando una chiamata è attiva (la modalità audio è AudioMode.IN_CALL), dovrebbe essere possibile aprire e attivare i flussi di input dall'AP come specificato nella sezione Attività simultanea dei flussi di input AP.

Tuttavia, la priorità della selezione del dispositivo e della pre-elaborazione deve sempre essere determinata dalla voce in caso di conflitto con le richieste provenienti dai flussi di input dell'AP.

Acquisizione simultanea da DSP e AP

Quando il sottosistema audio contiene un DSP che supporta funzioni di rilevamento di hotword o contesto audio a basso consumo, l'implementazione deve supportare la cattura simultanea dall'AP e dal DSP audio. Sono inclusi sia i dati acquisiti dal DSP durante la fase di rilevamento iniziale sia quelli acquisiti dall'AP con AudioSource.HOTWORD dopo l'attivazione del rilevamento da parte del DSP.

Questo dovrebbe essere riflesso dal flag di acquisizione simultanea segnalato dall'HAL di attivazione tramite suono tramite il descrittore di implementazione: ISoundTriggerHw.Properties.concurrentCapture = true.

L'HAL audio deve anche esporre e inserire un profilo specifico per l'acquisizione di hotword identificato dal AudioInputFlag.HW_HOTWORD. L'implementazione dovrebbe supportare l'apertura e attivare un numero di stream su questo profilo almeno uguale al numero di modelli audio che può essere caricato contemporaneamente dall'attivatore del suono HAL.

L'acquisizione da questo profilo di input dovrebbe essere possibile mentre sono attivi altri profili di input.

Implicazione per le implementazioni dell'assistente

Requisiti relativi all'utilizzo dei dati e alle notifiche per gli utenti

Poiché l'utilizzo simultaneo del microfono, se abusato, può comportare la fuga di dati privati dell'utente, è necessario che le seguenti condizioni e garanzie vengano applicate alle app precaricate privilegiate che richiedono di avere il ruolo di assistente.

  • I dati raccolti tramite il microfono non devono uscire dal dispositivo, a meno che l'utente non interagisca con l'assistente. ad esempio dopo l'attivazione della hotword.
  • Le applicazioni che ascoltano contemporaneamente devono fornire all'utente degli indicatori visivi dopo il rilevamento della hotword. Questo aiuta gli utenti a comprendere che ulteriori conversazioni passeranno a un'altra come l'assistente.
  • Gli utenti devono avere la possibilità di disattivare il microfono o gli attivatori dell'assistente.
  • Quando le registrazioni audio vengono archiviate, gli utenti devono avere la possibilità di accedervi, esaminarle ed eliminarle in qualsiasi momento.

Miglioramenti funzionali per Android 10

Gli assistenti non si bloccano a vicenda

Su Android 9 o versioni precedenti, se sono disponibili due dispositivi Assistenti sul dispositivo, solo uno potrebbe ascoltare la sua hotword. Era quindi necessario passare da un'esperienza all'altra i due assistenti. In Android 10, l'assistente predefinito può ascoltare contenuti in contemporanea con all'altro assistente. Ciò si traduce in un'esperienza molto più fluida per gli utenti con entrambi gli assistenti.

App che mantengono aperto il microfono

Quando app come Shazam o Waze mantengono il microfono aperto, l'assistente predefinito può ancora ascoltare per l'hotword.

Per le app dell'assistente non predefinite, il comportamento per Android 10 non cambia.

Implementazione di HAL audio di esempio

Un esempio di implementazione di HAL audio conforme alle linee guida riportate in questo documento è disponibile in AOSP.