Cattura simultanea

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

Il framework audio implementa il criterio consentendo solo ad alcune app privilegiate di acquisire in concomitanza con le normali app.

Il criterio di concorrenza viene implementato interrompendo l'audio acquisito anziché impedendo a un'applicazione di avviare l'acquisizione. Ciò consente al framework di affrontare in modo dinamico le modifiche al numero e ai tipi di casi d'uso di acquisizione attiva, senza impedire a un'app di avviare l'acquisizione in un caso in cui può recuperare l'accesso completo al microfono dopo che un'altra app ha terminato l'acquisizione.

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

Requisiti CDD

Vedere CDD per i requisiti per il supporto dell'acquisizione simultanea.

Cattura le situazioni dall'audio HAL

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

La concorrenza può verificarsi tra quanto segue:

  • Diversi flussi di input dall'Application Processor (AP)
  • Input di flussi e una chiamata vocale
  • Stream di input e un DSP audio che implementa un rilevamento hotword a bassa potenza

Attività simultanea dei flussi di input AP

Il file di configurazione della politica audio audio_policy_configuration.xml viene utilizzato dal framework audio per determinare quanti flussi di input possono essere aperti e attivi contemporaneamente.

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

Selezione del dispositivo

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

Quando sono attivi più flussi di input, ogni flusso può avere una diversa selezione di dispositivi.

Se la tecnologia è compatibile, si consiglia che l'HAL audio e il sottosistema consentano l'acquisizione di flussi diversi da dispositivi diversi, come un auricolare Bluetooth e un microfono integrato.

Se c'è un'incompatibilità (ad esempio due dispositivi condividono la stessa interfaccia audio digitale o back-end) l'HAL audio deve scegliere quale flusso controlla la selezione del dispositivo.

In questo caso:

  • Lo stato risultante deve essere coerente e offrire la stessa selezione del dispositivo quando si ripete lo stesso scenario.
  • Al termine dello stato di concorrenza, il flusso attivo rimanente deve essere instradato al dispositivo inizialmente richiesto su questo flusso.

Se un ordine di priorità è definito dall'HAL audio tra i casi d'uso attivi, seguire 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 preelaborazione su un flusso di input utilizzando i metodi HAL addEffect() o removeEffect() .

Per la preelaborazione su un determinato flusso di input, il framework audio abilita solo la configurazione corrispondente al caso d'uso attivo con la priorità più alta sul flusso di input. Tuttavia, potrebbero verificarsi alcune 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 HAL sceglie quale richiesta viene accettata; tiene traccia delle richieste attive e ripristina lo stato corretto quando uno dei processi è disabilitato.

Quando più flussi di acquisizione sono attivi contemporaneamente, diverse richieste di preelaborazione potrebbero essere eseguite su flussi diversi.

Le implementazioni del sottosistema HAL e audio dovrebbero consentire l'applicazione di pre-elaborazioni diverse a flussi diversi, anche se condividono lo stesso dispositivo di input. Cioè, la preelaborazione dovrebbe essere applicata dopo aver demuxato i flussi dall'origine di acquisizione primaria.

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

Chiamata vocale simultanea e acquisizione da AP

L'acquisizione 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 acquisizione dall'AP.

Catturare la chiamata RX e TX

L'acquisizione delle chiamate RX e TX viene attivata dall'utilizzo della sorgente audio AudioSource.VOICE_UPLINK o AudioSource.VOICE_DOWNLINK e/o del dispositivo AudioDevice.IN_TELEPHONY_RX .

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

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

Cattura da dispositivi di input quando una chiamata è attiva

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

Tuttavia, la priorità per la selezione del dispositivo e la pre-elaborazione dovrebbe sempre essere determinata dalla chiamata vocale nel caso in cui vi sia un conflitto con le richieste dai flussi di ingresso AP.

Acquisizione simultanea da DSP e AP

Quando il sottosistema audio contiene un DSP che supporta il contesto audio a bassa potenza o le funzioni di rilevamento di hotword, l'implementazione dovrebbe supportare l'acquisizione simultanea dall'AP e dal DSP audio. Ciò include sia l'acquisizione da parte del DSP durante la fase di rilevamento iniziale sia l'acquisizione da parte dell'AP con AudioSource.HOTWORD dopo che il rilevamento è stato attivato dal DSP.

Ciò dovrebbe riflettersi nel flag di acquisizione simultanea riportato dal trigger audio HAL tramite il descrittore di implementazione: ISoundTriggerHw.Properties.concurrentCapture = true .

L'HAL audio dovrebbe anche esporre e inserire il profilo specifico per l'acquisizione di hotword identificato dal flag AudioInputFlag.HW_HOTWORD . L'implementazione dovrebbe supportare l'apertura e l'attivazione di un numero di flussi su questo profilo almeno uguale al numero di modelli sonori che possono essere caricati contemporaneamente dal trigger sonoro HAL.

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

Implicazioni per le implementazioni dell'assistente

Requisiti sull'utilizzo dei dati e sulla notifica all'utente

Poiché l'utilizzo simultaneo del microfono, se utilizzato in modo improprio, può far trapelare i dati privati ​​degli utenti, abbiamo bisogno delle seguenti condizioni e garanzie da applicare alle app precaricate con privilegi che richiedono di ricoprire il ruolo di assistente.

  • I dati raccolti tramite il microfono non devono lasciare il dispositivo a meno che l'utente non stia interagendo con l'assistente. Ad esempio, dopo l'attivazione della hotword.
  • Le applicazioni in ascolto contemporaneamente dovrebbero fornire segnali visivi all'utente dopo il rilevamento della hotword. Questo aiuta gli utenti a capire che ulteriori conversazioni passerebbero attraverso un'app diversa, come Assistant.
  • Gli utenti dovrebbero avere la possibilità di disattivare il microfono o i trigger dell'assistente.
  • Quando le registrazioni audio vengono archiviate, gli utenti dovrebbero avere la possibilità di accedere, rivedere ed eliminare le registrazioni in qualsiasi momento.

Miglioramenti funzionali per Android 10

Gli assistenti non si bloccano a vicenda

Su Android 9 o versioni precedenti, quando sul dispositivo sono presenti due assistenti sempre attivi, solo uno di essi potrebbe essere in ascolto della sua hotword. Quindi, c'era la necessità di passare tra i due Assistenti. In Android 10, l'assistente predefinito può essere in ascolto contemporaneamente all'altro assistente. Ciò si traduce in un'esperienza molto più fluida per gli utenti con entrambi gli assistenti.

App che tengono il microfono aperto

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

Per le app dell'assistente non predefinite, non ci sono modifiche al comportamento per Android 10.

Esempio di implementazione HAL audio

Un esempio di implementazione HAL audio conforme alle linee guida in questo documento può essere trovato in AOSP .