采用JNI调用Windows自带的(或者其他TTS引擎安装的)TTS,提供Java接口,方便其他Java程序调用系统TTS。
使用说明:
1)拷贝CamelTTSdll到你的java项目的lib目录,因为java程序引用这个dll的路径是“SystemloadLibrary("lib/CamelTTS");”。
2)拷贝CamelTTSjar到你的java项目的lib目录,当然要引入到classpath。
3)在你的程序里面call这个接口,例子如下:
public static void main(String args[])
{
DoSpeak doSpeak = new DoSpeak();
doSpeakspeakString("\u8BF7N002\u52301\u53F7\u67DC\u53F0");
}
4)最后的一步,安装你的Windows的TTS,比如:NeoSpeech,发音很标准,当然Windows缺省的也有,可以用这个方式决定启用哪个 TTS:“开始-设置-控制面板-语音-文字/语音转换”,选择LH Michael(男声),LH Michelle(女声)。
在java程序中如何调用linux的命令?如何调用shell脚本呢?
这里不得不提到java的process类了。
process这个类是一个抽象类,封装了一个进程(你在调用linux的命令或者shell脚本就是为了执行一个在linux下执行的程序,所以应该使用process类)。
process类提供了执行从进程输入,执行输出到进程,等待进程完成,检查进程的推出状态,以及shut down掉进程。
至于详细的process类的介绍放在以后介绍。
另外还要注意一个类:Runtime类,Runtime类是一个与JVM运行时环境有关的类,这个类是Singleton的。
这里用到的RuntimegetRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的方法。(另外,Runtime的大部分方法都是实例方法,也就是说每次运行调用的时候都需要调用到getRuntime方法)
下面说说Runtime的exec()方法,这里要注意的有一点,就是public Process exec(String [] cmdArray, String [] envp);这个方法中cmdArray是一个执行的命令和参数的字符串数组,数组的第一个元素是要执行的命令往后依次都是命令的参数,envp感觉应该和C中的execve中的环境变量是一样的,envp中使用的是name=value的方式。
下面说一下,如何使用process来调用shell脚本
例如,我需要在linux下实行linux命令:sh testsh,下面就是执行testsh命令的方法:
这个var参数就是日期这个201102包的名字。
JAVA通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOWS平台上是DLL文件形式,在UNIX机器上是SO文件形式)。通过调用本地的库文件的内部方法,使JAVA可以实现和本地机器的紧密联系,调用系统级的各接口方法。
简单介绍及应用如下:
一、JAVA中所需要做的工作
在JAVA程序中,首先需要在类中声明所调用的库名称,如下:
static {
SystemloadLibrary(“goodluck”);
}
在这里,库的扩展名字可以不用写出来,究竟是DLL还是SO,由系统自己判断。
还需要对将要调用的方法做本地声明,关键字为native。并且只需要声明,而不需要具 体实现。如下:
public native static void set(int i);
public native static int get();
然后编译该JAVA程序文件,生成CLASS,再用JAVAH命令,JNI就会生成C/C++的头文件。
例如程序testdlljava,内容为:
public class testdll
{
static
{
SystemloadLibrary("goodluck");
}
public native static int get();
public native static void set(int i);
public static void main(String[] args)
{
testdll test = new testdll();
testset(10);
Systemoutprintln(testget());
}
}
用javac testdlljava编译它,会生成testdllclass。
再用javah testdll,则会在当前目录下生成testdllh文件,这个文件需要被C/C++程序调用来生成所需的库文件。
以上就是关于java 怎样调用windows的tts全部的内容,包括:java 怎样调用windows的tts、在windows系统中开发的java程序要调用linux下的shell脚本怎么办、Java怎么调用.net DLL等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)