# 离线语音交互项目介绍

# 项目操作

# 新建项目

  1. 输入工程名称和工程在本机的存放路径。

  2. 芯片型号及方案可选择 30014002

项目文件规范

  1. 每个项目应对应一个产品的固件开发需求。如:小方空调分为型号A和型号B,A和B需要开发不同的2版固件,则应该新建2个项目进行固件开发。
  2. 如果不同项目间存在资源复用的情况,请将提示音、命令词、唤醒词等配置文件存储于 每一个 使用到这些资源的项目文件夹下。
  3. 不同产品的项目资料请分别存储于独立的文件夹中,若多个项目存储于同一文件夹下,将会造成文件重叠,无法打包固件。

离线方案如下表:

芯片 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对接的芯片情况进行配置选择。

# 交互逻辑配置

点击工程树中的 config/gui/interact.csk 文件,配置固件的交互逻辑。离线语音交互固件中,支持开机、唤醒词、命令词触发后续交互逻辑。

# 模板选择

命令词模板,是某个领域、场景下,常用的命令词列表,同时也进行了声学模型的深度优化,可以提供更准确、更灵敏的效果。你也可以在模板的基础上,进行增删操作。这些模板我们会持续效果升级,并增加更多的领域和场景。空调模板示例

注意

  1. 模板是针对相关词条列表,进行了 深定制。增删词条后,需要重新训练,可能会有一定程度的影响。
  2. 如果你不需要模板中的部分词条,可以将鼠标指针移动到该词条的序号处,点击信息删除。

# 添加交互逻辑

  • 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模式”。

注意

  1. 命令词中的数字需要以汉字表示,如“25”请用“二十五”表示。
  2. 若你的词表还未确定,我们建议尽量从聆思提供的 模板 中选择词条。
  3. 在词条检测后,我们将会自动为你生成拼音,请特别关注多音字提示中的拼音分解是否有误,若有误,请自行手动更改。

# 设置提示音

提示音是指设备本地需要通过音频提示用户一些信息时播放的音频,一般包括上电、被唤醒或识别到命令词等情况。聆思工作站支持快速生成、导入提示音资源,并打包到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,修改词阈值和字阈值。

打包说明

  1. 打包固件为自动流程,主要涉及声学模型训练、提示音生成,以及最终的固件生成(打包过程不可取消)。
  2. 声学模型训练时间约为10分钟左右。
  3. 唤醒词、命令词的改变,会影响到声学模型的训练时间(如果只修改提示音,则不需要重新训练模型)。
  4. 该打包流程为浅定制流程,如需深定制,请联系我们商务同事。

# 调优

调优一般指声学效果调优,在离线语音交互项目中,调优一般通过调整词条的阈值来实现。

项目打包完成后,点击【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 保存,否则配置不会在固件中生效。

# 烧录
  1. 固件烧录前,需先安装驱动。驱动安装说明
  2. 纯离线模组短接PB16和GND,将CSK置于烧写模式后。
  3. 通过USB口将模组与电脑连接。
  4. 点击【历史版本】,选择需要烧录的固件版本,在顶部弹窗中选择要烧录的固件,开始烧录。

  1. 烧录成功后,你将会看到如下画面。烧录完成后,CMD窗口会自动关闭,此时取消短接,给CSK重新上电后,即可体验。

  1. 如果烧录无法正常启动,会看到如下通知。此时应按通知内容排查原因。

  1. 如果烧录正常启动但最终烧录失败,会看到如下画面。此时请检查固件配置与烧录选择是否一致。