近几年由于AI的迅速发展,语音相关的自然语言处理NLP项目也变多了,新的技术也越来越成熟,其中TTS(语音生成)和ASR(语音识别)是NLP中非常重要的环节。
今天我们介绍一个开源的ASR项目vosk,以及vosk的简单应用方法。
Vosk是开源的语音识别工具包。Vosk支持的事情包括:
1. 支持十九种语言 - 中文,英语,印度英语,德语,法语,西班牙语,葡萄牙语,俄语,土耳其语,越南语,意大利语,荷兰人,加泰罗尼亚语,阿拉伯, 希腊语, 波斯语, 菲律宾语,乌克兰语, 哈萨克语。
2. 移动设备上脱机工作-Raspberry Pi,Android,iOS。
3. 使用简单的 pip3 install vosk 安装。
4. 每种语言的手提式模型只有是50Mb, 但还有更大的服务器模型可用。
5. 提供流媒体API,以提供最佳用户体验(与流行的语音识别python包不同)。
6. 还有用于不同编程语言的包装器-java / csharp / javascript等。
7. 可以快速重新配置词汇以实现最佳准确性。
8. 支持说话人识别。
centos:CentOS release 7.0 (Final)或以上版本
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 https://github.com/alphacep/vosk-server
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官网:https://alphacephei.com
OK,今天我们对vosk的介绍到此结束。
空空如常
求真得真