去年公司讓給平台做一個語音告警提示,我當時想先通過在線文字轉語音,然后拿到語音放到工程里,直接播放就行了。但是看到需求我才發現這個語音告警是動態的,每次告警轉語音的文字不確定,所以只能做一個動態文子轉語音直接播放。搞了一天,就搞定了。試了一下,效果還可以,就是說話聲音有點呆板。
其實很簡單,就是調用百度語音接口實現播放就行了。(http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=0&per=0&text=)
<div> <input type="text" hidden="hidden" id="ttsText"> <input type="button" id="tts_btn" hidden="hidden" onclick="doTTS()" value="播放"> </div>
<script type="text/javascript"> function doTTS() { var ttsDiv = document.getElementById('bdtts_div_id'); var ttsAudio = document.getElementById('tts_autio_id'); var ttsText = document.getElementById('ttsText').value; // 這樣為什么替換不了播放內容 /*var ssrcc = 'http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=10&text='+ttsText; document.getElementById('tts_source_id').src=ssrcc;*/ // 這樣就可實現播放內容的替換了 ttsDiv.removeChild(ttsAudio); var au1 = '<audio id="tts_autio_id" autoplay="autoplay">'; var sss = '<source id="tts_source_id" src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=9&per=0&text=?' + ttsText + '" type="audio/mpeg">'; var eee = '<embed id="tts_embed_id" height="0" width="0" src="">'; var au2 = '</audio>'; ttsDiv.innerHTML = au1 + sss + eee + au2; ttsAudio = document.getElementById('tts_autio_id'); ttsAudio.play(); } </script>
lan:固定值zh。語言選擇,目前只有中英文混合模式,填寫固定值zh
ie:編碼方式
spd:語速,取值0-9,默認為5中語速
text:合成的文本,使用UTF-8編碼。小於512個中文字或者英文數字。(文本在百度服務器內轉換為GBK后,長度必須小於1024字節)
這樣就能實現動態文字轉語音播放了。