七叶笔记 » java编程 » Java 离线中文语音文字识别功能的实现代码

Java 离线中文语音文字识别功能的实现代码

项目需要,要实现类似小爱同学的语音控制功能,并且要离线,不能花公司一分钱。第一步就是需要把音频文字化。经过各种资料搜集后,选择了vosk。这是vosk的官方介绍:

Vosk is a speech recognition toolkit. The best things in Vosk are:

Supports 19+ languages and dialects - English, Indian English, German, French, Spanish, Portuguese, Chinese, Russian, Turkish, Vietnamese, Italian, Dutch, Catalan, Arabic, Greek, Farsi, Filipino, Ukrainian, Kazakh. More to come.Works offline, even on lightweight devices - Raspberry Pi, Android, iOSInstalls with simple pip3 install voskPortable per-language models are only 50Mb each, but there are much bigger server models available.Provides streaming API for the best user experience (unlike popular speech-recognition python packages)There are bindings for different programming languages, too - java/csharp/javascript etc.Allows quick reconfiguration of vocabulary for best accuracy.Supports speaker identification beside simple speech recognition.

选择它的理由,开源、可离线、可使用第三方的训练模型,本次使用的官方提供的中文训练模型,如果有需要可自行训练,不过成本太大。具体见官网:https://alphacephei.com/vosk/,官方demo:https://github.com/alphacep/vosk-api。

本次使用springboot +maven实现,官方demo为springboot+gradle。

1、pom文件如下:

特别说明一下,vosk的包在常见的maven仓库里面是没有的,所以需要指定下载地址。

2、工程结构:

3、语音识别工具类

有几点需要说明一下,官方demo里面对采集率是写死了的,为16000。这是以16KHz来算的,所以我把所有拿到的音频都转成了16KHz。还有采集率的设置,需要设置为声道数的倍数。

4、前端交互

5、前端页面

6、运行效果

到此这篇关于Java 离线中文语音文字识别 的文章就介绍到这了,更多相关java 离线语音文字识别 内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章