科大讯飞语音转文字以及中文分词的Java测试代码
我录了一段音存储在这个test.m4a文件里,语音内容为"测试一下Netweaver对于并发请求的响应性能"。
使用如下Java代码进行测试:
package com.iflytek.msp.lfasr;
import java.util.HashMap;
import org.apache.log4j.Logger;
import com.alibaba.fastjson.JSON;
import com.iflytek.msp.cpdb.lfasr.client.LfasrClientImp;
import com.iflytek.msp.cpdb.lfasr.exception.LfasrException;
import com.iflytek.msp.cpdb.lfasr.model.LfasrType;
import com.iflytek.msp.cpdb.lfasr.model.Message;
import com.iflytek.msp.cpdb.lfasr.model.ProgressStatus;
// SDK document: http://www.xfyun.cn/doccenter/lfasr#go_sdk_doc_v2
public class TestLfasr
{
// original media path
private static final String local_file = "c:\\temp\\test.m4a";
private static final LfasrType type = LfasrType.LFASR_STANDARD_RECORDED_AUDIO;
private static int sleepSecond = 20;
public static void main(String[] args) {
LfasrClientImp lc = null;
try {
lc = LfasrClientImp.initLfasrClient();
} catch (LfasrException e) {
Message initMsg = JSON.parseObject(e.getMessage(), Message.class);
System.out.println("ecode=" + initMsg.getErr_no());
System.out.println("failed=" + initMsg.getFailed());
}
// get upload task id
String task_id = "";
HashMap<String, String> params = new HashMap<>();
params.put("has_participle", "true");
try {
Message uploadMsg = lc.lfasrUpload(local_file, type, params);
int ok = uploadMsg.getOk();
if (ok == 0) {
task_id = uploadMsg.getData();
System.out.println("task_id=" + task_id);
} else {
System.out.println("ecode=" + uploadMsg.getErr_no());
System.out.println("failed=" + uploadMsg.getFailed());
}
} catch (LfasrException e) {
Message uploadMsg = JSON.parseObject(e.getMessage(), Message.class);
System.out.println("ecode=" + uploadMsg.getErr_no());
System.out.println("failed=" + uploadMsg.getFailed());
}
while (true) {
try {
Thread.sleep(sleepSecond * 1000);
System.out.println("waiting ...");
} catch (InterruptedException e) {
}
try {
Message progressMsg = lc.lfasrGetProgress(task_id);
if (progressMsg.getOk() != 0) {
System.out.println("task was fail. task_id:" + task_id);
System.out.println("ecode=" + progressMsg.getErr_no());
System.out.println("failed=" + progressMsg.getFailed());
continue;
} else {
ProgressStatus progressStatus = JSON.parseObject(progressMsg.getData(), ProgressStatus.class);
if (progressStatus.getStatus() == 9) {
System.out.println("task was completed. task_id:" + task_id);
break;
} else {
System.out.println("task was incomplete. task_id:" + task_id + ", status:" + progressStatus.getDesc());
continue;
}
}
} catch (LfasrException e) {
Message progressMsg = JSON.parseObject(e.getMessage(), Message.class);
System.out.println("ecode=" + progressMsg.getErr_no());
System.out.println("failed=" + progressMsg.getFailed());
}
}
try {
Message resultMsg = lc.lfasrGetResult(task_id);
System.out.println(resultMsg.getData());
if (resultMsg.getOk() == 0) {
System.out.println(resultMsg.getData());
} else {
System.out.println("ecode=" + resultMsg.getErr_no());
System.out.println("failed=" + resultMsg.getFailed());
}
} catch (LfasrException e) {
Message resultMsg = JSON.parseObject(e.getMessage(), Message.class);
System.out.println("ecode=" + resultMsg.getErr_no());
System.out.println("failed=" + resultMsg.getFailed());
}
}
}
测试结果
(1) 所有中文均能成功转成文字; 但英文Netweaver的语音转换成了Net ball
(2) 智能分词也能按照期望工作,比如“测试一下”成功地分词成了“测试”和“一下”。
完整的Java项目在我的github上:https://github.com/i042416/voice2text
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
科大讯飞语音转文字以及中文分词的Java测试代码的更多相关文章
- Centos下Sphinx中文分词编译安装测试---CoreSeek
要支持中文分词,还需要下载Coreseek,可以去官方搜索下载,这里我用的4.1 百度云下载地址: https://pan.baidu.com/s/1slNIyHf tar -zxvf co ...
- python安装Jieba中文分词组件并测试
python安装Jieba中文分词组件 1.下载http://pypi.python.org/pypi/jieba/ 2.解压到解压到python目录下: 3.“win+R”进入cmd:依次输入如下代 ...
- 科大讯飞语音转文字,ffmpeg将wav转成pcm二进制音频文件
百度和讯飞和其他厂都提供了语音识别的接口,这里使用讯飞的识别将本地手机录的音频文件转成文字 以下注意事项: 1.X_Param 参数开始的时候带了空格导致验证不过,原因是讯飞将字符串做了repelce ...
- 11大Java开源中文分词器的使用方法和分词效果对比,当前几个主要的Lucene中文分词器的比较
本文的目标有两个: 1.学会使用11大Java开源中文分词器 2.对比分析11大Java开源中文分词器的分词效果 本文给出了11大Java开源中文分词的使用方法以及分词结果对比代码,至于效果哪个好,那 ...
- 【中文分词】二阶隐马尔可夫模型2-HMM
在前一篇中介绍了用HMM做中文分词,对于未登录词(out-of-vocabulary, OOV)有良好的识别效果,但是缺点也十分明显--对于词典中的(in-vocabulary, IV)词却未能很好地 ...
- 新浪SAE中文分词接口
最近发现新浪SAE平台上竟然也提供分词功能,分词效果也还不错,由新浪爱问提供的分词服务,研究了一番,做了一个简易版的在线调用接口(get方式,非post) 官网说明:http://apidoc.sin ...
- ANSJ中文分词使用方法
一.前言 之前做solr索引的时候就使用了ANSJ进行中文分词,用着挺好,然而当时没有写博客记录的习惯.最近又尝试了好几种JAVA下的中文分词库,个人感觉还是ANSJ好用,在这里简单总结之. 二.什么 ...
- R语言︱文本挖掘之中文分词包——Rwordseg包(原理、功能、详解)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:与前面的RsowballC分词不同的 ...
- (3.1)用ictclas4j进行中文分词,并去除停用词
酒店评论情感分析系统——用ictclas4j进行中文分词,并去除停用词 ictclas4j是中科院计算所开发的中文分词工具ICTCLAS的Java版本,因其分词准确率较高,而备受青睐. 注:ictcl ...
随机推荐
- matplolib实例之 城市气候与海洋的关系研究
- 阿里Java开发规约(2)
本文是对阿里插件中规约的详细解释二,关于插件使用,请参考这里 及时清理不再使用的代码段或配置信息. 说明:对于垃圾代码或过时配置,坚决清理干净,避免程序过度臃肿,代码冗余 Positive examp ...
- storm定时器
package com.example.mail; import org.apache.storm.Config; import org.apache.storm.LocalCluster; impo ...
- 练习六十八:pyecharts模块练习
用一个地图显示最热的几个城市温度 代码(用Geo模块) from pyecharts import Geo attr = ["西安","上海","苏州 ...
- SpringBoot中通过实现WebMvcConfigurer完成参数校验
在Spring5.0和SpringBoot2.0中废弃了WebMvcConfigurerAdapter类. 现有两种解决方案 1 直接实现WebMvcConfigurer (官方推荐)2 直接继承We ...
- SQL智能提示插件——SQLPrompt
1.安装SQLPrompt,直接点击下一步即可,然后打开SQL Server 在菜单栏找到SQLPrompt选项注册该软件 2.先断开网络,然后运行注册机,将注册吗复制到序列号的地方,将两个勾选的复选 ...
- Django-3 视图层
5.1 视图函数 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应.响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片 ...
- C++的友元函数
友元函数不是成员函数,是类外函数所以声明放在类的私有段或公有段且没有区别.但是它可以访问类中的私有成员.友元的作用在于提高程序的运行效率,但是,它破坏了类的封装性和隐藏性,使得非成员函数可以访问类的私 ...
- Monkey King(左偏树 可并堆)
我们知道如果要我们给一个序列排序,按照某种大小顺序关系,我们很容易想到优先队列,的确很方便,但是优先队列也有解决不了的问题,当题目要求你把两个优先队列合并的时候,这就实现不了了 优先队列只有插入 删除 ...
- jq二级目录
CSS:.qsc_nav_main .level1 { text-align: center; height: auto; } .qsc_nav_main .level1 a { display: i ...