科大讯飞文字合成语音 html5

科大讯飞 与 H5(思路)
1 获取文字
2 将文字和其他一些信息,调用讯飞接口,去转化为语音,回调给前端。
总结:文字转语音,前端并不能做什么只是传给后台进行处理。

<p>因项目需求,这里需要播放语音,但是网站的数据都是一些文字性的内容,所以我找到了讯飞平台,利用里面提供的Html5语音合成,实现这一功能</p><pre class="html" name="code"><!DOCTYPE html>  
<html>  
<head>  
<script src="https://thlg.nl/p/files/md5.js"></script>   
<script src="http://webapi.openspeech.cn/socket.io/socket.io.js"></script>  
<script src='http://webapi.openspeech.cn/fingerprint.js'></script>  
<script src="http://webapi.openspeech.cn/tts.min.js"></script>  
</head>  
<body>  
       <div id="voice">  
            <input  type="button" onclick="playVoice('今天天气不错,一起去海边烧烤怎么样!');" />  
       </div>  
</body>  
</html>  
<script type="text/javascript">  
    //初始化Session对象  
    var session = new IFlyTtsSession({  
                  'url' : 'http://webapi.openspeech.cn/',                             
                  'interval' : '30000',   
                  'disconnect_hint' : 'disconnect',  
                  'sub' : 'tts'  
            });  
    var audio = null;  
    //输入文本,输出语音播放链接 @content 待合成文本(不超过4096字节)  
    function play(content) {  
        resetVoice();  
        var appid = "你的appid";//应用APPID,在open.voicecloud.cn上申请即可获得  
        var timestamp = new Date().toLocaleTimeString();//当前时间戳,例new Date().toLocaleTimeString()  
            var expires = 60000;//签名失效时间,单位:ms,例60000     
        var vcn="vixr";//发音人,具体可参考官网的api  
        //secretkey在open.voicecloud.cn上申请即可获得  
        var signature = faultylabs.MD5(appid + '&' + timestamp + '&' + expires + '&' + "你的secretkey");        
        var params = { "params" : "aue = speex-wb;7, ent = intp65, spd = 50, vol = 50, tte = utf8, caller.appid=" + appid + ",timestamp=" + timestamp + ",expires=60000,vcn="+vcn, "signature" : signature, "gat" : "mp3"};   
        session.start(params, content, function (err, obj)  
    {  
            if(err) {  
                alert("语音合成发生错误,错误代码 :" + err);  
            } else {  
            if(audio != null)  
                {  
                    audio.pause();  
                }  
                audio = new Audio();  
                audio.src = '';  
        audio.play();  
                audio.src = "http://webapi.openspeech.cn/" + obj.audio_url;  
                audio.play();  
            }  
        },function(message){  
             //语音合成结束启动下一次合成  
         if(message=="onEnd"){  
             console.log("本次会话结束!");  
                 audio=new Audio();  
         }  

        });  
    };  
    function playVoice(str){  
         play(str);  
    }  
     //停止播放音频  
     function stopVoice(){  
          if(audio!=null){  
         audio.state=2;  
         audio.pause();  
          }  
     }  
     //重置音频缓存队列和播放对象,若音频正在播放,则暂停当前播放对象,创建并使用新的播放对象                                
     function resetVoice(){  
          if(audio!=null){  
         audio.pause();  
          }  
          audio=new Audio();  
     }  
</script>  
其实作为H5想要做语音识别,自认为还说有各种弊端得,同时还是微信公众号里面,如果小程序得话,或许会简单一点,但是这里是在公众号里面开发,在这个过程中查阅个各种资料,其实里面得东西都大同小异,但是大多数并不全, 首先微信公众号里面得H5开发语音录入,试过各种方法,由于是java渣渣,页面技术只是了解简单得,因此在使用标签得时候,本身并不能适用于当前得需求,因此最后只能选择了微信自带得录音功能,使用微信提供的接口,(具体得接口使用还是去看微信接口得使用) 由于使用微信得接口得话,首先要上传到它得服务器上面去(虽然也有本地得文件储存id,但是好像并没有用),这里就涉及到了一个serverid,这个值是存在于微信临时素材库得id,后期要用它来获取录音得文件。 通过微信提供得获取临时素材文件得接口,得到了文件(具体方法网上一搜一大堆,后期我也会将完整得代码放进资源里面),但是这里有一个坑得问题,他的格式为.amr得格式,但是最后的目的是转换为文字,因此这里涉及到了格式转换 主要用了现成得技术,也是通过下载资源获取得jar以及实现得方法,将.amr转换为了MP3格式 然后就就是最后一部了,将mp3得音频文件转换为文字,我这里用的是得技术,当然百度得也可以, 其实整个需求得这个流程已经完成了,但是不得不说里面遇到得坑,由于是渣渣,除了人们总说的,转换为mp3得时候会报N/A得错误,我还遇到了unkowFormat这个错误。 这里只是记录一下自己在查询资料时没有一个符合自己需求得资料,同时也希望以后有这样需求得人,可以将思路捋的更加清楚,也可以进行交流.
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值