Implementação de áudio espacial de alta qualidade e rastreamento de cabeça

O Android 13 introduz suporte para áudio espacial, fornecendo APIs que permitem aos desenvolvedores de aplicativos descobrir se a combinação atual de implementação de telefone, fone de ouvido conectado e configurações do usuário permite a reprodução de conteúdo de áudio multicanal de maneira imersiva.

Os OEMs podem fornecer um efeito de áudio espacializador com suporte para rastreamento de cabeça com o nível de desempenho e latência necessários, usando a nova arquitetura de pipeline de áudio e integração de estrutura de sensor. O protocolo HID especifica como conectar um dispositivo de rastreamento de cabeça via Bluetooth e disponibilizá-lo como um dispositivo HID por meio da estrutura do sensor Android. Consulte Áudio Espacial e Rastreamento de Cabeça para obter mais requisitos e validação.

As diretrizes nesta página se aplicam a uma solução de áudio espacial que adota as novas APIs de áudio espacial e arquitetura de áudio com um telefone Android com Android 13 e superior e fones de ouvido compatíveis com sensor de rastreamento de cabeça.

Diretrizes para implementação de modos de áudio espacial dinâmico e estático

O áudio espacial estático não requer rastreamento de cabeça, portanto, funcionalidade específica não é necessária no fone de ouvido. Todos os fones de ouvido com e sem fio podem suportar áudio espacial estático.

Implementação de API

Os OEMs DEVEM implementar a classe Spatializer introduzida no Android 12. A implementação deve passar nos testes CTS introduzidos para a classe Spatializer .

Uma implementação robusta de API garante que os desenvolvedores de aplicativos, especialmente serviços de streaming de mídia, possam contar com um comportamento consistente em todo o ecossistema e escolher o melhor conteúdo de acordo com os recursos do dispositivo, o contexto de renderização atual e as escolhas do usuário.

Interface de usuário

Depois de implementar a classe Spatializer , valide se sua UI tem o seguinte comportamento:

  • Quando o fone de ouvido com capacidade de áudio espacial está emparelhado, as configurações do dispositivo Bluetooth para este fone de ouvido exibem uma alternância de áudio espacial :

    spatial-audio-ui

    Figura 1. Configuração de áudio espacial.

  • As configurações estão disponíveis quando o fone de ouvido está desconectado.

  • O estado padrão do áudio espacial após o emparelhamento inicial do fone de ouvido é definido como ativado .

  • O estado selecionado pelo usuário, seja ativado ou desativado, persiste na reinicialização do telefone ou no desemparelhamento e emparelhamento do fone de ouvido.

Comportamento funcional

Formatos de áudio

Os seguintes formatos de áudio DEVEM ser renderizados pelo efeito espacializador quando o áudio espacial está ativado e o dispositivo de renderização é um fone de ouvido com fio ou Bluetooth:

  • AAC, 5.1 canais
  • PCM bruto, 5.1 canais

Para uma melhor experiência do usuário, recomendamos fortemente o suporte aos seguintes formatos/configurações de canal:

  • Dolby Digital Plus
  • 5.1.2, 7.1, 7.1.2, 7.1.4 canais

Reprodução de conteúdo estéreo

O conteúdo estéreo não deve ser renderizado por meio do mecanismo de efeito espacializador, mesmo se o áudio espacial estiver ativado. Se uma implementação permitir a espacialização do conteúdo estéreo, ela deverá apresentar uma UI customizada que permita ao usuário ativar ou desativar esse recurso facilmente. Quando o áudio espacial está ativado, deve ser possível fazer a transição entre a reprodução de conteúdo multicanal espacializado para conteúdo estéreo não espacializado sem exigir quaisquer alterações nas configurações do usuário ou reconexão ou reconfiguração do fone de ouvido. A transição entre o conteúdo de áudio espacial e o conteúdo estéreo deve ocorrer com interrupção mínima de áudio.

Use transições de casos e simultaneidade

Lide com casos de uso especiais da seguinte maneira:

  • As notificações devem ser misturadas com o conteúdo de áudio espacial da mesma maneira que com o conteúdo de áudio não espacial.
  • Os toques devem poder ser misturados com conteúdo de áudio espacial. No entanto, por padrão, o mecanismo de foco de áudio pausa o conteúdo de áudio espacial quando há toque.
  • Ao atender ou fazer uma chamada telefônica ou videoconferência, a reprodução do áudio espacial deve ser pausada. A reprodução de áudio espacial deve ser retomada com as mesmas configurações de áudio espacial quando a chamada terminar. A reconfiguração de um caminho de áudio para alternar do modo de áudio espacial para o modo de conversação deve acontecer de forma rápida e contínua o suficiente para não afetar a experiência da chamada.

Renderizando pelos alto-falantes

Não é necessário suporte para espacialização de áudio em alto-falantes ou modo transaural .

Diretrizes para implementação de rastreamento de cabeça

