讯飞AIUI apiWeb java
来源:互联网 发布:低空突防航迹规划算法 编辑:程序博客网 时间:2024/05/22 14:29
截止到2017-11-27,讯飞官网对语音识别的支持,下架了HTMLS,用文档上的JAVA sdk开发对于前后端分离的javaweb项目太不友好,开发到最后,对于监听器中的语音听写结果数据,需要手动合并成句子,并且如果想要在api中返回给前端,需要阻塞线程到监听器线程处理完数据。
后来发现还有个AIUI的 apiWeb的方式,提供对外的http请求的方式,这就方便多了,直接调用URL,拿到语音解析结果,响应给前端,分分钟。
去官网注册个账号,创建个服务,目前免费体验包一天可以法500次,没啥大需求就够了,想升级的话,问了一下要12月1号才能购买。
以下是语音识别文字code:
public static String aiuiWebApi(FileInputStream fileInputStream) throws Exception{ String appid = "XXXXXXXX"; String appKey = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; String curTime = String.valueOf(new Date().getTime()/1000); String url = "http://api.xfyun.cn/v1/aiui/v1/iat"; String xParam = "{\"auf\":\"16k\",\"aue\":\"raw\",\"scene\":\"main\"}"; String param = Base64.getEncoder().encodeToString(xParam.getBytes("UTF-8")); String body = "data=" + Base64.getEncoder().encodeToString(IOUtils.toByteArray(fileInputStream)); String checkSum = RobotMethod.EncoderByMd5(appKey + curTime + param + body); HttpPost httpPost = new HttpPost(url); CloseableHttpClient httpClient = HttpClients.createDefault(); StringEntity entity = new StringEntity(body,"utf-8"); entity.setContentType("application/x-www-form-urlencoded"); httpPost.setEntity(entity); httpPost.setHeader("X-Appid", appid); httpPost.setHeader("X-CurTime", curTime); httpPost.setHeader("X-Param", param); httpPost.setHeader("X-CheckSum", checkSum); HttpResponse response = httpClient.execute(httpPost); if(response.getStatusLine().getStatusCode() == 200){ HttpEntity responseEntity = response.getEntity(); String resJson = EntityUtils.toString(responseEntity,"utf-8"); JSONObject jsonObject = JSONObject.fromObject(resJson); String code = jsonObject.getString("code"); if(code.equals("00000")) { // 成功 String dataJson = jsonObject.getString("data"); JSONObject dataObject = JSONObject.fromObject(dataJson); String result = dataObject.getString("result"); return result; } else { // 失败 String desc = jsonObject.getString("desc"); throw new BaseException("讯飞语音接口调用失败:"+desc); } } return "调用讯飞语音接口失败"; }
public static String EncoderByMd5(String str){ if(StringUtils.isEmpty(str)) { return ""; } String result = ""; try { MessageDigest messageDigest = MessageDigest.getInstance("MD5"); byte[] encode = messageDigest.digest(str.getBytes("utf-8")); result = toString(encode); }catch (Exception e){ e.printStackTrace(); } return result; }
按照官网文档走就差不多了,注意的点,是需要把请求的服务器ip加到控制台的白名单上,本地加过公网ip,没吊用,不知道咋回事,附官网javademo
阅读全文
1 0
- 讯飞AIUI apiWeb java
- 讯飞 AIUI 集成
- 讯飞AIUI集成语音语义的21003错误
- 科大讯飞AIUI和网易云信音视频
- 首发 | AIUI开放平台重磅上线!技术小白也能迅速接入!
- 【一牛网&科大讯飞】AIUI评估板免费赠?讯飞评测活动告诉你:有戏!
- java
- JAVA
- JAVA
- JAVA
- java
- Java
- Java
- JAVA:
- java
- java
- java
- java
- Java 递归结束
- 大数据学习笔记(六)-Spark环境配置
- 计算机网络——链路层和局域网
- 647. Palindromic Substrings
- push进队列的C2075错误
- 讯飞AIUI apiWeb java
- 关于@JsonFormat的使用
- 用PHP快速开发一个爬虫,用到的开源库
- powerdesigner comment 写到 name 和 name 写到 comment
- github命令大全
- 封装一个小JS模块
- rand和srand随机函数的用法
- 4用于cifar10的卷积神经网络-4.22为计算图中的非线性全连接层的权重添加L2损失
- 总结echarts的常用手法