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

O Android 13 oferece suporte a á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 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 anexar um dispositivo de rastreamento da posição da cabeça por Bluetooth e disponibilizá-lo como um dispositivo HID pelo framework de sensores do Android. Consulte Áudio espacial e rastreamento da cabeça para conferir mais requisitos e validação.

As diretrizes desta página se aplicam a uma solução de áudio espacial que adota as novas APIs e arquiteturas de áudio espacial com um smartphone Android com o Android 13 ou versões mais recentes e fones de ouvido compatíveis com o sensor de rastreamento de cabeça.

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

O áudio espacial estático não requer rastreamento da cabeça, então não é necessário um recurso específico no fone de ouvido. Todos os fones de ouvido com e sem fio podem oferecer suporte a á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 CTS introduzidos para a classe Spatializer.

Uma implementação de API robusta garante que os desenvolvedores de apps, em particular 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 estiver pareado, as configurações do dispositivo Bluetooth desse fone de ouvido vão exibir um botão para ativar/desativar 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 em desemparelhar e emparelhar o fone de ouvido.

Comportamento funcional

Formatos de áudio

Os formatos de áudio a seguir PRECISAM ser renderizados pelo efeito de espacialização quando o áudio espacial estiver ativado e o dispositivo de renderização for um fone de ouvido com ou sem Bluetooth:

  • AAC, 5.1 canais
  • PCM bruto, canais 5.1

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, 7.1.4

Reprodução de conteúdo estéreo

O conteúdo estéreo não pode ser renderizado com o mecanismo de efeito espacial, mesmo que o áudio espacial esteja ativado. Se uma implementação permitir a espacialização de conteúdo em 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 para conteúdo estéreo não espacializado sem exigir nenhuma mudança 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 o mínimo de interrupção de áudio.

Usar transições de casos de uso e simultaneidade

Processe 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 ser permitidos para serem 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á 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 precisa acontecer rapidamente e sem problemas para não afetar a experiência de chamada.

Renderização em alto-falantes

O suporte à espacialização do áudio em alto-falantes ou ao modo transaural não é necessário.

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

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

Interface do usuário

Após a implementação e o pareamento do fone de ouvido com suporte a á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, a configuraçã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 fone de ouvido é definido como ativado.

  • O estado selecionado pelo usuário, ativado ou desativado, precisa persistir após uma reinicialização do smartphone ou após o desemparelhamento e o emparelhamento do fone de ouvido.

Comportamento funcional

Relatórios de pose da cabeça

  • As informações de posição 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 maneira rápida e precisa.
  • O relatório de posição da cabeça sobre a conexão Bluetooth precisa seguir o protocolo definido por HID.
  • O fone de ouvido precisa enviar essas informações para o smartphone Android somente quando o usuário ativa o recurso rastreamento da 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 entre o movimento da cabeça capturado pela unidade de medida de inércia (IMU, na sigla em inglês) e a detecção da mudança no som causada por esse movimento pelos transdutores dos fones de ouvido. A latência do rastreamento de cabeça não pode exceder 150 ms.

Taxa de relatórios de pose da cabeça

Quando o rastreamento de 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 desatualizada no smartphone durante um jitter 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 alternância de codecs Bluetooth e seleção do modo de latência fornecidos pelas interfaces HAL de áudio e HAL de áudio Bluetooth.

As implementações do AOSP do framework de áudio e da pilha Bluetooth já oferecem suporte aos sinais 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 redução de codec, o OEM precisa garantir que o HAL de áudio retransmita esses sinais entre o HAL de áudio e a pilha Bluetooth.

Mudança 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 baixo consumo, como o Advanced Audio Coding (AAC).

Siga estas regras durante a troca de codec:

  • Rastreie apenas a atividade nos seguintes streams de saída HAL de áudio:
    • Saída de spatializer dedicada
    • Transmissões específicas de mídia, como buffer profundo ou reprodução de descarga compactada
  • Quando todos os streams relevantes estiverem inativos e o stream do equalizador espacial for iniciado, inicie o stream de 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 baixo consumo de energia.

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

No lado do fone de ouvido, ele precisa oferecer suporte a 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 de cabeça, o ajuste do modo de latência usa os mecanismos disponíveis para reduzir ou aumentar a latência e alcançar o melhor compromiso entre latência, potência 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 proporciona 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 a extensão do tamanho do buffer de jitter no fone de ouvido Bluetooth.

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