场景

在服务端根据执行的中文文字内容合成相应的音频文件。

这里推荐一种在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下语音合成并生成音频文件相关推荐

  1. java中sc的快捷键,Windows下的SC命令参考

    C:\tmp>sc /? 错误:  未知命令 描述: SC 是用于与服务控制管理器和服务进行通信的命令行程序. 用法: sc [command] [service name] ... 选项 的格 ...

  2. 【RMAN】RMAN脚本中使用替换变量--windows 下rman全备脚本

    [RMAN]RMAN脚本中使用替换变量--windows 下rman全备脚本 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也 ...

  3. java环境的配置——实现win10下双击直接运行jar文件

    java环境的配置--实现win10下双击直接运行jar文件 在渗透测试的过程中很多工具的安装和使用需要java环境,下面我来介绍一下java环境配置的超详细步骤(包含怎样实现win10下双击直接运行 ...

  4. 19秋计算机应用基础在线作业2,计算机应用基础19秋在线作业2 Windows 下能浏览并管理文件 驱动器及网络连接的强大工具是...

    1.Evaluation Warning: The document was created with Spire.Doc for .NET.计算机应用基础19秋在线作业21 单选题1 Windows ...

  5. windows下使用waveOut播放音频pcm

    目录 一.前言 二.waveOut主要API介绍 三.waveOut播放PCM音频框架 <Windows平台使用waveOut播放PCM数据代码实现>链接: https://edu.csd ...

  6. windows下右键快速新建md文件

    windows下右键快速新建md文件 转载自Keavnn'Blog 今天新建Markdown文件的时候发现很不方便,之前我是将typora固定到任务栏,点击图标就可以打开新建Markdown文件,今天 ...

  7. svn服务器如何删文件,windows下 svn服务器端 无法删除文件,只能删除文件夹,这是怎么回...

    windows下 svn服务器端 无法删除文件,只能删除文件夹,这是怎么回 (2011-06-22 22:32:46) 标签: 情缘 咖啡机 杂谈 念删除文件时,右键后没有瞥见有删除的选项!敬辞谁理解 ...

  8. python编译exe文件太大了_python编译windows下可执行的exe文件

    python编译windows下可执行的exe文件的操作流程: 1.在安装python环境的windows下,安装 pyinstaller,请在dos下执行如下命令: pip install pyin ...

  9. Java中使用字符流读取UTF-8和写出txt文件 乱码 问题

    乱码问题一直都是非常难受的问题,本文解决Java中使用字符流读取UTF-8和写出txt文件 乱码 话不多说,直接上图 输出结果: 使用代码: 解决:

最新文章

  1. 总结|深度学习实现缺陷检测
  2. 走在技术前沿的 iOS 架构实现
  3. TCP/IP / 如何进行流量控制( flow control )?
  4. android socket 服务,android 创建socket 通信型service
  5. Redis 的应用场景
  6. 将jOOQ与Spring结合使用:配置
  7. linux kernel 调度,在Linux中,实时调度_kernel_开发99编程知识库
  8. hadoop SecondNamenode
  9. SCOM 2012 SP1---安装SCOM 2012 SP1
  10. tips to understand kexec
  11. 效能评估软件解决方案
  12. 全新微头像V2.1.8版全套iApp源码分享
  13. android 软解8k视频,Android Q+5G现场播放8K视频:画面流畅
  14. 四川水泥杂志四川水泥杂志社四川水泥编辑部2022年第11期目录
  15. 计算机软件实习每日学习打卡(3)20201204
  16. 关于ONVIF协议你不得不知的6个常见问题
  17. 外盘国际期货是否合法吗?为啥还有人做期货主账户?
  18. 问题 sparksql Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
  19. 带你玩转IntelliJ IDEA操作手册
  20. 二叉树(Binary Tree):先序遍历、中序遍历、后序遍历和层次遍历

热门文章

  1. linux——vim命令详细说明
  2. WireConnection 最小生成树,prim 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
  3. SpringMVC中过滤器和拦截器的区别
  4. ScheduledThreadPoolExecutor定时任务线程池执行原理分析
  5. linux各版本代码量,linux各版本对应溢出漏洞总结(溢出代码)
  6. oracle中那个日期怎么相减_二手车鉴定中最容易混淆的日期读法,你会是那个读错的人吗?...
  7. linux 64 nc,linux 命令之nc
  8. 标签的for循环和if_SO面试题08:如何从一个多层嵌套循环中直接跳出?
  9. vscode php输出,js程序如何在vscode控制台输出
  10. 以mips为单位衡量微型计算机的性能,2016计算机二级《MS Office》选择题专项训练...