java文字轉(zhuǎn)語(yǔ)音播報(bào)功能的實(shí)現(xiàn)方法
前言
本文主要給大家分享了關(guān)于java文字轉(zhuǎn)語(yǔ)音播報(bào)的相關(guān)內(nèi)容,分享出來(lái)供大家參考學(xué)習(xí),下面話(huà)不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
方法如下
一、pom.xml引入jar包依賴(lài)
<!-- https://mvnrepository.com/artifact/com.jacob/jacob 文字轉(zhuǎn)語(yǔ)音 --> <dependency> <groupId>com.hynnet</groupId> <artifactId>jacob</artifactId> <version>1.18</version> </dependency>
二、把jacob-1.18-x64.dll文件復(fù)制到j(luò)dk安裝位置的bin目錄下。
https://files.cnblogs.com/files/w1441639547/jacob-1.18-x64.rar
三、把jacobtest.java類(lèi)導(dǎo)入至項(xiàng)目中測(cè)試運(yùn)行。
package com.Interface.util; import com.jacob.activeX.ActiveXComponent; import com.jacob.com.Dispatch; import com.jacob.com.Variant; /** * 文字轉(zhuǎn)語(yǔ)音測(cè)試 jdk bin文件中需要導(dǎo)入jacob-1.17-M2-x64.dll * * @author zk * @date: 2019年6月25日 上午10:05:21 */ public class jacobtest { /** * 語(yǔ)音轉(zhuǎn)文字并播放 * * @param txt */ public static void textToSpeech(String text) { ActiveXComponent ax = null; try { ax = new ActiveXComponent("Sapi.SpVoice"); // 運(yùn)行時(shí)輸出語(yǔ)音內(nèi)容 Dispatch spVoice = ax.getObject(); // 音量 0-100 ax.setProperty("Volume", new Variant(100)); // 語(yǔ)音朗讀速度 -10 到 +10 ax.setProperty("Rate", new Variant(-2)); // 執(zhí)行朗讀 Dispatch.call(spVoice, "Speak", new Variant(text)); // 下面是構(gòu)建文件流把生成語(yǔ)音文件 ax = new ActiveXComponent("Sapi.SpFileStream"); Dispatch spFileStream = ax.getObject(); ax = new ActiveXComponent("Sapi.SpAudioFormat"); Dispatch spAudioFormat = ax.getObject(); // 設(shè)置音頻流格式 Dispatch.put(spAudioFormat, "Type", new Variant(22)); // 設(shè)置文件輸出流格式 Dispatch.putRef(spFileStream, "Format", spAudioFormat); // 調(diào)用輸出 文件流打開(kāi)方法,創(chuàng)建一個(gè).wav文件 Dispatch.call(spFileStream, "Open", new Variant("./text.wav"), new Variant(3), new Variant(true)); // 設(shè)置聲音對(duì)象的音頻輸出流為輸出文件對(duì)象 Dispatch.putRef(spVoice, "AudioOutputStream", spFileStream); // 設(shè)置音量 0到100 Dispatch.put(spVoice, "Volume", new Variant(100)); // 設(shè)置朗讀速度 Dispatch.put(spVoice, "Rate", new Variant(-2)); // 開(kāi)始朗讀 Dispatch.call(spVoice, "Speak", new Variant(text)); // 關(guān)閉輸出文件 Dispatch.call(spFileStream, "Close"); Dispatch.putRef(spVoice, "AudioOutputStream", null); spAudioFormat.safeRelease(); spFileStream.safeRelease(); spVoice.safeRelease(); ax.safeRelease(); } catch (Exception e) { e.printStackTrace(); } } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Java文件過(guò)濾器實(shí)現(xiàn)按條件篩選文件
本文主要介紹了Java文件過(guò)濾器實(shí)現(xiàn)按條件篩選文件,文件過(guò)濾器是在文件處理中起到重要作用的工具,它可以用來(lái)篩選文件并根據(jù)特定的條件進(jìn)行過(guò)濾,下面就來(lái)介紹一下2024-04-04JAVA Frame 窗體背景圖片,首位相接滾動(dòng)代碼實(shí)例
這篇文章主要介紹了JAVA Frame 窗體背景圖片,首位相接滾動(dòng)代碼示例,需要的朋友可以參考下復(fù)制代碼2017-04-04Java圖像之自定義角度旋轉(zhuǎn)(實(shí)例)
這篇文章主要介紹了Java圖像之自定義角度旋轉(zhuǎn)(實(shí)例),需要的朋友可以參考下2017-09-09關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析
這篇文章主要給大家介紹了關(guān)于Java HashMap自動(dòng)排序的簡(jiǎn)單剖析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09Java中的相除(/)和取余(%)的實(shí)現(xiàn)方法
這篇文章主要介紹了Java中的相除(/)和取余(%)的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Java中Comparable接口和Comparator接口的使用比較
Java中提供了兩種對(duì)集合或數(shù)組中元素進(jìn)行排序的方法,一種是實(shí)現(xiàn)Comparable接口,另一種是實(shí)現(xiàn)Comparator接口,下面這篇文章主要給大家介紹了關(guān)于Java中Comparable接口和Comparator接口使用的相關(guān)資料,需要的朋友可以參考下2024-06-06Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單的抽牌游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04