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

O Android 13 oferece suporte ao áudio espacial com APIs que permitem aos desenvolvedores de apps descobrir 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 espacialização de áudio com suporte para rastreamento de movimentos 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 de framework de sensor. O protocolo HID especifica como conectar um dispositivo de monitoramento da posição da cabeça por Bluetooth e disponibilizá-lo como um dispositivo HID usando o framework de sensores do Android. Consulte Áudio espacial e rastreamento de 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 executando Android 13 e versões mais recentes e fones de ouvido compatíveis com sensor de rastreamento de cabeça.

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

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

Implementação da API

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

Uma implementação robusta da API garante que os desenvolvedores de apps, principalmente 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 classe Spatializer, valide se a interface tem o seguinte comportamento:

  • Quando o fone de ouvido compatível com áudio espacial é pareado, as configurações do dispositivo Bluetooth para esse fone mostram uma chave Á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 headset é ativado.

  • O estado selecionado pelo usuário, ativado ou desativado, persiste após a reinicialização do smartphone ou o cancelamento e o pareamento do headset.

Comportamento funcional

Formatos de áudio

Os seguintes formatos de áudio PRECISAM ser renderizados pelo efeito de espacialização 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
  • Canais 5.1.2, 7.1, 7.1.2 e 7.1.4

Reprodução de conteúdo estéreo

O conteúdo estéreo não pode ser renderizado pelo mecanismo de efeitos do 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 está ativado, é preciso ser possível fazer a transição entre a reprodução de conteúdo espacializado multicanal e conteúdo estéreo não espacializado sem exigir mudanças nas configurações do usuário, reconexão ou reconfiguração do headset. A transição entre conteúdo de áudio espacial e conteúdo estéreo precisa ocorrer com o mínimo de interrupção no áudio.

Transições e simultaneidade de casos de uso

Lide com casos de uso especiais da seguinte maneira:

  • As notificações precisam ser misturadas com o conteúdo de áudio espacial da mesma forma que são com o conteúdo de áudio não espacial.
  • Os toques precisam poder ser misturados com 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 ligação 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 quando a chamada terminar. A reconfiguração de um caminho de áudio para alternar do modo de áudio espacial para o modo de conversa precisa acontecer de forma rápida e integrada para não afetar a experiência da chamada.

Renderização em alto-falantes

Não é necessário ter suporte para 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 headset.

Interface do usuário

Após a implementação e o pareamento do headset compatível com áudio espacial, valide se a interface tem o seguinte comportamento:

  • Nas configurações do dispositivo Bluetooth, quando a opção Áudio espacial do fone de ouvido está ativada, a opção 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 headset é ativado.

  • O estado selecionado pelo usuário, ativado ou desativado, precisa persistir durante uma reinicialização do smartphone ou o cancelamento e o pareamento do headset.

Comportamento funcional

Relatórios de postura da cabeça

  • As informações de postura da cabeça, nas coordenadas x, y e z, enviadas do headset para o dispositivo Android, precisam refletir os movimentos da cabeça do usuário de forma rápida e precisa.
  • A transmissão da postura da cabeça pela conexão Bluetooth precisa seguir o protocolo definido pelo HID.
  • O fone de ouvido só pode enviar as informações de rastreamento da cabeça para o smartphone Android quando o usuário ativa a opção Rastreamento da cabeça na interface de configurações 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 do fone de ouvido da mudança no som causada por esse movimento. A latência do rastreamento da cabeça não pode exceder 150 ms.

Taxa de relatório de postura da cabeça

Quando o rastreamento da cabeça está ativo, o headset precisa informar a postura 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 troca 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 do AOSP da estrutura de áudio e da pilha Bluetooth já são compatíveis com os indicadores para controlar a troca de codecs. Se a implementação do OEM usar a HAL de áudio principal para áudio Bluetooth, conhecida como modo de descarga de codec, o OEM precisa garantir que a HAL de áudio transmita esses sinais entre a 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 o Opus. Ao reproduzir conteúdo de áudio não espacial, use um codec de baixa potência, como Advanced Audio Coding (AAC).

Siga estas regras durante a troca de codec:

  • Rastreie apenas a atividade nos seguintes fluxos de saída da HAL de áudio:
    • Saída dedicada do espacializador
    • Fluxos específicos de mídia, como buffer profundo ou reprodução de descarga compactada
  • Quando todas as transmissões relevantes estiverem inativas e a transmissão do espacializador for iniciada, inicie a transmissão 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 potência.

  • 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 headset, ele precisa ser compatível com os decodificadores de baixa latência e baixo consumo de energia e implementar o protocolo padrão de seleção de codec.

Ajuste do modo de latência

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

Com base na ativação ou desativação do rastreamento da cabeça, o ajuste do modo de latência usa mecanismos disponíveis para reduzir ou aumentar a latência e alcançar o melhor compromisso entre latência, energia e qualidade de á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 do link 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 jitter no headset Bluetooth.

Consulte Rastreamento da cabeça com LE Audio para ajustes do modo de latência com LE Audio.