丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
资深技术专家手把手带教
技术交流,直击现场
让创作激发创新
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
热门
芯片开放社区(Open Chip Community 简称OCC),是平头哥芯片基础设施的云端载体,提供开发中心、创芯空间、技术部落等互动版块,汇聚海量应用资源,助力芯片合作伙伴构建软硬融合的芯片生态。面向芯片企业,OCC以应用驱动芯片精准定义、以全栈技术支撑芯片敏捷开发;面向开发者,OCC以芯片生态降低IoT开发门槛、以1520体系加速IoT产品落地。
1
回答
YoC 在语音服务接口和算法实现之间增加了适配层,方便多种语音算法的接入,保持了应用代码的统一。
以上内容摘自《无需从0开发 1天上手智能语音离在线方案》电子书,点击https://developer.aliyun.com/topic/download?id=904可下载完整版
智能语音终端软件平台,采用了基于 AliOS Thing 为内核的 YoC 操作系统。
退出低功耗参数参考如下:
退出低功耗函数原型:
低功耗参数参考如下:
进入低功耗函数原型:
KEY_AD_VAL_OFFSET 按键检测允许的误差范围。
KEY_ADC_VAL* ADC 各个按键对应的电压值。
PIN_ADC_KEY 按键的 ADC 引脚号。
PIN_WL_WAKE_HOST WiFi 芯片的唤醒主控的引脚。
WLAN_POWER_PIN WiFi 芯片的供电开关引脚。
WLAN_ENABLE_PIN WiFi 芯片使能引脚。
CONFIG_MIC_GAIN 麦克风的增益配置 db 数,CONFIG_MIC_GAIN+20db 是总的增益数。
CONFIG_LEFT_GAIN CONFIG_RIGHT_GAIN,左右声道的音量配置,-1 表示该声道应用可调,该声道输出到扬声器,若固定一个值则表示该声道为参考音声道,该值不能大于 CONFIG_VOL_MAX。
CONFIG_VOL_MAX 音量系统的最大值配置。
PIN_PA_EN 模拟功放对应的引脚号。
CONSOLE_ID 定义调试串口输出的串口 ID,1 对应硬件的 UART2。
SOC_DSP_LDO_LEVEL 宏定义芯片内部输出的 DSP 的供电电压。
CB5654 开发板硬件配置的代码路径是:
boards/silan/cb5654/include/board_config.h
uart_csky_register 函数的参数是从零开始的 ID,实际的硬件串口号需减一。
板级小系统的初始化,主要对可用的串口和 Flash 进行初始化。
board_audio_init 提供音频功能的初始化。
board_base_init 为板级小系统的初始化。
SDK 中板级适配代码的目录结构如下:
BT_DIS_PIN:BT 芯片使能引脚。
WLAN_POWER_PIN :WiFi 芯片的供电开关引脚。
WLAN_ENABLE_PIN:WiFi 芯片使能引脚。
以串口为例,配置方法如下:
1.通过硬件原理图可知,芯片的 PA19/PA20 引脚会连接到 USB 转串口芯片的 USB_TXD/USB_RXD 引脚,用于收发串口信号;所以需要将主芯片的 PA19/PA20 引脚配置为 UART1_TX 和 UART1_RX。
2.打开芯片引脚定义文件 pin_name.h, 找到 PA19 和 PA20 引脚的功能复用,得知需要将两个引脚的功能分别定义为 PA19_UART1_TX 和 PA20_UART1_RX。
板级小系统的初始化,主要包括:
1.itcm 加载初始化,将部分启动代码加载到 itcm,可以加快启动速度;
2.注册串口驱动,CB5631 开发板使用两个串口;其他开发板可以根据真实情况进行注册;
3.spiflash 初始化
4.i2c 初始化
5.分区表初始化
6.cpu1/cpu2 初始化
7.配置 RTC 时钟
引脚的复用配置在 board_init 函数完成。
芯片的初始化在 board_init 函数完成。
应用分区的初始化流程如下:startup.S 是系统的启动文件,系统启动时首先会跳转到该文件。在 startup.S 流程中,会调用函数 board_init()进行板级引脚配置。接下来会通过 entry_c 进入 main 函数,在 main 函数里面调用 board_base_init()和 board_audio_init(),进一步配置其他板级参数。板级配置完成后,才会开始后续的初始化流程。
CB5631 的板级目录结构如下:
通过函数 app_net_init 进行网络的初始化并订阅网络事件 ,注册用户回调函数 user_local_event_cb 。 在程序中 , 当网络事件发生时 ,事件处理机制会调用 user_local_event_cb 函数进行网络事件的处理。
系统中驻留一独立任务来处理事件,用户可通过订阅接口来获取系统事件。
如下方代码所示。入口函数主要有,板级、系统级、音频驱动、网络、播放器、语音服务、云服务等模块的 初始化。初始化完成之后,不同的服务和任务就在各自的线程中独立运行。
入口函数主要有,板级、系统级、音频驱动、网络、播放器、语音服务、云服务等模块的初始化。
·有些云服务器在进行 ASR/NLP 识别过程中不会单独下发 ASR 结果,而是直接下发最终的 NLP 结果。
·不同云端 NLP 结果的封装方式差异很大。
·有些云端不需要设备端参与 TTS 过程,会直接下发语音数据。
调整音量等命令类的语音交互,当使用者说出“声音小一点”时,设备端只需要获取到云端下发的 NLP 结果,判断为设备控制命令 ,就可以直接控制设备行为,而无需后续 TTS 流程。
通用交互流程
1.使用者说出“宝拉宝拉,今天天气怎么样”时,语音服务识别出“宝拉宝拉”这个关键词,产生唤醒事件。
2.语音唤醒事件中控制开始录音。
3.使用者继续说“今天天气怎么样”,语音数据回调中推送录音音频给云端。
4.使用者说完,产生语音断句事件,事件中停止录音和云端推送。
5.云端依次执行 ARS->NLP->TTS 三个服务:先将语音数据转化成文字“今天天气怎么样”,然后通过 NLP 算法,理解语义,得知是天气查询,最后通过云端技能接口获得有关的天气信息,再将天气信息的文字转成语音音频,推送给设备端。
6.设备端收到语音音频后调用播放器播放。
整个语音交互流程如下图。
三者间关系如下图,应用通过语音服务获取到音频输入,通过云服务推送给云端进行 ASR/NLP 识别,再将结果进行 TTS 合成,生成的音频通过播放器播放出来。
按键服务的初始化和配置需要四个步骤:
1.定义单一按键表和组合按键表
2.创建 task 和一个消息队列,用于接收按键消息,并将用户处理函数注册到 task 中
3.初始化按键服务和按键表
4.根据需要配置按键参数(例如超时时间等)
按键服务组件的主要 API 如下:
按键服务具有如下特点:
1.最多支持 10 个按键
2.支持 GPIO 高低电平按键
3.支持 GPIO 电平变化检测
4.支持单一按键和组合按键(2 个键组合),支持短按、长按
如下方代码所示。用户新增一个闹铃,需要设置闹铃的模式(即一次、工作日、每周、每天),输入具体的闹铃时分秒信息。
闹铃服务组件的主要 API 如下:
闹铃服务具有如下特点:
1.可设置“仅响一次”、“每天”、“每周”或“工作日”模式
2.支持最多 5 个闹铃
3.支持待机状态下唤醒
4.秒级精度
平头哥半导体官网: http://www.t-head.cn
芯片开放社区: http://occ.t-head.cn
玄铁CPU
SoC平台
IoT 芯片
IoT 应用