想问下这个语音转文字的javascript的包,背后的原理是什么?是用了深度学习算法吗?为啥可以准确地识别 语音
https://www.npmjs.com/package/speak-tts
Speech synthesis (tts) for the browser,这是基于浏览器的语音合成吧,自动播放一段话,给你。这是Html5的新特性,尤其是chrome等这种浏览器支持比较好,可以根据文字合成音,然后读出来。跟语音合成的另一个反面是语音转文字,这种正确率比较低,尤其设计到方言和不同的口语。不是这个tts可以搞得定的,还需要配合机器学习,要很大的训练库来训练语音。
希望可以帮到你,欢迎交流。
封装的api调用吧,服务端实现的,非js实现的核心功能
一般都是对api的封装。你可以去看看百度、微软、科大讯飞等,都提供语音识别的API服务
啊,你可以把源码发给我,我帮你分析一下
这上边对应的API都有相对应的github源码
API:
https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis
参考他的官方介绍 https://www.npmjs.com/package/speak-tts
TTS是基于浏览器的文本到语音转换,给出一个基于Promise的API (init()和speak()方法分别返回一个Promise) -> init()在声音加载后解析-> speak()在全文被读出后解析。
就是利用window.speechSynthesis
和window.SpeechSynthesisUtterance
这两个api
https://developer.mozilla.org/zh-CN/docs/Web/API/SpeechSynthesis
https://developer.mozilla.org/zh-CN/docs/Web/API/SpeechSynthesisUtterance
speak-tts源码:https://github.com/tom-s/speak-tts
一个简单例子
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<form>
<input />
<select></select>
<button type="submit">submit</button>
</form>
<script>
function getVoices() {
return new Promise((resolve, reject) => {
setTimeout(() => {
if (speechSynthesis.getVoices().length > 0) {
resolve(speechSynthesis.getVoices())
} else {
reject('error')
}
}, 200)
})
}
var synth = window.speechSynthesis;
getVoices().then((res) => {
var voices = speechSynthesis.getVoices();
var inputForm = document.querySelector('form');
var inputTxt = document.querySelector('input');
var voiceSelect = document.querySelector('select');
for(var i = 0; i < voices.length; i++) {
var option = document.createElement('option');
option.textContent = voices[i].name + ' (' + voices[i].lang + ')';
option.value = i;
voiceSelect.appendChild(option);
}
inputForm.onsubmit = function(event) {
event.preventDefault();
var utterThis = new SpeechSynthesisUtterance(inputTxt.value);
utterThis.voice = voices[voiceSelect.value];
synth.speak(utterThis);
inputTxt.blur();
}
})
</script>
</body>
</html>
嗯,在理解这个前,先学习理解语音转文字asr(tts原理),链接:https://www.zhangshilong.cn/work/10496.html
其次学习,JavaScript工作原理,链接:https://blog.csdn.net/weixin_45240303/article/details/120839116
所以:speak-tts 这个JavaScript的包背后逻辑是借用 JavaScript 中speak.js来实现的 TTS 库,开发,在其基础上增加对 Webkit 和 Safari 浏览器的支持,引入的语音模块。
【纯属自我理解,仅供参考】
调用系统自动的api进行解析
Speech-to-Text 目前还是这种形式,将声音数字化处理音频。语音先变成频谱图,对比特征提取并提取梅尔谱图。基本可以理解为将声音以图像的形式呈现,对图像进行机器学习训练。图像的深度学习,就是用神经网络通过卷积运算提取相应的多层金字塔特征点并整体保存。
不是深度学习吧,我接触时没遇到里面这种,它里面是基于浏览器的文本到语音转换吧,给出一个基于Promise的API ,然后分别返回一个Promise