前端实现文字转语音功能

2022-11-24  本文已影响0人  乐宝呗

刚做一个项目,需要将文字内容作为语音内容并播报出来,于是开始研究:

1. 前端尝试实现:

利用 H5 新API SpeechSynthesisUtterance 来实现,基本属性如下所示:

var speech = new SpeechSynthesisUtterance()

实现代码如下:

html代码:

    <button id="btn">开始播报</button>
    <button id="pause">停止播报</button>

javascript代码:

   const synth = window.speechSynthesis; // 启用文本
   const msg = new SpeechSynthesisUtterance(); 
   document.querySelector('#btn').addEventListener('click',function(){
            var tips = '开始播放语音,请注意:';
            msg.text = tips; 
            msg.lang = "zh-CN"; // 使用的语言:中文
            msg.volume = 1; // 声音音量:1
            msg.rate = 1; // 语速:1
            msg.pitch = 1; // 音高:1
            synth.speak(msg); // 播放
    })
    document.querySelector('#pause').addEventListener('click',function(){
            msg.text = '';
            msg.lang = "zh-CN";
            synth.cancel(msg); // 取消该次语音播放
    })

这个API的兼容性,需要考虑下,项支持IE11,那就放弃吧。 如下所示:


1.png

2. 百度对外共享的TTS接口实现文本转语音

目前我们选择的是这个方案:

  1. 前端将需要转为语音的文字发给后台,
  2. 后台会通过tts生成MP3格式的文件,并通过接口返给前端
  3. 前端拿到mp3Url地址,绑定到audio的src上
<audio controls="controls" ref="MP3" hidden="true" loop="true">
          <source :src="mp3Url" type="audio/mp3">
</audio>

虽然实现了,兼容性比H5API好点,但是语音有点卡顿,很机械。
各有所需,看情况定吧。

上一篇 下一篇

猜你喜欢

热点阅读