首页 > 代码库 > 语音控制的tab选项卡

语音控制的tab选项卡

前端开发whqet,csdn,王海庆,whqet,前端开发专家

ladies and 乡亲们,程序猿同志们,周末仍然坚守工作岗位,或者学习不辍的童鞋们,福音来了。

语音识别高不高端、难不难?

今天给大家推荐一个简单易用的js实现的语音识别框架annyang,然后一个案例示范使用。

 

在线案例,下载收藏。

annyang是一个能够实现语音识别的js类库,小巧易用(只2k),兼容中文。接下来我们看看怎么使用。

首先导入该annyang库,能够使用CDN的方式,也能够下载来使用。

<!--下载到本地使用-->
<script src=http://www.mamicode.com/"js/annyang.min.js" type="text/javascript" charset="utf-8"></script>>然后我们就能够在js里使用该类库了,開始之前我们须要推断annyang对象是否存在。

// 首先推断 annyang对象是否存在
  if (annyang) {
  	// 语音识别命令推断
  	
  }
  else{
  	// 错误提示信息
  	
  }
annyang通过设置命令、语音识别匹配命令的方式的进行工作,详细的使用代码例如以下。

// 首先推断 annyang对象是否存在
if (annyang) {
    // 语音识别命令推断
    
    // 定义命令
  var commands = {
    ‘go‘: function() {
      window.location.href=http://www.mamicode.com/"http://blog.csdn.net/whqet/";>annyang的基本使用就这样,我们来看看今天的这个tab,详细的实现步骤例如以下。

html

<ul class="tabs">
    <li class="active" rel="tab1">新闻</li>
    <li rel="tab2">通知</li>
    <li rel="tab3">公告</li>
    <li rel="tab4">备注</li>
</ul>
<div class="tab_container">
    <div id="tab1" class="tab_content">
        <h2>新闻</h2>
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec ac metus augue.</p>
    </div>
    <!-- #tab1 -->
    <div id="tab2" class="tab_content">
        <h2>通知</h2>
        <p>Nunc dui velit, scelerisque eu placerat volutpat, dapibus eu nisi. Vivamus eleifend vestibulum odio non vulputate.</p>
    </div>
    <!-- #tab2 -->
    <div id="tab3" class="tab_content">
        <h2>公告</h2>
        <p>Nulla eleifend felis vitae velit tristique imperdiet. Etiam nec imperdiet elit. Pellentesque sem lorem, scelerisque sed facilisis sed, vestibulum sit amet eros.</p>
    </div>
    <!-- #tab3 -->
    <div id="tab4" class="tab_content">
        <h2>备注</h2>
        <p>Integer ultrices lacus sit amet lorem viverra consequat. Vivamus lacinia interdum sapien non faucibus. Maecenas bibendum, lectus at ultrices viverra, elit magna egestas magna, a adipiscing mauris justo nec eros.</p>
    </div>
    <!-- #tab4 -->
</div>
<!-- .tab_container -->
css

ul.tabs {
	margin: 0;
	padding: 0;
	float: left;
	list-style: none;
	height: 32px;
	border-bottom: 1px solid #333;
	width: 100%;
}

ul.tabs li {
	float: left;
	margin: 0;
	cursor: pointer;
	padding: 0px 21px;
	height: 31px;
	line-height: 31px;
	border-top: 1px solid #333;
	border-left: 1px solid #333;
	border-bottom: 1px solid #333;
	background-color: #666;
	color: #ccc;
	overflow: hidden;
	position: relative;
}

.tab_last {
	border-right: 1px solid #333;
}

ul.tabs li:hover {
	background-color: #ccc;
	color: #333;
}

ul.tabs li.active {
	background-color: #fff;
	color: #333;
	border-bottom: 1px solid #fff;
	display: block;
}

.tab_container {
	border: 1px solid #333;
	border-top: none;
	clear: both;
	float: left;
	width: 100%;
	background: #fff;
	overflow: auto;
}

.tab_content {
	padding: 20px;
}
js,这里用到了jquery,annyang

$(document).ready(function(){
	//普通tab,单击控制
	$(".tab_content").hide();
	$(".tab_content:first").show();
	$(‘ul.tabs li‘).last().addClass("tab_last");
	
	$("ul.tabs li").click(function() {
		
		$(".tab_content").hide();
		$(".tab_content").eq($(this).index()).show();
	
		$("ul.tabs li").removeClass("active");
		$(this).addClass("active");
	
	});
	
	// 语音控制,首先推断 annyang对象是否存在。
	if (annyang) {   
		// 定义语音控制命令里使用的函数,切换tab
		var showTab=function(i){
			$(".tab_content").hide();
			$(".tab_content").eq(i).show();
			
			$("ul.tabs li").removeClass("active");
			$("ul.tabs li").eq(i).addClass("active");
		};
		
		// 定义命令
		var commands = {
		  ‘新闻‘:		function(){showTab(0)},
		  ‘通知‘:		function(){showTab(1)},
		  ‘公告‘:		function(){showTab(2)},
		  ‘备注‘:		function(){showTab(3)},
		};
		
		// 设置语言,默觉得en
		annyang.setLanguage(‘zh-cn‘);
		// 可选设置,调试功能打开,建议开发阶段打开
		annyang.debug();		
		// 加入命令
		annyang.addCommands(commands);			
		// 開始侦听annyang,也能够绑定在事件上
		annyang.start();
	}
})

That‘s it. 敬请留言,说说你的意见和建议。
另外,该案例主要使用“Web Speech API”,眼下比較悲催的是该api唯独webkit内核支持,兼容全部浏览器的方案正在研究中,兼容性表格例如以下。

大家也能够在chrome开发人员工具的Console里查看语音的识别情况,有时候普通话不标准也会出问题,呵呵,我女儿今年四半岁,看见我在语音控制也跃跃欲试,然后“通知”说成“同子”,然后就非常急躁,当然成熟的语音识别方案应该也兼容模糊音,浏览器的语音识别还有非常长的路要走。

感谢大家的留言和宝贵意见,有好的解决方式第一时间告诉大家。

----------------------------------------------------------

前端开发whqet,关注web前端开发,分享相关资源,欢迎点赞,欢迎拍砖。
---------------------------------------------------------------------------------------------------------