java tts引擎_让Java说话-用Java实现语音引擎-程序员宅基地

技术标签: java tts引擎  

为应用程序加上语音能力有什么好处呢?粗略地讲,是为了趣味,它适合所有注重趣味的应用,比如游戏。当然,从更严肃的角度来讲,它还涉及到应用的可用性问题。注意,这里我考虑的不仅是可视化界面固有的不足,而且还有这样一些情形:一些时候,让双眼离开当前的工作很不方便,甚至是不合法的。比如,假设有一个带语音功能的浏览器,你就可以在外出散步或开车上班的同时,用听的方式浏览自己喜爱的网站。[@more@]为应用程序加上语音能力有什么好处呢?粗略地讲,是为了趣味,它适合所有注重趣味的应用,比如游戏。当然,从更严肃的角度来讲,它还涉及到应用的可用性问题。注意,这里我考虑的不仅是可视化界面固有的不足,而且还有这样一些情形:一些时候,让双眼离开当前的工作很不方便,甚至是不合法的。比如,假设有一个带语音功能的浏览器,你就可以在外出散步或开车上班的同时,用听的方式浏览自己喜爱的网站。

??从目前来看,邮件阅读器或许是语音技术更实际的应用,在JavaMail API的帮助下,这一切已经可能。邮件阅读器可以定期地检查收件箱,然后用语音“You have new mail, would you like me to read it to you?”引起你的注意。按照类似的思路,我们还可以考虑一个带语音功能的提醒器,把它连接到一个日历应用:它会及时地提醒你“Don't forget your meeting with the boss in 10 minutes!”。

??也许你已经被这些主意吸引,或者有了自己更好的主意,现在让我们继续。首先我将介绍如何启用本文提供的语音引擎,这样,如果你认为语音引擎的实现细节过于复杂,就可以直接使用它而忽略其实现细节。

一、试用语音引擎

要使用这个语音引擎,你必须在CLASSPATH中加入本文提供的javatalk.jar文件,然后从命令行运行(或者从Java程序调用)com.lotontech.speech.Talker类。如果从命令行运行,则命令为:

java com.lotontech.speech.Talker "h|e|l|oo"

如果从Java程序调用,则代码为:

com.lotontech.speech.Talker talker=new com.lotontech.speech.Talker();

talker.sayPhoneWord("h|e|l|oo");

现在,对于在命令行上(或者调用sayPhoneWord()方法时)提供的“h|e|l|oo”字符串,你或许有所不解。下面我就来解释一下。

语音引擎的工作原理是把细小的声音样本连接起来,每一个样本都是人的语言发音(英语)的一个最小单位。这些声音样本称为音素(allophone)。每一个因素对应一个、二个或者三个字母。从前面“hello”的语音表示可以看出,一些字母组合的发音显而易见,还有一些却不是很明显:

h -- 读音显而易见

e -- 读音显而易见

l -- 读音显而易见,但注意两个“l”被简缩成了一个“l”。

OO -- 应该读作“hello”中的读音,不应读作“bot”、“too”中的读音。

下面是一个有效音素的清单:

a : 如cat

b : 如cab

c : 如cat

d : 如dot

e : 如bet

f : 如frog

g : 如frog

h : 如hog

i : 如pig

j : 如jig

k : 如keg

l : 如leg

m : 如met

n : 如be

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33636371/article/details/114130240

智能推荐

vb的函数在c语言中有吗,VB有类似C语言里的memset函数吗?-程序员宅基地

文章浏览阅读141次。你的位置:问答吧-> VB-> 问题详情VB有类似C语言里的memset函数吗?网上查的如下:原型是extern void *memset(void *buffer, int c, int count)buffer为指针或是数组,c是赋给buffer的值,count是buffer的长度.void *memset..._c++ memset函数 对应vb

python-tkinter布局(聊天窗口)_python tkinter高级聊天界面-程序员宅基地

文章浏览阅读9.7k次,点赞10次,收藏46次。Frame控件、Text控件学习,制作简易聊天窗口布局:#!/usr/bin/env python3# _*_ coding:utf-8 _*_from tkinter import *import time'''定义消息发送函数:1、在<消息列表分区>的文本控件中实时添加时间;2、获取<发送消息分区>的文本内容,添加到列表分区的文本中;3、将<发..._python tkinter高级聊天界面

CCF 201809-1 卖菜 (python语言)_python奶奶卖菜-程序员宅基地

文章浏览阅读3.2k次,点赞5次,收藏5次。试题编号: 201809-1 试题名称: 卖菜 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述   在一条街上有n个卖菜的商店,按1至n的顺序排成一排,这些商店都卖一种蔬菜。   第一天,每个商店都自己定了一个价格。店主们希望自己的菜价和其他商店的一致,第二天,每一家商店都会根据他自己和相邻商店的价格调整自..._python奶奶卖菜

