IESM项目实训三

因百度语音没有提供实时语音识别-JAVA SDK,需要设计为一定时间间隔获取用户音频,识别结果。设计每一时间间隔需要合成一段简单音频以提醒用户,用户可以正常依次录入成绩,避免混乱。使用的依旧是百度语音技术中的语音合成,如果添加了语音识别的jar包,不需要再额外导入。
考虑合成的音频播放成功向前端返回响应后,才会执行后面的程序,避免连接超时,尽量将合成的语音文本设置简短,使用语音合成中的,短文本在线合成。
合成后播放音频额外添加了依赖:

<!--语音播放-->
<dependency><groupId>javazoom</groupId><artifactId>jlayer</artifactId><version>1.0.1</version>
</dependency>

工具类定义如下:

public class VoiceCompose {public static final String APP_ID = "26041279";public static final String API_KEY = "SeVYDSPOfZxVDY3sSNQ9NzyK";public static final String SECRET_KEY = "RtGRKVSnQBgSIIY7zCMfbHQzfAAgIGIi";private static final AipSpeech aipSpeech = getAipSpeech();//音频播放控制private static Player player;//初期测试将合成音频保存private static String filename = "output.mp3";//和语音识别相同public static AipSpeech getAipSpeech() {// 初始化一个AipSpeechAipSpeech aipSpeech = new AipSpeech(APP_ID, API_KEY, SECRET_KEY);// 可选:设置网络连接参数aipSpeech.setConnectionTimeoutInMillis(2000000);aipSpeech.setSocketTimeoutInMillis(60000000);// 可选:设置代理服务器地址, http和socket二选一,或者均不设置//aipSpeech.setHttpProxy("proxy_host", proxy_port);  // 设置http代理//aipSpeech.setSocketProxy("proxy_host", proxy_port);  // 设置socket代理// 可选:设置log4j日志输出格式,若不设置,则使用默认配置// 也可以直接通过jvm启动参数设置此环境变量// System.setProperty("aip.log4j.conf", "path/to/your/log4j.properties");return aipSpeech;}
/*** 将文字转为MP3文件,需联网,依靠百度语音合成*/
public boolean getMP3ByText(String text){player = null;// 设置可选参数HashMap<String, Object> options = new HashMap<>();// 语速,取值0-9,默认为5中语速options.put("spd", "5");// 音调,取值0-9,默认为5中语调options.put("pit", "5");// 音量,取值0-15,默认为5中音量options.put("vol", "5");// 发音人选择, 0为女声,1为男声,3为情感合成-度逍遥,4为情感合成-度丫丫,默认为普通女options.put("per", "4");// 调用接口// text 合成的文本,使用UTF-8编码。小于2048个中文字或者英文数字。(文本在百度服务器内转换为GBK后,长度必须小于4096字节)// lang 固定值zh。语言选择,目前只有中英文混合模式,填写固定值zh// ctp 客户端类型选择,web端填写固定值1TtsResponse res = aipSpeech.synthesis(text, "zh", 1, options);// 如果合成成功,下行数据为二进制语音文件,包含在data中。 如果合成出现错误,则会填充返回值到result中。// 若请求错误,服务器将返回的JSON文本包含以下参数:// error_code:错误码。// error_msg:错误描述信息,帮助理解和解决发生的错误。byte[] data = res.getData();JSONObject res1 = res.getResult();if (data != null) {try {Util.writeBytesToFileSystem(data, filename);} catch (IOException e) {e.printStackTrace();return false;}}if (res1 != null) {try {System.out.println(res1.toString(2));} catch (JSONException e) {e.printStackTrace();}}return true;
}//合成音频播放,需要额外添加依赖public void playMP3(){try {BufferedInputStream buffer = new BufferedInputStream(new FileInputStream(filename));// 需导入javazoom.jl.player.Player,下载地址http://www.javazoom.net/javalayer/sources/jlayer1.0.1.zipplayer = new Player(buffer);player.play();} catch (Exception e) {System.out.println(e);}}//查询播放状态public String playerStatus(){if(player == null){return "null";}else if(player.isComplete()){return "played";}else{return "playing";}}//语音合成调用方式参照如下public void compose(String text){VoiceCompose voiceCompose = new VoiceCompose();if(!voiceCompose.getMP3ByText(text)){System.out.println("转换失败");}else{voiceCompose.playMP3();}}
}

