CTC语音唤醒-移动端-单麦-16k-SpeechCommands
使用谷歌开源SpeechCommands_v1数据训练的移动端语音唤醒模型,检测关键词为10个英文单词(Yes, No, Up, Down, Left, Right, On, Off, Stop, Go)。模型主体为4层FSMN结构,使用CTC训练准则,参数量750K,适用于移动端设备运行。
  • 模型资讯
  • 模型资料

语音唤醒模型介绍

模型描述

  移动端语音唤醒模型,检测关键词为"Yes/No/Up/Down/Left/Right/On/Off/Stop/Go"10个英文单词。
  模型网络结构继承自论文《Compact Feedforward Sequential Memory Networks for Small-footprint Keyword Spotting》,其主体为4层cFSMN结构(如下图所示),参数量约750K,适用于移动端设备运行。
  模型输入采用Fbank特征,训练阶段使用CTC-loss计算损失并更新参数,输出为基于char建模的中文全集token预测,token数共2599个。测试工具根据每一帧的预测数据进行后处理得到输入音频的实时检测结果。
  模型训练采用"basetrain + finetune"的模式,basetrain过程使用大量内部移动端数据,在此基础上,使用Google开源命令词数据进行微调得到输出模型。由于采用了中文char全量token建模,并使用充分数据进行basetrain,本模型支持基本的唤醒词/命令词自定义功能,但具体性能无法评估。如用户想验证更多命令词,可以通过页面右侧“在线体验”板块自定义设置并录音测试。
  目前最新ModelScope版本已支持用户在basetrain模型基础上,使用其他关键词数据进行微调,得到新的语音唤醒模型。欢迎您通过小云小云模型了解唤醒模型定制的方法。

cFSMN网络框图

使用方式和范围

运行范围:

  • 现阶段只能在Linux-x86_64运行,不支持Mac和Windows。
  • 模型训练需要用户服务器配置GPU卡,CPU训练暂不支持。

使用方式:

  • 使用附带的kwsbp工具(Linux-x86_64)直接推理,分别测试正样本及负样本集合,综合选取最优工作点。

使用范围:

  • 移动端设备,Android/iOS型号或版本不限,使用环境不限,采集音频为16K单通道。

目标场景:

  • 移动端APP用到的关键词检测场景。

如何使用

模型推理代码范例:

from modelscope.pipelines import pipeline
from modelscope.utils.constant import Tasks

kwsbp_16k_pipline = pipeline(
    task=Tasks.keyword_spotting,
    model='damo/speech_charctc_kws_phone-speechcommands')

kws_result = kwsbp_16k_pipline(audio_in='https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/KWS/pos_testset/kws_speechcommands_yes.wav')
print(kws_result)

audio_in参数说明:

  • 默认传入url地址的问问正样本音频,函数返回单条测试结果。
  • 设置本地单条音频路径,如audio_in=‘LOCAL_PATH’,函数返回单条测试结果。
  • 设置本地正样本目录(自动检索该目录下wav格式音频),如audio_in=[‘POS_DIR’, None],函数返回全部正样本测试结果。
  • 设置本地负样本目录(自动检索该目录下wav格式音频),如audio_in=[None, ‘NEG_DIR’],函数返回全部负样本测试结果。
  • 同时设置本地正/负样本目录,如audio_in=[‘POS_DIR’, ‘NEG_DIR’],函数返回Det测试结果,用户可保存JSON格式文本方便选取合适工作点。

模型局限性以及可能的偏差

  • 考虑到正负样本测试集覆盖场景不够全面,可能有特定场合/特定人群唤醒率偏低或误唤醒偏高问题。

训练数据介绍

  • basetrain使用内部移动端ASR数据5000+小时,finetune使用Google开源命令词数据

模型训练流程

  • 模型训练采用"basetrain + finetune"的模式,finetune过程直接使用目标场景的特定唤醒词数据并混合一定比例的负样本数据。如训练数据与应用场景不匹配,应当针对性做数据模拟。

预处理

  • finetune模型直接使用SpeechCommands_v1开源数据,未做任何数据模拟。

数据评估及结果

  • 我们采用一些语音关键词相关论文中对SpeechCommands_v1数据的评估方式,统计"Yes/No/Up/Down/Left/Right/On/Off/Stop/Go/SIL/Unknown"共12个分类的正确率为97.66%。
  • 由于这批开源数据量较少且场景单一,测试结果仅作参考;为了能实际体验效果,我们最终朝着平均正确率约95%左右输出了每个词的阈值。

相关论文以及引用信息

@inproceedings{chen18c_interspeech,
  author={Mengzhe Chen and ShiLiang Zhang and Ming Lei and Yong Liu and Haitao Yao and Jie Gao},
  title={{Compact Feedforward Sequential Memory Networks for Small-footprint Keyword Spotting}},
  year=2018,
  booktitle={Proc. Interspeech 2018},
  pages={2663--2667},
  doi={10.21437/Interspeech.2018-1204}
}
@article{speechcommandsv2,
   author = { {Warden}, P.},
    title = "{Speech Commands: A Dataset for Limited-Vocabulary Speech Recognition}",
  journal = {ArXiv e-prints},
  archivePrefix = "arXiv",
  eprint = {1804.03209},
  primaryClass = "cs.CL",
  keywords = {Computer Science - Computation and Language, Computer Science - Human-Computer Interaction},
    year = 2018,
    month = apr,
    url = {https://arxiv.org/abs/1804.03209},
}