Java中使用Jacob实现Windows下语音合成并生成音频文件
场景
在服务端根据执行的中文文字内容合成相应的音频文件。
这里推荐一种在Windows下调用jacob.dll文件实现语音合成。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
首先需要下载jacob的dll文件和jar包。
https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/13188938
下载之后将其解压
然后这里面就会有需要的dll文件和jar包。
首先找到JAVA环境变量配置的JAVA_HOME下的bin目录,这里是
C:\Program Files\Java\jdk1.8.0_241\bin
然后将上面的两个dll复制到此路径下
然后打开Eclipse,新建一个Java Project
然后新建lib文件夹,将上面的jar包复制到lib下,然后在src下新建包,包下新建main方法
然后在项目上右键-Build Path -Config Build Path
然后在Libraries中Add JARs 将lib下的jar包添加进来,点击Apply and Close
然后修改main方法如下
package com.badao.jacob;import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;public class TTSMain {public static void main(String[] args) {ActiveXComponent ax = null;String str="公众号:霸道的程序猿";try { ax = new ActiveXComponent("Sapi.SpVoice");//运行时输出语音内容Dispatch spVoice = ax.getObject();// 音量 0-100ax.setProperty("Volume", new Variant(100));// 语音朗读速度 -10 到 +10ax.setProperty("Rate", new Variant(-2));// 执行朗读Dispatch.call(spVoice, "Speak", new Variant(str));//下面是构建文件流把生成语音文件ax = new ActiveXComponent("Sapi.SpFileStream");Dispatch spFileStream = ax.getObject();ax = new ActiveXComponent("Sapi.SpAudioFormat");Dispatch spAudioFormat = ax.getObject();//设置音频流格式Dispatch.put(spAudioFormat, "Type", new Variant(22));//设置文件输出流格式Dispatch.putRef(spFileStream, "Format", spAudioFormat);//调用输出 文件流打开方法,创建一个.wav文件Dispatch.call(spFileStream, "Open", new Variant("D:\\badao.wav"), new Variant(3), new Variant(true));//设置声音对象的音频输出流为输出文件对象Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);//设置音量 0到100Dispatch.put(spVoice, "Volume", new Variant(100));//设置朗读速度Dispatch.put(spVoice, "Rate", new Variant(-2));//开始朗读Dispatch.call(spVoice, "Speak", new Variant(str));//关闭输出文件Dispatch.call(spFileStream, "Close");Dispatch.putRef(spVoice, "AudioOutputStream", null);spAudioFormat.safeRelease();spFileStream.safeRelease();spVoice.safeRelease();ax.safeRelease();System.out.println("语音合成成功");} catch (Exception e) { e.printStackTrace();}}}
这里指定生成的音频文件的路径为
D:\\badao.wav
确保此路径存在,然后在此右键Run AS-Java Application
没有报错并输出成功信息则会在指定路径下生成音频文件。
示例代码下载:
https://download.csdn.net/download/BADAO_LIUMANG_QIZHI/13188948
Java中使用Jacob实现Windows下语音合成并生成音频文件相关推荐
- java中sc的快捷键,Windows下的SC命令参考
C:\tmp>sc /? 错误: 未知命令 描述: SC 是用于与服务控制管理器和服务进行通信的命令行程序. 用法: sc [command] [service name] ... 选项 的格 ...
- 【RMAN】RMAN脚本中使用替换变量--windows 下rman全备脚本
[RMAN]RMAN脚本中使用替换变量--windows 下rman全备脚本 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...
- java环境的配置——实现win10下双击直接运行jar文件
java环境的配置--实现win10下双击直接运行jar文件 在渗透测试的过程中很多工具的安装和使用需要java环境,下面我来介绍一下java环境配置的超详细步骤(包含怎样实现win10下双击直接运行 ...
- 19秋计算机应用基础在线作业2,计算机应用基础19秋在线作业2 Windows 下能浏览并管理文件 驱动器及网络连接的强大工具是...
1.Evaluation Warning: The document was created with Spire.Doc for .NET.计算机应用基础19秋在线作业21 单选题1 Windows ...
- windows下使用waveOut播放音频pcm
目录 一.前言 二.waveOut主要API介绍 三.waveOut播放PCM音频框架 <Windows平台使用waveOut播放PCM数据代码实现>链接: https://edu.csd ...
- windows下右键快速新建md文件
windows下右键快速新建md文件 转载自Keavnn'Blog 今天新建Markdown文件的时候发现很不方便,之前我是将typora固定到任务栏,点击图标就可以打开新建Markdown文件,今天 ...
- svn服务器如何删文件,windows下 svn服务器端 无法删除文件,只能删除文件夹,这是怎么回...
windows下 svn服务器端 无法删除文件,只能删除文件夹,这是怎么回 (2011-06-22 22:32:46) 标签: 情缘 咖啡机 杂谈 念删除文件时,右键后没有瞥见有删除的选项!敬辞谁理解 ...
- python编译exe文件太大了_python编译windows下可执行的exe文件
python编译windows下可执行的exe文件的操作流程: 1.在安装python环境的windows下,安装 pyinstaller,请在dos下执行如下命令: pip install pyin ...
- Java中使用字符流读取UTF-8和写出txt文件 乱码 问题
乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:
最新文章
- 总结|深度学习实现缺陷检测
- 走在技术前沿的 iOS 架构实现
- TCP/IP / 如何进行流量控制( flow control )?
- android socket 服务,android 创建socket 通信型service
- Redis 的应用场景
- 将jOOQ与Spring结合使用:配置
- linux kernel 调度,在Linux中,实时调度_kernel_开发99编程知识库
- hadoop SecondNamenode
- SCOM 2012 SP1---安装SCOM 2012 SP1
- tips to understand kexec
- 效能评估软件解决方案
- 全新微头像V2.1.8版全套iApp源码分享
- android 软解8k视频,Android Q+5G现场播放8K视频:画面流畅
- 四川水泥杂志四川水泥杂志社四川水泥编辑部2022年第11期目录
- 计算机软件实习每日学习打卡(3)20201204
- 关于ONVIF协议你不得不知的6个常见问题
- 外盘国际期货是否合法吗?为啥还有人做期货主账户?
- 问题 sparksql Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
- 带你玩转IntelliJ IDEA操作手册
- 二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历
热门文章
- linux——vim命令详细说明
- WireConnection 最小生成树,prim 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
- SpringMVC中过滤器和拦截器的区别
- ScheduledThreadPoolExecutor定时任务线程池执行原理分析
- linux各版本代码量,linux各版本对应溢出漏洞总结(溢出代码)
- oracle中那个日期怎么相减_二手车鉴定中最容易混淆的日期读法,你会是那个读错的人吗?...
- linux 64 nc,linux 命令之nc
- 标签的for循环和if_SO面试题08:如何从一个多层嵌套循环中直接跳出?
- vscode php输出,js程序如何在vscode控制台输出
- 以mips为单位衡量微型计算机的性能,2016计算机二级《MS Office》选择题专项训练...