【问题标题】:Can anyone explain how voice commands works via Bluetooth remote(Nexus player remote) in Android(Nexus player)?谁能解释语音命令如何通过 Android(Nexus 播放器)中的蓝牙遥控器(Nexus 播放器遥控器)工作?
【发布时间】:2016-07-27 16:56:34
【问题描述】:

谁能详细说明以下问题?

  1. 蓝牙堆栈如何处理音频数据?
  2. 如何处理音频命令?
  3. 我们是否需要任何服务来处理音频数据?

提前致谢。

【问题讨论】:

    标签: audio bluetooth android-bluetooth bluetooth-lowenergy


    【解决方案1】:

    基本上,BLE 上的语音命令需要:

    • 一些用于减少所需带宽的音频编解码器(ADPCM 和 SBC 很常见,OPUS 正在兴起),
    • 一些通过 BLE 的音频流方法,
    • 将音频流从 BLE 守护程序解码并获取到命令处理框架。

    在 android 世界中,命令处理框架是 google sauce(已关闭),最容易从 ALSA 设备获取其音频。剩下要做的就是将音频从遥控器传输到 ALSA 设备。

    所以对于音频流,您可以:

    • 使用自定义 L2CAP 通道或自定义 GATT 服务,这需要自定义 android 服务应用程序和/或对 Bluedroid 的修改来处理这些,它需要一种将音频流作为 ALSA 注入的方法,很可能带有“循环”音频设备驱动程序,
    • 将音频声明为自定义 HID 报告,这样,Bluedroid 会将它们注入回内核,然后添加处理这些报告并公开音频设备的自定义 HID 驱动程序。

    基于 BLE 的音频不是标准的,因此并非所有实现都做同样的事情。在 Nexus Player 案例中,实现使用 HID:它流式传输 ADPCM 音频流,在 HID 报告中分块。 Android linux 内核中有一个特殊的 HID 驱动程序"hid-atv-remote.c",除了输入设备外,它还公开了一个 ALSA 设备。 Bluedroid 没有关于音频的信息,它所做的只是将 HID 报告从 BLE 转发到 UHID。

    【讨论】:

    • 感谢 Nipo 的回复。能否请您指导我一些链接或书籍,以帮助我理解完整的 BLE 音频路径。
    • 由于这主要是特定于实现的,您可能应该参考供应商文档,例如 Ti'sNoric'sDialog'sCypress'
    • @Nipo,能否请您确认一下 Nexus 播放器遥控器是 BT 还是 BLE?
    • FCCID 是 PTITSOYBT01。 FCC 网站上的内部照片显示BCM20734(现为赛普拉斯)。它同时支持 BREDR 和 BLE。我见过它做 BLE。
    猜你喜欢
    • 2016-03-16
    • 2012-01-28
    • 2017-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 2015-06-03
    • 2020-08-14
    相关资源
    最近更新 更多