标题我有一篇文章写得是Windows上可运行的,因为linux无法运行dll文件,所以那个方法我pass了

这个方法是百度的,需要在百度申请用户信息,然后百度会给一个key

package com.zjht.ticketauthcenter;import com.alibaba.fastjson.JSONObject;
import com.sun.corba.se.spi.ior.ObjectId;
import com.zjht.currentserver.model.ResultInfo;
import com.zjht.currentserver.model.enums.ServerMsgEnum;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;public class Milck {//注入mango数据库@Autowiredprivate GridFsTemplate gridFsTemplate;// 发音人选择, 基础音库:0为度小美,1为度小宇,3为度逍遥,4为度丫丫,// 精品音库:5为度小娇,103为度米朵,106为度博文,110为度小童,111为度小萌,默认为度小美private final int per = 0;// 语速,取值0-15,默认为5中语速private final int spd = 5;// 音调,取值0-15,默认为5中语调private final int pit = 5;// 音量,取值0-9,默认为5中音量private final int vol = 5;// 下载的文件格式, 3:mp3(default) 4: pcm-16k 5: pcm-8k 6. wavprivate final int aue = 3;public final String url = "http://tsn.baidu.com/text2audio"; // 可以使用httpsprivate String cuid = "1234567JAVA";@Testpublic void asd(){String text = "我的问题";ResultInfo res = new ResultInfo();//账号密码在百度申请String secretKey = "XXXXXXXXXX";String appKey = "XXXXXXXXXX";TokenHolder holder = new TokenHolder(appKey, secretKey, TokenHolder.ASR_SCOPE);try {holder.refresh();String token = holder.getToken();// 此处2次urlencode, 确保特殊字符被正确编码String params = "tex=" + ConnUtil.urlEncode(ConnUtil.urlEncode(text));params += "&per=" + per;params += "&spd=" + spd;params += "&pit=" + pit;params += "&vol=" + vol;params += "&cuid=" + cuid;params += "&tok=" + token;params += "&aue=" + aue;params += "&lan=zh&ctp=1";System.out.println(url + "?" + params); // 反馈请带上此url,浏览器上可以测试HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();conn.setDoInput(true);conn.setDoOutput(true);conn.setConnectTimeout(5000);PrintWriter printWriter = new PrintWriter(conn.getOutputStream());printWriter.write(params);printWriter.close();String contentType = conn.getContentType();if (contentType.contains("audio/")) {byte[] bytes = ConnUtil.getResponseBytes(conn);long num = (long) (Math.random() * 1000000);String filePathName = "/data/tmp/videofile/"+num+".mp3";File file = new File(filePathName); // 打开mp3文件即可播放FileOutputStream os = new FileOutputStream(file);os.write(bytes);os.close();System.out.println("audio file write to " + file.getAbsolutePath());File fileMP3 = new File(filePathName);InputStream in = new FileInputStream(fileMP3);//存入mogo中ObjectId gridFSFile = gridFsTemplate.store(in, String.valueOf(num), "audio/mp3");String mongodbkey = "";if (gridFSFile != null) {mongodbkey = gridFSFile.toString();}//删除文件if (fileMP3.isFile() && fileMP3.exists()) {fileMP3.delete();}//地址String src = "http://biaozhunhua.zjht100.com/tsscjk/common-api/common/preview?file_id=" + mongodbkey;res.setMsg(ServerMsgEnum.SUCCESS.getServerMsg());res.setCode(ServerMsgEnum.SUCCESS.getServerCode());res.setData(src);} else {res.setMsg(ServerMsgEnum.SUCCESS.getServerMsg());res.setCode(ServerMsgEnum.SUCCESS.getServerCode());}} catch (Exception e) {e.printStackTrace();}}
}
public class TokenHolder {public static final String ASR_SCOPE = "audio_voice_assistant_get";public static final String TTS_SCOPE = "audio_tts_post";/*** URL , Token的url,http可以改为https*/private static final String URL = "http://openapi.baidu.com/oauth/2.0/token";/*** asr的权限 scope 是  "audio_voice_assistant_get"* tts 的权限 scope 是 "audio_tts_post"*/private String scope;/*** 网页上申请语音识别应用获取的apiKey*/private String apiKey;/*** 网页上申请语音识别应用获取的secretKey*/private String secretKey;/*** 保存访问接口获取的token*/private String token;/*** 当前的时间戳,毫秒*/private long expiresAt;/*** @param apiKey    网页上申请语音识别应用获取的apiKey* @param secretKey 网页上申请语音识别应用获取的secretKey*/public TokenHolder(String apiKey, String secretKey, String scope) {this.apiKey = apiKey;this.secretKey = secretKey;this.scope = scope;}/*** 获取token,refresh 方法后调用有效** @return*/public String getToken() {return token;}/*** 获取过期时间,refresh 方法后调用有效** @return*/public long getExpiresAt() {return expiresAt;}/*** 获取token** @return* @throws IOException   http请求错误*/public void refresh() throws IOException, DemoException {String getTokenURL = URL + "?grant_type=client_credentials"+ "&client_id=" + ConnUtil.urlEncode(apiKey) + "&client_secret=" + ConnUtil.urlEncode(secretKey);// 打印的url出来放到浏览器内可以复现System.out.println("token URL:" + getTokenURL);URL urlconn = new URL(getTokenURL);HttpURLConnection conn = (HttpURLConnection) urlconn.openConnection();conn.setConnectTimeout(5000);String result = ConnUtil.getResponseString(conn);System.out.println("Token result json:" + result);parseJson(result);}/*** @param result token接口获得的result* @throws DemoException*/private void parseJson(String result) throws DemoException {JSONObject json = JSONObject.parseObject(result);if (!json.containsKey("access_token")) {// 返回没有access_token字段throw new DemoException("access_token not obtained, " + result);}if (!json.containsKey("scope")) {// 返回没有scope字段throw new DemoException("scope not obtained, " + result);}if (!json.getString("scope").contains(scope)) {throw new DemoException("scope not exist, " + scope + "," + result);}token = json.getString("access_token");expiresAt = System.currentTimeMillis() + json.getLong("expires_in") * 1000;}
}
public class DemoException extends Exception {public DemoException(String message) {super(message);}
}
public class ConnUtil {/*** UrlEncode, UTF-8 编码** @param str*            原始字符串* @return*/public static String urlEncode(String str) {String result = null;try {result = URLEncoder.encode(str, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}return result;}/*** 从HttpURLConnection 获取返回的字符串** @param conn* @return* @throws IOException* @throws DemoException*/public static String getResponseString(HttpURLConnection conn) throws IOException, DemoException {return new String(getResponseBytes(conn));}/*** 从HttpURLConnection 获取返回的bytes 注意 HttpURLConnection自身问题,* 400类错误,会直接抛出异常。不能获取conn.getInputStream();** @param conn* @return* @throws IOException*             http请求错误* @throws DemoException*             http 的状态码不是 200*/public static byte[] getResponseBytes(HttpURLConnection conn) throws IOException, DemoException {int responseCode = conn.getResponseCode();InputStream inputStream = conn.getInputStream();if (responseCode != 200) {System.err.println("http 请求返回的状态码错误,期望200, 当前是 " + responseCode);if (responseCode == 401) {System.err.println("可能是appkey appSecret 填错");}System.err.println("response headers" + conn.getHeaderFields());if (inputStream == null) {inputStream = conn.getErrorStream();}byte[] result = getInputStreamContent(inputStream);System.err.println(new String(result));throw new DemoException("http response code is" + responseCode);}byte[] result = getInputStreamContent(inputStream);return result;}/*** 将InputStream内的内容全部读取,作为bytes返回** @param is* @return* @throws IOException*             @see InputStream.read()*/public static byte[] getInputStreamContent(InputStream is) throws IOException {byte[] b = new byte[1024];// 定义一个输出流存储接收到的数据ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();// 开始接收数据int len = 0;while (true) {len = is.read(b);if (len == -1) {// 数据读完break;}byteArrayOutputStream.write(b, 0, len);}return byteArrayOutputStream.toByteArray();}
}

文字转语音,可在linux系统部署相关推荐

