一篇文章讲明白java文本转语音

简介: 一篇文章讲明白java文本转语音

下载jar包

解压,将jacob-1.18-xxx.dll相应放到项目使用的JAVA_HOME\bin下

创建项目,导入jar

 java代码:

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.Dispatch;

import com.jacob.com.Variant;

public class Test {

public static ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice");

public static Dispatch sapo=sap.getObject();

public static void main(String【】 args) {

String str ="测试声音是否正常";

readText(str);

}//代码效果参考:http://www.ezhiqi.com/zx/art_6606.html

public static void readText(String queue) {

try {

//声音大小

sap.setProperty("Volume", new Variant(100));

//语速

sap.setProperty("Rate",new Variant(-2));

//发声

Dispatch.call(sapo,"Speak",new Variant(queue));

}//代码效果参考:http://www.ezhiqi.com/zx/art_3894.html catch (Exception e) {

e.printStackTrace();

}finally{

if(sap==null){

sap = new ActiveXComponent("Sapi.SpVoice");

}

if(sapo==null){

sapo = sap.getObject();

}

}

}

}

如果执行朗读,默认调用系统中的TTS语音播放引擎,若本机没有语音设备

可能会抛出异常(com.jacob.com.ComFailException: Invoke of: Speak)

可观看:

引用

今天收到朋友求助,他用的一款直播工具语音播放弹幕内容的功能不能用了,在询问客服后得到的解释是没有安装语音引擎,遂找到本工具然。

不能正常使用的具体表现为,打开控制面板-(类别模式下)轻松使用-语音识别-文本到语音转换中,无论选择哪种语音都提示无法使用,请切换设备。

在各种网站转了一圈之后,找到了个不错的解决方案,现搬运过来以便大家参考,原视频链接:How to add more TTS Voices in Windows 7/8.1/10 - YouTube

另外,在国内也看到了一篇文章也有类似的解决方案:部分阉割版Win7无法正常使用TTS语音的解决办法_静远的博客-CSDN博客,不过出于能在官网下载尽量在官网下载的原则,还是饶了一点远路。这里仅放出来供大家参考。

解决方法如下:

1.下载 Ms-Speech Runtime Platform 并安装

链接为:Download Microsoft Speech Platform - Runtime (Version 11) from Official Microsoft Download Center

需要注意的是,这个文件其实是分为32位和64位的,不知道为什么下载名称反而都一样了。可以通过文件大小来区分:2.6MB的是x64,2.2MB的是x86,至于那个rtf文件是不需要下载的。

2.下载需要的语音库文件并安装

链接为:Download Microsoft Speech Platform - Runtime Languages (Version 11) from Official Microsoft Download Center

经过我测试,能用的是文件名为MSSpeech_TTS_zh-CN_HuiHui.msi的语音库,大家也可以根据自己的需求选择不同的语音库。

3.调整注册表信息

安装好了之后并不能直接使用,需要在注册表中进行一下编辑,这一步稍微有点复杂,可以仔细看看。

①按下Win+R键,输入regedit并运行,打开注册表编辑器;

②打开到计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server\v11.0\Voices\Tokens路径下;

③找到刚才安装好了的语音库对应的文件夹,点击右键-导出,将文件保存在自己喜欢的位置;

④用记事本打开刚才保存好的reg格式的文件;

⑤在记事本的菜单栏点击编辑-替换

查找内容为\Speech Server\v11.0\,替换内容为\Speech\ ,随后点击全部替换即可;

⑥完成修改后,保存当前文件,双击运行。

⑦此时,再到控制面板中,选择新安装的语音库应该就可以使用啦。

相关文章
|
Java Maven Windows
使用Java创建集成JACOB的HTTP服务
本文介绍了如何在Java中创建一个集成JACOB的HTTP服务,使Java应用能够调用Windows的COM组件。文章详细讲解了环境配置、动态加载JACOB DLL、创建HTTP服务器、实现IP白名单及处理HTTP请求的具体步骤,帮助读者实现Java应用与Windows系统的交互。作者拥有23年编程经验,文章来源于稀土掘金。著作权归作者所有,商业转载需授权。
414 2
使用Java创建集成JACOB的HTTP服务
|
机器学习/深度学习 自然语言处理 API
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程
如何使用阿里云的语音合成服务(TTS)将文本转换为语音?本文详细介绍了从注册账号、获取密钥到编写Python代码调用TTS服务的全过程。通过简单的代码示例,展示如何将文本转换为自然流畅的语音,适用于有声阅读、智能客服等场景。
4809 3
|
12月前
|
JSON 前端开发 Java
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 的使用
本文介绍了 Thymeleaf 在 Spring Boot 项目中的使用方法,包括访问静态页面、处理对象和 List 数据、常用标签操作等内容。通过示例代码展示了如何配置 404 和 500 错误页面,以及如何在模板中渲染对象属性和列表数据。同时总结了常用的 Thymeleaf 标签,如 `th:value`、`th:if`、`th:each` 等,并提供了官方文档链接以供进一步学习。
828 0
微服务——SpringBoot使用归纳——Spring Boot集成Thymeleaf模板引擎——Thymeleaf 的使用
|
缓存 JavaScript Java
常见java OOM异常分析排查思路分析
Java虚拟机(JVM)遇到 OutOfMemoryError(OOM)表示内存资源不足。常见OOM情况包括:1) **Java堆空间不足**:内存被大量对象占用且未及时回收,或内存泄漏;解决方法包括调整JVM堆内存大小、优化代码及修复内存泄漏。2) **线程栈空间不足**:单线程栈帧过大或频繁创建线程;可通过优化代码或调整-Xss参数解决。3) **方法区溢出**:运行时生成大量类导致方法区满载;需调整元空间大小或优化类加载机制。4) **本机内存不足**:JNI调用或内存泄漏引起;需检查并优化本机代码。5) **GC造成的内存不足**:频繁GC但效果不佳;需优化JVM参数、代码及垃圾回收器
1075 7
常见java OOM异常分析排查思路分析
|
XML JSON Java
常用工具类---JSONUtil
这段内容提供了Java中将不同数据结构转换为JSON的代码示例。包括使用`JSONArray`将一维和二维数组、对象、Map及List转换为JSON字符串,并展示了如何从JSON字符串转换回Object、List以及XML到JSON的转换。
|
关系型数据库 MySQL 数据库
MySQL中find_in_set函数的使用
1.语法 FIND_IN_SET(str,strlist) (1)str 要查询的字符串 (2)strlist 字段名; 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回
1360 0
MySQL中find_in_set函数的使用
Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
【6月更文挑战第19天】Exception in thread "main" java.lang.IllegalArgumentException: U+6570 ('.notdef') is not available in the font Helvetica-Bold, encoding: WinAnsiEncoding 这个问题如何解决
2900 2
|
开发框架 .NET 编译器
C# 中的记录(record)类型和类(class)类型对比总结
C# 中的记录(record)类型和类(class)类型对比总结
525 0
|
存储 算法 API
tts
TTS(Text-to-Speech,文本到语音)是一种将计算机上的文本转换为人类可听的语音输出的技术。这种技术可以帮助人们在无法阅读文本的环境(如驾车、视力障碍等)下接收信息,同时也可以用于语音助手、智能家居等场景中。
1987 0

热门文章

最新文章