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

O Android 13 introduz suporte ao áudio espacial fornecendo APIs que permitem que os desenvolvedores de apps descubram se a combinação atual de implementação do smartphone, 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 oferecer um efeito de áudio espacializador com suporte para rastreamento da cabeça com o nível de desempenho e latência necessários, usando a nova arquitetura de pipeline de áudio e a integração do framework de sensor. O protocolo HID especifica como conectar um dispositivo de rastreamento da cabeça por Bluetooth e disponibilizá-lo como um dispositivo HID usando o framework de sensor do Android. Consulte Áudio espacial e rastreamento da cabeça para 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 smartphone Android com o Android 13 e versões mais recentes e fones de ouvido compatíveis com sensor de rastreamento da cabeça.

Diretrizes para implementação de modos de áudio espacial dinâmicos e estáticos

O áudio espacial estático não exige o rastreamento da cabeça, portanto, não é necessário ter uma funcionalidade específica no fone de ouvido. Todos os fones de ouvido com e sem fio podem oferecer suporte ao áudio espacial estático.

Implementação da API

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

Uma implementação robusta da API garante que os desenvolvedores de apps, em especial os 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 do usuário

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

  • Quando o fone de ouvido com áudio espacial é pareado, as configurações do dispositivo Bluetooth para esse fone de ouvido mostram uma opção Áudio espacial:

    spatial-audio-ui

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

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

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

  • O estado selecionado pelo usuário, ativado ou desativado, persiste em uma reinicialização do smartphone ou no despareamento e pareamento do fone de ouvido.

Comportamento funcional

Formatos de áudio

Os seguintes formatos de áudio PRECISAM 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 oferecer 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 pode ser renderizado pelo mecanismo de efeito espacializador, mesmo que o áudio espacial esteja ativado. Se uma implementação permitir a espacialização de conteúdo estéreo, ela precisará apresentar uma interface personalizada que permita ao usuário ativar ou desativar esse recurso com facilidade. Quando o áudio espacial estiver ativado, será possível fazer a transição entre a reprodução de conteúdo multicanal espacializado e conteúdo estéreo não espacializado sem exigir mudanças nas configurações do usuário ou reconexão ou reconfiguração do fone de ouvido. A transição entre conteúdo de áudio espacial e conteúdo estéreo precisa ocorrer com interrupção mínima de áudio.

Transições e simultaneidade de casos de uso

Processe casos de uso especiais da seguinte maneira:

  • As notificações precisam ser combinadas com o conteúdo de áudio espacial da mesma maneira que são com conteúdo de áudio não espacial.
  • Os toques precisam ser combinados com o conteúdo de áudio espacial. No entanto, por padrão, o mecanismo de seleção de áudio pausa o conteúdo de áudio espacial quando há um toque.
  • Ao atender ou fazer uma chamada telefônica ou videoconferência, a reprodução de áudio espacial precisa ser pausada. A reprodução de áudio espacial precisa 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 precisa acontecer de maneira rápida e contínua para não afetar a experiência da chamada.

Renderização em alto-falantes

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

Diretrizes para implementação do rastreamento da cabeça

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

Interface do usuário

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

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

    ht-ui

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

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

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

  • O estado selecionado pelo usuário, ativado ou desativado, precisa persistir em uma reinicialização do smartphone ou no despareamento e pareamento do fone de ouvido.

Comportamento funcional

Relatório de posição da cabeça

  • As informações de posição da cabeça, nas coordenadas x, y e z, enviadas do fone de ouvido para o dispositivo Android, precisam refletir os movimentos da cabeça do usuário de maneira rápida e precisa.
  • O relatório de posição da cabeça na conexão Bluetooth precisa seguir o protocolo definido em HID.
  • O fone de ouvido precisa enviar as informações de rastreamento da cabeça para o smartphone Android somente quando o usuário ativar o Rastreamento da cabeça na interface de configuração do dispositivo Bluetooth.

Desempenho

Latência

Latência de rastreamento da cabeça é definida como o tempo necessário para que o movimento da cabeça capturado pela unidade de medição inercial (IMU, na sigla em inglês) seja detectado pelos transdutores do fone de ouvido como uma mudança no som causada por esse movimento. A latência de rastreamento da cabeça não pode exceder 150 ms.

Taxa de relatório de posição da cabeça

Quando o rastreamento da cabeça está ativo, o fone de ouvido precisa informar a posição da cabeça em uma base periódica recomendada de aproximadamente 20 ms. Para evitar acionar a lógica de detecção de entrada obsoleta no smartphone durante uma instabilidade de transmissão do Bluetooth, o tempo máximo entre duas atualizações não pode exceder 40 ms.

Otimização de energia

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

As implementações AOSP do framework de áudio e da pilha Bluetooth já oferecem suporte aos indicadores para controlar a troca de codec. Se a implementação do OEM usar o HAL de áudio principal para áudio Bluetooth, conhecido como modo de descarregamento de codec, o OEM precisará garantir que o HAL de áudio retransmita esses indicadores entre o HAL de áudio e a pilha Bluetooth.

Troca de codec

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

Siga estas regras durante a troca de codec:

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

  • Quando todos os streams relevantes estiverem inativos e um stream de mídia for iniciado, inicie o stream Bluetooth com isLowLatency definido como false para especificar um codec de baixa energia.

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

No lado do fone de ouvido, ele precisa oferecer suporte aos decodificadores de baixa latência e baixa 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 rastreamento da cabeça 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, energia e qualidade do áudio. Quando o áudio espacial e o rastreamento da cabeça estão ativados, 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 oferece economia de energia significativa e maior robustez da conexão de áudio Bluetooth quando apenas o á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 instabilidade no fone de ouvido Bluetooth.

Consulte Rastreamento da cabeça em áudio LE para ajustes do modo de latência para áudio LE.