我们在Chrome中使用了webkitSpeechRecognition API.由于这是一个原型应用程序,我们非常乐意仅支持Chrome,因此我们通过window.hasOwnProperty('webkitSpeechRecognition')检查(如Google建议)检测对API的支持.这在Firefox中很快失败,但是新的Opera(基于webkit)报告它确实拥有该属性.事实上,所有代码都按预期运行,除了......没有任何事件被触发,也没有记录任何语音.
所以,我的问题是:我可以以某种方式使它工作吗?它需要一些特殊权限或设置吗?
或者,是否有一种方法(除了良好的旧浏览器嗅探)来检测webkitSpeechRecognition的正确,工作支持?
我正在使用一个简单的语音到文本检测webkitSpeechRecognition。此代码在 Windows 桌面上运行良好。但是 - 在Android Chrome 浏览器上- 开始检测时,Android 状态栏上的麦克风仅显示 1 或 2 秒。如果没有语音活动 -它会关闭并且语音识别停止。如果我在单击“开始”后确实说得很快,它会一直亮着。任何想法如何让 Android 麦克风始终可用?
if ('webkitSpeechRecognition' in window) {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function () {
$("#status").html("Status: Recording...");
recognizing = true;
};
recognition.onerror = function (event) {
alert(event.error);
};
recognition.onend = function() {
recognizing = false;
};
recognition.onresult = function(event) {
var interim_transcript = '';
for (var i = event.resultIndex; i …Run Code Online (Sandbox Code Playgroud) 我发现,语音识别API会复制我的Android上的结果短语(并且不会在桌面上重复).
对于每个短语说,它返回两个结果.第一个是
第二个是
如您所见,在第二个回程中,短语是重复的,每个副本都标记为final,第二个副本超出resultIndex.在第一次回归中,只有一个副本,final它是超越的resultIndex.
我只会采取第二次回报,但问题是它发生在移动Chrome上,但不会发生在桌面上Chrome.桌面Chrome仅返回第一次返回.
所以,问题是:这是设计行为吗?然后如何区分单个最终短语,然后通常为所有计算机?
或者可能是声音回声有些错误,那么问题是如何避免/检查回声?
UPDATE
Html如下:
<input id="recbutton" type="button" value="Recognize">
<div id="output">
<div>
Initial text
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
代码如下:
var recognition = null;
var recognitionStarted = false;
var printcount = 1;
var lastPhrase = null;
$(function() {
attachRecognition();
});
$('#recbutton').click( function() {
if( !recognitionStarted ) {
recognition.start();
}
else {
recognition.stop();
}
});
function printOut(text) {
var id = 'printcount' + printcount;
printcount++;
$('#output').append( …Run Code Online (Sandbox Code Playgroud) javascript android speech-recognition google-chrome webkitspeechrecognition
我正在制作机器人听我的声音.
所以我做了 :
this.recognition = new webkitSpeechRecognition();
Run Code Online (Sandbox Code Playgroud)
我可以这样开始听:
this.recognition.start();
Run Code Online (Sandbox Code Playgroud)
这是停止听:
this.recognition.stop();
Run Code Online (Sandbox Code Playgroud)
但是你知道一个函数会this.recognition在启动时返回true ,如果它停止会返回false吗?喜欢"isStarted()"?
谢谢.
我正在尝试对文本转录进行连续的演讲,但似乎无法让webkitSpeechRecognition像宣传的那样工作.它似乎随机停止录制(通常在长时间的静音之后),即使我设置了continuous = true和interimResults = true.当我在EVERY.SINGLE.EVENT中放入一个简单的日志语句时,我甚至无法弄清楚导致这种随机停止的原因.webkitSpeechRecognition基于我能找到的文档.这是我所拥有的脚本(基本上是演示https://www.google.com/intl/en/chrome/demos/speech.html上的一个小模块)
我知道的:
录制前不会记录任何错误.
我正处于千兆位连接,因此没有延迟相关.
它会在长时间停顿后正常停止,但有时会无故停止.
它可能在2分钟或30秒后发生.
我评论了下面的一些内容,但我已经尝试了所有这些,但没有成功跟踪问题.
var final_transcript = '';
var recognizing = false;
var ignore_onend;
var start_timestamp;
if (!('webkitSpeechRecognition' in window)) {
upgrade();
} else {
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.onstart = function () {
recognizing = true;
};
recognition.onerror = function (event) {
console.log("ERROR")
recognizing = false
recognition.stop()
recognizing = true
recognition.start()
if (event.error == 'no-speech') {
console.log("NO SPEECH")
}
if (event.error == 'audio-capture') …Run Code Online (Sandbox Code Playgroud) 我正在使用网络语音API但是一旦经过一段时间(一分钟或两分钟)而没有任何声音输入,它就会完全停止听.我知道这是因为我把它的解析后的文本记录到控制台,然而,当我不说话一两分钟时它会停止这样做.
有没有什么办法解决这一问题?
最近(过去 1.5 周)JavaScript 库 WebkitSpeechRecognition 拒绝正常工作。我已经测试了利用该库(evan cohen 的智能镜像)的其他电子应用程序,并且遇到了这些问题。
在我测试过的每种情况下它都会引发网络错误。该库似乎在标准浏览器环境中工作正常,但我似乎无法让它与电子一起工作。有人有解决这个问题的经验吗?
每次演讲后是否需要创建新的 SpeechRecognition 实例?
var recognition = new SpeechRecognition();
recognition.start();
Run Code Online (Sandbox Code Playgroud)
或者只是 stop() 并再次调用 start() 函数?
recognition.stop();
recognition.start();
Run Code Online (Sandbox Code Playgroud) 是否可以判断其他Chrome标签是否正在使用webkitSpeechRecognition?
如果您尝试使用webkitSpeechRecognition而另一个选项卡正在使用它,它将抛出错误"中止"而没有任何消息.我希望能够知道webkitSpeechRecognition是否在另一个选项卡中打开,如果是,则抛出一个可以通知用户的更好的错误.
我正在尝试使用Web Speech API的SpeechRecognition接口。它在桌面版 Chrome 上运行良好,但我无法在 Android 版本上检测到任何音频。在我自己的代码无法正常工作后,我在两个不同的 Android 设备(一个运行 LineageOS Nougat,一个运行 LineageOS Pie,都使用 Chrome 79)上测试了这个演示以及另一个演示,但两个演示都没有在任一设备上运行。
我不确定这里出了什么问题……其他人可以在 Android 上使用这些演示吗?我正在通过 https 提供我的测试页面,我可以使用navigator.mediaDevices.getUserMedia在这些设备上录制来自 microhpone 的音频,因此它似乎不是硬件、权限或安全问题。
我看到的具体症状如下:
该start事件在最初按预期开始识别后触发,但随后的audiostart, soundstart,speechstart和应跟随它的result事件永远不会发生。
尝试调用SpeechRecognition.stop似乎没有效果——结束事件不会被触发。SpeechRecognition.start在停止尝试后调用会抛出Uncaught DOMException: Failed to execute 'start' on 'SpeechRecognition': 识别已经开始。
调用SpeechRecognition.abort确实会触发end事件并允许重新启动识别。
这是一些基于MDN 示例的测试代码。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, …Run Code Online (Sandbox Code Playgroud) javascript android google-chrome webspeech-api webkitspeechrecognition
我想知道是否可以在node.js中运行Web Speech API?由于node是基于Javascript的,因此我假设可以使用它,但是我找不到在node中原生使用它的方法。是否有办法将这个Web语音库“包含”在node.js脚本中以使用它?
谢谢
javascript speech-recognition node.js webspeech-api webkitspeechrecognition
我有一个语音识别(使用 webkitSpeechRecognition)应用程序,它在独立的 chrome 浏览器上运行时效果很好。
我将我的应用程序转换为电子包,它停止收听麦克风并发回错误消息“网络”。文档说“完成识别所需的网络通信失败。”。然而,它直接在 chrome 中运行良好,没有任何问题。
我还使用“SpeechSynthesisUtterance”进行文本到语音转换,并且在电子上没有任何问题。
几周前,在生成概念证明期间,我的解决方案运行良好,但它也停止了工作。
任何人都知道可能有什么问题?