因为讯飞官方提供的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. 第十四篇:有概率的上下文无关语法Probabilistic Context-Free Grammar
  2. 放心,GPT-3 不会“杀死”编程
  3. SimpleDateFormat处理 dd-MMM-yy类型日期
  4. vs2019装了WDK后,编译其他vc工程,提示无法打开文件msvcprtd.lib
  5. nginx + openssl 搭建需要身份验证的文件下载服务器
  6. maven安装使用修改镜像仓库
  7. 介绍 Echoo: go 语言编写的 echo 服务器
  8. mysql(slow-query) 快速开启慢日志查询的方法
  9. AtCoder Regular Contest 100 D - Equal Cut 思维 + 前缀和
  10. php时间转分钟前,PHP把时间转换成几分钟前几小时前几天前
  11. [BZOJ3676][Apio2014]回文串
  12. 【LeetCode】——根据前序和中序遍历构建二叉树
  13. 大数据测试之hadoop单机环境搭建(超级详细版)
  14. mongodb配置文件启动linux,Linux运维知识之Mongodb启动方法:设定参数启动;从设置文件启动...
  15. 【整理】牛客网编程题-前端篇(简单难度)
  16. MOSFET | 如何看懂MOSFET手册?①
  17. origin柱状图同时有两组数和两组数差值_Origin入门教程(十二):「误差棒」棒棒棒儿...
  18. 堪萨斯州立大学计算机科学,美国留学:2019计算机专业最新排名
  19. 已解决-内部版本7601 此windows副本不是正版
  20. 利用阿里云短信找回密码 SpringBoot集成Mybatis

热门文章

  1. ready_valid 协议
  2. Appium基础 — Chrome Inspect定位工具
  3. 高德地图使用之自定义地图
  4. html加载onchange事件,HTML onchange事件用法及代码示例
  5. html语言disabled,HTML: input disabled 属性
  6. 硬盘基本知识(磁道、扇区、柱面、磁头数、簇、MBR、DBR)
  7. linux 之 crond定时任务
  8. Fiddler实现手机抓包——小白入门
  9. 研究生如何选择适合自己的导师
  10. linux系统中的进程调度采用( ),Linux系统中的进程调度.ppt