java调用kaldi_kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)

本文介绍了如何利用Kaldi的在线识别工具在Java中建立服务器客户端系统。首先,需要安装portaudio库,然后编译Kaldi的在线识别工具。服务器端使用online-audio-server-decode-faster启动,客户端通过online-audio-client或Java的online-audio-client.jar与服务器交互。此外,还提及了使用麦克风进行实时解码的方法。
摘要由CSDN通过智能技术生成

在kaldi 的工具集里有好几个程序可以用于在线识别。这些程序都位在src/onlinebin文件夹里,他们是由src/online文件夹里的文件编译而成(你现在可以用make ext 命令进行编译)。这些程序大多还需要tools文件夹中的portaudio 库文件支持,portaudio 库文件可以使用tools文件夹中的相应脚本文件下载安装。

# 安装portaudio

yum -y install *alsa*

cd kaldi/tools

./install_portaudio.sh

# 编译在线识别工具

cd src/

make ext

一、服务器客户端识别系统建立方法

建立整个在线识别系统需要:

准备两台机器,都安装kaldi;

作为服务器的机器,准备好声音模型、词典、解码网络、特征转换矩阵(我还没有使用转换矩阵)

首先启动服务器,待服务器运行后,再启动客户端连接。

1. Command line to start the server(服务器端启动方式):

使用如下指令online-audio-server-decode-faster启动服务器:

online-audio-server-decode-faster --verbose=1 --rt-min=0.5 --rt-max=3.0 --max-active=6000 \

--beam=72.0 --acoustic-scale=0.0769 final.mdl graph/HCLG.fst graph/words.txt '1:2:3:4:5' \

graph/word_boundary.int 5010 final.mat

1.1 Arguments are as follow(参数意义):

final.mdl - the acoustic model

HCLG.fst - the complete FST

words.txt - word dictionary (mapping word ids to their textual representation)

'1:2:3:4:5' - list of silence phoneme ids

5010 - port the server is listening on

word_boundary.int- a list of phoneme boundary information required for word alignemnt

final.mat - feature LDA matrix

注意:如果没有word_boundary.int 需要重新运行prepare_lang.sh生成。修改如下:

#原指令:

utils/prepare_lang.sh --position-dependent-phones false data/local/dict "" \

data/local/lang data/lang

#改为:

utils/prepare_lang.sh data/local/dict "" data/local/lang data/lang

启动后结果如下:

b6cce6102767c962d96e5d03b26bebe5.png

2. Command line to start the client(客户端启动方式):

直接运行如下指令即可启动客户端:

online-audio-client --htk --vtt localhost 5010 scp:test.scp

2.1 Arguments are as follow(参数意义):

–htk - save results as an HTK label file

–vtt - save results as a WebVTT file

localhost - server to connect to

5010 - port to connect to

scp:test.scp - list of WAV files to send

启动后客户端不断传输数据,服务器实时进行解码!结果如下:

4ffdccf31aef80103fc3d0b80a439bdf.png

结果是边传输边识别的:

3fa2bdc6a7ff88ddb425f545f5d644f6.png

* Command line to start the Java client(移动客户端):

移动客户端我还未尝试:

java -jar online-audio-client.jar

Or simply double-click the JAR file in the graphical interface.

二、使用麦克风建立客户端与服务器的实时解码

kaldi提供了读取客户端麦克风数据的解码工具,可以在客户端使用麦克风发送音频,服务器实时返回解码数据。

1. 使用online-server-gmm-decode-faster启动服务器:

通过网络接收特征进行解码。话语分词是即时完成的。如果给出可选(最后)参数,则使用特征拼接/ LDA变换。 否则默认使用delta / delta-delta(2阶)特征。

Usage: online-server-gmm-decode-faster [options] model-infst-in word-symbol-table silence-phones udp-port [lda-matrix-in]

Example: online-server-gmm-decode-faster --rt-min=0.3 --rt-max=0.5 --max-active=4000 --beam=12.0 --acoustic-scale=0.0769 model HCLG.fst words.txt '1:2:3:4:5' 1234 lda-matrix

2. 使用online-net-client启动客户端:

通过online-net-client工具,使用麦克风(portaudio)作为输入,提取特征并通过网络连接发送它们到服务器上。具体设置如下:

Usage: online-net-client server-address server-port

Options:

--batch-size : The number of feature vectors to be extracted and sent in one go (int, default = 27)

Standard options:

--config : Configuration file to read (this option may be repeated) (string, default = "")

--help : Print out usage message (bool, default = false)

--print-args : Print the command line arguments (to stderr) (bool, default = true)

--verbose : Verbose level (higher->more logging) (int, default = 0)

参考:kaldi首页

