近期项目中出现在离线情况下文字转语音的需求

经过尝试发现jacob还不错


注:只适用于windows系统环境


以下为开发记录:


1.pom.xml中引入jacob.jar

<dependency>
<groupId>com.hynnet</groupId>
<artifactId>jacob</artifactId>
<version>1.18</version>
</dependency>

2.下载jacob,将 jacob-1.18-x64.dll 或者 jacob-1.18-x86.dll 复制到 "JAVA_HOME"\bin 下(注意版本:根据JDK的安装版本选择)

百度网盘地址:jacob-1.18-M2

提取码:ktdn

3.java代码如下:

package com.whzc.test;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant; /**
* 文字转语音测试
* jdk bin文件中需要导入jacob-1.17-M2-x64.dll
* @author zk
*@date: 2019年6月25日 上午10:05:21
*/
public class jacobtest {
public static void main(String[] args) { ActiveXComponent ax = null;
String str="请A001号到3号窗口";
// String str="华为 new bee";
try { ax = new ActiveXComponent("Sapi.SpVoice"); //运行时输出语音内容
Dispatch spVoice = ax.getObject();
// 音量 0-100
ax.setProperty("Volume", new Variant(100));
// 语音朗读速度 -10 到 +10
ax.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("E:\\test.wav"), new Variant(3), new Variant(true));
//设置声音对象的音频输出流为输出文件对象
Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream);
//设置音量 0到100
Dispatch.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(); } catch (Exception e) { e.printStackTrace();
}
}
}

4,运行即可,声音为系统默认语音


常见报错有:

1、找不到jacob.dll,配置路径问题(确认jacob.dll配置正确)
java.lang.UnsatisfiedLinkError: no jacob in java.library.path


2、找不到资源文件,资源文件路径问题(查看程序中资源文件路径的设置,并检查资源文件的存放路径)
com.jacob.com.ComFailException: Invoke of: Open


3、jacob.dll或jacob.jar对应版本错误
com.jacob.com.ComFailException: A COM exception has been encountered:

springboot文字转语音(jacob)的更多相关文章

  1. java文字转语音播报功能的实现方法

    java文字转语音播报功能的实现方法 一.pom.xml引入jar包依赖 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语 ...

  2. java实现文字转语音功能(仅Windows)

    一.pom.xml引入jar包依赖 <!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字转语音 --> <depend ...

  3. C# 语音识别(文字to语音、语音to文字)

    最近打算研究一下语音识别,但是发现网上很少有C#的完整代码,就把自己的学习心得放上来,和大家分享一下. 下载API: 1)SpeechSDK51.exe                   (67.0 ...

  4. Android文字转语音

    虽然视觉上的反馈通常是给用户提供信息最快的方式,但这要求用户把注意力设备上.当用户不能查看设备时,则需要一些其他通信的方法.Android提供了强大的文字转语音Text-to-Speech,TTS A ...

  5. Android实例-调用GOOGLE的TTS实现文字转语音(XE7+小米2)(无图)

    注意:在手机上必须选安装文字转语音引擎“google Text To Speech”地址:http://www.shouji56.com/soft/GoogleWenZiZhuanYuYinYinQi ...

  6. iOS语音识别,语音播报,文字变语音播报,语音变文字

    首先使用的是科大讯飞的sdk 1.语音识别部分 AppDelegate.m #import "AppDelegate.h" #import <iflyMSC/iflyMSC. ...

  7. 简单C#文字转语音

    跟着微软走妥妥的,C#文字转语音有很多参数我就不说了,毕竟我也是初学者.跟大家分享最简单的方法,要好的效果得自己琢磨喽: 先添加引用System.Speech程序集: using System; us ...

  8. Android技术分享-文字转语音并朗读

    Android技术分享-文字转语音并朗读 最近在做一个项目,其中有一个功能是需要将文本转换成语音并播放出来.下面我将我的做法分享一下. 非常令人开心的是,Android系统目前已经集成了TTS,提供了 ...

  9. TTS 文字转语音 ekho

    1.源码下载 使用svn客户端,执行如下命令下载 svn co https://svn.code.sf.net/p/e-guidedog/code/ 2.官方网站查看说明 http://www.egu ...

随机推荐

  1. SPOJ130 【DP·背包选取特性】

    题意: 给你n个任务,每个任务有一个起始时间,持续时间,一个权值: 问你怎么分配得到最大值 思路: 数据好大..百度了一发意识到自己好菜啊!背包的特性. dp[i]代表前 i 个能构成的最大值. 对于 ...

  2. Lightoj1081【500棵线段树维护】

    #include <bits/stdc++.h> using namespace std; typedef long long LL; const int N=5e2+10; const ...

  3. 小程序隐藏或自定义 scroll-view滚动条

    css 隐藏滚动条 ::-webkit-scrollbar { width:; height:; color: transparent; } 自定义滚动条样式 ::-webkit-scrollbar ...

  4. Unity3D - 动作动画忽略timeScale

    http://blog.csdn.net/ynnmnm/article/details/46866347 最近在调战斗时的动画与特效,Unity3D对加/减速提供了Time.timeScale支持.但 ...

  5. uoj#79. 一般图最大匹配(带花树)

    传送门 带花树 不加证明的说一下过程好了:每次从一个未匹配点\(S\)出发bfs,设\(S\)为\(1\)类点,如果当前点\(v\)在本次bfs中未经过,分为以下两种情况 1.\(v\)是未匹配点,那 ...

  6. Git的使用方法与GitHub项目托管方法

    Git的安装 Windows上安装Git 访问网址:https://git-for-windows.github.io/ 点击Download下载,下载后双击安装包进行安装,一直"下一步&q ...

  7. 百度搜索:有关Baiduspider的10个问题

    猫宁!!! 参考链接: http://help.baidu.com/question?prod_id=99&class=476&id=2996 https://ziyuan.baidu ...

  8. Turtles (非纯分块)

    http://codeforces.com/contest/103/problem/D #include <bits/stdc++.h> using namespace std; type ...

  9. shell学习(1)

    #!/bin/bash #######read从屏幕输入######## echo "what is your name?" read PERSON echo "Hell ...

  10. VLAN-2-私有VLAN

          好的设计方式通常要求工程师为每个vlan使用一个ip子网.然而在有些情况下,将设备分割到许多小VLAN中以增加安全性的需求,与节省可用子网的目标相互冲突.通过使用私有vlan,交换机能够分 ...