科大讯飞 java Web api语音生成和语音识别参考

对此感兴趣的可以加群261074724 

 文档地址

  http://doc.xfyun.cn/rest_api/%E6%8E%A5%E5%8F%A3%E6%A6%82%E8%BF%B0.html

 

 

{ "code":"10105", "desc":"illegal access|illegal client_ip", "data":"", "sid":"xxxxxx" }

 

出现这个错误需要把ip加到后台上面地址底部有说明

package com.test;

 


import java.io.BufferedInputStream; 
import java.io.FileOutputStream; 
import java.io.OutputStream; 
import java.net.HttpURLConnection;
import java.net.URL; 


import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils; 
/**
 * commons-codec-1.9.jar

 

 

 * 科大讯飞语音合成 

 

 * @author lilin

 *
 */
public class Test {
     /**
      * 科大讯飞语音识别写入参考
      * https://github.com/IflytekAIUI/DemoCode/blob/master/webapi/java/Iat.java
      */
final static String APPID="**",APPKEY="**";
final static String url = "http://api.xfyun.cn/v1/service/v1/tts/";
public static void sendPost( String text)throws Exception{
    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")); 
//建立连接 
            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-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("C:/Users/lilin/Desktop/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("你好啊美女");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}

}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
以下是使用科大讯飞API进行语音识别和合成的Python代码示例: 语音识别: ```python import requests import json url = "http://api.xfyun.cn/v1/service/v1/iat" APPID = "YOUR_APPID" # 替换为自己的APPID API_KEY = "YOUR_API_KEY" # 替换为自己的API_KEY audio_file = "test.wav" # 需要识别的音频文件路径 with open(audio_file, "rb") as f: audio_data = f.read() param = { "engine_type": "sms16k", # 引擎类型,此处使用16k采样率的普通话识别 "aue": "raw", # 音频编码格式,此处为未压缩的音频数据 } headers = { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", "X-Appid": APPID, "X-CurTime": str(int(time.time())), "X-Param": base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8')).decode('utf-8'), "X-CheckSum": hashlib.md5((API_KEY + str(int(time.time())) + base64.b64encode(audio_data).decode('utf-8')) \ .encode('utf-8')).hexdigest(), } response = requests.post(url, headers=headers, data=audio_data) result = json.loads(response.text) if result["code"] == "0": print("识别结果:", result["data"]) else: print("识别失败:", result["desc"]) ``` 语音合成: ```python import requests import json import time import hashlib import base64 url = "http://api.xfyun.cn/v1/service/v1/tts" APPID = "YOUR_APPID" # 替换为自己的APPID API_KEY = "YOUR_API_KEY" # 替换为自己的API_KEY text = "科大讯飞提供全球领先的人工智能技术、产品和服务,致力于让机器具备智能的思维和感官能力。" # 需要合成的文本内容 param = { "auf": "audio/L16;rate=16000", # 音频采样率和编码格式 "aue": "lame", # 音频编码格式,此处使用mp3 "voice_name": "xiaoyan", # 合成的发音人 "speed": "50", # 合成语速 "volume": "50", # 合成音量 "pitch": "50", # 合成音调 "engine_type": "intp65", # 引擎类型 "text": text, # 合成的文本内容 } headers = { "Content-Type": "application/x-www-form-urlencoded; charset=utf-8", "X-Appid": APPID, "X-CurTime": str(int(time.time())), "X-Param": base64.b64encode(json.dumps(param).replace(' ', '').encode('utf-8')).decode('utf-8'), "X-CheckSum": hashlib.md5((API_KEY + str(int(time.time())) + base64.b64encode(text.encode('utf-8')).decode('utf-8')) \ .encode('utf-8')).hexdigest(), } response = requests.post(url, headers=headers) result = json.loads(response.text) if result["code"] == "0": audio_data = base64.b64decode(result["data"]) audio_file = "output.mp3" # 合成的音频保存路径 with open(audio_file, "wb") as f: f.write(audio_data) print("合成成功,音频文件保存在:", audio_file) else: print("合成失败:", result["desc"]) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值