|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Well, after quite a bit of trial and error (more error than I like to see, at least), I’ve gotten my ChatScript GUI project to a point where I’m willing to show it off. It’s still in “PRE-Alpha” mode, and may have compatibility issues with some versions of XP (depending on whether the OS has SAPI enabled), but it seems to work well in Windows 7. The setup file can be found at:
http://www.geekcavecreations.com/Downloads/ChatScriptGUI_Setup.zip
I invite everyone who already has ChatScript to check it out, and post their opinions. Those of you who don’t already have ChatScript set up are also welcome to give the GUI a try, but you’ll need a local copy of CS already set up, and running in server mode with the default port, in order to use the GUI. I didn’t include the CS files with this release, since this is a “third party” app for now. If Bruce likes it, and wants to include the finished version, I’m all for it; but this version isn’t ready for that yet.
The package comes with an installer, to make it easier to use. There’s no speech recognition yet, and no help files; if you have questions, or need help with anything, just let me know. The program is pretty well self-explanatory, though.
Items that are still on the “to do list” are:
1.) Speech recognition - Still working out some issues there.
2.) TTS options for adjusting the bot’s voice attributes (e.g. pitch, tempo, breathiness, etc.)
3.) A help section, and documentation
4.) Options for selecting address/port for use with a remote server
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 1 ]
|
|
Experienced member
Total posts: 43
Joined: Mar 29, 2011
|
This is a great idea, Dave!
Too bad I cannot try it now, because I’m on Linux…
I am curious about how you intend to handle uncertainty in speech recognition?
As far as I know, ASR software usually returns a “certainty” score, for example, if the user said his name but it was not clear, the certainty score can be as low as 40%. The chatbot sytem can check this value and decide to ask the user a clarification question, such as “I didn’t hear you, please say this again more loudly”.
But, as far as I know, ChatScipt currently doesn’t have an option to get a certainty score as an input. So, what do you intend to do?
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 2 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Thanks, Erel, for your kind words.
Since the GUI uses Microsoft’s .NET framework, I don’t think it will work in WINE, but since I don’t have a Linux box, I don’t know one way ot the other. It may be worth a try, and I don’t know very many people who have Linux without WINE installed.
As to handling uncertainty in the SR module, I’m more or less “winging it”, and depending on the user’s training level for their native SR profiles. I’m still learning how to program with SAPI, so the code is almost barbarically simple at this stage. I know that there are ways to improve recognition results through loading certain grammar routines, but I haven’t learned yet how this is done, so I still have a long way to go. In fact, I’m still trying to figure out how to prevent the SR routines from using the TTS output as input. There are several methods available for disabling SR, but so far, none seem to be working, so at this point, the user either has to disable Speech recognition and type, or disable TTS and read. I’ll get it figured out sooner or later, but for now, it’s driving me nuts.
Another thing that I need to work out is how to determine whether the chosen ChatScript server is running, without actually expecting a text response. I’ll discuss with Bruce about the possibility of sending a special “connection request” that sends back a simple return code that the GUI can use to indicate that communication is possible. I’m thinking something like sending the server a “triple null” string, which the server then echoes back, thus completing a sort-of “handshake” that will indicate to the GUI that communication can commence.
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 3 ]
|
|
Experienced member
Total posts: 43
Joined: Mar 29, 2011
|
Well, I think the ability to handle uncertainty is an important thing to add to ChatScript.
Uncertainty could come from other sources besides ASR, for example, typo errors, or uther language understanding modules that pre-process the input to ChatScript.
This can be implemented by adding a fourth argument to the ChatScript server, besides bot, user and text.
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 4 ]
|
|
Moderator
Total posts: 2372
Joined: Jan 12, 2010
|
Yes, but what would the server “do” with the certainty value. It has no algorithm for processing multiple certainties, and if you come in with something it doesn’t recognize, it will attempt to spell check it into something it does.
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 5 ]
|
|
Experienced member
Total posts: 43
Joined: Mar 29, 2011
|
The server can just put it in a system variable $certainty, just like the current bot is in $bot and the current username is in $login.
Then the author will have the option to query this variable, for example:
u: (cat $certainty<0.4) What did you say?
u: (cat $certainty<0.6) Did you say ‘cat’?
u: (cat) Ah, you have a cat!
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 6 ]
|
|
Member
Total posts: 5
Joined: Apr 28, 2011
|
I agree that it would be nice to have an option in chatscript to deal with confidence levels of the input.
I am using the Julius engine for speech recognition. The output of Julius is a recognised sentence where every word has a confidence level. Like: “What [0.8] is [0.6] the [0.1] weatherforecast [0.95] for [0.2] tomorrow [0.5]”
Before using chatscript, I rejected a sentence where the main keyword has a low confidence. It would be good to be able to do this in chatscript, for example as suggested by Erel. It could also be usefull to include the confidence level of the keyword when deciding the current topic.
|
|
|
|
|
Posted: Jun 5, 2011 |
[ # 7 ]
|
|
Moderator
Total posts: 2372
Joined: Jan 12, 2010
|
Certainty for the entire input sentence is fine, but you couldnt do that for a word by word certainty.
|
|
|
|
|
Posted: Jun 6, 2011 |
[ # 8 ]
|
|
Moderator
Total posts: 2372
Joined: Jan 12, 2010
|
But if all you are doing is certainty for the input, you can already do that with chatscript, it doesnt need engine support.
My “bots” accept supplemental data in [] before real input and output supplemental data in [] like gestures to control the avater. You could put certainty information inside [] and strip it out with a pattern match and then resubmitting input on the rest of the data.
|
|
|
|
|
Posted: Jun 6, 2011 |
[ # 9 ]
|
|
Senior member
Total posts: 971
Joined: Aug 14, 2006
|
Guido Huysmans - Jun 5, 2011: I am using the Julius engine for speech recognition.
Hey Guido,
Welcome to the forum on my behalf! About the quote above: You’ve added the Julius speech engine. Do you have more examples of speech engines that are useful for chatbots?
Erwin
p.s. why don’t you add a few extra lines to your bio and a resembling picture? Then we know who you are and what your background is…. just a suggestion.. tx for your consideration!
|
|
|
|
|
Posted: Jun 6, 2011 |
[ # 10 ]
|
|
Member
Total posts: 2
Joined: Apr 6, 2011
|
Awesome work Dr. Morton.
Can’t wait for your updates.
Cheers
|
|
|
|
|
Posted: Jun 6, 2011 |
[ # 11 ]
|
|
Administrator
Total posts: 3111
Joined: Jun 14, 2010
|
Joall Taeuber - Jun 6, 2011: Awesome work Dr. Morton.
Can’t wait for your updates.
Cheers
Wow! Doctor? I’ve been promoted!
Well, here’s an “update” for you. I got the Speech Recognition problem fixed, and now I’m working on adding some “essential” options, such as external server/port settings, persistence of settings between sessions, and adding bot names. I should have the next version compiled some time tomorrow, Lord willing and the creek don’t rise.
|
|
|
|
|
Posted: Jun 7, 2011 |
[ # 12 ]
|
|
Experienced member
Total posts: 43
Joined: Mar 29, 2011
|
Bruce Wilcox - Jun 6, 2011: But if all you are doing is certainty for the input, you can already do that with chatscript, it doesnt need engine support.
My “bots” accept supplemental data in [] before real input and output supplemental data in [] like gestures to control the avater. You could put certainty information inside [] and strip it out with a pattern match and then resubmitting input on the rest of the data.
That’s great, can you give some example? It will be very useful.
|
|
|
|
|
Posted: Jun 7, 2011 |
[ # 13 ]
|
|
Senior member
Total posts: 971
Joined: Aug 14, 2006
|
Thanks for your additions Dr.Morton.
|
|
|
|
|
Posted: Jun 7, 2011 |
[ # 14 ]
|
|
Administrator
Total posts: 2048
Joined: Jun 25, 2010
|
More like Dr Pepper!
|
|
|
|
|
Posted: Jun 7, 2011 |
[ # 15 ]
|
|
Moderator
Total posts: 2372
Joined: Jan 12, 2010
|
assume input from speech system is: [.56] Good morning, Dave.
Then this rule:
u: ([ _* ] _* ) $reliability = _0 ^input(_1) ^fail(sentence)
would strip off the data and reprocess the real input.
|
|
|
|