返回

浏览器原生JavaScript实现离线文字转语音TTS播放

Android

浏览器中利用 JavaScript 畅享语音交互

在当今数字世界中,语音交互已成为主流,而浏览器原生 JavaScript 就可轻松实现,让网页开发人员轻松打造引人入胜的语音交互应用程序。

浏览器支持

各大主流浏览器均已支持语音合成(文字转语音)和语音识别(语音转文字),具体支持情况如下:

浏览器 语音合成 语音识别
Chrome 支持 支持
Firefox 支持 支持
Safari 支持 不支持
Edge 支持 支持
Opera 支持 支持

实现原理

浏览器原生 JavaScript 通过 Web Speech API 实现语音交互功能,它提供两大主要功能:

  • SpeechSynthesis: 允许网页生成语音。
  • SpeechRecognition: 允许网页识别语音。

语音合成步骤

  1. 创建 SpeechSynthesis 对象
const synth = window.speechSynthesis;
  1. 创建 SpeechSynthesisUtterance 对象
const utterance = new SpeechSynthesisUtterance();
  1. 设置 SpeechSynthesisUtterance 对象属性
utterance.text = 'Hello world!';
utterance.lang = 'en-US';
utterance.rate = 1;
utterance.pitch = 1;
  1. 将 SpeechSynthesisUtterance 对象添加到 SpeechSynthesis 对象
synth.speak(utterance);
  1. 监听 SpeechSynthesis 对象事件
  • speechstart:语音合成开始触发。
  • speechend:语音合成结束触发。
  • speecherror:语音合成出错触发。

语音识别步骤

  1. 创建 SpeechRecognition 对象
const recognition = new SpeechRecognition();
  1. 设置 SpeechRecognition 对象属性
recognition.lang = 'en-US';
recognition.continuous = true;
recognition.interimResults = true;
  1. 监听 SpeechRecognition 对象事件
  • start:语音识别开始触发。
  • end:语音识别结束触发。
  • result:识别到语音结果时触发。
  • error:语音识别出错触发。

移动端实现

移动端语音交互的实现与桌面端类似,但需要使用不同的 API:

  • iOS: AVFoundation 框架
  • Android: Speech API

结语

利用浏览器原生 JavaScript 实现语音交互既简单又高效。通过几行代码,网页就能具备语音输出和语音输入功能。这为语音交互应用的开发开辟了无限可能。

常见问题解答

  1. 是否需要特殊的插件或库?
    不,Web Speech API 已原生集成在各大浏览器中。

  2. 语音交互是否适用于所有设备?
    是的,只要浏览器支持,所有设备都可以享受语音交互功能。

  3. 语音识别准确度如何?
    语音识别的准确度取决于环境噪音、麦克风质量和说话人的清晰度。

  4. 语音合成有哪些语言选项?
    Web Speech API 支持多种语言,具体取决于浏览器。

  5. 我可以自定义语音合成的音调和语速吗?
    是的,可以通过 SpeechSynthesisUtterance 对象的 ratepitch 属性进行自定义。