1. SQL Server服务器监控实现方法

对于服务器的监控,和对数据库的监控,很少有合二为一的工具,如果有的话,一般是付费软件,或者自行开发的工具.所以如果不想购买软件,也不想花精力去开发的话,可以结合一些免费/开源的工具.自定义脚本,来完成 ...

在非SQL客户端使用命令行方式定期连接SQL Server 服务器并模拟用户查询操作,同时输出信息内容

一个很长的标题,实现的功能就是尽量使用非人力的方式模拟人去做一件事情,为了便于记录,将他们输出成文件方便查阅. 图形界面方式,使用微软自己的ConnMaker.exe,或者Microsoft 数据连接 ...

SQL Server服务器名称与默认实例名不一致的修复方法

SQL Server服务器名称与默认实例名不一致的修复方法 分类: 个人累积 SQl SERVER 数据库复制2011-08-10 09:49 10157人阅读 评论(0) 收藏 举报 sql ser ...

Openfire更服务器名称后报Found RSA certificate that is not valid for the server domain的解决方法

原文:http://blog.sina.com.cn/s/blog_ae5a3d3f0102wdrb.html Openfire更服务器名称的方法: 1.登陆openfire管理页面,在主页面下方选择 ...

SVN入门 服务器VisualSVN Server和客户端TortoiseSVN安装

Subversion是一个版本控制系统,相对于的RCS.CVS,采用了分支管理系统,它的设计目标就是取代CVS.互联网上免费的版本控制服务多基于Subversion. 一.SVN工作原理 SVN(Su ...

【转载】Windows Server 2012服务器删除IIS方法

在Windows Server2012版本的服务器系统中,我们可以通过服务器管理器中的"添加角色和功能"来添加IIS的Web服务器,当我们不再使用IIS功能时候,我们也可以通过删除 ...

windows server 服务器添加免费域名证书的方法(Let's Encrypt)

在 windows server 服务器上可以通过 win-acme工具添加ssl 1.首先下载工具 https://github.com/PKISharp/win-acme/releases 最新版 ...

Win7 64位下sql server链接oracle的方法

继上一次mysql同步sql server后,这一次需要将Oracle同步到sql server上来,方案相似,只是在sql server链接oracle的时候费了很多时间. 一.测试环境 本方案实现 ...

GCM 发送接收消息 Message Client Server 服务器端,客户端

GCM 传递参数 最近用了很多时间做GCM,由于碰到很多问题,因此详细做一下记录,以方便各位网友,不用再走我的重复的路.不过我试了一下GCM在国内很不好用.假如开发国外的程序的话,用GCM倒是很不错的 ...

随机推荐

10.OC中retainCount返回值不准的原因

翻看该方法的参考文档,苹果对retainCount方法的描述如下: retainCount Do not use this method. (required) - (NSUInteger)retai ...

iOS 实现类似雷达效果的核心代码

-(void)drawRect:(CGRect)rect { [[UIColor clearColor]setFill]; UIRectFill(rect); NSInteger pulsingCou ...

ThinkPHP中的内置标签

ThinkPHP中的内置标签 1.内置标签分类 闭合标签 开放标签 2.包含文件标签 主要功能:实现对文件的包含(类似于re ...

centos6.9 升级内核版本

想在centos6.9上安装docket,不过因为内核版本是2.6的故而想升级到最新的内核版本 晚上有编译升级的比较麻烦,不过有助于理解内核升级,我使用的直接升级到最新版方法 1. 导入public ...

IRGAN:A Minimax Game for Unifying Generative and Discriminative Information Retrieval Models

https://arxiv.org/pdf/1705.10513.pdf 论文阅读笔记: https://www.cnblogs.com/liaohuiqiang/p/9694277.html htt ...

【AHOI2006】基因匹配

题面 题解 众所周知,最长公共子序列的$dp$是$\text{O}(n^2)$, 但是每一个数字只重复$5$遍,那么我们暴力匹配$25n$个点对 那么我们就可以将其变成求最长上升子序列 用二分栈或者树 ...

os模块os.walk() 方法和os.path.join()的简单使用

os.walk:   http://www.runoob.com/python/os-walk.html os.path.join:   https://blog.csdn.net/zmdzbzbhs ...

js正则包含三位

var reg = new RegExp("^(?![A-Za-z]+$)(?![A-Z\\d]+$)(?![A-Z_\\W]+$)(?![a-z\\d]+$)(?![a-z_\\W]+$) ...

MapReduce文件切分个数计算方法

转自:http://www.crazyant.net/1423.html Hadoop的MapReduce计算的第一个阶段是InputFormat处理的,先将文件进行切分,然后将每个切分传递给每个Ma ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值