  1. linux部署项目文档,Linux系统部署项目

    Linux系统部署项目 在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署.在下文中$CATALINA_HOME指的是Tomcat根目录. 一.静态部署 静态部署指的是我们在服 ...

  2. apache camel 相关配置_小白在 linux 系统部署apache、mysql、Laravel 环境学习笔记!

    在 linux 系统部署apache.mysql.Laravel 环境 一.在 CentOS 7.2 服务器下 部署 apache yum clean all --- 功能是:清除系统垃圾 yum - ...

  3. 阿里云自动java和mysql数据库_阿里云服务器之基于Linux系统部署上线JavaWeb项目和连接MySQL数据库(从购买云服务器到发布JavaWeb项目全套详细流程)...

    阿里云服务器之基于Linux系统部署上线JavaWeb项目和连接MySQL数据库(从购买云服务器到发布JavaWeb项目全套详细流程) (仅此纪念人生第一篇学习博客) 前阵子接了一个小小的JavaWe ...

  4. Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command ‘........‘

    Ubuntu下Linux系统部署fisco时bash操作报错权限不足(permission denied) failed to run command '-' 例如这里就指的是fisco-bcos这个 ...

  5. 基于Linux系统部署新世纪版五笔输入法

    基于Linux系统部署新世纪版五笔输入法 出于工作需要,突然生出学习五笔的想法.五笔有三个版本:86/98/新世纪. 按照新手上路,有新学新的想法,选择了新世纪版. 然后发现了个坑:公司电脑是Linu ...

