Compatível com ChromeOS: especificação do alto-falante com microfone v1.3

Versão: 1.3
Última atualização: 06/09/2024

Legend

Verbo do produto Ação de desenvolvimento
"MUST" Requisito obrigatório de produto
"SHOULD" Recomendação opcional
"MAY" Opcional

Visão geral

Este documento descreve os requisitos que um microfone com alto-falante USB+Bluetooth compatível com o ChromeOS atende. Esta especificação não é para produtos WWCB nem para um produto projetado e certificado junto com um Chromebook.

USB

Segurança

Dongle sem fio de 2,4 GHz

  • O dispositivo sem fio de 2,4 GHz só faz pareamento automático com o receptor (dongle) que vem na caixa.
  • É necessário que o usuário faça uma ação (no dispositivo ou em um app) para emparelhar o headset com outro receptor ou um novo headset com um receptor já existente.
  • Se um app precisar alterar o pareamento do fone de ouvido/receptor, ele precisará ser executado no ChromeOS, como por uma extensão. O app também pode ser um app da Web usando WebUSB/WebHID.
  • Se o pareamento for implementado por uma extensão, ela poderá acessar portas USB. Os scripts de conteúdo são explicitamente proibidos.

Firmware e conector

  • O headset precisa ser declarado como um dispositivo de áudio com um descritor de interface de áudio correto (0x01).
    • É necessário ter um descritor correspondente para o terminal de entrada e saída.
      • Recomendamos informar o tipo de terminal da classe de áudio USB (UAC)
  • Se tiver um botão, ele precisa ser declarado como um HID.
  • O fone de ouvido precisa atender aos requisitos de firmware e conector da WWCB.

Software

Formato

Consulte Formato de áudio.

Para dispositivos com descritor de interface de áudio de entrada e saída.

  • Exemplo de um descritor de interface de áudio

    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0
      iInterface              0
    

Se as taxas de amostragem da entrada e da saída forem diferentes, o dispositivo precisará ser capaz de oferecer suporte à reprodução e à captura com taxas de amostragem diferentes ao mesmo tempo. Caso contrário, o dispositivo precisa refletir o mesmo valor no AudioStreaming Interface Descriptor -> tSamFreq.

  • Exemplo de taxa de amostragem de saída de áudio USB de 48k

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        48000
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x02  EP 2 OUT(Output)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    
  • Exemplo de taxa de amostragem de entrada de áudio USB de 44,1 k

    AudioStreaming Interface Descriptor:
      bLength                11
      bDescriptorType        36
      bDescriptorSubtype      2 (FORMAT_TYPE)
      bFormatType             1 (FORMAT_TYPE_I)
      bNrChannels             2
      bSubframeSize           2
      bBitResolution         16
      bSamFreqType            1 Discrete
      tSamFreq[ 0]        44100
    Endpoint Descriptor:
      bLength                 9
      bDescriptorType         5
      bEndpointAddress     0x81  EP 1 In(Input)
      bmAttributes            9
        Transfer Type            Isochronous
        Synch Type               Adaptive
        Usage Type               Data
    

Códigos HID

  • Para cada evento HID, ele só pode transmitir um evento por vez.
  • O código de evento correto e o código de evento correspondente precisam ser recebidos quando o botão é pressionado.
    • Por exemplo, aumente o volume. O evtest só pode observar um evento de aumentar volume, e o código precisa ser KEY_VOLUME_UP.
  • Se houver uma interface projetada para fornecer as seguintes funcionalidades, o periférico USB precisará emitir ou receber os eventos HID correspondentes de acordo com a especificação HID da USB.org.
Página do consumidor (0x0c)
Nome da chave ID de uso do HID Tipo de uso
KEY_PLAY 0x0b0 OOC
KEY_PAUSE 0x0b1 OOC
KEY_NEXTSONG 0x0b5 OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_STOPCD 0x0b7 OSC
KEY_PLAYPAUSE 0x0cd OSC
KEY_PREVIOUSSONG 0x0b6 OSC
KEY_MUTE 0x0e2 OOC
KEY_VOLUMEUP 0x0e9 RTC
KEY_VOLUMEDOWN 0x0ea RTC
Página de telefonia (0x0b)
Nome da chave ID de uso do HID Tipo de uso
Hook Switch 0x20 OOC
Campainha 0x9e OOC
Página do LED (0x08)
Nome da chave ID de uso do HID Tipo de uso
Desativar som 0x09 OOC
Desligado 0x17 OOC
Tocar 0x18 OOC

Detecção de entrada para fone de ouvido

Se um dispositivo USB não for compatível com a classe de áudio USB (UAC), ele sempre vai mostrar um nó de saída na bandeja do sistema do ChromeOS. No entanto, se o dispositivo USB for compatível com UAC, o sistema poderá detectar corretamente uma entrada para fone de ouvido de 3,5 mm quando o dispositivo for inserido.

  • O CrOS precisa usar a detecção de presença para entradas de 3,5 mm
    • É necessário realizar a detecção de inserção usando uma das seguintes opções:

Requisitos gerais do Bluetooth

Consulte Compatível com ChromeOS: especificação do Bluetooth.

Formato de áudio

Reprodução Gravando
Taxa de amostragem ≥ 16 kHz ≥ 16 kHz
Formato S16_LE S16_LE
  • O número e a configuração do canal precisam estar corretos.
  • Todas as taxas de amostragem declaradas como compatíveis pelo headset precisam funcionar corretamente.
    • O desvio entre a taxa medida e a taxa de amostragem precisa ser ≤ 0,1% .
    • O erro padrão da regressão linear da taxa medida precisa ser < 30.
  • O headset precisa ser compatível com reprodução ou captura em diferentes taxas de amostragem que ele afirma oferecer suporte.

    Por exemplo, reproduzir áudio abaixo de 44,1 kHz e capturar voz abaixo de 48 kHz simultaneamente.

    • Caso contrário, o ChromeOS vai precisar adicionar um arquivo de configuração específico para impedir isso no lado do sistema.

Qualidade do áudio

Capturar caminho: silenciar

  • Se houver uma interface para os usuários silenciarem o dispositivo de áudio, ela precisará
    • Mantenha o estado de mudo de uma forma que não seja afetada por:
      • Abrir e fechar o dispositivo.
      • Trocar para outro dispositivo de entrada.
  • Se o usuário pressionar o botão de desativar microfone no fone de ouvido ou no ChromeOS, o estado de mudo vai mudar.
  • Se o estado de mudo mudar, o indicador de estado de mudo (por exemplo, LED) no headset também precisa mudar.

Latência de áudio

Latência

  • Latência de saída
    • A reprodução de áudio precisa começar em até 500 ms após uma ação do usuário que inicia a reprodução.
      • Pode solicitar uma renúncia se o OEM do dispositivo puder provar que nenhum eco é introduzido quando ele não atende a esse requisito.

Sincronização de A/V

  • A reprodução de áudio precisa estar sincronizada com a de vídeo. A reprodução de áudio pode anteceder o vídeo em até 25 ms ou ficar atrás em até 95 ms.

Histórico de revisões

Data Versão Observações
2024-09-06 1.3 Especificação compatível com o ChromeOS derivada. Publicação inicial do site do parceiro.
2022-09-14 1.2 Atualizado para a v1.2.
2022-08-19 1.1 Atualizado para a v1.1.
2022-08-18 1.0 Especificação relacionada da WWCB criada.