【Unity3D】法线贴图和凹凸映射_unity3d法线贴图-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏7次。漫反射和镜面反射光照计算使用了法线向量、灯光向量、观察向量,但是它们所处的坐标系不相同,为方便计算光照,需要统一坐标系,即将纹理法线向量由切线坐标系转换到世界坐标系,或者将灯光向量和观察向量由世界坐标系转换到切线坐标系。其中,_ModelColor、_LightColor0 分别表示模型颜色、灯光颜色,UNITY_LIGHTMODEL_AMBIENT 表示环境光强度,normal、lightDir、viewDir、halfDir 分别表示法向量、灯光向量、观察向量、半向量(见上图,它们都已归一化)。_unity3d法线贴图

如何查看和移植OpenCV源码_opencv源码怎么看-程序员宅基地

文章浏览阅读3.3k次,点赞7次,收藏20次。如何查看OpenCV源码在OpenCV的安装文件夹中,找到D:\opencv-4.2.0\modules文件夹,里边就按照modules的功能分成多个子文件夹,每个子文件夹中的src目录下就存放了源码cpp文件,也包括hpp文件。 实例:找到FAST特征提取算法源码 从modules\features2d\src文件夹中,可以找到该算法的头文件和cpp文件如下 2. 正确的查看opencv源码的方式:用vs..._opencv源码怎么看

在Ubuntu下用NDK编译FFmpeg_ubuntu使用ndk编译ffmpeg-程序员宅基地

文章浏览阅读960次。准备: 虚拟机VM Ubuntu13.04 NDK_r10e FFmpeg2.8.4一:创建Ubuntu系统 在虚拟机里创建Ubuntu13.04系统(ps:其他版本没有试,可以试一下),这个比较简单 二:配置环境先配置java环境,安装JDK下载 解压(右键,提取到此处),修改名字为java 。在/usr/_ubuntu使用ndk编译ffmpeg

随便推点

C++ PTA 科学计数法的值_c++a×10的n次幂-程序员宅基地

文章浏览阅读917次,点赞2次,收藏5次。科学计数法的值科学计数法是一种数学专用术语。将一个数表示成 a×10的n次幂的形式,其中1≤|a|<10,n为整数,这种记数方法叫科学计数法。例如920000可以表示为9.2*10^5现在需要对输入的字符串进行分离,自动识别该科学计数法中的a和幂次,计算其表征的具体数值并输出该值。例如,对于输入的复数字符串“9.210^5”,输出 The actual value for 9.210^5 is 920000注意:1、每组测试数据仅包括一个用于科学计数法的字符串。2、输入字符串保证合法。3_c++a×10的n次幂

TP6 SQLSTATE[HY000] [1045] Access denied for user 'root'@'localhost' (using password: YES)-程序员宅基地

文章浏览阅读7.4k次,点赞5次,收藏5次。如果你在database.php配置数据库连接信息还是报错运行报以下错误解决方法。在根目录下的.env文件配置数据库信息,如图然后再运行就可以了_sqlstate[hy000] [1045] access denied for user 'root'@'localhost' (using pass

云计算 linux运维工程师招聘,linux云计算运维工程师前景及薪资待遇-程序员宅基地

文章浏览阅读1.1k次。linux云计算运维工程师肯定不错,未来云计算的就业空间还是很广阔的,最近几年互联网企业才开始转云,市场需求还是比较大的,未来发展空间还是很可观的。linux云计算运维工程师前景如何当一个企业拥有几万甚至几十万台的服务器这个体量时,则会更多的关注架构的规划和演进,质量、容量、成本的管理,自动化部署等等,这时候我们听到比运维更多的词是运营。对于运维人员来说,不同体量的运维,做的其实是完全不同的两件事..._linux云计算运维工程师

算法进化历程之“根据二叉树的先序和中序序列输出后序序列”_int preleft是什么意思-程序员宅基地

文章浏览阅读1.7k次。通过对一个作业“根据二叉树的先序和中序序列输出后序序列”的思考,详细分析了不断改进算法的过程。其中通过移动指针确定被处理序列段边界的方法确实让人感觉到算法之美。_int preleft是什么意思

使用Oracle GoldenGate 创建复刻表时报错 ERROR: No viable tables matched specification ._ogg-15122-程序员宅基地

文章浏览阅读1.3k次。今天测试Oracle GoldenGate时参考了网上别人写的博客,但是在创建复刻表时就报了ERROR: No viable tables matched specification . 这个错误。报错提示说没有符合规格的可行表格,但是这个表我确实创建好了:后面看了创建表的语句:CREATE TABLE "OGG"."student" ( "sid" NUMBER(8,0), "sname" VARCHAR2(14), "sex" VARCHAR2(13), "cla._ogg-15122

git中使用【checkout .】命令放弃修改,为何新建的文件夹和文件不会被删除掉呢_checkout . 不能清楚新文件-程序员宅基地

文章浏览阅读502次。https://segmentfault.com/q/1010000008355879_checkout . 不能清楚新文件