  6. linux系统部署web项目

    十二.Linux下安装软件[重点] 12.1 安装JDK 在Linux下安装JDK,并配置JAVA_HOME环境变量-- 12.1.1 下载JDK的压缩包 去逛网下载压缩包,由于oracle官网更新, ...

  7. 巴别塔合约作战终端开发日记2——Linux系统部署项目

    1. 安装XShell和Xftp 其中Xshell用于输入Linux命令,Xftp可以方便地进行文件传输. 2. 连接服务器 之后输入用户名密码保存指纹秘钥就可以正常使用了. 服务器就是一台Linux ...

  8. Linux系统部署Javaweb环境

    一般Javaweb的开发环境都是在Windows系统下,Windows配置javaweb环境比较复杂的也就是jdk和非安装的tomcat了.一直想亲手配置一下Linux服务器级别的Javaweb环境, ...

  9. [手机Linux] 二,安卓手机安装linux系统, 部署完全属于自己的服务器(Linux Deploy)

    背景: 之前买过一台阿里云服务器1G1核的,玩起来真的是卡脑壳,卡卡的,经费在燃烧却得不到灰烬,而是萌想做一台完全属于自己的服务器,而是百度发现原来我们的安卓手机也可以当服务器器(Linux),而是翻 ...

  10. Linux系统部署JDK

    一.JDK是什么? JDK是 Java 语言的软件开发工具包,主要用于移动设备.嵌入式设备上的java应用程序.JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和 ...

最新文章

  1. Cassandra 2016/00
  2. 【IT资讯】TIOBE - 2020年8月编程语言排行
  3. 1574: [Usaco2009 Jan]地震损坏Damage
  4. layui弹框提示层:倒计时(layui-font-red颜色定义)
  5. DateTime 格式相比较,timestampdiff() 函数的运用
  6. IPLAT62--新增
  7. 数据分析,如何做才算“深入”?
  8. python对称加密算法库_对称加密算法
  9. 任玉刚【Android开发艺术探索】读后笔记二
  10. (五)可重入锁ReentrantLock的底层原理实现?
  11. 中文的括号和英文的括号区别_易混标点符号:中英文冒号(:、:)、比号(∶)...
  12. Kalrry记录---ing
  13. VIM插件管理:管理插件的插件pathogen
  14. CINTA作业一:加减乘除
  15. 计算机方向键是哪个键,你可能从来没碰过的键,电脑键盘方向键上面的3个按键有什么用?...
  16. nginx重启报错:nginx: [error] open() “/usr/local/nginx/logs/nginx.pid“ failed (2: No such file or directo
  17. Struts2通配符映射/Struts action name=/*/* method={2} class=com.jxc.action.{1}Action result
  18. 一张图分出你是左脑发达还是右脑发达(转)
  19. FGMap学习之--天气预报
  20. python3.6怎么安装linux_linux安装python3.6

热门文章

  1. 1984年 洛杉矶 第23届奥运会
  2. centos php yum gd库,Centos7下PHP安装gd库的实例讲解
  3. 16G906 装配式混凝土剪力墙结构住宅施工工艺图解
  4. [水]2015百度之星初赛第一场 超级赛亚ACMer
  5. xui和嘟嘟桌面哪个好_Window10中我的电脑和控制面板选项在桌面木有咋把它给整到电脑桌面上来呢...
  6. Android获取第三方程序的包名
  7. 初次探图(图的概念--完全图、路径)
  8. 城市燃气运营模式解析与商业智能 BI 分析知识体系
  9. 26岁学历低的我,是如何从工厂转行Python工程师?
  10. 奇怪的文件路径问题(\ \\ / //等) getAbsolutePath与getCanonicalPath