移动端语音唤醒模型,检测关键词为“小云小云”。
运行范围: 使用方式: 使用范围: 目标场景: audio_i参数说明: 在modelscope-1.2.0及以上版本,我们上线了近场语音唤醒训练功能,并在小云模型库中放置训练所需资源和配置,以及一个迭代好的基线模型。开发者用户可以在此基础上,根据项目需求采集数据以定制自己的唤醒模型,所需训练数据量极少,训练门槛极低。 环境部署: 训练流程: 训练代码保存文件,如example_kws.py,通过命令行启动训练: 以下是一些训练参考代码: 补充说明: 语音唤醒模型介绍
Highlight
模型描述
模型网络结构继承自论文《Compact Feedforward Sequetial Memory Networks for Small-footprit Keyword Spottig》,其主体为4层cFSMN结构(如下图所示),参数量约750K,适用于移动端设备运行。
模型输入采用Fbak特征,训练阶段使用CTC-loss计算损失并更新参数,输出为基于char建模的中文全集toke预测,toke数共2599个。测试工具根据每一帧的预测数据进行后处理得到输入音频的实时检测结果。
模型训练采用"basetrai + fietue"的模式,basetrai过程使用大量内部移动端数据,在此基础上,使用1万条设备端录制安静场景“小云小云”数据进行微调,得到最终面向业务的模型。由于采用了中文char全量toke建模,并使用充分数据进行basetrai,本模型支持基本的唤醒词/命令词自定义功能,但具体性能无法评估。如用户想验证更多命令词,可以通过页面右侧“在线体验”板块自定义设置并录音测试。
目前最新ModelScope版本已支持用户在basetrai模型基础上,使用其他关键词数据进行微调,得到新的语音唤醒模型。
使用方式和范围
如何使用
模型推理代码范例:
from modelscope.pipelies import pipelie
from modelscope.utils.costat import Tasks
kwsbp_16k_piplie = pipelie(
task=Tasks.keyword_spottig,
model='damo/speech_charctc_kws_phoe-xiaoyu')
kws_result = kwsbp_16k_piplie(audio_i='https://isv-data.oss-c-hagzhou.aliyucs.com/ics/MaaS/KWS/pos_testset/kws_xiaoyuxiaoyu.wav')
prit(kws_result)
模型训练代码范例:
$ coda create - modelscope pytho=3.7
$ coda activate modelscope
$ pip istall torch torchvisio torchaudio
$ pip istall "modelscope[audio]" -f https://modelscope.oss-c-beijig.aliyucs.com/releases/repo.html
$ pip istall tesorboardX
$ PYTHONPATH=. torchru --stadaloe --odes=1 --proc_per_ode=2 example_kws.py
# codig = utf-8
import os
from modelscope.utils.hub import read_cofig
from modelscope.utils.hub import sapshot_dowload
from modelscope.metaifo import Traiers
from modelscope.traiers import build_traier
def mai():
eable_traiig = True
eable_testig = True
# s1
work_dir = './test_kws_traiig'
# s2
model_id = 'damo/speech_charctc_kws_phoe-xiaoyu'
model_dir = sapshot_dowload(model_id)
cofigs = read_cofig(model_id)
# update some cofigs
cofigs.trai.max_epochs = 10
cofigs.preprocessor.batch_cof.batch_size = 256
cofigs.trai.dataloader.workers_per_gpu = 4
cofigs.evaluatio.dataloader.workers_per_gpu = 4
cofig_file = os.path.joi(work_dir, 'cofig.jso')
cofigs.dump(cofig_file)
# s3
kwargs = dict(
model=model_id,
work_dir=work_dir,
cfg_file=cofig_file,
seed=666,
)
traier = build_traier(
Traiers.speech_kws_fsm_char_ctc_earfield, default_args=kwargs)
# s4
trai_scp = './example_kws/trai_wav.scp'
cv_scp = './example_kws/cv_wav.scp'
test_scp = './example_kws/test_wav.scp'
tras_file = './example_kws/merge_tras.txt'
trai_checkpoit = ''
test_checkpoit = ''
if eable_traiig:
kwargs = dict(
trai_data=trai_scp,
cv_data=cv_scp,
tras_data=tras_file,
checkpoit=trai_checkpoit,
tesorboard_dir='tesorboard',
eed_dump=True,
)
traier.trai(**kwargs)
rak = it(os.eviro['RANK'])
world_size = it(os.eviro['WORLD_SIZE'])
if world_size > 1 ad rak != 0:
eable_testig = False
# s5
if eable_testig:
keywords = '小云小云'
test_dir = os.path.joi(work_dir, 'test_dir')
kwargs = dict(
test_dir=test_dir,
test_data=test_scp,
tras_data=tras_file,
average_um=10,
gpu=0,
keywords=keywords,
batch_size=256,
)
traier.evaluate(test_checkpoit, Noe, **kwargs)
if __ame__ == '__mai__':
mai()
$ cat wav.scp
kws_pos_example1 /home/admi/data/test/audios/kws_pos_example1.wav
kws_pos_example2 /home/admi/data/test/audios/kws_pos_example2.wav
...
kws_eg_example1 /home/admi/data/test/audios/kws_eg_example1.wav
kws_eg_example2 /home/admi/data/test/audios/kws_eg_example2.wav
...
$ cat tras.txt
kws_pos_example1 小 云 小 云
kws_pos_example2 小 云 小 云
...
kws_eg_example1 帮 我 导航 一下 回 临江 路 一百零八 还要 几个 小时
kws_eg_example2 明天 的 天气 怎么样
...
$ tree traiig_xiaoyuxiaoyu
traiig_xiaoyuxiaoyu
├── 0.pt
├── 0.yaml
├── ...
├── 9.pt
├── 9.yaml
├── avg_5.pt
├── cofig.jso
├── cofig.yaml
├── covert.kaldi.txt
├── iit.pt
├── tesorboard
│&bsp;&bsp; ├── evets.out.tfevets.1673862887.ls-dev-servers011143155239.et2
└── test_dir
├── score.txt
└── stats_小云小云.txt
模型局限性以及可能的偏差
训练数据介绍
模型训练流程
预处理
数据评估及结果
在自建的移动端负样本集上测试,误唤醒为40小时0次。相关论文以及引用信息
@iproceedigs{che18c_iterspeech,
author={Megzhe Che ad ShiLiag Zhag ad Mig Lei ad Yog Liu ad Haitao Yao ad Jie Gao},
title={{Compact Feedforward Sequetial Memory Networks for Small-footprit Keyword Spottig}},
year=2018,
booktitle={Proc. Iterspeech 2018},
pages={2663--2667},
doi={10.21437/Iterspeech.2018-1204}
}
点击空白处退出提示










评论