讯飞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
原创粉丝点击