首页 > 代码库 > 浏览器中的语音识别功能

浏览器中的语音识别功能

你能用这儿的代码片段轻松地为个人网站添加语音识别功能,而且仅用原生的javascript就可实现。

上周四我有幸在西雅图的Code Fellows大会上就浏览器中的语音识别发了言。

当时许多人惊讶于用原生javascript为个人网站添加语音识别功能竟如此简单。因此我觉得可以在这里分享一些代码片段,目前这些代码只在Chrome下工作。

 

识别语音

你可以将语音转化为文字:

var sr = new webkitSpeechRecognition();

sr.onresult = function (evt) {

    console.log(evt.results[0][0].transcript);

}

sr.start();

 

你也同样可以得到结果的置信水平(置信水平指特定个体对特定命题真实性相信的程度--来自百度):

var sr = new webkitSpeechRecognition();

sr.onresult = function (evt) {

    console.log(evt.results[0][0].transcript, evt.results[0][0].confidence);

}

sr.start();

 

你可以得到中间结果:

sr.interimResults = true;// false by default

sr.onresult = function(evt) {

for (var i = 0; i < evt.results.length; ++i) {

console.log(evt.results[i][0].transcript);

};

};

 

或是已识别语音的几种不同选择结果:

sr.maxAlternatives = 10;// default = 1

sr.onresult = function(evt) {

for (var i = 0; i < evt.results[0].length; ++i) {

console.log(evt.results[0][i].transcript);

}

}

 

你可以设定一种语言,以便改进:

sr.lang = ‘pl-PL‘

 

以上所有将在你讲话停止时停止识别。为避免识别中途停止,你需要设置continuous标志位为true。

另外,这样会导致每段语音都被当作中间结果,因此你同样需要更新onresult回调函数:

sr.continuous = true;// false by default

sr.onresult = function(evt) {

console.log(evt.results[evt.results.length-1][0].transcript);

};

 

JS中的语音识别对象除了onresult,还有以下可用的回调函数:

sr.onstart = function() { console.log("onstart"); }

sr.onend = function() { console.log("onend"); }

sr.onspeechstart = function() { console.info("speech start"); }

sr.onspeechend = function() { console.info("speech end"); }

 

输出语音

 

var msg = new SpeechSynthesisUtterance(‘Hi, I\‘m Jakub!‘);

speechSynthesis.speak(msg);

 

你也可以改变输出的发音:

var voices = window.speechSynthesis.getVoices();

msg.voice = voices[10]; // Note: some voices don‘t support altering params

 

下面是其他可以设置的选项:

msg.volume = 1; // 0 to 1

msg.pitch = 2; //0 to 2

msg.text = ‘Hello World‘;

msg.lang = ‘en-US‘;
msg.onend
= function(e) { console.log(‘Finished in ‘ + event.elapsedTime + ‘ seconds.‘); };

 

总结

 

语音识别在浏览器中的应用已不可能逆转,问题是大多数网站会在何时增加对语音的支持。

下面的三个有关语音识别接口的链接或许对你有帮助:

My GitHub: https://github.com/jj09/voiceCmdr

My Website: http://jj09.net/website-with-speech-recognition-for-free/

My Demo: http://bookslib.azurewebsites.net/#/

注:本文为译文。

原文链接: https://dzones.com/articles/speech-recognition-in-the-brower-1

浏览器中的语音识别功能