JS實現文字轉語音播放


JS實現文字轉語音播放
背景
實現方式
第一種:百度文字轉語音開放API
第二種:微軟TTS語音引擎
第三種:SpeechSynthesisUtterance
總結
背景
在做項目的過程中,經常會遇到場景是客戶要求播放語音的場景,所以將JS實現文字轉語音播放的各種實現方式做統一整理。

實現方式
第一種:百度文字轉語音開放API
注意:本方式一定要有外網,可以訪問百度,不然無法遠程調用百度接口。

接口:http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=你要轉換的文字
lan=zh:語言是中文,如果改為lan=en,則語言是英文。
ie=UTF-8:文字格式。
spd=2:語速,可以是1-9的數字,數字越大,語速越快。
text=**:這個就是你要轉換的文字。
JS示例:

function test(test){
var url = "http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&text='" +encodeURI(test);
var n = new Audio(url);
n.play;
}

  


第二種:微軟TTS語音引擎
注意:本方式僅支持IE瀏覽器,需要調用IE內置ActiveX控件

安裝方式:
a. 下載、並安裝插件:微軟TTS5.1語音引擎(中文)
b. 設置:安裝好后,打開IE瀏覽器的Internet選項的安全中,點開自定義級別,打開各個站點,將“ActiveX控件和插件”下的所有欄目設為啟用。
屬性:
voiceObj.Rate:設置說話語速 語音朗讀速度,取值范圍為-10到+10。數值越大,速度越快
voiceObj.Volume:設置說話音量 取值范圍為0到100。數值越大,音量越大。
方法:
voiceObj.Speak:朗讀,將文本信息轉換為語音並按照指定的參數進行朗讀,該方法有Text和Flags兩個參數,分別指定要朗讀的文本和朗讀方式(同步或異步等)。
voiceObj.GetVoices:獲取系統中的語音,用於指定SpVoice的Voice屬性。
voiceObj.Pause:暫停朗讀,可暫停使用該對象的所有朗讀進程。該方法沒有參數。
voiceObj.Resume:恢復朗讀,可恢復該對象所對應的被暫停的朗讀進程。該方法沒有參數。
voiceObj.Speak("", 2): 停止朗讀,第一個參數設為空,第二個參數設為2
JS示例

var wordTemp = ""播放內容;
var obj = new ActiveXObject("Sapi.SpVoice");
obj.Speak(wordTemp );

  

第三種:SpeechSynthesisUtterance
SpeechSynthesisUtterance是HTML5中新增的API,用於將指定文字合成為對應的語音.也包含一些配置項,指定如何去閱讀(語言,音量,音調)等,不支持IE瀏覽器。

屬性
SpeechSynthesisUtterance.lang 獲取並設置話語的語言
SpeechSynthesisUtterance.pitch 獲取並設置話語的音調(值越大越尖銳,越低越低沉)
SpeechSynthesisUtterance.rate 獲取並設置說話的速度(值越大語速越快,越小語速越慢)
SpeechSynthesisUtterance.text 獲取並設置說話時的文本
SpeechSynthesisUtterance.voice 獲取並設置說話的聲音
SpeechSynthesisUtterance.volume 獲取並設置說話的音量
方法
speak() 將對應的實例添加到語音隊列中
cancel() 刪除隊列中所有的語音.如果正在播放,則直接停止
pause() 暫停語音
resume() 恢復暫停的語音
getVoices 獲取支持的語言數組. 注意:必須添加在voiceschanged事件中才能生效
JS示例

var u = new SpeechSynthesisUtterrance();
u.text = "文字播放";
u.lang = 'zh';
u.rate = 0.7
speechSynthesis.speak(u);

  

原文參照

https://blog.csdn.net/WhiteEmperor/article/details/92568232


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM