全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java语音技术之FreeTTSJava提供了语音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组件, 其官方网站是: ,用户可以在该网站上免费下载。目前最新的版本是11211,下载后的文件名与格式是: freetts-1.2.2-bin.zip。基于java的特点,该组件是跨平台的,安装方法与普通java 应用程序或者组件的方法类似, 将文件解压至特定目录并设置环境变量即可, 具体过程可以参考其安装说明。2.语音合成功能实现 以一个例子来说明FreeTTS 的应用。该程序最终实现的效果如图1所示。用户在下拉菜单中可选择“张三”、“王五”、“赵七”三个名字,三人依次对应电话号 码:“07138616661”,,“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 = newSynthesizerModeDesc(Unlimited domain FreeTTS Speech Synthesizer + from Sun Labs, null, Locale1US, Boolean1FALSE,null) ;创建语音合成器 创建语言合成器时需要用到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”,,“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 = sphone number is + numbersArrayselectedName;/实现朗读speechSynthesizer.speakPlainText(textToSpeak,null);3.其他说明 开发者在验证或者运行该示例程序时需要注意运行环境的配置, 首先要安装好java2 软件包j2sdk,根据FreeTTS 的版本, j2sdk 至少应该为114版本,同时应对环境变量进行正确的设置。在程序设计中需要注意相关资源(如: Synthesizer对象) 的释放, 以使程序能够作为子模块高效运行,而不影响大型系统的整体性能。2.2 MCU(LPC2132)主控程序 LPC2132 主控程序流程图如图3 所示,LPC2132首先初始化芯片ENC28J60初始化部分主要完成:软件复位;设定临时使用的以太网物理地址; 设定接收帧的类型;确定数据的传送方向;中断允许;使能接收中断;接收发送使能。LPC2132主要完成数据的解包打包。LPC2132从网络接收到数据 报,则对数据报进行分析,如果是ARP数据包,则程序转入ARP处理程序。如果是IP数据包且使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省宁德市儿童福利院招聘3人历年真题汇编及答案解析(夺冠)
- 2026年设备监理师之设备监理合同考试题库【原创题】
- 2026年消防条令纲要知识考试题库附答案(精练)
- 成都轨道交通集团有限公司2025年秋季第二批次校园招聘历年真题汇编带答案解析
- 广元市昭化区2025年公开引进高层次和急需紧缺专业人才考试(50人)历年真题汇编及答案解析(夺冠)
- 2025江西吉安吉州区古南镇街道社区卫生服务中心招募就业见习人员2人历年真题库带答案解析
- 中国铁路成都局集团有限公司2026年度招聘高校毕业生(二)历年真题汇编附答案解析
- 2026年陕西省选调生招录(面向中山大学)历年真题库附答案解析
- 2025榆林电力投资有限责任公司招聘(22人)备考公基题库带答案解析
- 2025广东机电职业技术学院招聘事业编制工作人员5人(第四批)备考公基题库附答案解析
- 儿内科消化系统疾病诊疗规范2023版
- 1例高脂血症性急性胰腺炎护理查房
- 影视欣赏校本课程(完整版)资料
- 气凝胶行业深度报告
- 2022年贵州毕节市乡村振兴局下属事业单位考调笔试备考题库及答案解析
- 天津市建筑工程施工质量验收资料管理规程DBT29-209-2020
- 公路水运交安三类人员考试试题及答案
- GB/T 33056-2016含氟废气处理处置技术规范
- GB/T 12967.6-2008铝及铝合金阳极氧化膜检测方法第6部分:目视观察法检验着色阳极氧化膜色差和外观质量
- 纪委书记政治画像
- 个案护理报告范文(优选十六篇)
评论
0/150
提交评论