页面加载时谷歌语音搜索

时间:2013-04-13 02:38:50

标签: javascript jquery html speech-recognition

首先,我正在尝试创建一个我不希望永远工作的临时解决方案。只是一个实验,如果你愿意的话!

我有以下跑步! 我想要做的是在页面加载时启动语音搜索。 有任何想法让这个工作! 注意:您需要使用Chrome浏览器才能看到麦克风输入。

http://jsfiddle.net/dirtyd77/99amf/

<html>
<head>
<style>

#mike {
font-size: 25px;
width: 25px;
height: 25px;
cursor:pointer;
border: none;
position: absolute;
margin-left: 5px;
outline: none;
background: transparent;
}
#txt {
height: 150px;
width: 150px;
}
</style>

<script>
var mike = document.getElementById('mike');
mike.onfocus = mike.blur;
mike.onwebkitspeechchange = function(e) {
console.log(e); // SpeechInputEvent
document.getElementById('txt').value = mike.value;  
};
</script>
</head>

5 个答案:

答案 0 :(得分:13)

不幸的是,这是不可能的。最重要的原因是它会是invasion of privacy/security hazard。用户必须 愿意 选择录制(在这种情况下,通过鼠标点击)。如果可以模拟事件并且用户不知道他们正在被记录,则可能会产生严重的法律后果。希望这有帮助!


<强> 更新:

这是来自documentSpeech Input

  

为了最大程度地降低用户无意中让网页在他们不知情的情况下录制语音的可能性,如果网页丢失输入焦点到另一个窗口或同一用户代理中的另一个选项卡,则实现必须中止活动语音输入会话。

以下是同一document

的问题
  

1)从安全角度来看,口头密码输入可能会有问题,但由用户决定是否要说出密码。

     

2)语音输入可能用于窃听用户。恶意网页可能会使用诸如隐藏输入元素之类的技巧,或者让用户相信它已经停止录制语音,同时继续这样做。他们还可能将输入元素设置为显示为其他内容,并诱使用户单击它们。可以在http://www.quirksmode.org/dom/inputfile.html看到样式文件输入元素的示例。上述建议旨在降低此类攻击的风险。

另外,根据this article from html5rocks.com

  

首次使用语音识别时,Chrome需要询问用户是否允许使用麦克风,在这种情况下,只有在用户允许的情况下才启动onstart。

考虑到这一点,在未经用户同意的情况下实施onload事件(如果不是几乎不可能) 非常困难 ,因为谷歌已采取防范malicious webpages的措施。 Google还阻止用户simulating click events

答案 1 :(得分:4)

在尝试了一堆东西并进行研究后,我发现:

  

您无法以编程方式激活语音输入。这是为了防止滥用。   https://code.google.com/p/html5rocks/issues/detail?id=594

那是来自谷歌。

试图让jFiddle工作。使用了一堆jquery函数,尝试了一个模拟点击的目标,一些第三方的东西 - 看起来他们已经很好地保护了它。

答案 2 :(得分:2)

您是否尝试过这种方法:

x-webkit-speech: onwebkitspeechchange not resting the value

如果你看一下他们完全通过

做其他事情的例子
onwebkitspeechchange="webkitSpeechChange(this);"

我想你需要将它添加到你的代码中。

答案 3 :(得分:2)

您可以使用webkitSpeechRecognition,无需点击按钮即可激活。然后将您捕获的任何文本指向输入。

webkitSpeechRecognition将提示用户授权网站使用麦克风,但只要该权限存在,它就可以在页面加载后立即开始侦听用户输入。确保您的网站使用HTTPS,以便浏览器仅向用户询问一次权限,并记住该权限。

您可能还想查看annyang,这是一个JavaScript库,可以轻松处理语音识别。

答案 4 :(得分:-2)

首先想到的是使用jQuery。以下是一些如何:

$(document).ready(function(){
  startMikeInput();
}

这将在页面加载完成后启动麦克风输入。您还需要在脚本标记中引用jQuery。使用外部js文件也许有帮助。

相关问题