Javascript 附加两次的语音输出

Javascript 附加两次的语音输出,javascript,html,speech-recognition,Javascript,Html,Speech Recognition,我想使用本机浏览器语音转换api。但我得到了奇怪的结果。这是我的密码。它使用jquery和 文件标题 var buffer=“”; 变量设置={ continuous:false,//永远不要停止,因为我有https连接 onResult:函数(文本){ //text=识别的文本 //console.log(文本); 缓冲区=文本; }, onStart:function(){ //log(“用户开始听写”); }, onEnd:function(){ //警报(“用户停止听写”); jQu

我想使用本机浏览器语音转换api。但我得到了奇怪的结果。这是我的密码。它使用jquery和


文件标题
var buffer=“”;
变量设置={
continuous:false,//永远不要停止,因为我有https连接
onResult:函数(文本){
//text=识别的文本
//console.log(文本);
缓冲区=文本;
},
onStart:function(){
//log(“用户开始听写”);
},
onEnd:function(){
//警报(“用户停止听写”);
jQuery(“#out”).append(“+buffer+”);
UserDictation.start();
}
};
var UserDictation=artyom.newDictation(设置);
函数startRecognition(){
//UserDictation.start();
}
函数stopRecognition(){
//UserDictation.stop();
}
UserDictation.start();
函数clearX(){
jQuery(“#out”).empty();
}
除非我尝试这个,它给出的结果看起来像是重复的作品/短语。就像我说
computer
,它会给我
computercomputer
。或者,如果我说
预期价格是多少?
它会告诉我
什么是什么是什么,什么是什么是预期价格,等等。

还有这一页

这似乎和我有同样的问题

但在另一个站点上也有一个相同js库的演示

这似乎很好地显示了结果

有人知道发生了什么事吗


谢谢

附加缓冲区后,您可能需要清除缓冲区。我根本不会使用缓冲区,您可以直接将结果附加到onResult中。缓冲区设置为
=
,但没有附加
+=
。我觉得奇怪的是,您正在调用
UserDictation.start()再次结束,我只是问自己,为什么这不会导致无限循环…这样,当用户停止说话时,我会得到最终文本,然后它再次开始听,以模拟连续听。如果不立即再次启动,第一次是否正常工作?
 <!DOCTYPE html>
<html lang="en">
    <head>
        <title>Title of the document</title>
        <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
        <script src="/js/jquery-3.2.1.min.js"></script>
        <script src="/js/artyom.min.js"></script>
    </head>

    <body>
        <input type="button" onclick="startRecognition();" value="Recognize text" />
        <input type="button" onclick="stopRecognition();" value="stop recognition" />
        <input type="button" onclick="clearX();" value="clear" />
        <script>

            var buffer = "";

            var settings = {
                continuous:false, // Don't stop never because i have https connection
                onResult:function(text){
                    // text = the recognized text
                    //console.log(text);
                    buffer = text;
                },
                onStart:function(){
                    //console.log("Dictation started by the user");
                },
                onEnd:function() {
                    //alert("Dictation stopped by the user");
                    jQuery("#out").append("<div>" + buffer + "</div>");
                    UserDictation.start();
                }
            };

            var UserDictation = artyom.newDictation(settings);

            function startRecognition(){
                //UserDictation.start();
            }

            function stopRecognition(){
                //UserDictation.stop();
            }

            UserDictation.start();

            function clearX() {
                jQuery("#out").empty();
            }
        </script>
        <div id="out"></div>
    </body>

</html>