与 ChromeOS 兼容 - 扬声器麦克风规范 v1.3

版本:1.3
上次更新时间:2024-09-06

Legend

产品动词 开发操作
"MUST" 强制性产品要求
“SHOULD” 可选建议
“MAY” 建议条件

概览

本文档介绍了 ChromeOS 兼容的 USB+蓝牙音箱麦克风必须满足的要求。此规范不适用于 WWCB 产品,也不适用于与 Chromebook 一起设计和认证的产品。

USB

安全

2.4 GHz 无线接收器

  • 2.4 GHz 无线设备仅与包装盒随附的接收器(加密狗)自动配对。
  • 用户需要执行操作(在设备上或通过应用)才能将耳机与另一个接收器配对,或将新耳机与现有接收器配对。
  • 如果应用需要更改耳机/接收器配对,则该应用必须在 ChromeOS 上运行,例如通过扩展程序运行。该应用也可以是使用 WebUSB/WebHID 的 Web 应用。
  • 如果配对是通过扩展程序实现的,则该扩展程序必须有权访问 USB 端口。明确禁止使用内容脚本。

固件和连接器

  • 耳机必须声明为具有正确音频接口 (0x01) 描述符的音频设备。
    • 输入和输出终端必须有一个对应的描述符。
  • 如果它有任何按钮,则必须声明为 HID。
  • 耳机必须符合 WWCB 固件和连接器要求

软件

格式

请参阅音频格式

对于同时具有输入和输出音频接口描述符的设备。

  • 音频接口描述符示例

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

如果输入和输出的采样率不同,设备必须能够同时支持以不同采样率进行播放和捕获。否则,设备必须在音频流接口描述符 -> tSamFreq 中反映相同的值。

  • 48k USB 音频输出采样率示例

    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
    
  • 44.1k USB 音频输入采样率示例

    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
    

HID 代码

  • 对于每个 HID 事件,每次只能传输一个事件。
  • 按下按钮时,应收到正确的事件代码和相应的事件代码。
    • 例如,增加音量。 evtest 只能观察到一个音量调高按钮事件,并且代码必须为 KEY_VOLUME_UP
  • 如果存在任何旨在提供以下功能的接口,则 USB 外围设备必须支持根据 USB.org HID 规范发出或接收相应的 HID 事件。
消费方页面 (0x0c)
键名 HID 用途 ID 使用类型
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
电话页面 (0x0b)
键名 HID 用途 ID 使用类型
挂机开关 0x20 OOC
振铃器 0x9e OOC
LED 页面 (0x08)
键名 HID 用途 ID 使用类型
静音 0x09 OOC
摘机 0x17 OOC
铃声 0x18 OOC

耳机插孔检测

如果 USB 设备不支持 USB 音频类 (UAC),则始终会在 ChromeOS 系统任务栏中显示输出节点。不过,如果 USB 设备支持 UAC,系统将能够在插入设备时正确检测到 3.5 毫米音频插孔。

  • CrOS 必须使用 3.5 毫米耳机插孔的存在检测
    • 必须通过以下方式之一执行插播检测:

一般蓝牙要求

请参阅 ChromeOS 兼容性 - 蓝牙规范

音频格式

播放 录制
采样率 ≥ 16 kHz ≥ 16 kHz
格式 S16_LE S16_LE
  • 频道号和配置必须正确无误。
  • 耳机声明支持的所有采样率都必须正常工作。
    • 实测速率与采样率之间的偏差必须 ≤ 0.1%。
    • 实测率的线性回归的标准误差必须小于 30。
  • 头戴式耳机必须支持在它声称支持的不同采样率下播放或捕获音频。

    例如,播放采样率低于 44.1 kHz 的音频,同时以 48 kHz 的采样率捕获语音。

    • 否则,需要 ChromeOS 添加特定的配置文件,以在系统端阻止此行为。

音频品质

拍摄路径 - 静音

  • 如果存在任何供用户将音频设备静音的界面,则该界面必须
    • 以不受以下因素影响的方式保持静音状态:
      • 打开和关闭设备。
      • 切换到其他输入设备。
  • 如果用户按耳机或 ChromeOS 上的静音按钮,静音状态必须发生变化。
  • 如果静音状态发生变化,耳机上的静音状态指示器(例如 LED)必须随之变化。

音频延迟

延迟时间

  • 输出延迟时间
    • 在用户发起播放的操作后,音频播放必须在 500 毫秒内开始。
      • 如果设备原始设备制造商(OEM)可以证明在未满足此要求时不会引入回声,则可以申请豁免。

A/V 同步

  • 音频播放应与视频播放同步。音频播放可比视频提前 ≤25 ms 或滞后 ≤95 ms。

修订历史记录

日期 版本 备注
2024-09-06 1.3 派生出 ChromeOS 兼容规范。初始合作伙伴网站发布。
2022-09-14 1.2 更新至 v1.2。
2022-08-19 1.1 已更新至 v1.1。
2022-08-18 1.0 创建了相关的 WWCB 规范。