之前写过一篇《Emlog实现文章标题语音朗读》,该文章中的方法已经失效了,本文是通过百度文字转语音免费接口使用实例。  

百度语音转换接口:  

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=**:这个就是你要转换的文字。  

怎样调用?  

上述接口的url,在浏览器上直接打开,即可听到文字转换后的语音。  

但是真实应用时可不能在浏览器里直接打开这个url,而是需要在一个网页里无缝嵌入该语音模块。该怎么处理呢?  

一、我们可以通过如下的html代码来运行语音接口。  

<audioautoplay="autoplay">  
<sourcesrc="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=www.webkaka.com"type="audio/mpeg">  
<embedheight="0"width="0"src="http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text=www.webkaka.com">  
</audio>  

问题来了,text的字符串是如何得来的?其实,是通过javascript的encodeURI()函数编码得来的。上述字符串是“测试百度文字转语音接口-卡卡测速网www.webkaka.com”通过encodeURI()函数编码得来的。  

二、通过JS调用接口  

下面是JS的实现代码:  

<scripttype="text/javascript">  
varzhText="我的博客www.noteet.com";  
zhText=encodeURI(zhText);  
document.write("<audioautoplay=\"autoplay\">");  
document.write("<sourcesrc=\"http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text="+zhText+"\"type=\"audio/mpeg\">");  
document.write("<embedheight=\"0\"width=\"0\"src=\"http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text="+zhText+"\">");  
document.write("</audio>");  
</script>

最终成品代码:

<!--标题转换语音-->
<script type="text/javascript"> 
var zhText = "<?php echo $log_title; ?>"; 
zhText = encodeURI(zhText);
document.write("<audio autoplay=\"autoplay\">");
document.write("<source src=\"http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=9&text="+ zhText +"\" type=\"audio/mpeg\">");
document.write("<embed height=\"0\" width=\"0\" src=\"http://tts.baidu.com/text2audio?lan=zh&ie=UTF-8&spd=2&text="+ zhText +"\">");
document.write("</audio>");
</script>