概述
近几年由于AI的迅速发展,语音相关的自然语言处理NLP项目也变多了,新的技术也越来越成熟,其中TTS(语音生成)和ASR(语音识别)是NLP中非常重要的环节。
今天我们介绍一个开源的ASR项目vosk,以及vosk的博主weixin@yuyinjiqiren简单应用方法。
Vosk是开源的语音识别工具包。Vosk支持的事情包括:
- 支持十九种语言 - 中文,英语,印度英语,德语,法语,西班牙语,葡萄牙语,俄语,土耳其语,越南语,意大利语,荷兰人,加泰罗尼亚语,阿拉伯, 希腊语, 波斯语, 菲律宾语,乌克兰语, 哈萨克语。
- 移动设备上脱机工作-Raspberry Pi,Android,iOS。
- 使用简单的 pip3 install vosk 安装。
- 每种语言的手提式模型只有是50Mb, 但还有更大的服务器模型可用。
- 提供流媒体API,以提供最佳用户体验(与流行的语音识别python包不同)。
- 还有用于不同编程语言的包装器-java / csharp / javascript等。
- 可以快速重新配置词汇以实现最佳准确性。
- 支持说话人识别。
\
环境
centos:CentOS release 7.0 (Final)或以上版本
\
VOSK服务器
vosk服务器的部署非常简单,有发布好的docker镜像可以直接使用。
使用docker启动VOSK服务器,选择中文模型kaldi-cn。
docker run -d -p 2700:2700 alphacep/kaldi-cn:latest
测试
客户端的连接支持多种方式,包括grpc、mqtt、webrtc、websocket等,我们可以通过git上的源代码查找到合适的样例。
下载vosk-server源代码
git clone github.com/alphacep/vo… cd vosk-server/websocket ./test.py test1.wav
注意事项:语音文件test1.wav的格式必须8khz 16bit mono PCM(8000采样率,16位采样精度,单声道,pcm)。
可以在屏幕上看到服务器返回的识别结果,结果是json格式。
{ "result" : [{ "conf" : 0.993990, "end" : 0.510000, "start" : 0.090000, "word" : "语音" }, { "conf" : 0.936422, "end" : 1.080000, "start" : 0.510000, "word" : "测试" }, { "conf" : 0.821353, "end" : 1.950000, "start" : 1.350000, "word" : "天天" }, { "conf" : 0.866125, "end" : 2.190000, "start" : 1.950000, "word" : "是" }, { "conf" : 0.657369, "end" : 2.400000, "start" : 2.190000, "word" : "二" }, { "conf" : 0.657369, "end" : 2.610000, "start" : 2.400000, "word" : "零" }, { "conf" : 0.651791, "end" : 2.820000, "start" : 2.610000, "word" : "二" }, { "conf" : 0.994422, "end" : 3.180000, "start" : 2.820000, "word" : "一年" }, { "conf" : 1.000000, "end" : 3.600000, "start" : 3.180000, "word" : "八月" }, { "conf" : 0.985209, "end" : 3.930000, "start" : 3.600000, "word" : "二十" }, { "conf" : 0.985209, "end" : 4.410000, "start" : 3.930000, "word" : "五号" }], "text" : "语音 测试 天天 是 二 零 二 一年 八月 二十 五号" }
总结
从vosk中文库的识别结果看,还有不少的问题存在,包括识别率,分词,分段等等,和目前市面上的商业ASR引擎还是有差距的。
当然,vosk的识别库模型也支持自定义和优化,有兴趣的同学可以去官网深入的了解一下。
vosk官网:alphacephei.com
OK,今天我们对vosk的介绍到此结束。