做一个机器人,名字暂且叫wobot吧。
这是一个语音机器人,具体用什么做还没确定,假设用单片机吧,也可能是个app或者网页。
它能够根据你的声音识别你是谁,根据你的语音命令给出合理的反馈。
如果有多个人同时在和它交谈的话,它能够分辨出重要性更高的人的命令,并做出相应。(admin-user-other)
在命令识别的时候,它可以分析出命令的准确性,如果是个模糊的命令,它可以提问来确认。
主要的功能有:播放天气预报、读诗、留言
1.播放天气预报
播放当前城市的当天天气预报(城市是我预设好的,天气数据来自公共接口)
2.读诗
根据命令,播放制定的诗
3.留言
我来录入留言,wobot在我儿子使用的时候,提示有留言,并根据命令来播放。
目前自我感觉有几个问题需要解决
1.语音识别的问题
2.语音播放的问题
3.命令匹配的精确度
4.根据语音识别用户(识别出是我,还是我儿子或者是其他人)
5.根据网络接口读取到天气数据
6.这些程序内容运行在怎样的一个环境里
先放一段上午没事,写的几个内容。
<html> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <input type="text" name="message" id="message"/> <input type="button" value="send" onclick="sendMessage()"/> <div style="height:50px;width:600px;" id="content"> </div> <div style="height:50px;width:600px;" id="chatLog"> </div> <script> /** 基础问题数据设置 **/ var chatAnswer={}; var questionAliasSetting={};//问题的alias chatAnswer["你好"]="你好,很高兴见到你。" questionAliasSetting["你好"]=new Array("你好","hello","您好","你好啊","hi"); chatAnswer["名字"]="我是leo的小兄弟heo。" questionAliasSetting["名字"]=new Array("名字","你叫什么","你是谁","你的名字是什么","姓名","name"); chatAnswer["日期"]=new Date().toLocaleDateString(); questionAliasSetting["日期"]=new Array("日期","当前日期","今天","date","today"); chatAnswer["时间"]=new Date().toLocaleString(); questionAliasSetting["时间"]=new Array("时间","当前时间","现在是","now","time"); chatAnswer["王洛宾鹅"]="鹅鹅鹅, 曲项向天歌。 白毛浮绿水, 红掌拨清波"; questionAliasSetting["王洛宾鹅"]=new Array("王洛宾鹅","关于鹅的诗","鹅","鹅鹅鹅","eee"); var qMap=initSetting(questionAliasSetting);//初始化问题和答案 /** 环境设置 **/ var currentUser="user";//当前人 var chatUser="user";//此次回话参与者,按照逗号分隔 admin,user,other var noAnswer=new Array("你问的问题我不知道哪","没听明白你说的","我搞不懂你说的哪","不清楚","不知道");//没有匹配问题的回答,随机答案 var chatQHistory=new Array();//历史问题 var chatAHistory=new Array();//历史回答 function sendMessage(){ var message=document.getElementById("message"); var content=document.getElementById("content"); var messageValue=message.value; var answerValue=getAnswer(messageValue) content.innerHTML=answerValue; logChat(messageValue,answerValue); document.getElementById("chatLog").innerHTML=getChatLog(); } function logChat(message,answer){//记录日志,每次通话都要记录 chatQHistory[chatQHistory.length]=message; chatAHistory[chatAHistory.length]=answer; } function getChatLog(){//返回记录的日志 var chatQuestion=""; for(var j=0;j<chatQHistory.length;j++){ chatQuestion=chatQuestion+"<br />"+chatQHistory[j]+" -> "+chatAHistory[j]; } return chatQuestion; } function getAnswer(varQuestion){//获取返回内容 var cAnswer=chatAnswer[parseContent(varQuestion)]; if(typeof(cAnswer) == "undefined" ){ return noAnswer[Math.floor(Math.random()*(noAnswer.length-1))]; }else { return cAnswer; } } function parseContent(varContent){//分析传来的内容,标准化 /**if(confirm("你问的是"+varContent+"吗")){ varContent=qMap[varContent]; }else{ varContent=null; **/ varContent=qMap[varContent]; return varContent; } function initSetting(setting){ var aliasMap={}; for(var k in setting) { for(var j=0;j<setting[k].length;j++){ aliasMap[setting[k][j]]=k; } } return aliasMap; } </script> </html>
<html> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <input type="text" name="message" id="message"/> <input type="button" value="send" onclick="sendMessage()"/> <div style="height:50px;width:600px;" id="content"> </div> <div style="height:50px;width:600px;" id="chatLog"> </div> <script> /** 基础问题数据设置 **/ var chatAnswer={}; var questionAliasSetting={};//问题的alias questionAliasSetting["你好,很高兴见到你"]=new Array("你好","hello","您好","你好啊","hi"); questionAliasSetting["我是leo的小兄弟heo。"]=new Array("名字","你叫什么","你是谁","你的名字是什么","姓名","name"); questionAliasSetting[new Date().toLocaleDateString()]=new Array("日期","当前日期","今天","date","today"); questionAliasSetting[new Date().toLocaleString()]=new Array("时间","当前时间","现在是","now","time"); questionAliasSetting["鹅鹅鹅, 曲项向天歌。 白毛浮绿水, 红掌拨清波"]=new Array("王洛宾鹅","关于鹅的诗","鹅","鹅鹅鹅","eee"); var qMap=initSetting(questionAliasSetting);//初始化问题和答案,qMap的结构是map["问题1-n"]="答案1-n" /** 环境设置 **/ var currentUser="user";//当前人 var chatUser="user";//此次回话参与者,按照逗号分隔 admin,user,other var noAnswer=new Array("你问的问题我不知道哪","没听明白你说的","我搞不懂你说的哪","不清楚","不知道");//没有匹配问题的回答,随机答案 var chatQHistory=new Array();//历史问题 var chatAHistory=new Array();//历史回答 function sendMessage(){//按钮时间 var message=document.getElementById("message"); var content=document.getElementById("content"); var messageValue=message.value; var answerValue=getAnswer(messageValue);//1.获取答案 content.innerHTML=answerValue; logChat(messageValue,answerValue); //2.记录日志 document.getElementById("chatLog").innerHTML=getChatLog(); } function logChat(message,answer){//记录日志,每次通话都要记录 chatQHistory[chatQHistory.length]=message; chatAHistory[chatAHistory.length]=answer; } function getChatLog(){//返回记录的日志 var chatQuestion=""; for(var j=0;j<chatQHistory.length;j++){ chatQuestion=chatQuestion+"<br />"+chatQHistory[j]+" -> "+chatAHistory[j]; } return chatQuestion; } function getAnswer(varQuestion){//获取返回内容 var cAnswer=qMap[varQuestion]; if(typeof(cAnswer) == "undefined" ){ return noAnswer[Math.floor(Math.random()*(noAnswer.length-1))]; }else { return cAnswer; } } function initSetting(setting){ var aliasMap={}; for(var k in setting) { for(var j=0;j<setting[k].length;j++){ aliasMap[setting[k][j]]=k; } } return aliasMap; } </script> </html>
<html> <meta http-equiv="content-type" content="text/html;charset=utf-8"> <input type="text" name="message" id="message"/> <input type="button" value="send" onclick="sendMessage()"/> <div style="height:50px;width:600px;" id="content"> </div> <div style="height:50px;width:600px;" id="chatLog"> </div> <script> /** 基础问题数据设置 **/ var chatAnswer={}; var questionAliasSetting={};//问题的alias questionAliasSetting["你好,很高兴见到你"]=new Array("你好","hello","您好","你好啊","hi"); questionAliasSetting["我是leo的小兄弟heo。"]=new Array("名字","你叫什么","你是谁","你的名字是什么","姓名","name","我问你是谁","我问你叫什么"); questionAliasSetting[new Date().toLocaleDateString()]=new Array("日期","当前日期","今天","date","today"); questionAliasSetting[new Date().toLocaleString()]=new Array("时间","当前时间","现在是","now","time"); questionAliasSetting["鹅鹅鹅, 曲项向天歌。 白毛浮绿水, 红掌拨清波"]=new Array("王洛宾鹅","关于鹅的诗","鹅","鹅鹅鹅","eee"); var qMap=initSetting(questionAliasSetting);//初始化问题和答案,qMap的结构是map["问题1-n"]="答案1-n" /** 环境设置 **/ var currentUser="user";//当前人 var chatUser="user";//此次回话参与者,按照逗号分隔 admin,user,other var noAnswer=new Array("你问的问题我不知道哪","没听明白你说的","我搞不懂你说的哪","不清楚","不知道");//没有匹配问题的回答,随机答案 var chatQHistory=new Array();//历史问题 var chatAHistory=new Array();//历史回答 function sendMessage(){//按钮时间 var message=document.getElementById("message"); var content=document.getElementById("content"); var messageValue=message.value; var answerValue=getAnswer(messageValue);//1.获取答案 content.innerHTML=answerValue; logChat(messageValue,answerValue); //2.记录日志 document.getElementById("chatLog").innerHTML=getChatLog(); } function logChat(message,answer){//记录日志,每次通话都要记录 chatQHistory[chatQHistory.length]=message; chatAHistory[chatAHistory.length]=answer; } function getChatLog(){//返回记录的日志 var chatQuestion=""; for(var j=0;j<chatQHistory.length;j++){ chatQuestion=chatQuestion+"<br />"+chatQHistory[j]+" -> "+chatAHistory[j]; } return chatQuestion; } function getAnswer(varQuestion){//获取返回内容 var cAnswer=qMap[varQuestion]; if(typeof(cAnswer) == "undefined" ){//没有该问题完全匹配的答案 return noAnswer[Math.floor(Math.random()*(noAnswer.length-1))]; }else { return cAnswer; } } function initSetting(setting){ var aliasMap={}; for(var k in setting) { for(var j=0;j<setting[k].length;j++){ aliasMap[setting[k][j]]=k; } } return aliasMap; } </script> </html>