鸿蒙(OpenHarmony)体系之智能语音部件(1)

王柳  金牌会员 | 2024-9-30 23:49:09 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 822|帖子 822|积分 2466

本文重点参考:
OpenHarmony/ai_intelligent_voice_framework

一、总体概述

1. 功能简介及架构

智能语音组件包括智能语音服务框架智能语音驱动,主要实现了语音注册语音唤醒干系功能。
智能语音组件架构图如下图所示:

(1)智能语音服务框架
智能语音服务框架支持如下功能:


  • 体系事件监测
开机解锁、亮灭屏等体系事件监测。


  • 并发策略
智能语音业务并发管理。


  • 智能语音业务
语音注册、语音唤醒等智能语音业务处理。


  • 声音触发器
DSP模型加载、DSP算法启停、DSP事件处理。
(2)智能语音驱动
智能语音驱动支持如下功能:


  • 引擎算法
智能语音算法引擎以及事件上报。


  • 设备驱动
DSP模型加载卸载、算法启停、事件上报以及硬件干系通路配置。

2. 根本概念



  • 语音注册
将用户说的唤醒词转换为声学模型以及声纹特征,以便后续的语音唤醒。


  • 语音唤醒
判定当前说话人是否为已注册的特定用户。


  • DSP
数字信号处理器(Digital Signal Processors)。DSP芯片即指可以或许实现数字信号处理技术的芯片。
 
3. 目录结构

堆栈目录结构如下:
  1. /foundation/ai/intelligent_voice_framework  # 智能音频组件业务代码
  2. ├── frameworks                                      # 框架代码
  3. │   ├── native                                      # 内部接口实现
  4. │   └── js                                          # 外部接口实现
  5. ├── interfaces                                      # 接口代码
  6. │   ├── inner_api                                   # 内部接口
  7. │   └── kits                                        # 外部接口
  8. ├── sa_profile                                      # 服务配置文件
  9. ├── services                                        # 服务代码
  10. ├── LICENSE                                         # 证书文件
  11. ├── tests                                           # 开发者测试
  12. └── utils                                           # 公共函数
复制代码
图片情势:


4. 束缚与限制



  • 智能语音服务当前只支持一个唤醒词的注册以及唤醒。

二、接口说明

1. 语音注册接口说明

语音注册接口说明详见下表:
接口名称接口描述createEnrollIntelligentVoiceEngine(descriptor: EnrollIntelligentVoiceEngineDescriptor): EnrollIntelligentVoiceEngine创建注册引擎。init(config: EnrollEngineConfig): EnrollIntelligentVoiceEngineCallbackInfo初始化注册引擎。start(isLast: boolean): EnrollIntelligentVoiceEngineCallbackInfo启动注册。stop(): void停止注册。commit(): EnrollIntelligentVoiceEngineCallbackInfo确认注册效果。setWakeupHapInfo(info: WakeupHapInfo): void设置唤醒应用信息。setSensibility(sensibility: SensibilityType): void设置敏捷度。release(): void释放注册引擎。
2. 语音唤醒接口说明

接口名称接口描述createWakeupIntelligentVoiceEngine(descriptor: WakeupIntelligentVoiceEngineDescriptor): WakeupIntelligentVoiceEngine创建唤醒引擎。setWakeupHapInfo(info: WakeupHapInfo): void设置唤醒应用信息。setSensibility(sensibility: SensibilityType): void设置敏捷度。on(type: 'wakeupIntelligentVoiceEvent', callback: Callback): void订阅唤醒事件。release(): void释放唤醒引擎。
三、开发实例

1. 语音注册

