From ebb35b5d97753f074fec5bfe0e20aad9077c1adb Mon Sep 17 00:00:00 2001 From: Brian West Date: Sat, 12 Jul 2008 15:41:04 +0000 Subject: [PATCH] tweaks to speech tools to score differently for pocketsphinx git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@9003 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- scripts/js_modules/SpeechTools.jm | 44 ++++++++++++++++++++++--------- scripts/ps_pizza.js | 8 +++--- 2 files changed, 35 insertions(+), 17 deletions(-) diff --git a/scripts/js_modules/SpeechTools.jm b/scripts/js_modules/SpeechTools.jm index c1252732c2..a98fde46d6 100644 --- a/scripts/js_modules/SpeechTools.jm +++ b/scripts/js_modules/SpeechTools.jm @@ -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; diff --git a/scripts/ps_pizza.js b/scripts/ps_pizza.js index f6d4ed45b9..75ea2ea58b 100644 --- a/scripts/ps_pizza.js +++ b/scripts/ps_pizza.js @@ -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");