当前位置: 首页 > 工具软件 > vosk-api > 使用案例 >

开源ASR服务器vosk

龚永新
2023-12-01

概述

近几年由于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服务器

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的介绍到此结束。


空空如常
求真得真

 类似资料: