因为讯飞官方提供的sdk没有Java的,所以我使用的是WebApi。其中有些注意事项官网有写出,可自行查看。
下面是具体的接入过程:
下载这个demo 然后把里面的三个文件复制到项目里
主要用到的是FileUtil.java这个文件

package com.olive.web.utils.kedaxunfei;import com.olive.utils.ReturnJson;
import com.olive.web.entity.KrpanoEntity;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;/*** 讯飞——语音评测 API 接口调用** @author iflytek*/
public class EnglishEvaluation {// 合成webapi接口地址private static final String WEBISE_URL = "用自己的";// 应用IDprivate static final String APPID = "用自己的";// 接口密钥private static final String API_KEY = "用自己的";// 评测文本
//    private static final String TEXT = "Firefighters take part in an emergency rescue drill in a forest in Taian city, Shandong province, on Feb 24, 2019. This is the country's largest joint air-ground drill with around 2,000 rescuers, seven helicopters and vehicles, and over 1,200 firefighting equipment taking part in the exercise.";// 音频编码private static final String AUE = "raw";// 采样率private static final String AUF = "audio/L16;rate=16000";// 结果级别private static final String RESULT_LEVEL = "simple";// 语种private static final String LANGUAGE = "en_us";// 评测种类private static final String CATEGORY = "read_sentence";//全维度评测:需要开通private static final String extra_ability = "multi_dimension";//  音频文件地址
//  private static final String AUDIO_PATH = "音频路径";/*** 请求讯飞api** @param filePath 音频文件地址* @return* @throws IOException*/public static String requestXunFei(String filePath,String eText) throws IOException {Map<String, String> header = buildHttpHeader();byte[] audioByteArray = FileUtil.read(filePath);String audioBase64 = new String(Base64.encodeBase64(audioByteArray), "UTF-8");String result = HttpUtil.doPost1(WEBISE_URL, header, "audio=" + URLEncoder.encode(audioBase64, "UTF-8") + "&text=" + URLEncoder.encode(eText, "UTF-8"));System.out.println("评测 WebAPI 接口调用结果:" + result);return result;}/*** 组装http请求头*/private static Map<String, String> buildHttpHeader() throws UnsupportedEncodingException {String curTime = System.currentTimeMillis() / 1000L + "";String param = "{\"auf\":\"" + AUF + "\",\"aue\":\"" + AUE + "\",\"result_level\":\"" + RESULT_LEVEL + "\",\"language\":\"" + LANGUAGE + "\",\"extra_ability\":\"" + extra_ability + "\",\"category\":\"" + CATEGORY + "\"}";String paramBase64 = new String(Base64.encodeBase64(param.getBytes("UTF-8")));String checkSum = DigestUtils.md5Hex(API_KEY + curTime + paramBase64);Map<String, String> header = new HashMap<String, String>();header.put("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");header.put("X-Param", paramBase64);header.put("X-CurTime", curTime);header.put("X-CheckSum", checkSum);header.put("X-Appid", APPID);return header;}
}

这是我修改过的,有这么几个地方要修改
123这三个属性的值要从控制台获取

5:全维度评测,这个需要开通,和免费数量是区分开的,要单独付费
还有一个就是文本这块(我的项目是前端传值,所以我这里把他原来的注掉了),这个地方需要注意的就是:文本内容要正规,标点符号等都要有,要不然影响评测质量
4:评测级别:这个建议最好用“simple”,如果用"entity"的话返回内容太多了,前端不好解析
这些弄好之后直接调用就可以实现评测,

比较麻烦的地方在语评测的音频处理
官方给的音频是wav格式的,要转换,要不然没法评测
ffempg的使用可以参考这篇文章
ffempg安装使用
命令用官方的就行
ffmpeg -y -i test.wav -acodec pcm_s16le -f s16le -ac 1 -ar 16000 test.pcm
转换好之后就可以用postman测试一下是否调用成功
成功了返回的是一长串结果json
额,公司的全维度评测今天到期了,评测结果我就用官方给的吧
这个是失败的情况,会返回错误编码,这个在官网可以查到对应的原因,方便排错
如果成功了是这样

{"data":{"read_word":{"lan":"en","type":"study","version":"6.5.0.1011","rec_paper":{"read_word":{"except_info":"28680","is_rejected":"false","total_score":"64.725080","sentence":[{"beg_pos":"0","content":"apple","end_pos":"129","word":{"beg_pos":"79","content":"apple","end_pos":"129","total_score":"94.963020"}},{"beg_pos":"129","content":"banana","end_pos":"163","word":{"beg_pos":"163","content":"banana","end_pos":"163","total_score":"0.000000"}},{"beg_pos":"163","content":"orange","end_pos":"226","word":{"beg_pos":"163","content":"orange","end_pos":"226","total_score":"99.212200"}},{"content":"banana","end_pos":"359","word":{"beg_pos":"265","content":"banana","end_pos":"318"},"beg_pos":"226"}],"beg_pos":"0","content":"apple banana orange","end_pos":"359"}}}},"code":"0","desc":"success","sid":"wse00000001@ll36940e324c59000100"}

