Skip to content

Commit 388b492

Browse files
committed
fixed recognition in mobile issue
1 parent 7ade00a commit 388b492

4 files changed

Lines changed: 57 additions & 41 deletions

File tree

blocks/msg/en.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ Blockly.Msg.WEBDUINO_TEMP_SET_VALUE = "value:";
2323
Blockly.Msg.WEBDUINO_TEMP_GET = "Get temp";
2424
Blockly.Msg.WEBDUINO_TEMP_GET_NAME = "name:";
2525
Blockly.Msg.WEBDUINO_TEMP_GET_VALUE = "'s value";
26-
Blockly.Msg.WEBDUINO_RECONGNITION = "Start recongnition ( desktop chrome only )";
26+
Blockly.Msg.WEBDUINO_RECONGNITION = "Start recongnition ( Chrome only, not support iOS )";
27+
Blockly.Msg.WEBDUINO_RECONGNITION_INTER = " interimResults:";
28+
Blockly.Msg.WEBDUINO_RECONGNITION_MOBILE = "(Mobile checked: off)";
2729
Blockly.Msg.WEBDUINO_RECONGNITION_LANG = "Language:";
2830
Blockly.Msg.WEBDUINO_RECONGNITION_IF = "If words include text:";
2931
Blockly.Msg.WEBDUINO_RECONGNITION_DO = "do:";

blocks/msg/zh-hant.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,9 @@ Blockly.Msg.WEBDUINO_TEMP_SET_VALUE = "值:";
2323
Blockly.Msg.WEBDUINO_TEMP_GET = "讀取暫存";
2424
Blockly.Msg.WEBDUINO_TEMP_GET_NAME = "名稱:";
2525
Blockly.Msg.WEBDUINO_TEMP_GET_VALUE = "的值";
26-
Blockly.Msg.WEBDUINO_RECONGNITION = "開始語音辨識 ( 只適用桌上型 Chrome 瀏覽器 )";
26+
Blockly.Msg.WEBDUINO_RECONGNITION = "開始語音辨識 ( Chrome 限定,不支援 iOS )";
27+
Blockly.Msg.WEBDUINO_RECONGNITION_INTER = " 即時辨識:";
28+
Blockly.Msg.WEBDUINO_RECONGNITION_MOBILE = "( 行動裝置勾選 off )";
2729
Blockly.Msg.WEBDUINO_RECONGNITION_LANG = "辨識語言:";
2830
Blockly.Msg.WEBDUINO_RECONGNITION_IF = "如果辨識的文字包含:";
2931
Blockly.Msg.WEBDUINO_RECONGNITION_DO = "執行:";

blocks/webduino.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1337,16 +1337,23 @@ Blockly.Blocks['temp_data_get'] = {
13371337
}
13381338
};
13391339

1340-
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#vodcqx
1340+
// https://blockly-demo.appspot.com/static/demos/blockfactory/index.html#shuqaz
13411341
Blockly.Blocks['sound_recognition'] = {
13421342
init: function () {
13431343
this.appendDummyInput()
1344-
.appendField(Blockly.Msg.WEBDUINO_RECONGNITION, "開始語音辨識 ( 只適用桌上型 Chrome 瀏覽器 )")
1344+
.appendField(Blockly.Msg.WEBDUINO_RECONGNITION, "開始語音辨識 ( 不支援 iOS )");
1345+
this.appendDummyInput()
13451346
.appendField(Blockly.Msg.WEBDUINO_RECONGNITION_LANG, "辨識語言:")
13461347
.appendField(new Blockly.FieldDropdown([
13471348
["中文", "cmn-Hant-TW"],
13481349
["English", "en-US"]
1349-
]), "lang_");
1350+
]), "lang_")
1351+
.appendField(Blockly.Msg.WEBDUINO_RECONGNITION_INTER, " 即時辨識:")
1352+
.appendField(new Blockly.FieldDropdown([
1353+
["on", "on"],
1354+
["off", "off"]
1355+
]), "interimResults_")
1356+
.appendField(Blockly.Msg.WEBDUINO_RECONGNITION_MOBILE, "( 行動裝置勾選 off )");
13501357
this.appendStatementInput("recognition_");
13511358
this.setPreviousStatement(true);
13521359
this.setNextStatement(true);