IESM项目实训三——语音合成工具类相关推荐

  1. IESM项目实训四——Web Audio录音和字符串转拼音

    IESM项目实训四 通过浏览器录制音频,生成可供百度语音识别api使用的pcm音频文件,然后将音频数据传至后端.根据百度语音识别api文档要求,音频文件为pcm格式,单音道,16k采样率,16位深. ...

  2. 学生计算机培训照片,四川新华电脑学校三维项目实训室参观照片

    四川新华电脑学校为加强学生的实践动手能力,每个专业开设项目实训室,新华独创"任务驱动式五步教学法"让每位新华学子理论与实践并驾齐驱,学校课程设置改革紧跟市场需求,市场需要什么人才, ...

  3. 视频教程-JSP从入门到精通2016+在线视频教学平台项目实训-其他

    JSP从入门到精通2016+在线视频教学平台项目实训 19年软件开发经验,设计开发40多个大型软件,10年从事高等教育,主要为java系列课程,带你轻松进入java生涯. 赖国荣 ¥68.00 立即订 ...

  4. 项目实训第三周第三次

    项目实训第三周第三次记录 1.任务安排 2.任务分析 2.1显示待审核的申诉请求 2.2同意申诉请求 2.3拒绝申诉请求 3.具体代码 3.1AppealMapper 3.2AppealService ...

  5. 山东大学软件学院项目实训-创新实训-SDUMeeting(三)

    山东大学软件学院项目实训-创新实训-SDUMeeting(三) 山大会议项目web安全之文件注入防护 一.前言 山大会议的客户端加入了对用户自定义头像的支持,需要用户自行上传头像图片,这个过程存在文件 ...

  6. 计算机控制电梯如需改变功能 则,电梯维修项目教程 教学课件 作者 孙文涛附加答案试卷综合实训三模拟试题(13).doc...

    PAGE 5 深圳高级技工学校2011-2012学年第二学期 <电梯综合实训三>理论模拟试题(13) : 号 学 : 级 班 : 名 姓 ┄ ┄ ┄ ┄一一 ┄ ┄┄ ┄┄┄ 线 此 过 ...

  7. 【项目实训】基于人脸识别的课堂签到管理系统(python+qt5+sqlite3+百度智能云)

    [项目实训]基于人脸识别的课堂签到管理系统(python+qt5+sqlite3+百度智能云) 一.环境介绍 二.签到功能 2.1 启动签到 2.2 结束签到 三.用户组操作 3.1 添加用户组 3. ...

  8. 项目实训(校园互助平台)

    项目实训 前言 一.开题答辩(3月11号) 二.准备阶段 1.任务分配(3月12日) 2.购买服务器,搭建服务器(3月13日) 3.购买域名,申请备案(3月15日-3月20日) 4.域名备案成功,添加 ...

  9. 项目实训-关键词提取-任务理解工作分配

    项目实训记录系列博客 一马当先,争做国家栋梁. 博客说明 本博客初衷是用于学校项目实训知识梳理.工作内容.收获感悟的记录. 若能在您的学习之路上有所帮助,不胜荣幸.但若需转载,也请注明出处. 博客包含 ...

  10. 视频教程-C++微服务架构及安全云盘项目实训-C/C++

    C++微服务架构及安全云盘项目实训 夏曹俊:南京捷帝科技有限公司创始人,南京大学计算机硕士毕业,有15年c++跨平台项目研发的经验,领导开发过大量的c++虚拟仿真,计算机视觉,嵌入式图像处理,云安全审 ...

最新文章

  1. argparse库 学习记录
  2. 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 3
  3. java文件流 m.jb51.net_Linux指令范例速查手册(第2版)PDF 下载
  4. mysql dataset_数据库 dataset database
  5. centos7 postgresql9和postgis2.1插件编译部署
  6. 力扣刷题【20,21,26,27,35】
  7. 使用Idea添加PYTHONPATH的一种方案
  8. error parsing xml:unbound prefix
  9. 雷林鹏分享:jQuery EasyUI 菜单与按钮 - 创建链接按钮
  10. arduino步进电机程序库_arduino控制步进电机的库(带有驱动器)
  11. 彻底卸载sql sever 2005
  12. 计算不可压缩流体 -- 数学基础
  13. Webgl-超级基础随笔2-矩阵与绘制Cude
  14. java数字签名实现简单的动态秘钥
  15. 计算机文件类型与扩展表,新建excel表格的文件格式和扩展名不匹配怎么办
  16. 模电1.1 半导体基础知识
  17. CommonJs和ESModule的区别及优缺点
  18. 在安装Windows时手动创建分区
  19. 计算机u盘驱动坏了如何的修复,U盘损坏五种常见问题的修复方式
  20. 前端程序员忙里偷闲入门一波SpringBoot

热门文章

  1. linear-gradient实现Ps标尺
  2. vue+element中多选框选一个然而就全部选中了
  3. Spring Security系列(一)——登录认证基本配置
  4. Python正向和反向迭代器介绍
  5. 我对“结构化思维”的理解 - 直播分享
  6. WIFISON使用及适配
  7. MIT molecular Biology 笔记11 位点特异性重组 和 DNA转座
  8. Volatility3安装
  9. 大一新生计算机强化训练小结,大一新生军训个人小结
  10. AutoLeaders控制组——51单片机学习笔记(LED点阵屏、DS1302时钟芯片)