Android SoundTrigger架构学习

打印 上一主题 下一主题

主题 865|帖子 865|积分 2595

本文将个人针对Android SoundTrigger的学习做了简朴总结,以方便后续查询和学习。
一、架构解析

1、Android SoundTrigger架构如下(简图)


1.1、简朴介绍

1)SoundTriggerHelper
SoundTriggerHelper是一个应用辅助工具类,它是应用和服务(这里是SoundTriggerSerivice)之间的适配层,其内部封装了常用的API接口,供APP直接调用;SoundTriggerHelper与SoundTriggerService之间使用HIDL/AIDL 举行交互;
2)SoundTriggerService
它是SoundTrigger架构的服务焦点,运行在system server历程下,负责SoundTrigger整个体系的调理;典范操作如下:
  1. registerSoundModel()  // 模型注册
  2. startRecognition()    // 启动识别
  3. stopRecognition()     // 停止识别
复制代码
SoundTriggerService向下调用SoundTriggerModule,实现与SoundTriggerHAL的交互。
3)SoundTriggerModule
它是与与SoundTrigger HAL直接交互的层,提供了硬件本领抽象层的作用,支持模块的多实例,典范操作接口如下:
  1. loadSoundModel()   // 模型加载
  2. unloadSoundModel() // 模型卸载
  3. startRecognition() // 开启监听
  4. stopRecognition()  // 停止监听
  5. getParameter()     // 参数获取
复制代码
4)SoundTrigger HAL
它是负责直接与硬件交互的层,向上承接SoundTriggerModule;SoundTrigger HAL的主要作用是在低功耗状态下处理声音辨认,好比语音唤醒词检测;提供声学模子管理(加载或卸载),并可以与Audio HAL交互,实现语音唤醒后相关音频流的处理。
焦点文件目次:
  1. 核心文件目录:
  2. soundtrigger/
  3. ├── Android.bp                # 编译配置
  4. ├── SoundTriggerHw.cpp        # HAL实现主体
  5. ├── SoundTriggerHalHidl.cpp   # HIDL适配层
  6. ├── SoundTriggerHalAidl.cpp   # AIDL适配层 (Android 12+)
  7. └── include/
  8.     └── SoundTriggerHal.h     # 头文件
复制代码
常用接口如下:
  1. // 来自ISoundTriggerHw.hal主要接口
  2. interface ISoundTriggerHw {
  3.     getProperties() generates (SoundTriggerProperties properties);
  4.     loadSoundModel(SoundModel soundModel) generates (int32_t ret, int32_t modelId);
  5.     startRecognition(int32_t modelId) generates (int32_t ret);
  6.     stopRecognition(int32_t modelId) generates (int32_t ret);
  7.     unloadSoundModel(int32_t modelId) generates (int32_t ret);
  8. };
复制代码
1.2、代码路径说明

(1)SoundTriggerService代码路径最新路径如下:
frameworks/base/services/voiceinteraction/java/com/android/server/soundtrigger/SoundTriggerService.java
(2)SoundTrigger HAL代码路径
  1. A) HIDL接口(Android8.0+):hardware/interfaces/soundtrigger/2.3/ISoundTriggerHw.hal
  2. 不同芯片在Google原生代码基础上做了适配,这里以Qualcomm和MTK当前两个芯片生产商为例:
  3. Qualcomm:
  4. vendor/qcom/opensource/audio-hal/primary-hal/hal/soundtrigger/
  5. MTK:
  6. vendor/mediatek/proprietary/hardware/audio/soundtrigger/
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

不到断气不罢休

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表