试玩HTML5 Web Speech API

google chrome桌面版最近提供了Web Speech API,手痒想尝试一下这新鲜玩意,跟以前的input框的语音输入有什么区别呢?上代码最直接!

	<body>
		
		<div id="result" >
			<span class="final" id="final_span"></span>
			<span class="interim" id="interim_span"></span>
			
		</div>
		
		<button id="startBtn" >Start!</button>
		
	</body>
一段简单的前端HTML


/**
 * @author junhong
 */

$(document).ready(function(){
	

	var final_span = $('#final_span');
	var interim_span = $('#interim_span');
	var final_transcript = "";
	
	$('#startBtn').bind('click', function(event) {
		BtnHandle();
	});
	 
	
	if (!('webkitSpeechRecognition' in window)	) {
			console.log("no webkitSpeechRecognition in window");
		}
		else{
			console.log(" webkitSpeechRecognition in window");
			var recognition = new webkitSpeechRecognition();
			recognition.continuous = true;
			recognition.interimResults = true;
			recognition.land = "en-US";         //介是语言
			
			
			recognition.onresult = function(event){
				
		
				var interim_transcript = ''; //介是放recognition在识别时产生的未最后确定识别的字符串,类似缓冲
		
				for (var i = event.resultIndex; i < event.results.length; ++i) {
					if (event.results[i].isFinal) {
						final_transcript += event.results[i][0].transcript;//最后确定的字符串 
						
					} else {
						interim_transcript += event.results[i][0].transcript;//未到最后一个字符就累加缓冲字符串
					}
					
				}
				//console.log(final_transcript);
				
				final_transcript = capitalize(final_transcript);
				final_span.html(final_transcript+".");
				interim_span.html(linebreak(interim_transcript));
				

				};

			};
			recognition.onerror = function(event){  //处理错误的地方};
			recognition.onend = function(){
				
			};
			
	
	
	function BtnHandle(){
		recognition.start();
	};
	

	var two_line = /\n\n/g;
	var one_line = /\n/g;
	function linebreak(s) {
		return s.replace(two_line, '<p></p>').replace(one_line, '<br>');
	}

	var first_char = /\S/;
	function capitalize(s) {
		return s.replace(first_char, function(m) {
			return m.toUpperCase();
		});
	}

	
});
每当onstart开始,麦克风就开始请求监听麦克风,期间获取声音后上传到谷歌的服务器进行识别,不是本地识别,所以网络因素对识别速度影响很大,好的话即说即有,慢的话会卡很久不动,不过放心,到最后它还是会出结果,只是延迟了。




onresult不断返回的句柄里的result是个SpeechRecognitionResultList,进行识开始录音后返回的SpeechRecognitionResultList数组,短时间内随着你讲的东西越多,它会在里面多增加SpeechRecognitionResult,里面有个transcript就存放着一小段识别出来的字符串,把这些transcript连起来就是你说的话了。


英文:

白话:


台湾:






记得装上Chrome25以上的版本,或者 Chrome Canary


差不多是这样了,谷歌引领语音识别技术啊!
参考文章:蒋宇捷  http://blog.csdn.net/hfahe/article/details/8511238



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值