JS文字转语音技术实现

前言

最近在做排队叫号系统,涉及到文字转语音播报,因此总结了几种前端文字转语音发声的方法。

一、Web Speech API

h5新提供的一个原生语音识别技术的API,可以将文本转成语音并播放。
作为官方的api,实现的效果是比较符合理想的,支持的语言种类也很丰富, 就是兼容性上不太友好。下面兼容情况。
在这里插入图片描述

const synth = window.speechSynthesis; // 启用文本
const msg = new SpeechSynthesisUtterance(); // 表示一次发音请求。其中包含了将由语音服务朗读的内容,以及如何朗读它(例如:语种、音高、音量)。

 // 语音播报的函数
const handleSpeak=(text)=> {
     msg.text = text; // 文字内容: 测试内容
     msg.lang = "zh-CN"; // 使用的语言:中文
     msg.volume = 1; // 声音音量:1
     msg.rate = 1; // 语速:1
     msg.pitch = 1; // 音高:1
     synth.speak(msg); // 播放
 },
 // 语音停止
const  handleStop=(e)=>  {
     msg.text = e;
     msg.lang = "zh-CN";
     synth.cancel(msg); // 取消该次语音播放
 }

补充:其他相关回调函数

speech.lang 获取并设置话语的语言(en-US、zh-CN)
speech.pitch 获取并设置话语的音调 (值越大越尖锐,range:0-2, default:1, float)
speech.rate 获取并设置说话的速度 (值越大语速越快, range:0.1-10, default:1, float)
speech.text 获取并设置说话时的文本
speech.voice 获取并设置说话的声音
speech.volume 获取并设置说话的音量 (range: 0-1, default:1, float)
speech.onboundary
speech.onend 播放结束的回调
speech.onerror 播放出现错误的回调
speech.onmark 当读到标记文本时的回调
speech.onpause 播放暂停
speech.onresume 播放重启
speech.onstart 播放开始的回调

二、speak-tts

基于Web Speech API开发的组件,跟Web Speech API用法差不多,但是多了下载和引入的部分。同理存在兼容性问题。

  // 下载
  npm install speak-tts
  // 引入
  import Speech from 'speak-tts'
  const speech = ref(null);
  const speechInit = () => {
  speech.value = new Speech();
  speech.value?.setLanguage("zh-CN");
  speech.value?.init().then(() => {
    console.log("语音播报初始化完成");
  });
};
  const speak = () => {
  speech.value?.speak({ text: "测试发声" }).then(() => {
    console.log("播报完成");
  });
};

以上两种方法,在windows与ios环境下的浏览器均好用,但是在android系统下不可用。为了解决此问题衍可采用一下写法。

三、uniapp for TTS离线语音合成

MT-TTS
安卓原生离线语音合成引擎工具插件
MT-TTS-Speech
调用安卓系统已安装的TTS进行语音合成播放
uniapp官网插件下载地址

var TTSSpeech = uni.requireNativePlugin("MT-TTS-Speech");
			TTSSpeech.getInstallTTS(list => {
			console.log("====");
			list.forEach(v => console.log(`引擎名 ${v.label} 包名:${v.name}`));
			})
			
			TTSSpeech.init((status) => {
			if(status === 0){
			console.log('引擎初始化成功')
			TTSSpeech.speak({ text: '测试发声'})
			}
			}, 'com.iflytek.speechcloud')

四、由后端生成音频文件采用原生document进行播放

const queue = ref([]);
queue.value.push(newValue.callUri);
const interval = ref({});
//定时器
let soundID = 0;
const playServer = function () {
  console.log("开启播放线程");
  var ctrlAudio = document.getElementById("audio");
  interval.value = setInterval(function () {
    if (queue.value.length > 0) {
      console.log("待播放音频数:" + queue.value.length);
    }
    if (queue.value.length > 0 && ctrlAudio.paused) {
      ctrlAudio.volume = 1;
      ctrlAudio.setAttribute("src", queue.value[0]);
      ctrlAudio.play();
      queue.value.splice(0, 1);
    }
  }, 500);
};
onMounted(() => {
  soundID = setTimeout(playServer, 1000);
});
onBeforeUnmount(() => {
  clearTimeout(soundID);
  soundID = 0;
});
  • 7
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
Spring Boot是一个用于构建独立的、生产级别的Spring应用程序的框架。Spring Boot可以快速方便地搭建一个基于Java的后端开发环境。 要实现文字转语音功能,可以利用Spring Boot中提供的相关技术和库来实现。以下是一个基本的实现思路: 1. 引入相关依赖:在项目的pom.xml文件中引入Spring Boot Web和Spring Boot语音转换的依赖。例如,可以引入Spring Boot Starter Web和Google Text-to-Speech依赖。 2. 创建Controller:创建一个Spring MVC的Controller类来处理文字转语音的请求。可以添加一个POST接口,接收需要转换的文字作为参数。 3. 调用语音转换API:在Controller中使用Google Text-to-Speech等语音转换API,将文字转换为语音文件。一般来说,这些API提供了将文字转换为音频文件的功能。你可以将转换后的音频保存到本地文件系统/云存储中,并返回音频文件的路径或URL给客户端。 4. 处理转换结果:根据API返回的结果,可以处理转换成功或失败的情况。如果转换成功,可以返回成功的消息和音频文件路径;如果转换失败,可以返回失败的消息和错误码。 5. 编写前端界面:为了方便使用,可以编写一个简单的前端界面,让用户可以输入需要转换的文字。可以使用HTML、CSS和JavaScript等前端技术实现。 6. 部署和运行:将完成的Spring Boot应用程序部署到服务器上,并启动应用程序。你可以通过访问前端界面,输入需要转换的文字来实现文字转语音的功能。 总的来说,使用Spring Boot可以快速实现文字转语音功能。通过引入相关的依赖和使用语音转换API,结合Spring MVC的控制器和前端界面,可以方便地构建一个具有文字转语音功能的应用程序。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值