# 离线语音交互项目介绍
# 项目操作
# 新建项目
输入工程名称和工程在本机的存放路径。
芯片型号及方案可选择 3001 或4002。
项目文件规范
- 每个项目应对应一个产品的固件开发需求。如:小方空调分为型号A和型号B,A和B需要开发不同的2版固件,则应该新建2个项目进行固件开发。
- 如果不同项目间存在资源复用的情况,请将提示音、命令词、唤醒词等配置文件存储于 每一个 使用到这些资源的项目文件夹下。
- 不同产品的项目资料请分别存储于独立的文件夹中,若多个项目存储于同一文件夹下,将会造成文件重叠,无法打包固件。
离线方案如下表:
芯片 | 3001 | 3002 | 4002 |
---|---|---|---|
综合唤醒率 | 90% | 95% | 95% |
内存 | 1M SRAM | 1M SRAM | 1MB SRAM 8MB PSRAM |
存储 | 4MB Flash | 4MB Flash | 8MB Flash |
命令词上限 | 50条 | 50条 | 200条 |
功耗 | 60mA@3.6V | 60mA@3.6V | 130mA@3.6V |
适用环境 | 常见客卧 | 嘈杂客卧 | 客卧、卫浴、厨房、阳台、会议、卖场 |
回声消除 | / | / | 支持 |
全双工交互 | / | / | 支持 |
OTA | 支持,需外挂蓝牙芯片 | 支持,需外挂蓝牙芯片 | 支持,需外挂WiFi芯片 |
外语交互 | 英语、日语 | 英语、日语 | 英语、日语 |
麦克风阵列 | 1mic | 2mic | 2mic |
自定义业务逻辑 | 支持 | 支持 | 支持 |
在线语音交互 | 纯离线 | 纯离线 | 在离线 |
# 打开项目
点击【文件】-【打开文件夹】(或快捷键 Ctrl+K,Ctrl+O),选择项目最外层文件夹,点击【选择文件夹】即可。
# 升级旧项目
聆思工作站兼容原【CSK开发工具】创建的项目,点击【项目->升级旧项目】,在弹窗中选择旧项目文件夹,点击【选择文件夹】,即可完成升级。
# 项目信息配置
点击工程树中的 config/gui/base.csk 文件,进行基础信息配置。
# 基础固件配置
配置基础固件信息。
- 【设备类型】你的开发项目对应的产品类型,请按照实际情况进行选择。
- 【芯片型号及方案】聆思智能提供了多款芯片及多种方案,请务必正确填写芯片型号,否则可能会造成固件无法使用。如有疑问请咨询FAE
- 【基础固件版本】聆思团队会不断对不同芯片及方案进行优化升级,主要涉及性能和效果的优化。建议你永远选择最新版本的基础固件。
- 【硬件型号】指CSK模组的型号。不同型号的模组所对应的硬件配置不同,请正确选择。目前支持ES7210、聆思公板、聆思离在线公板等。
- 【降噪场景】目前仅可选择通用场景,适合客卧、办公室等常见场景,环境噪音主要为家居常噪,覆盖家居环境中的家电噪声,电视噪声,人员走动等情况下的降噪需求。
# 麦克风配置
配置麦克风信息。
- 【MIC间距】若你的项目为双麦,请在此处选择两个麦克风的距离。我们对35mm和110mm做了深度优化。若你的MIC距离不完全匹配,请选择最接近的数字。
- 【MIC类型】支持模拟麦克风和数字麦克风,请按照实际情况进行选择。
# TTS配置
配置语音合成相关的信息。
- 【发音人】目前支持24个发音人,如需试听,请在配置唤醒词或命令词时试听。我们推荐使用【叶子】,这是目前自然度最好的发音人。
- 【音量】支持调节音量,默认值为5。
- 【语速】支持调节语速,默认值为1.08。
# 交互配置
- 【交互模式】配置你想要的交互模式。
- 一次唤醒 一次交互:唤醒+发起一次请求后,如果需要发起第二轮请求,则需再次唤醒设备。例如:“小飞小飞”-“打开空调”-“小飞小飞”-“二十六度”。
- 一次唤醒 多次交互:唤醒+发起一次请求后,无需再次唤醒设备即可发起第二轮请求。例如:“小飞小飞”-“打开空调”- “二十六度”。
- 【识别持续时间】唤醒后等待指定秒数。如在指定的时间内未收到有效的语音请求,设备将会退出识别模式。如需再发起请求,需重新唤醒。
- 【交互指令】CSK离线语音交互模组对外发送指令。
- CSK通用指令:CSK的标准指令,通过 UART 进行输出。需要在上位机适配CSK发送的指令。指令详情请参考《语音交互模块XFHEA-231-LX-01_产品开发手册V0.2.pdf》
- 自定义指令:在上位机已支持特定指令的情况下,指定CSK芯片输出对应指令,上位机无需进行二次开发。
- 【交互方式】目前自定义指令支持 **UART ** 和 PWM 两种传输方式。
- UART 指令可选择发送的波特率和串口指令格式。请根据
UART
对接的芯片情况进行配置选择。 - PWM 指令可选择发送的频率、占空比和传输次数。请根据
PWM
对接的芯片情况进行配置选择。
- UART 指令可选择发送的波特率和串口指令格式。请根据
# 交互逻辑配置
点击工程树中的 config/gui/interact.csk 文件,配置固件的交互逻辑。离线语音交互固件中,支持开机、唤醒词、命令词触发后续交互逻辑。
# 模板选择
命令词模板,是某个领域、场景下,常用的命令词列表,同时也进行了声学模型的深度优化,可以提供更准确、更灵敏的效果。你也可以在模板的基础上,进行增删操作。这些模板我们会持续效果升级,并增加更多的领域和场景。空调模板示例
注意
- 模板是针对相关词条列表,进行了 深定制。增删词条后,需要重新训练,可能会有一定程度的影响。
- 如果你不需要模板中的部分词条,可以将鼠标指针移动到该词条的序号处,点击删除。
# 添加交互逻辑
- CSK通用指令固件
在CSK通用指令固件中,CSK将响应用户的唤醒和离线命令,并将用户的唤醒信息和命令词信息传输至上位机,后续交互逻辑更多由上位机来实现,所以在聆思工作站中,若【交互方式】选择了【CSK通用指令】,那么在这个页面,仅可以配置唤醒词和命令词。
- 自定义指令固件
在自定义指令固件中,CSK在响应到上电、唤醒词、命令词之后,可以播放提示音,并发送对应的自定义指令至上位机。
你可以可以在界面中填写对应信息,每填写完一条,需点击最上方【添加交互逻辑】添加一行。也可以将本地的excel文件复制粘贴到对应的区域。
小贴士
excel中的列表建议表格维护4列,列顺序为:动作、词条、提示音、指令。
# 词条检测
在离线语音交互中,词条的选择至关重要。在填写完所有词条后,请点击【词条检测】进行词条有效性的判断。
唤醒词建议
音节数
- 汉字数,唤醒词长度至少四个字,即汉字数量大于4个,不建议过长,一般来说4-6个字为最适合。过短容易误唤醒,过长不利于用户记忆;
- 音节较长,不要选择音节很短的汉字,避免无声母,比如“安”;
音节词选取
- 字要发音清晰、能量响度高、开口度大,最好带有爆破音,如“胖”、“开”等,能量高,易唤醒;
- 唤醒词中没有重复或者相近读音的字。相邻音节要规避连音,即避免前一个韵母与后面声母相同或近似,比如“语音”,避免叠词,比如“天天动听”;
- 不常说词放心选,避免常用词,可以有效降低误唤醒甚至避免误唤醒;
- 声调建议选择第四声,便于唤醒专门定制;
声母选取
- 声母选择,选择包含爆破音声母的音节,如 p、b、t、d、k、g 等,可以提高发音能量;
韵母选取
- 韵母选择,选择大口型,开口音的韵母,比如 a、ai、an、ian、ao、ang,避免 e、i、en、in 等,例如开、嵌、跑等词比较好,妮、了、敏、星等词比较差;
- 韵母是复韵母,比如(ai、ei、ao、ou、ia、ie、ua、uo、üe、iao、iou、uai、uei)等;
实例
- 质量较高的唤醒词:“凯越在线”,音节覆盖多差异大而且平时较为不常说。质量较差的唤醒词:“语音在线”,前两个音节相近,不是一个质量高的唤醒词。
命令词建议
- 命令词中相邻汉字的声韵母区分度要大一些。
- 命令词中的字最好不要有语气词,如“a”、“e”等。
- 命令词中的声调变化越大越好。
- 命令词最好不是平时生活中会经常说到的词。
- 单个命令词的长度不超过33个字节,长度控制在3-5个字为佳。
- 注意命令词中的多音字,音调用数字表示。一声(1)、二声(2)、三声(3)、四声(4)、轻声(0)。
- 符合用户的语言习惯,命令词内容具体直接,符合用户常用的说法。
- 命令词要传达准确,避免泛化。如:在支持上下摆风、左右摆风功能的风扇上,设计“摆风”命令词,无法满足用户的指令预期。
- 命令词尽量避免子串。“十六度”和“二十六度”,词之间的字存在包含关系,在识别时就容易互相串扰,可以改成“调到十六度”和“调到二十六度”进行优化。
- 如果是泛语料的命令词,为保证命中效果,请将子串和扩展语料都添加到命令词中。
- 避免使用读音不明的词,如“ECO模式”。
注意
- 命令词中的数字需要以汉字表示,如“25”请用“二十五”表示。
- 若你的词表还未确定,我们建议尽量从聆思提供的 模板 中选择词条。
- 在词条检测后,我们将会自动为你生成拼音,请特别关注多音字提示中的拼音分解是否有误,若有误,请自行手动更改。
# 设置提示音
提示音是指设备本地需要通过音频提示用户一些信息时播放的音频,一般包括上电、被唤醒或识别到命令词等情况。聆思工作站支持快速生成、导入提示音资源,并打包到CSK固件中。
# 合成音频
输入文本后,聆思工作站将会自动将你输入的文本合成为TTS提示音音频,点击 播放 即可试听。
若合成的读法有误,可使用 合成标记 修改合成音频发音。
常用合成标记
- [h*]:指定单词发音方式。
- [h1]happy —— 指定为字母发音
- [h2]happy —— 指定为单词发音
- [n*]:指定数字发音方式。
- [n1]1200 —— 指定为号码发音:一二零零
- [n2]1200 —— 指定为数值发音:一千二百
- [=*]:为标记前的一个汉字指定拼音。数字代表音调,支持1~5,其中5为轻声
- 调[=tiao2] —— 发音为“调整”的“调”
- 调[=diao4] —— 发音为“音调”的“调” :::
# 导入音频
点击工程树中的【deps\tones_include】,将本地音频文件拖入该条目下,即完成导入。成功导入后,该文件会出现在 interact.csk 文件的选项中,也会出现在 tones.csk 的代码模式中。
重要提示
以上页面一经修改,一定要点击 保存 按钮或 Ctrl + S 保存,否则配置不会在固件中生效。
# 打包项目
# 开始打包
项目配置完成后,点击 project.csk 文件,填写 build_version(打包版本名,可自定义填写)和 build_version_code(打包版本号,建议填写自增的整数),点击【项目打包】,工具下方将出现打包进度条,打包进度为100%时代表打包完成,打包用时约10分钟
# 取消打包
项目正在打包时,如需取消打包任务,删除【target】下的【.building】文件夹,即可取消
# 重新打包
点击【target\build】,选择要修改配置参数的固件包版本,进行配置修改,修改完成后,可点击【main.toml】,点击右上角【重新打包】
- 点击 conf.json,修改配置参数。
- 点击 keyword.csk,修改词阈值和字阈值。
打包说明
- 打包固件为自动流程,主要涉及声学模型训练、提示音生成,以及最终的固件生成(打包过程不可取消)。
- 声学模型训练时间约为10分钟左右。
- 唤醒词、命令词的改变,会影响到声学模型的训练时间(如果只修改提示音,则不需要重新训练模型)。
- 该打包流程为浅定制流程,如需深定制,请联系我们商务同事。
# 调优
调优一般指声学效果调优,在离线语音交互项目中,调优一般通过调整词条的阈值来实现。
项目打包完成后,点击【target\build】,选择要调优的固件包版本,点击 keyword.csk ,将会看到当前固件包版本的词条及其对应阈值。
# 阈值的作用逻辑
CSK本地的离线识别引擎将会对用户说的每一个语音请求进行得分判断,如果得分高于阈值,则唤醒/识别成功,如果得分低于阈值,则CSK会忽略用户的请求。一般来说,阈值越高,越难命中。
# 词阈值和字阈值的关系
CSK本地的离线识别引擎会对每一个字和词均进行得分判断。一个词中的每一个字的得分的平均分即为词的得分。词阈值默认为-10000,即代表不判断字阈值。你可以为每个字赋予阈值。当字有阈值时,识别引擎会先判断每个字的得分是否超过字阈值,若超过,则会判断词得分是否超过词阈值。
只有在字得分和词得分均高于阈值时,离线识别引擎才会进行响应。
字阈值的格式为:0 -10000 1 500 2 800 3 -10000。代表这个词条有4个字(0~3),第1个字(编号0)的阈值为-1000,第2个字(编号1)的阈值为500。
重要提示
修改阈值后,一定要点击 保存 按钮或 Ctrl + S 保存,否则配置不会在固件中生效。
# 烧录
- 固件烧录前,需先安装驱动。驱动安装说明。
- 纯离线模组短接PB16和GND,将CSK置于烧写模式后。
- 通过USB口将模组与电脑连接。
- 点击【历史版本】,选择需要烧录的固件版本,在顶部弹窗中选择要烧录的固件,开始烧录。
- 烧录成功后,你将会看到如下画面。烧录完成后,CMD窗口会自动关闭,此时取消短接,给CSK重新上电后,即可体验。
- 如果烧录无法正常启动,会看到如下通知。此时应按通知内容排查原因。
- 如果烧录正常启动但最终烧录失败,会看到如下画面。此时请检查固件配置与烧录选择是否一致。