转自:微点阅读  https://www.weidianyuedu.com/content/0017809736406.html

Java语音技术之FreeTTS

Java提供了语音API技术用于支持应用程序或Web页面中的人机语音交互,其核心技术包括语音合成和语音识别。FreeTTS是Java语音合成技术的实现手段之一,以创建电话号码朗读程序为例, 探讨了基于该技术的Java语音API实现方法及相关问题。

计算机技术的快速发展同时也推动了多媒体技术的广泛应用, 人机语音交互已经不再是纯粹的理论研究, 其应用在日常生活中越来越普遍: 如移动终端、通信、信息系统服务、家庭娱乐等。作为流行的编程语言, Java 提供了语音A P I 技术用于实现应用程序或者Web 页面中的人机语音交互, 包括语音合成和语音识别两部分核心技术,但官方并未提供其实现工具。

FreeTTS 属于第三方免费语音合成java组件, 由Speech Interat ion Group of Sun Micro systemsLaboratiories 和来自IBM的Speech for Java两公司合作开发。本文探讨了基于FreeTTS的语音朗读程序设计与实现, 为工业应用中相关系统的开发提供一个技术参考。 1.FreeTTS 的获得、安装与配置

FreeTTS属于免费的开源java组件, 其官方网站是: freetts.sourceforge.net,用户可以在该网站上免费下载。目前最新的版本是11211,下载后的文件名与格式是: freetts-1.2.2-bin.zip。基于java的特点,该组件是跨平台的,安装方法与普通java 应用程序或者组件的方法类似, 将文件解压至特定目录并设置环境变量即可, 具体过程可以参考其安装说明。

2.语音合成功能实现

以一个例子来说明FreeTTS 的应用。该程序最终实现的效果如图1所示。用户在下拉菜单中可选择“张三”、“王五”、“赵七”三个名字,三人依次对应电话号 码:“07138616661”,“13871990001”,“07136767555”。选择人名后点击“读出号码”,系统即可发出声音,将对应的电 话号码读出。该程序的设计包括以下过程: ①导入Java 语音API包 主要代码:

Import javax.speech.* ;

Import javax.speech.synthesis.* ;

其中javax1speech中的类和接口用来支持音频连通性;javax1speech.synthesis中的类和接口用来支持语音合成。 ②为语音合成器声明实例变量

例如: private Synthesizer speechSynthesizer; ③语音合成器的初始化

初始化是FreeTTS应用中关键的部分。首先需要建立一个SynthesizerModeDesc 对象,该对象用于指明语音合成器的属性,包括语音引擎的的名称、语音引擎的操作模式、支持的语言、语音引擎的运行状态以及其发音能力等。

Syn thesizerModeDesc的构造方法需要接收5 个参数。第一个St ring 类型的参数用于指明文本到语音引擎的的名称,如果是FreeTTS 自

带,其名称为“Unlimited dom ain FreeTTS Speech Synthesizerrom Sun Labs”; 第二个String 类型的参数用于标示语音引擎的操作模式,如果设置为null,则意味该引擎不存在特定的操作要求; 第三个参数用于指明该语音引擎所支持的语言,为Local类型,Local对象代表世界上特定的区域, 如果设置为Locale1US,则代表与之关联的语言为英语;第四个参数是布尔类型,表示