语音注册流程是用户通过应用的注册界面主动发起的交互流程,主要流程如下:
1)用户启动注册(创建注册引擎并初始化注册引擎)后,进入注册界面;
2)界面提示用户说出唤醒词,用户根据提示说出相应唤醒词(启动注册),界面会让用户再次重复说出唤醒词,直到最后一次;
3)注册完成(确认注册效果)后,注册流程全部完成。
示例代码如下:
  1. // 引入智能音频
  2. import intelligentVoice from '@ohos.ai.intelligentVoice';
  3. // 获取智能音频管理服务
  4. var manager = intellVoice.getIntelligentVoiceManager();
  5. if (manager == null) {
  6.     console.error("Get IntelligentVoiceManager failed.");
  7. } else {
  8.     console.info("Get IntelligentVoiceManager success.");
  9.     return;
  10. }
  11. // 创建注册引擎
  12. var engine = null;
  13. let engineDescriptor = {
  14.     wakeupPhrase: '',                            // 设置唤醒词
  15. }
  16. await intellVoice.createEnrollIntelligentVoiceEngine(engineDescriptor).then((data) => {
  17.     engine = data;
  18.     console.info('Create EnrollIntelligentVoice Engine finish');
  19. }).catch((err) => {
  20.     console.error('Create EnrollIntelligentVoice Engine failed, err: ' + err.message);
  21. });
  22. if (engine == null) {
  23.     console.error('Create EnrollIntelligentVoice Engine failed');
  24.     return;
  25. }
  26. // 初始化注册引擎
  27. let config = {
  28.     language: "zh", // 中文
  29.     area: "CN", // 中国
  30. }
  31. engine.init(config).then((data) => {
  32.     console.info('Init EnrollIntelligentVoice Engine finish');
  33. }).catch((err) => {
  34.     console.info('Init EnrollIntelligentVoice Engine failed, err: '+ err.message);
  35. });
  36. // 启动注册
  37. let isLast = true; // true: 最后一次启动,false: 非最后一次启动,实例为true
  38. engine.start(isLast).then((data) => {
  39.     console.info('Start enrollment finish');
  40. }).catch((err) => {
  41.     console.info('Start enrollment failed, err: '+ err.message);
  42. });
  43. // 确认注册结果
  44. engine.commit().then((data) => {
  45.     console.info('Commit enroll result finish');
  46. }).catch((err) => {
  47.     console.info('Commit enroll result failed, err: '+ err.message);
  48. });
  49. // 下发语音唤醒应用信息
  50. let info = {
  51.     bundleName: "demo", // 应用的bundle name,demo只是个参考例子,具体填写由应用确定
  52.     abilityName: "demo", // 应用的ability name,demo只是个参考例子,具体填写由应用确定
  53. }
  54. engine.setWakeupHapInfo(info).then((data) => {
  55.     console.info('Set wakeup hap info finish');
  56. }).catch((err) => {
  57.     console.info('Set wakeup hap info failed, err: '+ err.message);
  58. });
  59. // 释放注册引擎
  60. engine.release().then((data) => {
  61.     console.info('Release EnrollIntelligentVoice engine success.');
  62. }).catch((err) => {
  63.     console.info('Release EnrollIntelligentVoice engine failed, err: '+ err.message);
  64. });
复制代码
2. 语音唤醒

语音唤醒由智能语音组件控制,上层应用只必要调用createWakeupIntelligentVoiceEngine获取唤醒引擎后,注册唤醒事件回调即可。
示例代码如下:
  1. // 获取唤醒引擎
  2. var engine = null;
  3. let engineDescriptor = {
  4.     needApAlgEngine: true, // 是否需要框架提供ap侧算法引擎
  5.     wakeupPhrase: '', // 设置唤醒词
  6. }
  7. await intellVoice.createWakeupIntelligentVoiceEngine(engineDescriptor).then((data) => {
  8.     engine = data;
  9.     console.info('Create WakeupIntelligentVoice Engine finish');
  10. }).catch((err) => {
  11.     console.error('Create WakeupIntelligentVoice Engine failed, err: ' + err.message);
  12. });
  13. if (engine == null) {
  14.     console.error('Create WakeupIntelligentVoice Engine failed');
  15.     return;
  16. }
  17. // 注册事件回调
  18. engine.on('wakeupIntelligentVoiceEvent',(callback) => {
  19.     console.info('wakeupIntelligentVoiceEvent CallBackInfo:')
  20.     for (let prop in callback) {
  21.         console.info('wakeupIntelligentVoiceEvent prop: ' + prop);
  22.         console.info('wakeupIntelligentVoiceEvent value: ' + callback[prop]);
  23.     }
  24. });
复制代码


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

使用道具 举报

0 个回复

倒序浏览

快速回复

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

本版积分规则

王柳

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

标签云

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