]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
tweaks to speech tools to score differently for pocketsphinx
authorBrian West <brian@freeswitch.org>
Sat, 12 Jul 2008 15:41:04 +0000 (15:41 +0000)
committerBrian West <brian@freeswitch.org>
Sat, 12 Jul 2008 15:41:04 +0000 (15:41 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9003 d0543943-73ff-0310-b7d9-9358b9ac24b2

scripts/js_modules/SpeechTools.jm
scripts/ps_pizza.js

index c1252732c2c126791a90b08e3f1d557d6c7a9fbb..a98fde46d6ab156679c216b179d5e7570080a1ab 100644 (file)
@@ -63,7 +63,7 @@ function SpeechDetect(session, mod, ip) {
        this.AutoUnload = false;
        this.debug = false;
 
-       /* Set the TTS info*/
+       /* Set the TTS info */
        this.setTTS = function (tts_eng, tts_voice) {
                this.tts_eng = tts_eng;
                this.tts_voice = tts_voice;             
@@ -79,7 +79,7 @@ function SpeechDetect(session, mod, ip) {
                this.audio_ext = audio_ext;
        }
        
-       /* Add a grammar to be used*/
+       /* Add a grammar to be used */
        this.addGrammar = function(grammar_object) {
                this.grammar_hash[grammar_object.grammar_name] = grammar_object;
        }
@@ -180,18 +180,36 @@ function SpeechDetect(session, mod, ip) {
                                        console_log("debug", "----Heard [" + interp.input + "]\n");
                                        console_log("debug", "----Hit score " + interp.@score + "/" + grammar_object.min_score + "/" + grammar_object.confirm_score + "\n");
                                }
-                               
-                               if (interp.@score >= grammar_object.min_score) {
-                                       if (interp.@score < grammar_object.confirm_score) {
-                                               rv.push("_confirm_");
-                                       }
 
-                                       eval("xo = interp." + grammar_object.obj_path + ";");
-                                       for (x = 0; x < xo.length(); x++) {
-                                               rv.push(xo[x]);
+                               if (this.mod == "pocketsphinx") {
+                                       /* pocketsphinx scores 0 best to 100 worst. */
+                                       if (interp.@score >= grammar_object.min_score) {
+                                               if (interp.@score >= grammar_object.confirm_score) {
+                                                       rv.push("_confirm_");
+                                               }
+                                               
+                                               eval("xo = interp." + grammar_object.obj_path + ";");
+                                               for (x = 0; x < xo.length(); x++) {
+                                                       rv.push(xo[x]);
+                                                       console_log("info", "----" +xo[x] + "\n"); 
+                                               }
+                                       } else {
+                                               rv.push("_no_idea_");
                                        }
                                } else {
-                                       rv.push("_no_idea_");
+                                       if (interp.@score >= grammar_object.min_score) {
+                                               if (interp.@score < grammar_object.confirm_score) {
+                                                       rv.push("_confirm_");
+                                               }
+                                               
+                                               eval("xo = interp." + grammar_object.obj_path + ";");
+                                               for (x = 0; x < xo.length(); x++) {
+                                                       rv.push(xo[x]);
+                                                       console_log("info", "----" +xo[x] + "\n"); 
+                                               }
+                                       } else {
+                                               rv.push("_no_idea_");
+                                       }
                                }
 
                                delete interp;
@@ -234,7 +252,7 @@ function SpeechObtainer(asr, req, wait_time) {
 
        this.waitTime = wait_time + 0;
 
-       /* Set the TTS info*/
+       /* Set the TTS info */
        this.setTTS = function (tts_eng, tts_voice) {
                this.tts_eng = tts_eng;
                this.tts_voice = tts_voice;             
@@ -277,7 +295,7 @@ function SpeechObtainer(asr, req, wait_time) {
                this.add_sound = add_sound;             
        }
 
-       /* Add acceptable items (comma sep list)*/
+       /* Add acceptable items (comma sep list) */
        this.addItem = function(item) {
                ia = item.split(",");
                var x;
index f6d4ed45b9a153f8f133389c148b5ff0420f6979..75ea2ea58b1e1a915cbf146cd10058a8693d064f 100644 (file)
@@ -33,8 +33,8 @@ include("js_modules/SpeechTools.jm");
 
 function on_dtmf(a, b, c) {}
 
-var dft_min = 10;
-var dft_confirm = 50;
+var dft_min = 0;
+var dft_confirm = 78;
 
 /***************** Initialize The Speech Detector  *****************/
 var asr = new SpeechDetect(session, "pocketsphinx");
@@ -130,7 +130,7 @@ pizza.toppingsObtainer.addItemAlias("ham", "ham");
 
 /***************** Change Delivery Or Size Or Crust, Add/Rem Toppings Or Start Over  *****************/
 pizza.arsoObtainer = new SpeechObtainer(asr, 1, 5000);
-pizza.arsoObtainer.setGrammar("pizza_arso", "", "result", dft_min, dft_confirm, true);
+pizza.arsoObtainer.setGrammar("pizza_arso", "", "result", dft_min, 50, true);
 pizza.arsoObtainer.setTopSound("GP-ARSO");
 pizza.arsoObtainer.setBadSound("GP-NI");
 pizza.arsoObtainer.addItemAlias("^delivery$", "delivery");
@@ -142,7 +142,7 @@ pizza.arsoObtainer.addItemAlias("^remove\\s*", "rem_topping");
 
 /***************** Yes? No? Maybe So?  *****************/
 pizza.yesnoObtainer = new SpeechObtainer(asr, 1, 5000);
-pizza.yesnoObtainer.setGrammar("pizza_yesno", "", "result", dft_min, dft_confirm, true);
+pizza.yesnoObtainer.setGrammar("pizza_yesno", "", "result", dft_min, 40, true);
 pizza.yesnoObtainer.setBadSound("GP-NI");
 pizza.yesnoObtainer.addItemAlias("^yes,^correct", "yes");
 pizza.yesnoObtainer.addItemAlias("^no", "no");