JS文字转语音技术实现

这篇具有很好参考价值的文章主要介绍了JS文字转语音技术实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

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

一、Web Speech API

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

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官网插件下载地址文章来源地址https://www.toymoban.com/news/detail-652338.html

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;
});

到了这里,关于JS文字转语音技术实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 离线语音识别实现语音转文字

    model下载 我们需要实现离线语音识别,那么就得将模型下载到本地电脑。下载地址为官网的 Models 模块: https://alphacephei.com/vosk/models 我们直接找到 Chinese 分类,这里有 2 个模型 将下载的语言模型包,在下面代码中引入 代码 CommonUtils 注意:以上代码只支持.wav格式的音频文件

    2024年02月05日
    浏览(38)
  • 我开发了一个【免费】使用微软的文字转语音服务的js库

    尝试过各种TTS的方案,一番体验下来,发现微软才是这个领域的王者,其 Azure文本转语音 服务的转换出的语音效果最为自然,但Azure是付费服务,注册操作付费都太麻烦了。但在其官网上竟然提供了一个 完全体 的演示功能,能够完完整整的体验所有角色语音,说话风格…

    2024年02月05日
    浏览(40)
  • Ubuntu20.04 使用Python实现全过程离线语音识别(包含语音唤醒,语音转文字,指令识别,文字转语音)

      因为手头有一个项目,该项目需要在香橙派上实现语音控制,并且带有语音唤醒功能。简单来说,就是通过唤醒词唤醒香橙派,然后说出相关指令,香橙派去执行指令。   但是,在弄香橙派的时候,自带的麦克风不好使了,单独进行麦克风测试的时候是好使的,但是程

    2024年02月05日
    浏览(37)
  • 前端js动态切换图片文字

    2024年02月09日
    浏览(31)
  • vue项目,实现语音识别文字,前后端交互

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 最近实现一个录音上传功能,并且识别语音转为汉字。 js-audio-recorder是基于第三方的vue插件,实现录音,播放等功能。 代码如下(示例): 代码如下(示例): 该处使用的url网络请求的数据。 前端调

    2024年02月12日
    浏览(37)
  • 【face-api.js】前端实现,人脸捕获、表情识别、年龄性别识别、人脸比对、视频人脸追踪、摄像头人物识别

    官网看下简介,在线预览看下效果 官方的github文件拷下来 npm i face-api.js 把模型文件拷进你的项目 主要是在图片或视频元素上,盖一个相同大小的canvas 先是录入一些图片的描述信息,然后比较描述信息,判断人脸的相似度 人脸检测器有两种, SSD 和 Tiny 两种,SSD较大,Tiny用

    2024年02月11日
    浏览(40)
  • tensorflow.js 练习语音识别控制轮播图(十二)

    示例 html部分 执行结果  

    2024年02月14日
    浏览(30)
  • jQuery.js - 前端必备的Javascript库

    作者: WangMin 格言: 努力做好自己喜欢的每一件事 jQuery.js 是什么? jQuery是一个快速简洁、免费开源易用的JavaScript框架, 倡导写更少的代码,做更多的事情 。它封装JavaScript常用的功能代码,提供了一种简便的JavaScript设计模式,以及我们开发中常用到的操作DOM的API,优化HTML文

    2024年02月05日
    浏览(50)
  • web前端框架JS学习之JavaScript类型转换

    vascript有多种数据类型,如字符串、数字、布尔等,可以通过typeof语句来查看变量的数据类型。数据类型转换就是数据类型之间相互转换,比如把数字转成字符串、把布尔值转成字符串、把字符串转成数字等,这在工作也是经常碰到的。 本期我们就给大家说说web前端框架JS学

    2024年02月10日
    浏览(41)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包