java调用科大讯飞流式(websocket)语音识别接口
要使用讯飞的能力,需先注册讯飞开发平台账号(讯飞官网参见https://www.xfyun.cn/)。
再创建应用,点击右上角的控制台 -> 创建新应用:
每个应用都有一个appId,由这个appId关联对应接口鉴权信息,包括apiKey和apiSecret。比如我创建了一个应用“我的转写机” -> 点击该应用 -> 点击左边语音识别里的语音听写(流式版):

往下拉,点击“文档”,接口说明和demo代码都在:

进入文档后拉到底部,点击链接下载demo和音频:

修改demo里的appId、apiKey和apiSecret、音频文件所在路径,就可以直接跑了:

这个接口是websocket协议的,它是把音频文件一段一段的发送到讯飞做语音识别的,最后识别出来后再返回完整内容,如果你想直接获取最后的接口,可以用闭锁阻塞主线程,在websocket关闭时释放闭锁,让主线程继续:
调用类:
CountDownLatch iatCountDown = new CountDownLatch(1);
WebSocket webSocket = client.newWebSocket(request, new WebIATWS(fullFileName, appId, result, iatCountDown, from)); // 阻断主线程,等待websocket识别完所有语音流
iatCountDown.await();
WebIATWS:
@Override
public void onMessage(WebSocket webSocket, String text) {
super.onMessage(webSocket, text);
System.out.println(text);
Gson json = new Gson();
IatResult resp = json.fromJson(text, IatResult.class);
if (resp != null) {
if (resp.getCode() != 0) {
log.error("code=> :{}, error=> :{}, sid= :{}", resp.getCode(), resp.getMessage(), resp.getSid());
return;
}
if (resp.getData() != null) {
if (resp.getData().getResult() != null) {
Text te = resp.getData().getResult().getText();
System.out.println(te.toString());
try {
decoder.decode(te);
log.info("send continue, result: {}", decoder.toString());
} catch (Exception e) {
log.error("call onMessage failed, error :{}", e.getMessage());
return;
}
}
if (resp.getData().getStatus() == 2) {
//说明数据全部返回完毕,可以关闭连接,释放资源
log.info("session finish.");
dateEnd = new Date();
log.info("cost time: {} ms", dateEnd.getTime() - dateBegin.getTime());
log.info("final result: {}", decoder.toString());
ResultData data = new ResultData();
data.setResult(decoder.toString());
listenResult.setData(data);
countDownLatch.countDown();
decoder.discard();
webSocket.close(1000, "");
}
}
}
}
java调用科大讯飞流式(websocket)语音识别接口的更多相关文章
- Java的Stream流式操作
前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...
- Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)
一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...
- 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)
小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优) //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...
- Java Style的C++容器流式处理类
很久没有上博客园了,最近一段时间,因为工作的关系时间上比较闲,利用闲暇时间重新翻了一下丢弃很久的C++语言.C++从98.11.14.17目前已经也走到了20版本,发生了很多变化,也引入了很多新的语言 ...
- 自定义View(三)--实现一个简单地流式布局
Android中的流式布局也就是常说的瀑布流很是常见,不仅在很多项目中都能见到,而且面试中也有很多面试官问道,那么什么是流式布局呢?简单来说就是如果当前行的剩余宽度不足以摆放下一个控件的时候,则自动将 ...
- [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)
原文:https://en.m.wikipedia.org/wiki/Fluent_interface(英文,完整) 转载:https://zh.wikipedia.org/wiki/流式接口(中文, ...
- Java的lamda表达式/函数式接口/流式计算
在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...
- java SSM 框架 微信自定义菜单 快递接口 SpringMVC mybatis redis shiro ehcache websocket
A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成 ...
- Java开发笔记(七十二)Java8新增的流式处理
通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方 ...
随机推荐
- Linux网络编程综合运用之MiniFtp实现(四)
从今天开始,正式进入MiniFtp的代码编写阶段了,好兴奋,接下来很长一段时间会将整个实现过程从无到有一点点实现出来,达到综合应用的效果,话不多说正入正题: 这节主要是将基础代码框架搭建好,基于上节介 ...
- python 'NoneType' object has no attribute 'get'
获取 页面链接的时候报错 'NoneType' object has no attribute 'get' href = div.find("a").get("href& ...
- python----PySnooper获取打印日志
官网链接:https://pypi.org/project/PySnooper/ 安装:pip install PySnooper 使用方式,直接 导入import pysnooper,添加装饰器 ...
- jQuery toast 淡入淡出提示
#toast{ position: fixed; top: 44%;left:50%;transform: translateX(-50%); min-width: 80px; max-width: ...
- 有关求第n位xxx 的算法的问题
最近,博客园上看到有关求 斐波那契数列的第n位是什么的问题.什么是 斐波那契数列? 我自己也忘记了,后来百度了下.http://baike.baidu.com/view/816.htm?fr=alad ...
- list获取所有上级
/// <summary> /// 获取所有上级 /// </summary> /// <param name="list"></para ...
- ES 的基本用法
ES的基本用法 ES的基本概念 1> 集群和节点 一个es集群是由一个或多和es节点组成的集合 每一个集群都有一个名字, 如之前的wali 每个节点都有自己的名字, 如之前的master, sl ...
- /etc/inittab
# inittab is no longer used when using systemd. # # ADDING CONFIGURATION HERE WILL HAVE NO EFFECT ON ...
- Manthan, Codefest 19
目录 Contest Info Solutions A. XORinacci B. Uniqueness C. Magic Grid D. Restore Permutation E. Let The ...
- VsCode安装Go的相关插件
今天在学习Go的时候,安装Go的相关插件,显示安装不上,但是右下角也一直会提示让你安装,当然你可以设置成忽略,为了开发效率,我选择了安装.然后出现了问题,一直Failed.在网上看到了很多的文章,不是 ...