KWS(唤醒词检测)
简介
KWS 是用于检测音频中特定唤醒词的模块。它通常是语音交互的第一步,设备检测到唤醒词后,会进入等待语音指令状态。
AIVoice 支持固定唤醒词,自定义唤醒词两种方案。固定唤醒词模型,可以在低资源的情况下,取得不错的性能,而自定义唤醒词模型,则可以满足用户随意修改唤醒词的需求。
方案 |
训练数据 |
可选唤醒词 |
方案特点 |
---|---|---|---|
固定唤醒词 |
特定唤醒词 |
训练数据所用唤醒词 |
性能更好,模型更小 |
自定义唤醒词 |
通用数据 |
与训练数据相同语种的任意自定义唤醒词 |
更灵活 |
当前 SDK 中提供了一个中文固定唤醒词模型和一个中文自定义唤醒词模型。
固定唤醒词
支持唤醒词
小强小强
或你好小强
。其他唤醒词支持,可以通过定制服务提供。
自定义唤醒词
语种,只支持中文。
唤醒词个数,支持同时设置最多 5 个唤醒词。
唤醒词字数,一个词包含 3-6 个字,不在此范围为无效。
唤醒词选择建议
字拼音不包含零声母,比如,
音
,一
。不要选择日常用语,比如,
穿衣服
,吃早饭
。相临声韵母区分度大。
KWS 模式
AIVoice 支持单路,多路两种模式。单路即以一路音频作为输入,而多路可以同时输入多路音频。多路模式相比单路可以提升 KWS 和 ASR 的准确率,但同时计算资源和内存使用也会上升。两种模式可以针对不同场景使用。
KWS模式 |
函数 |
特点 |
---|---|---|
单路模式 |
void rtk_aivoice_set_single_kws_mode(void) |
更少的计算量和内存占用 |
多路模式 |
void rtk_aivoice_set_multi_kws_mode(void) |
更高的唤醒率和识别率 |
注意
在这些流程中,创建实例之前必须设置 KWS 模式:
aivoice_iface_full_flow_v1
aivoice_iface_afe_kws_v1
aivoice_iface_afe_kws_vad_v1
算法流程
单路模式
多路模式
配置
KWS 可配参数
- keywords:
唤醒关键字, 可选的关键字取决于 KWS 模型。如果 KWS 模型是固定唤醒词方案,则只能从训练过的单词中选择。对于自定义唤醒词方案,可以使用该语言建模单元的任意组合来定制关键字(例如中文拼音)。示例:
xiao-qiang-xiao-qiang
。- thresholds:
唤醒阈值,范围[0, 1]。值越高,误唤醒越少,但更难唤醒。如果要使用灵敏度,该值需要设为 0。
- sensitivity:
提供预先调好阈值的三档灵敏度,灵敏度越高,更容易唤醒,但误唤醒也越多。 灵敏度仅在阈值设置为 0 时有效。
详情请参考 ${aivoice_lib_dir}/include/aivoice_kws_config.h
。
阈值调整建议
阈值从小变大,唤醒率逐渐变小,误唤醒也变少,即灵敏度从高到低变化。用户可以根据实际使用需要,选择合适的阈值。
固定唤醒词模型,提供三档灵敏度高,中,低分别对应误唤醒 1 次/12h,1 次/24h,1 次/48h。如需更精细的调整,用户可以设置
thresholds
适配使用场景,建议调整步长为 0.02。自定义唤醒词模型,相比固定唤醒词,阈值通常较低,建议调整步长为 0.005。