要使用讯飞的能力,需先注册讯飞开发平台账号(讯飞官网参见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)语音识别接口的更多相关文章

  1. Java的Stream流式操作

    前言 最近在实习,在公司看到前辈的一些代码,发现有很多值得我学习的地方,其中有一部分就是对集合使用Stream流式操作,觉得很优美且方便.所以学习一下Stream流,在这里记录一下. Stream是什 ...

  2. Java调用腾讯云短信接口,完成验证码的发送(不成功你来砍我!!)

    一.前言 我们在一些网站注册页面,经常会见到手机验证码的存在,这些验证码一般的小公司都是去买一些大的厂家的短信服务,自己开发对小公司的成本花费太大了!今天小编就带着大家来学习一下腾讯云的短信接口,体验 ...

  3. 第46天学习打卡(四大函数式接口 Stream流式计算 ForkJoin 异步回调 JMM Volatile)

    小结与扩展 池的最大的大小如何去设置! 了解:IO密集型,CPU密集型:(调优)  //1.CPU密集型 几核就是几个线程 可以保持效率最高 //2.IO密集型判断你的程序中十分耗IO的线程,只要大于 ...

  4. Java Style的C++容器流式处理类

    很久没有上博客园了,最近一段时间,因为工作的关系时间上比较闲,利用闲暇时间重新翻了一下丢弃很久的C++语言.C++从98.11.14.17目前已经也走到了20版本,发生了很多变化,也引入了很多新的语言 ...

  5. 自定义View(三)--实现一个简单地流式布局

    Android中的流式布局也就是常说的瀑布流很是常见,不仅在很多项目中都能见到,而且面试中也有很多面试官问道,那么什么是流式布局呢?简单来说就是如果当前行的剩余宽度不足以摆放下一个控件的时候,则自动将 ...

  6. [JavaScript,Java,C#,C++,Ruby,Perl,PHP,Python][转]流式接口(Fluent interface)

    原文:https://en.m.wikipedia.org/wiki/Fluent_interface(英文,完整) 转载:https://zh.wikipedia.org/wiki/流式接口(中文, ...

  7. Java的lamda表达式/函数式接口/流式计算

    在我们看他人code的时候经常会看到,可能会经常看到lambda表达式,函数式接口,以及流式计算.在刚接触这些新功能时,也觉得真的有必要吗?但是现在写多了,发现这个功能确实能简化代码结构,提升编码效率 ...

  8. java SSM 框架 微信自定义菜单 快递接口 SpringMVC mybatis redis shiro ehcache websocket

    A 调用摄像头拍照,自定义裁剪编辑头像,头像图片色度调节B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,快速开发利器)+快速表单构建器 freemaker模版技术 ,0个代码不用写,生成 ...

  9. Java开发笔记(七十二)Java8新增的流式处理

    通过前面几篇文章的学习,大家应能掌握几种容器类型的常见用法,对于简单的增删改和遍历操作,各容器实例都提供了相应的处理方法,对于实际开发中频繁使用的清单List,还能利用Arrays工具的asList方 ...

随机推荐

  1. sqlalchemy.exc.CompileError: (in table 'user', column 'username'): VARCHAR requires a length on dialect mysql

    映射数据库时报错:sqlalchemy.exc.CompileError: (in table 'user', column 'username'): VARCHAR requires a lengt ...

  2. 关于zsh-autosuggestions插件导致粘贴内容很慢的问题

    zsh开启autosuggestions 插件的时候,在终端中粘贴大量的内容的时候,会粘贴的很慢,基本上是一个字符一个字符的粘贴的. 解决方案 在.zshrc文件中配置以下内容: # This spe ...

  3. .NET Core WebAPI IIS 部署问题

    虽然建了 .NET Core 的项目,基本的一些功能也实现了,运行什么的也没有问题,但是一直没有直接发布. 今天就进行了发布测试,结果问题还是来了,只是你不去做自然就不会出现. 一.基本发布 1.先是 ...

  4. 能ping通Linux但是ssh连不上问题解决方法

    问题:能ping通Linux服务器 但是ssh连不上  <Linux redhat AS4 版本> 解决方法这个问题花了我20分钟去查资料,网上写的解决方法也是五花八门,不过,总算解决了, ...

  5. 加密与解密 Sytem.Security.CryptoGraphy

    一.Hash加密,使用HashAlgorithm哈希算法类的派生类 HashAlgorithm派生类包括: KeyedHashAlgorithm: 显示所有加密哈希算法实现均必须从中派生的抽象类. M ...

  6. redis-4.0.14 cluster 配置实战

    1.操作系统配置 切换到root用户修改配置sysctl.conf vim /etc/sysctl.conf # 添加配置: vm.max_map_count= vm.overcommit_memor ...

  7. 2019杭电多校第七场 HDU - 6656 Kejin Player——概率&&期望

    题意 总共有 $n$ 层楼,在第 $i$ 层花费 $a_i$ 的代价,有 $pi$ 的概率到 $i+1$ 层,否则到 $x_i$($x_i \leq 1$) 层.接下来有 $q$ 次询问,每次询问 $ ...

  8. vue 安装 ‘node-sass’ 运行报错:ERROR in Cannot find module 'node-sass'

    好像是由于cnpm安装导致.执行下面的安装代码,或者使用npm 安装node-sass cnpm install node-sass@latest

  9. 29、[源码]-AOP原理-AnnotationAwareAspectJAutoProxyCreatovi

    29.[源码]-AOP原理-AnnotationAwareAspectJAutoProxyCreatovi

  10. PostgreSQL 慢查询SQL语句跟踪

    示例:启用 SQL 跟踪PostgreSQL 日志支持的输出格式有 stderr(默认), csvlog , syslog 一般的错误跟踪,只需在配置文件 [postgresql.conf]简单设置几 ...