美文网首页
SpringMVC调用讯飞语音合成WebApi示例

SpringMVC调用讯飞语音合成WebApi示例

作者: 知微见珠 | 来源:发表于2018-03-29 22:47 被阅读0次

最近讯飞开放了语音合成的WebAPI,相对于之前SDK的方式方便了很多,下面使用SpringMVC写了一个示例,调用讯飞的合成API。

  • XFHelper.java
    负责调用讯飞WebAPI接口,处理HTTP头和参数,解析结果
public class XFAiHelper {

    private static final String APP_ID = "你的APP_ID";
    private static final String TTS_APP_KEY = "你的APP_KEY";

    private static final String API_DOMAIN = "http://api.xfyun.cn";
    private static final String TTS_PATH = "/v1/service/v1/tts";
    private static final byte[] TTS_PARAM = "{\"auf\":\"audio/L16;rate=16000\",\"aue\":\"lame\",\"voice_name\":\"xiaoyan\",\"engine_type\":\"aisound\"}".getBytes();
    private static final String CHARSET = "UTF-8";

    public static byte[] tts(String text) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpPost httpPost = new HttpPost(API_DOMAIN + TTS_PATH);
            addFormData(httpPost, "text", text);
            String param = Base64.getEncoder().encodeToString(TTS_PARAM);
            addAiHeader(httpPost, param, TTS_APP_KEY);

            CloseableHttpResponse httpResponse = httpclient.execute(httpPost);
            if (httpResponse.getStatusLine().getStatusCode() == 200
                    && StringUtils.equals(httpResponse.getFirstHeader("Content-Type").getValue(), "audio/mpeg")) {
                InputStream inputStream = httpResponse.getEntity().getContent();
                return IOUtils.toByteArray(inputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }
    private static void addAiHeader(HttpPost httpPost, String param, String appKey, String key, String body) {
        httpPost.setHeader("X-Appid", APP_ID);
        httpPost.setHeader("X-Param", param);

        String curTime = String.valueOf(System.currentTimeMillis() / 1000);
        httpPost.setHeader("X-CurTime", curTime);

        String checkStr = appKey + curTime + param;
        String checkSum = new Md5PasswordEncoder().encodePassword(checkStr, null);
        httpPost.setHeader("X-CheckSum", checkSum);
    }

    private static void addFormData(HttpPost httpPost, String key, String body) throws UnsupportedEncodingException {
        List<NameValuePair> nameValuePairArrayList = new ArrayList<>();
        nameValuePairArrayList.add(new BasicNameValuePair(key, body));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairArrayList, CHARSET));
    }
  • AIController.java
    负责对外提供Web接口
@RequestMapping("/tts")
    public ResponseEntity tts(String text, HttpServletResponse response) throws IOException {
        byte[] audio = XFAiHelper.tts(text);
        if (audio != null && audio.length > 0) {
            final HttpHeaders headers = new HttpHeaders();
            // 如需直接播放音频,需添加对应的ContentType和ContentLength
            headers.setContentType(new MediaType("audio", "mpeg"));
            headers.setContentLength(audio.length);
            // 如需下载音频,添加如下header
            // headers.setContentDispositionFormData("attchement", fileName);
            return new ResponseEntity<>(audio, headers, HttpStatus.OK);
        } else {
            return new ResponseEntity(HttpStatus.INTERNAL_SERVER_ERROR);
        }
    }

相关文章

  • SpringMVC调用讯飞语音合成WebApi示例

    最近讯飞开放了语音合成的WebAPI,相对于之前SDK的方式方便了很多,下面使用SpringMVC写了一个示例,调...

  • 语音识别

    常用平台 科大讯飞 百度语音 这篇博客以科大讯飞为例 常用功能 语音识别 语音合成 集成步骤 在科大讯飞开发平台注...

  • golang 使用科大讯飞进行语音合成与识别

    golang 使用科大讯飞进行语音合成与识别 使用科大讯飞 API 进行语音合成和识别,可识别wav和pcm文件 ...

  • 【iOS篇】使用科大讯飞SDK集成语音合成和识别

    科大讯飞语音集成(语音识别和语音合成) 讯飞开发步骤 1.申请账号链接:http://member.xfyun.c...

  • 讯飞语音合成工具类

    今天看了看讯飞的语音合成接口,写了个工具类: Maven依赖 讯飞配置类 StringUtils Exceptio...

  • 智能语音客服服务助手

    智能语音客服服务助手 语音识别 阿里语音识别 百度语音识别 讯飞语音识别 语音合成 阿里语音合成 百度语音合成 讯...

  • API调用代码

    一、语音合成API调用 1.1、语音合成API调用代码 1.2、语音合成API调用结果代码 1.3.调用结果文件 ...

  • .NET调用讯飞语音识别webapi

    参考资料:语音听写 · 科大讯飞REST_API开发指南 开发目的:前面做语音识别的时候用的百度的API,发现百度...

  • iOS 科大讯飞 语音合成

    1.概述 语音合成是将一段文字转换为成语音,可根据需要合成出不同音色、语速和语调的声音,让机器像人一样开口说话。 ...

  • 讯飞语音

    一、技术来源 讯飞开放平台:http://www.xfyun.cn 主要功能:语音听写、语音识别、语音合成、语义理...

网友评论

      本文标题:SpringMVC调用讯飞语音合成WebApi示例

      本文链接:https://www.haomeiwen.com/subject/ytnvcftx.html