是否有一个正在运行的语音引擎,如果为False,表示不去选择 已得到运行的引擎;第五个参数是一个Voice数组对象, 允许开发人员指定某一语音合成器所输出的语言,设置为null代表不存在特定的要求。下面是构造的例子: SynthesizerModeDesc descriptor = new SynthesizerModeDesc(

\

\④创建语音合成器

创建语言合成器时需要用到cen t ral 类, 其作用是提供用来访问所有语音输入和输出的能力, 同时也可以定为语言引擎, 根据描述符所定义的属性集合选择匹配的引擎, 从而创建语音识别器和语音合成器。语音合成器的创建需使用central类的createSynthesizer方法,该方法接受一个 SynthesizerModeDesc描述符并返回同描述符中所指定属性相匹配的一个Synthesizer对象,用以实现语音合成。示例如下:

speechSynthesizer = cent ral1createSynthesizer(descriptor) ⑤准备用于朗读的Synthesizer 对象

该部分通过Synthesizer对象的allocate和resume方法分配语音引擎所需要的资源并取得可用于朗读的语音合成器。实现较为简 单:speechSynthesizer1allocate();speechSynthesizer1resume(); ⑥设置Syn thesizer 对象的属性

利用getSynthesizerProperties 方法可以获得Synthesizer对象的属性,其返回值是与语音合成器相关联的SynthesizerProperties对象,该对象包含语音合成器 的多种属性, 每种属性可以通过setProperties方法设置。例如: setSpeakingRate方法可设置speakingRate属性,实现每分钟朗读单词速率的控制。 示例:

SynthesizerP ropertiesproperties =

speechSynthesizer1getSynthesizerP roperties();

properties.setSpeakingRate(100.0f) ; //设置朗读速率,为浮点型数据 ⑦事件处理程序设计

speak ingRate 属性, 实现每分钟朗读单词速率的控制。完成应用程序界面中JButton“读出号码”的事件程序设计, 首先通过JcomboBox(选择人名的下拉列表)取得人名(namesArray)的一个索引,该索引与电话号码索引(numbersArray)保持 对应,然后调用Synthesizer对象speakingPlainText方法朗读整理后的电话号码字符串。下面是主要功能实现代码:

private String[] namesArray = {“张三”,“王五”,“赵七”};

private String [] numbersA rray = {“071328616661”,“13871990001”,“07136767555”}; //部分界面设计代码, 省略 //??

instruction.JLabel = new JLabel();

instruction.JLabel1setBounds(16,8,264,23); //添加说明标签

instruction.JLabel1setText(“请从下拉列表中选择一个姓名1”); contentPane.add(instruction.JLabel); //设计下拉列表JcomboBox, 此处略 //?

instruction JLabel = new JLabel() ;

instruction JLabel.setBounds(16,35,264,23) ; //添加说明标签

instruction JLabel.setText (“单击按钮听号码朗读1”) ; contentPane1add(instruction JLabel) ; ??设计按钮JBut ton 以及其他界面, 此处略 //?

//编写按钮事件过程

private void getPhonen umberJButtonActionPerformed (ActionEvent event ) {

//获得下拉列表选定的索引

int selectedname = nameJcomboBox1getSelectedIndex(); //设置朗读电话号码字符

String textToSpeak = \ //实现朗读

speechSynthesizer.speakPlainText(textToSpeak,null); }

3.其他说明

开发者在验证或者运行该示例程序时需要注意运行环境的配置, 首先要安装好java2 软件包j2sdk,根据FreeTTS 的版本, j2sdk 至少应该为114版本,同时应对环境变量进行正确的设置。在程序设计中需要注意相关资源(如: Synthesizer对象) 的释放, 以使程序能够作为子模块高效运行,而不影响大型系统的整体性能。

2.2 McU(LPc2132)主控程序

LPc2132 主控程序流程图如图3 所示,LPc2132首先初始化芯片Enc28J60初始化部分主要完成:软件复位;设定临时使用的以太网物理地址; 设定接收帧的类型;确定数据的传送方向;中断允许;使能接收中断;接收发送使能。LPc2132主要完成数据的解包打包。LPc2132从网络接收到数据 报,则对数据报进行分析,如果是ARP数据包,则程序转入ARP处理程序。如果是IP数据包且使用UDP协议,端口正确,则将数据解包后通过串口输出。反 之,如果LPc2132从串口收到数据,则将数据按照UDP 协议格式打包,送入Enc28J 60, 由Enc28J 60 把数据输出到局域网中。可以看出,链路层由Enc28J60 完成,TcP/IP 的网络层和传输层由LPc2132 来处理,而应用层则由用户根据需要进行数据处理。整个系统模块是通过Uc/oS2II 来对系统资源进行有效管理并合理调度任务的。

Java语音技术之FreeTTS相关推荐

  1. 汉字转拼音,文字转语音tts (语音技术、语音识别),Asr/tts,变声

    语音识别,语音合成.语音技术主要分两块:一块是语音转文字,即语音识别:另一块是文字转语音,即语音合成.   语音相关技术研发 语音合成技术整体解决方案.一系列语音技术的相关专利,包括文本处理.韵律预测 ...

  2. 阿里研发支出连续三年登顶; 《MIT科技评论》为阿里AI语音技术点赞;达摩院引入以色列著名计算机视觉科学家 | 周博通... 1

    每周一早晨,阿里妹为你呈现最新的阿里技术资讯.这份"技术早餐"里,包含重磅的阿里技术新闻,独特的大牛观点,精彩的活动资讯等,五分钟时间,让你成为"周博通". 话 ...

  3. 什么是 Java 组件技术?

    什么是 Java 组件技术? developerWorks Java technology 专区维护了 标准 Java 组件技术 的完整词 汇表.下面是每个 Java 平台版本的组件.可选包和扩展的部 ...

  4. 基于Google的嵌入式系统android开发语音技术(语音搜索,语音朗读文章,语音控制)

    android是Google推出的嵌入式操作系统,有着广泛的根基与基础.最近一个中关村的一个CEO朋友送了一个摩托罗拉android手机,想玩玩语音技术过把瘾.如何用android开发语音技术应用呢, ...

  5. java高深技术总结_一名25K以上的高薪Java程序员总结出的技术以及学习技能

    原标题:一名25K以上的高薪Java程序员总结出的技术以及学习技能 总所周知,Java是目前使用最为广泛的网络编程语言之一. 它具有简单,面向对象,稳定,与平台无关,解释型,多线程,动态等特点. 一般 ...

  6. 人工智能语音技术支持“多情感程度”调节,细腻演绎“人声”

    近期,微软发布最新语音技术,支持"情感程度"轻松调节,令智能语音的情感表现力更加细腻可控. 人类的情感很大程度上体现于语音语调的微妙变化,比如一句"再见",有时 ...

  7. 一次对语音技术的彻底批判

    作者 | Alexander Veysov 译者 | 孙薇,编辑 | 夕颜 出品 | AI科技大本营(ID:rgznai100) ImageNet的出现带来计算机视觉领域的突破发展,掀起了一股预训练之 ...

  8. 干货 | 清华大学郑方:语音技术用于身份认证的理论与实践

    本讲座选自清华大学语音和语言技术中心主任郑方教授近期于清华大数据"技术·前沿"系列讲座上所做的题为<语音技术用于身份认证的理论与实践>的演讲. 以下为演讲的主要内容: ...

  9. 黄学东出任微软全球人工智能首席技术官,从负责语音技术到微软Azure云的转身

    导语:根据最新任命,黄学东将领导新统一的 AI 认知服务工程和研究团队. 日前,微软首位华人"全球技术院士".微软首席语音科学家黄学东出任微软全球人工智能首席技术官,全面负责微软A ...

最新文章

  1. LeftoverDataException.
  2. 字典转json时排序
  3. hello word 程序 ——简单的spring ioc 学习
  4. 【Groovy】循环控制 ( Java 语法循环 | 默认的 IntRange 构造函数 | 可设置翻转属性的 IntRange 构造函数 | 可设置是否包含 to 的构造函数 | 0..9 简写 )
  5. Exchange 2013 OWA重定向
  6. 一条看似平常的报警邮件所做的分析
  7. 免去架构算法调优,如何让你的系统风驰电掣?|图说
  8. oracle下载(转载)
  9. leetcode - 837. 新21点
  10. python 打印输出xml数据问题
  11. linux 安装scons
  12. angularjs java 实例_[Java教程]angularjs小练习(分别通过ng
  13. 计算机考试如何截屏,电脑怎么截图 几种方法轻松学会
  14. ar9285无线网卡驱动 linux,Qualcomm
  15. 启动器Android标准,【转】各款安卓启动器评测(之我见)
  16. 状告技术总监,索赔 90 万元,称其拖延研发进度、系统频繁崩溃出错、产品质量存在严重问题...
  17. Canvas 生成交互动画
  18. 上半年要写的博客文章27
  19. 大学物理(上)期中考试参考答案
  20. 如何使用java解析json文件并将其写入数据库

热门文章

  1. leetcode:904. 水果成篮
  2. http协议学习系列
  3. Win10安装cuda10.1总是出错!别着急重装,看这篇文章
  4. centos系统简析
  5. 2020年高教社建模国赛真题B题--穿越沙漠
  6. linux登陆操作mysql
  7. [绍棠] Vue解决V-HTML指令潜在的XSS攻击(‘v-html‘ directive can lead to XSS attack.)
  8. 一体的综合化云控平台
  9. phpinfo包含临时文件Getshell全过程及源码
  10. 【密码学】云的MD5破解