Esta seção se concentra no áudio espacial dinâmico, que possui requisitos específicos para fones de ouvido.

Interface de usuário

Após a implementação e o emparelhamento do fone de ouvido com capacidade de áudio espacial, valide se sua IU tem o seguinte comportamento:

  • Nas configurações do dispositivo Bluetooth, quando a configuração de Áudio Espacial do fone de ouvido está ativada, uma configuração de rastreamento de cabeça aparece em Áudio Espacial :

    ht-ui

    Figura 2. Configuração de áudio espacial e rastreamento de cabeça.

  • A configuração de rastreamento de cabeça NÃO fica visível quando o áudio espacial está desativado.

  • O estado padrão para rastreamento de cabeça após o emparelhamento inicial do fone de ouvido é definido como ativado .

  • O estado selecionado pelo usuário, seja ativado ou desativado, deve persistir durante a reinicialização do telefone ou desemparelhamento e emparelhamento do fone de ouvido.

Comportamento funcional

Relatório de pose de cabeça

  • As informações de pose da cabeça, em coordenadas x, y e z, enviadas do fone de ouvido para o dispositivo Android, devem refletir os movimentos da cabeça do usuário com rapidez e precisão.
  • O relatório da pose da cabeça pelo link Bluetooth deve seguir o protocolo definido pelo HID .
  • O fone de ouvido deve enviar as informações de rastreamento de cabeça para o telefone Android somente quando o usuário ativar o rastreamento de cabeça na interface de configuração do dispositivo Bluetooth.

Desempenho

Latência

A latência de rastreamento da cabeça é definida como o tempo que leva desde o movimento da cabeça capturado pela unidade de medição inercial (IMU) até a detecção pelos transdutores de fone de ouvido da mudança no som causada por esse movimento. A latência de rastreamento de cabeça não deve exceder 150 ms.

Taxa de relatórios de pose de cabeça

Quando o rastreamento da cabeça está ativo, o fone de ouvido deve relatar a posição da cabeça periodicamente recomendada, durante aproximadamente 20 ms. Para evitar o acionamento da lógica de detecção de entrada obsoleta no telefone durante uma tremulação de transmissão do Bluetooth, o tempo máximo entre duas atualizações não deve exceder 40 ms.

Otimização de energia

Para otimizar a potência, recomendamos que a implementação use os mecanismos de comutação de codec Bluetooth e seleção de modo de latência fornecidos pelas interfaces HAL de áudio e HAL de áudio Bluetooth .

As implementações AOSP da estrutura de áudio e da pilha Bluetooth já suportam os sinais para controlar a comutação de codecs. Se a implementação do OEM usar o HAL de áudio primário para áudio Bluetooth, conhecido como modo de descarregamento de codec , o OEM deverá garantir que o HAL de áudio retransmita esses sinais entre o HAL de áudio e a pilha Bluetooth.

Troca de codec

Quando o áudio espacial dinâmico e o rastreamento de cabeça estiverem ativados, use um codec de baixa latência, como o Opus . Ao reproduzir conteúdo de áudio não espacial, use um codec de baixo consumo de energia, como Advanced Audio Coding (AAC) .

Siga estas regras durante a troca de codec:

  • Rastreie apenas a atividade nos seguintes fluxos de saída de áudio HAL:
    • Saída dedicada do espacializador
    • Fluxos específicos de mídia, como buffer profundo ou reprodução de descarregamento compactada
  • Quando todos os fluxos relevantes estiverem ociosos e o fluxo do espacializador for iniciado, inicie o fluxo Bluetooth com isLowLatency definido como true para especificar um codec de baixa latência.

  • Quando todos os fluxos relevantes estiverem ociosos e um fluxo de mídia for iniciado, inicie o fluxo Bluetooth com isLowLatency definido como false para especificar um codec de baixo consumo de energia.

  • Se um fluxo de mídia estiver ativo e o fluxo do espacializador for iniciado, reinicie o fluxo Bluetooth com isLowLatency definido como true .

No lado do fone de ouvido, o fone de ouvido deve suportar decodificadores de baixa latência e baixo consumo de energia e implementar o protocolo de seleção de codec padrão.

Ajuste do modo de latência

O ajuste do modo de latência ocorre quando o codec de baixa latência é selecionado.

Com base no fato de o rastreamento da cabeça estar ativado ou desativado, o ajuste do modo de latência usa mecanismos disponíveis para reduzir ou aumentar a latência para alcançar o melhor compromisso entre latência, potência e qualidade de áudio. Quando o áudio espacial está ativado e o rastreamento da cabeça está ativado, o modo de baixa latência é escolhido. Quando o áudio espacial está ativado e o rastreamento da cabeça está desativado, o modo de latência livre é selecionado. O ajuste de latência proporciona economia significativa de energia e maior robustez do link de áudio Bluetooth quando apenas áudio espacial estático é solicitado. O mecanismo de ajuste de latência mais comum é a redução ou extensão do tamanho do buffer de jitter no fone de ouvido Bluetooth.