Skip to content

Commit f011a96

Browse files
committed
fixed a bug in ASR error message and improved handling
1 parent bebd3ab commit f011a96

File tree

2 files changed

+25
-32
lines changed

2 files changed

+25
-32
lines changed

www/scripts/sepiaFW.local.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ function sepiaFW_build_strings(){
5656
StringsDE.noAsrSupport = 'Es tut mir leid, aber dieser Client unterstütz die Spracherkennung leider nicht :-(';
5757
StringsDE.asrMissingServer = 'Mir fehlen noch Server Informationen um diese Spracherkennungsengine nutzen zu können, check noch mal die Settings bitte (ASR server).';
5858
StringsDE.asrSettingsProblem = 'Mikrofon nicht richtig erkannt oder Zugriff verweigert.';
59+
StringsDE.asrOtherError = 'Es tut mir leid, aber es gab ein unerwartetes Problem mit der Spracherkennung.';
5960
StringsDE.nobodyThere = 'Uups, es scheint zur Zeit leider keiner hier zu sein, der dir antworten könnte :-(';
6061
StringsDE.userNotFound = 'Uups, dieser User scheint gerade nicht hier zu sein :-(';
6162
StringsDE.loading = 'Lädt';
@@ -241,6 +242,7 @@ function sepiaFW_build_strings(){
241242
StringsEN.noAsrSupport = 'I\'m sorry but this client does not support speech recognition :-(';
242243
StringsEN.asrMissingServer = 'I\'m missing some server info to use this speech recognition engine, please check the settings again (ASR server).';
243244
StringsEN.asrSettingsProblem = 'Microphone has not been recognized properly or access was denied.';
245+
StringsEN.asrOtherError = 'I\'m sorry but there was an unexpected problem with the speech recognition.';
244246
StringsEN.nobodyThere = 'Uups, sorry but it seems there is nobody here to answer your message :-(';
245247
StringsEN.userNotFound = 'Uups, this user seems to be not available right now :-(';
246248
StringsEN.loading = 'Loading';

www/scripts/sepiaFW.speech.js

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -383,7 +383,8 @@ function sepiaFW_build_speech(){
383383
dispatchSpeechEvent("asr_error", msg);
384384
}
385385
function broadcastUnknownAsrError(err){
386-
var msg = err || "unknown";
386+
var msg = SepiaFW.local.g('asrOtherError') + " Error: '" + (err || "unknown") + "'";
387+
SepiaFW.ui.showInfo(msg);
387388
dispatchSpeechEvent("asr_error", msg);
388389
}
389390

@@ -616,9 +617,8 @@ function sepiaFW_build_speech(){
616617

617618
//ON START
618619
recognition.onstart = function(event) {
619-
eventCorrected = {};
620-
if ((event && !event.timeStamp) || !event) eventCorrected.timeStamp = new Date().getTime();
621-
if (eventCorrected.length > 0) event = eventCorrected;
620+
if (!event) event = {};
621+
if (!event.timeStamp) event.timeStamp = new Date().getTime();
622622
isRecognizing = true;
623623
recognizerWaitingForResult = false;
624624
asrAutoStop = false;
@@ -637,9 +637,8 @@ function sepiaFW_build_speech(){
637637

638638
//ON MY ABORT
639639
recognition.onmyabort = function(event) {
640-
eventCorrected = {};
641-
if (event && !event.timeStamp) eventCorrected.timeStamp = new Date().getTime();
642-
if (eventCorrected.length > 0) event = eventCorrected;
640+
if (!event) event = {};
641+
if (!event.timeStamp) event.timeStamp = new Date().getTime();
643642
quit_on_final_result = true;
644643
recognizerWaitingForResult = true;
645644
wait_timestamp = new Date().getTime();
@@ -667,43 +666,36 @@ function sepiaFW_build_speech(){
667666
before_error(error_callback, err_msg);
668667
return;
669668
}
670-
var orgEvent = event;
671-
eventCorrected = {};
672-
if (event && !event.timeStamp) eventCorrected.timeStamp = new Date().getTime();
673-
if (event && !event.error) eventCorrected.error = event;
674-
if (eventCorrected.length > 0) event = eventCorrected;
675-
669+
if (!event) event = {error: "unknown"};
670+
else if (typeof event == "string") event = {error: event};
671+
if (!event.timeStamp) event.timeStamp = new Date().getTime();
672+
676673
//light errors
677-
if (event.error == 'no-speech' || event.error == 1 || event.error == 2 || event.error == 4 || event.error == 6 || event.error == 7 || event.error == 8) {
674+
if (event.error == 'no-speech' || event.error == 1 || event.error == 2 || event.error == 4 || event.error == 6 || event.error == 7 || event.error == 8){
678675
before_error(error_callback, 'E01 - no speech detected!');
679676
if (!quit_on_final_result){
680677
restart_anyway = true;
681678
}
682-
}
679+
683680
//severe errors
684-
else if (event.error == 'audio-capture' || event.error == 3 || event.error == 5) {
681+
}else if (event.error == 'audio-capture' || event.error == 3 || event.error == 5){
685682
broadcastWrongAsrSettings();
686683
before_error(error_callback, 'E02 - no microphone found!');
687-
}
688-
else if (event.error == 'not-allowed' || event.error == 9) {
684+
685+
}else if (event.error == 'not-allowed' || event.error == 9){
689686
broadcastWrongAsrSettings();
690687
if (event.timeStamp - start_timestamp < 100) {
691688
before_error(error_callback, 'E03 - Permission to use microphone was blocked!'); //<br>To change that plz go to chrome://settings/contentExceptions#media-stream');
692689
} else {
693690
before_error(error_callback, 'E03 - Permission to use microphone was denied!'); //<br>To change that plz go to chrome://settings/contentExceptions#media-stream');
694691
}
695-
}
696-
else {
697-
if (orgEvent && typeof orgEvent == "object"){
698-
var err = JSON.stringify(orgEvent);
699-
if (err != '{"type":"error"}'){ //usually happens when you simply abort recording
700-
SepiaFW.debug.err('ASR: unknown ERROR!', err);
701-
}
702-
}else{
703-
SepiaFW.debug.err('ASR: unknown ERROR!', orgEvent);
692+
693+
}else{
694+
if (JSON.stringify(event) != '{"type":"error"}'){ //usually happens when you simply abort recording
695+
SepiaFW.debug.err('ASR: '+ (event.error? event.error : 'unknown ERROR!'), event);
704696
}
705697
//TODO: do something here!
706-
var err_msg = 'E0? - unknown error!';
698+
var err_msg = 'E0? - ' + (event.error? event.error : 'unknown ERROR!');
707699
broadcastUnknownAsrError(err_msg);
708700
before_error(error_callback, err_msg);
709701
return;
@@ -789,8 +781,9 @@ function sepiaFW_build_speech(){
789781
recognition.onresult(event);
790782
}
791783
recognition.onresult = function(event) {
784+
if (!event) event = {};
792785
resultWasNeverCalled = false;
793-
var iosPlugin = (typeof event.results == "undefined") ? true : false;
786+
var iosPlugin = (typeof event.results == "undefined")? true : false;
794787
if (iosPlugin && event.message){
795788
//rebuild as default result
796789
var item = { transcript:event.message, final:true };
@@ -801,9 +794,7 @@ function sepiaFW_build_speech(){
801794
event.results = [resN];
802795
}
803796

804-
eventCorrected = {};
805-
if (event && !event.timeStamp) eventCorrected.timeStamp = new Date().getTime();
806-
if (eventCorrected.length > 0) event = eventCorrected;
797+
if (!event.timeStamp) event.timeStamp = new Date().getTime();
807798

808799
interim_transcript = '';
809800
var mod_str = '';

0 commit comments

Comments
 (0)