<
groupId
>
net
.
java
.
dev
.
jna
<
/
groupId
>
<
artifactId
>
jna
<
/
artifactId
>
<
version
>
5.7
.0
<
/
version
>
<
/
dependency
>
<
dependency
>
<
groupId
>
com
.
alphacephei
<
/
groupId
>
<
artifactId
>
vosk
<
/
artifactId
>
<
version
>
0.3
.32
<
/
version
>
<
/
dependency
>
public
static
void
main
(
String
[
]
args
)
{
LibVosk
.
setLogLevel
(
LogLevel
.
DEBUG
)
;
File
file
=
new
File
(
"D:\\test.wav"
)
;
try
(
Model
model
=
new
Model
(
System
.
getProperty
(
"user.dir"
)
+
"/src/main/resources/vosk-model-small-cn-0.22"
)
;
InputStream
ais
=
AudioSystem
.
getAudioInputStream
(
new
BufferedInputStream
(
new
FileInputStream
(
file
)
)
)
;
Recognizer
recognizer
=
new
Recognizer
(
model
,
getSampleRate
(
file
)
)
)
{
int
bytes
;
byte
[
]
b
=
new
byte
[
4096
]
;
while
(
(
bytes
=
ais
.
read
(
b
)
)
>=
0
)
{
recognizer
.
acceptWaveForm
(
b
,
bytes
)
;
System
.
out
.
println
(
recognizer
.
getFinalResult
(
)
)
;
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
)
;
* 获取采样率,采样率为音频采样率的声道倍数
private
static
Float
getSampleRate
(
File
file
)
throws
Exception
{
WavFileReader
fileReader
=
new
WavFileReader
(
)
;
AudioFile
audioFile
=
fileReader
.
read
(
file
)
;
String
sampleRate
=
audioFile
.
getAudioHeader
(
)
.
getSampleRate
(
)
;
String
channel
=
audioFile
.
getAudioHeader
(
)
.
getChannels
(
)
;
System
.
out
.
println
(
"语音的声道:"
+
channel
)
;
System
.
out
.
println
(
"语音的采样率:"
+
sampleRate
)
;
return
Float
.
parseFloat
(
sampleRate
)
*
Integer
.
parseInt
(
channel
)
;
使用
vosk
开源
项目,基于
java
实现离线语音转文字
文章目录前言一、
VOSK
是什么?二、
使用
步骤1.环境准备2.maven依赖如果导入失败可以下载jar,build path一下;3.语言模型4.运行代码总结
当前主流的
语音识别
大厂有科大讯飞、百度、谷歌等,但在他们官网中发现,支持
java
离线版
的并不多,科大讯飞离线包仅基于安卓,而百度官方并没有
离线版
的,所以在资源查找中筛选出
VOSK
、CMU Sphinx,并且两者都是
开源
的,但CMU Sphinx官网中并没有中文模型,所以在选用上选择了VO.
这就是
Vosk
,这是终生的
语音识别
系统。
截至2019年,基于神经网络的
语音识别
器在训练中可以
使用
的语音数据量非常有限,并且需要大量的计算能力和时间来训练和优化参数。 神经网络在像人一样的一杆式学习中存在问题,其决策对于看不见的情况不是很稳健,并且难以理解和纠正。
这就是为什么我们决定建立基于大信号数据库概念的系统的原因。 我们采用音频指纹识别方案。 音频按块分割,这些块基于LSH哈希值存储在数据库中。 在解码过程中,我们只需查找数据库中的数据块即可了解可能的手机。 这有助于我们对解码结果做出正确的决定。
这种方法的优点是:
我们可以在非常简单的硬件上快速训练100000小时的语音数据
我们只需添加样本就可以轻松纠正识别器的行为
我们可以确保识别结果是正确的,因为它可以在训练数据集中充
转载注明出处:https://www.cnblogs.com/rolayblog/p/15237099.html
项目需要,要实现类似小爱同学的语音控制功能,并且要离线,不能花公司一分钱。第一步就是需要把音频文字化。经过各种资料搜集后,选择了
vosk
。这是
vosk
的官方介绍:
Vosk
is a speech recognition toolkit. The best things in Vos...
Vosk
是一个离线
开源
语音识别
工具包。 它支持17种语言和方言的
语音识别
模型-英语,印度英语,德语,法语,西班牙语,葡萄牙语,中文,俄语,土耳其语,越南语,意大利语,荷兰语,加泰罗尼亚语,阿拉伯语,希腊语,波斯语,菲律宾语。
Vosk
模型很小(50 Mb),但提供连续的大词汇量转录,具有流API的零延迟响应,可重新配置的词汇量和说话者识别。
为各种编程语言(如Python,
Java
,Node.JS,C#,C ++等)实现的
语音识别
绑定。
Vosk
为聊天机器人,智能家电,虚拟助手提供
语音识别
。 它还可以为电影创建字幕,为演讲和访谈创建转录字幕。
Vosk
从Raspberry Pi或Android智能手机等小型设备扩展到大型集群。
有关安装说明,示例和文档,请访问。
可以离线识别,但是暂时只有一个小的语音库,识别准确率特别低。如果谁有训练语音库的方法希望可以分享一下。谢谢!springboot
框架
搭的一个小demo。原文地址还有前端页面html和js,有录音,播放,翻译等小功能,详情见下边原文地址。
原文:
java
离线中文语音文字识别 - Rolay - 博客园转载注明出处:https://www.cnblogs.com/rolayblog/p/15237099.html 项目需要,要实现类似小爱同学的语音控制功能,并且要离线,不能花公司一分钱。...