返回的就是很长的json串(评测级别是"entity",所以会有很多),中间会有几个关键的参数
这就是评测返回的结果对应的分数字段
到这里就结束了,有不明白的可以留言。感觉写的很清楚了,哈哈!

Spring Boot+Vue前后端分离项目接入科大讯飞——语音评测相关推荐

  1. phython在file同时写入两个_喜大普奔,两个开源的 Spring Boot + Vue 前后端分离项目可以在线体验了

    折腾了一周的域名备案昨天终于搞定了. 松哥第一时间想到赶紧把微人事和 V 部落部署上去,我知道很多小伙伴已经等不及了. 1. 也曾经上过线 其实这两个项目当时刚做好的时候,我就把它们部署到服务器上了, ...

  2. Spring Boot + Vue前后端分离项目,Maven自动打包整合

    前言 现在各类项目为了降低项目.服务模块间的高度耦合性,提出了"前后端分离",而前后端分离的项目该如何打包呢? 一般的做法是前端项目打包完,将打包文件手动复制到后端项目工程的src ...

  3. spring boot+vue前后端分离项目问题总结

    目录 创建项目 安装vue脚手架报错 vue命令创建项目失败 项目导入idea idea过期激活 idea运行vue项目,打开地址为http://0.0.0.0:8080 项目目录 vue文件不显示V ...

  4. Spring boot+Vue前后端分离项目实战——学生管理系统【三】后端

    就不一段一段的贴代码了,讲一下代码结构,之后会将代码放在GitHub,将代码拉到自己电脑后对照学习 代码地址 https://github.com/SAGE-likeWu/student_manage ...

  5. Spring Boot+Vue/前后端分离/高并发/秒杀实战课程之spring Security快速搭建oauth2 内存版身份认证

    Springboot快速搭建oauth2 内存版身份认证 环境准备 点击[Create New Project]创建一个新的项目 项目环境配置 配置Thymeleaf 搭建oauth2认证,加入两个依 ...

  6. Spring Boot + Vue 前后端分离开发,前端网络请求封装与配置

    前端网络访问,主流方案就是 Ajax,Vue 也不例外,在 Vue2.0 之前,网络访问较多的采用 vue-resources,Vue2.0 之后,官方不再建议使用 vue-resources ,这个 ...

  7. Spring Boot + Vue前后端分离(一)前端Vue环境搭建

    你好,[程序职场]专注于:Spring Boot ,微服务 和 前端APP开发,闲暇之余一起聊聊职场规划,个人成长,还能带你一起探索 副业赚钱渠道,在提升技术的同时我们一起交流 敏捷流程 提高工作效率 ...

  8. Spring Boot + Vue 前后端分离

    前后端分离 Spring Booot + Vue 开发单页面应用 前言     需求: 最近本人在学习SpringBoot,希望自己能搭一个简单的Demo应用出来,但是搭到前端的时候遇到了困惑,因为网 ...

  9. Spring Boot + Vue 前后端分离开发,权限管理的一点思路

    在传统的前后端不分的开发中,权限管理主要通过过滤器或者拦截器来进行(权限管理框架本身也是通过过滤器来实现功能),如果用户不具备某一个角色或者某一个权限,则无法访问某一个页面. 但是在前后端分离中,页面 ...

最新文章

  1. phpstudy2014 php7.0,phpstudy下载_phpStudy下载2014 官方版_php环境集成包 1.0_零度软件园...
  2. XPath基本概念(一)
  3. 如何查看java对象的大小
  4. Tkinter的Toplevel组件
  5. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装
  6. [html] websocket和http2有什么区别?http2能取代websocket吗?为什么?
  7. Servlet 文件上传
  8. 大数据学习笔记27:MR案例——多输入源处理成绩
  9. excel判断单元格包含指定内容的函数用=IF(COUNTIF(A1,*内容*),0,1)
  10. springboot 使用mybatis与mybatis-generator与druid (gradle构建)
  11. tftpd32刷路由器方法_不走弯路:小米路由器3G 刷Padavan固件简单教程
  12. [BZOJ5064] [HDU3652] B-number 数位DP
  13. windows7副本不是正版问题
  14. android音乐搜索功能实现,撸个应用学Android——空灵音乐本地音乐版
  15. Envoy 代理开源五周年,创始人 Matt Klein 亲述开源心路历程及经验教训
  16. 浅析数据中心布线系统的绿色环保与节能
  17. 抓取东方财富网股票信息
  18. 既生AtomicXXX,何生LongAdder?
  19. 学习游戏3D建模电脑推荐,入门级应该怎么学才能做出好看的模型?
  20. 闲的没事干看看博弈,感觉逼格屌屌的

热门文章

  1. 【转】各大银行IT情况对比
  2. 物流知识:世界物流企业50强
  3. 【微信公众平台对接】有关【创建发票卡券模板】调用示例
  4. 2020年考研英语二真题
  5. vue输入框输入触发事件_详解.vue文件中监听input输入事件(oninput)
  6. 【大学生校园网搭建项目(内附pkt文件)】
  7. 【转】身份链的定义和国外典型身份链的分析
  8. java创建文件夹和文件并写入
  9. 【腾讯轻量应用服务器上部署kafka并通过flink读取kafka数据】
  10. disabled属性的添加与移除