帖子

如何使用讯飞web api实现html页面中的文章朗读(非安卓)

[复制链接]

该用户从未签到

8612 147****0721 发表于 2019-6-17 13:41:29 1#
2语点
使用iis服务器映射到外网的文件,每个页面都是一篇文章,想通过讯飞web api实现html页面中的文章朗读,现在只找到一个demo,可以通过注册完填写appid,使用main方法进行传值,有人做过类似文章朗读的吗。
想问一下,如何实现,具体的思路,比如文章分割后,传过来的值如何接收,页面用什么标签显示,后台可以使用下面的方法吗,是一个一个请求吗,之类的,第一次接触,一头雾水,有demo就最好了。。感谢

以下是我找到的demo,通过main传值就可以生成一个MP3格式的。
final static String APPID="";
final static String url = "http://api.xfyun.cn/v1/service/v1/tts/";
public static void sendPost(String text){
    Base64 base64 = new Base64();
        try {
            URL httpUrl  = new URL(url);
            String param = "{\"auf\":\"audio/L16;rate=16000\",\"aue\":\"lame\",\"voice_name\":\"xiaoyan\",\"speed\":\"50\",\"volume\":\"80\",\"pitch\":\"50\",\"engine_type\":\"intp65\",\"text_type\":\"text\"}";
String paramBase64=base64.encodeAsString( param.getBytes("UTF-8"));
//                    String paramBase64 = jdkBase64(param);
//建立连接
            HttpURLConnection conn = (HttpURLConnection) httpUrl.openConnection();        
            
            conn.setRequestMethod("POST");
         
           String currentTimeMillis =System.currentTimeMillis() / 1000L + "";
           String md5Hex = DigestUtils.md5Hex( (APPKEY + currentTimeMillis + paramBase64).getBytes());
           
conn.setRequestProperty("X-CurTime", currentTimeMillis);
            conn.setRequestProperty("X-Param",paramBase64);  
            conn.setRequestProperty("X-Appid",APPID);  
//                    conn.setRequestProperty("X-Real-Ip", "210.39.17.105");
conn.setRequestProperty("X-CheckSum", md5Hex);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
               
// 设置请求 body
conn.setDoOutput(true);
conn.setDoInput(true);

//设置连接超时和读取超时时间
conn.setConnectTimeout(20000);
conn.setReadTimeout(20000);
            conn.connect();
            
        //POST请求
        OutputStream out = conn.getOutputStream();
        out.write(("text="+text).getBytes());
        out.flush() ;
            
            //读取响应
            BufferedInputStream reader = new BufferedInputStream(  conn.getInputStream());
            String headerField = conn.getHeaderField("Content-type");
            System.out.println(headerField);
            out.close();
            
           if( headerField.equalsIgnoreCase("text/plain") ){
                      System.out.println("错误");
            }else{
            OutputStream outs = new FileOutputStream("D:/a/a.mp3");
            int size = 0, len = 0;
                byte[] buf = new byte[1024];
                while ((size = reader.read(buf)) != -1) {
                     len += size;  outs.write(buf, 0, size);
            }  
            outs.close();
            reader.close();
            }
        conn.disconnect();
        } catch (Exception e) { e.printStackTrace();   }  
}

public static void main(String[] args) {
try {
sendPost("科大语音生成:1.        在线方案通过web api接口或与其它开发语言结合的SDK实现文本转成语音,单次转换语音小于512个字,合成后的音频的自然度和清晰度还可以,另外支持部分方言,网站提供了java、php、go、C#及python3的二次开发demo");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

讯飞2017hj 发表于 2019-6-17 16:09:16
2#
Webapi听写是通过HTTP API的方式给开发者提供一个通用的接口,适用于一次性交互数据传输的AI服务场景,即将音频一次性发送至云端,块式传输,一般推荐用户在服务端调用,所以微信小程序或者H5调用的话需要有录音接口,录完音之后,在自己的服务后台获取到这个音频文件,然后再调用讯飞开放平台的web API听写接口就可以了。

1.png

楼内回复

我不是语音转文字,是文字转语音  详情 发表于 2019-6-17 16:27
使用道具 举报 回复
147****0721 发表于 2019-6-17 16:27:38
3#
讯飞2017hj 发表于 2019-6-17 16:09
Webapi听写是通过HTTP API的方式给开发者提供一个通用的接口,适用于一次性交互数据传输的AI服务场景,即将 ...

我不是语音转文字,是文字转语音
使用道具 举报 回复