generators/webduino.js

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -119,11 +119,11 @@ Blockly.JavaScript['board_ready'] = function (block) {
119119
return code;
120120
};
121121

122-
Blockly.JavaScript['board_error'] = function(block) {
122+
Blockly.JavaScript['board_error'] = function (block) {
123123
var statements_do_ = Blockly.JavaScript.statementToCode(block, 'do_');
124-
var code = 'board.on("error",function(){\n'+
125-
statements_do_+
126-
'});\n';
124+
var code = 'board.on("error",function(){\n' +
125+
statements_do_ +
126+
'});\n';
127127
return code;
128128
};
129129

@@ -750,7 +750,7 @@ Blockly.JavaScript['temp_data_get'] = function (block) {
750750
' return ' + getCookie + '(' + value_name_ + ');\n' +
751751
'})()';
752752
} else if (dropdown_type_ == 2) {
753-
code = 'localStorage.' + value_name_ ;
753+
code = 'localStorage.' + value_name_;
754754
} else if (dropdown_type_ == 3) {
755755
code = 'sessionStorage.' + value_name_;
756756
}
@@ -759,38 +759,46 @@ Blockly.JavaScript['temp_data_get'] = function (block) {
759759

760760
Blockly.JavaScript['sound_recognition'] = function (block) {
761761
var dropdown_lang_ = block.getFieldValue('lang_');
762+
var dropdown_interimresults_ = block.getFieldValue('interimResults_');
762763
var statements_recognition_ = Blockly.JavaScript.statementToCode(block, 'recognition_');
763764
var recognition = Blockly.JavaScript.variableDB_.getDistinctName(
764765
'recognition', Blockly.Variables.NAME_TYPE);
765-
var code = '(function(){\n'+
766+
console.log(dropdown_interimresults_);
767+
var inter1, inter2, mobile;
768+
if (dropdown_interimresults_ == 'on') {
769+
inter1 = 'false';
770+
inter2 = 'true';
771+
} else if (dropdown_interimresults_ == 'off') {
772+
inter1 = 'true';
773+
inter2 = 'false';
774+
}
775+
console.log(dropdown_interimresults_);
776+
var code = '(function(){\n' +
766777
' if (!("webkitSpeechRecognition" in window)) {\n' +
767778
' alert("本瀏覽器不支援語音辨識,請更換瀏覽器!(Chrome 25 版以上才支援語音辨識)");\n' +
768779
' } else{\n' +
769780
' var ' + recognition + ' = new webkitSpeechRecognition();\n' +
770-
' var checkFinal;\n' +
771781
' ' + recognition + '.continuous = true;\n' +
772782
' ' + recognition + '.interimResults = true;\n' +
773-
' ' + recognition + '.lang = "'+dropdown_lang_+'";\n\n' +
783+
' ' + recognition + '.lang = "' + dropdown_lang_ + '";\n\n' +
774784
' ' + recognition + '.onstart = function() {\n' +
775785
' console.log("Start recognize...");\n' +
776-
' checkFinal=0;\n'+
777786
' };\n\n' +
778787
' ' + recognition + '.onend = function() {\n' +
779788
' console.log("Stop recognize");\n' +
780789
' };\n\n' +
781790
' ' + recognition + '.onresult = function(event) {\n' +
782791
' var resultLength = event.results.length-1;\n' +
783792
' var resultTranscript = event.results[resultLength][0].transcript;\n' +
784-
' if(event.results[resultLength].isFinal===false){\n'+
785-
' console.log(resultTranscript);\n'+
786-
' '+statements_recognition_+
787-
' }else if(event.results[resultLength].isFinal===true){\n' +
788-
' checkFinal=0;\n'+
789-
' console.log("final");\n'+
790-
' }\n'+
793+
' if(event.results[resultLength].isFinal===' + inter1 + '){\n' +
794+
' console.log(resultTranscript);\n' +
795+
' ' + statements_recognition_ +
796+
' }else if(event.results[resultLength].isFinal===' + inter2 + '){\n' +
797+
' console.log("final");\n' +
798+
' }\n' +
791799
' };\n' +
792-
' '+recognition + '.start();\n'+
793-
' }\n'+
800+
' ' + recognition + '.start();\n' +
801+
' }\n' +
794802
'})();\n';
795803
return code;
796804
};
@@ -803,18 +811,15 @@ Blockly.JavaScript['sound_recognition_check'] = function (block) {
803811
var b = value_text_.split(', ');
804812
var code;
805813
if (b.length == 1) {
806-
code = ' if(resultTranscript.indexOf("' + b[0] + '")!==-1 && checkFinal===0){\n' +
807-
' checkFinal=1;\n'+
814+
code = ' if(resultTranscript.indexOf("' + b[0] + '")!==-1){\n' +
808815
' ' + statements_do_ +
809816
' }\n';
810817
} else {
811-
code = ' if(resultTranscript.indexOf("' + b[0] + '")!==-1 && checkFinal===0){\n' +
812-
' checkFinal=1;\n'+
818+
code = ' if(resultTranscript.indexOf("' + b[0] + '")!==-1){\n' +
813819
' ' + statements_do_ +
814820
' }\n';
815821
for (var i = 1; i < b.length; i++) {
816-
code += ' if(resultTranscript.indexOf("' + b[i] + '")!==-1 && checkFinal===0){\n' +
817-
' checkFinal=1;\n'+
822+
code += ' if(resultTranscript.indexOf("' + b[i] + '")!==-1){\n' +
818823
' ' + statements_do_ +
819824
' }\n';
820825
}
@@ -823,7 +828,7 @@ Blockly.JavaScript['sound_recognition_check'] = function (block) {
823828
};
824829

825830

826-
Blockly.JavaScript['translate_speech'] = function(block) {
831+
Blockly.JavaScript['translate_speech'] = function (block) {
827832
var text_id_ = block.getFieldValue('id_');
828833
var dropdown_lang_ = block.getFieldValue('lang_');
829834
var dropdown_sex_ = block.getFieldValue('sex_');
@@ -838,16 +843,16 @@ Blockly.JavaScript['translate_speech'] = function(block) {
838843
'text', Blockly.Variables.NAME_TYPE);
839844
var appID = text_id_;
840845
var language = dropdown_lang_;
841-
var format = 'audio/mp3&options=MinSize|'+dropdown_sex_;
846+
var format = 'audio/mp3&options=MinSize|' + dropdown_sex_;
842847
var a = value_speech_.split('');
843848
value_speech_ = a.splice(1, (a.length - 2)).join('');
844-
var code = '(function(){\n'+
845-
' var '+body+' = document.querySelector("body");\n'+
846-
' var '+creatAudio+' = document.createElement("audio");\n'+
847-
' '+body+'.appendChild('+creatAudio+');\n'+
848-
' var '+audio+' = document.querySelector("audio");\n'+
849-
' '+audio+'.setAttribute("autoplay","true");\n'+
850-
' '+audio+'.setAttribute("src","http://api.microsofttranslator.com/v2/http.svc/speak?appId='+appID+'&language='+language+'&format='+format+'&text='+value_speech_+'");\n'+
851-
'})();\n';
852-
return code;
853-
};
849+
var code = '(function(){\n' +
850+
' var ' + body + ' = document.querySelector("body");\n' +
851+
' var ' + creatAudio + ' = document.createElement("audio");\n' +
852+
' ' + body + '.appendChild(' + creatAudio + ');\n' +
853+
' var ' + audio + ' = document.querySelector("audio");\n' +
854+
' ' + audio + '.setAttribute("autoplay","true");\n' +
855+
' ' + audio + '.setAttribute("src","http://api.microsofttranslator.com/v2/http.svc/speak?appId=' + appID + '&language=' + language + '&format=' + format + '&text=' + value_speech_ + '");\n' +
856+
'})();\n';
857+
return code;
858+
};

0 commit comments

Comments
 (0)