News:

VoxCommando supports plugins for a wide variety of programs and devices. Contact us if you want to create your own.

Main Menu

tell me a story tell me a joke tell me a puzzle

Started by zizos, November 29, 2011, 06:00:41 AM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

zizos

i think that we can make VC tell us a story or a joke or a puzzle  just by puting a coomand by the name

tell me a story

tell me a joke

tell me a puzzle 

i hop that you got my idea

Kalle

Quote from: zizos on November 29, 2011, 06:00:41 AM
i think that we can make VC tell us a story or a joke or a puzzle  just by puting a coomand by the name

tell me a story

tell me a joke

tell me a puzzle 

i hop that you got my idea
Yes, you can use the TTS.speak command and put any text as command. Don't forget punctuation marks  ;)
***********  get excited and make things  **********

zizos

thanks  Kalle

but can we add to VC for example a book of jokes or puzzles and its will read it for us   

why there is no option in VC to read from a file ?



Kalle

Quote from: zizos on November 29, 2011, 07:22:24 AM
thanks  Kalle

but can we add to VC for example a book of jokes or puzzles and its will read it for us   

why there is no option in VC to read from a file ?



I'm not sure that is possible with the "scrape" (copy and paste) commmand? I, will test it.
***********  get excited and make things  **********

jitterjames

Quote from: zizos on November 29, 2011, 07:22:24 AM
thanks  Kalle

but can we add to VC for example a book of jokes or puzzles and its will read it for us   

why there is no option in VC to read from a file ?




Zizos, I am not really understanding what you are looking for.  Where does this book come from?  What format is it in?  Do you want VC to read the whole thing from beginning to end?

I can add an action to read a complete .txt file and store it in {LastResult}. Then it would be up to you to do something with it.

jitterjames

actually Kalle is correct, you can use scrape action.  To read a text file called joke1.txt that is in the jokes folder of your F drive write.

Scrape    file:\\f:\jokes\joke1.txt

then you can use TTS.Speak  {LastResult}  or OSD.ShowText   {LastResult}.

or if you need to you can use regEx actions etc.


zizos


sirs2k

Having Jarvis tell a joke and puzzle are great for me, I wanted to ask something though.

Can we somehow put a PAUSE in the txt document somehow for ivona's Brian to pause when telling a joke for example?

Cheers

jitterjames

#8
Yes.  Your TTS parameter should look something like this:

<volume level="100">hello <silence msec="1500"/> there</volume>

Here is an example:
<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 1.9.4.0-->
<command id="781" name="tts pause example" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
 <action>
   <cmdType>TTS.Speak</cmdType>
   <params>
     <param>&lt;volume level="100"&gt;hello &lt;silence msec="1500"/&gt; there&lt;/volume&gt;</param>
   </params>
   <cmdRepeat>1</cmdRepeat>
 </action>
 <phrase>tts pause example</phrase>
</command>


and a reference:
http://msdn.microsoft.com/en-us/library/ms717077(v=vs.85).aspx

or you can also probably do it with a series of commas.

Hi there , , , ,  what's up. 

but it may vary depending on your TTS engine.


nime5ter

Since this is reviving a very old thread, I just wanted to mention that in addition to the "scrape" action mentioned above, another that may be preferable for tasks such as reading aloud individual jokes from a text file is File.Read. http://voxcommando.com/mediawiki/index.php?title=Actions#Read

Particularly with the {Rnd.#.#} variable as a second parameter. http://voxcommando.com/mediawiki/index.php?title=Variables#Misc._variables

Might be helpful info for newer VC users.
TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

sirs2k

Thanks guys,

James that worked great.
Although there were some things like the Pronunciation and Emphasize didn't work. They would be great to pronounce names etc. How would you write them in a txt file or in XML?

nime5ter,
Unfortunately I don't understand how I would do that, I tried to put the action to File.Read, then pointed it to the txt file but nothing is being read out.
Also I don't it would be better than the scrape method.

Personally I don't like the scrape method because sometimes it can repeat the same joke 5 times before moving on to another "random" joke.

Cheers,

Kalle

#11
Hi sirs2k, let me try to explain nime5ter's solution:

Create a text file with some jokes (at best you use the windows editor). It is important that each joke is written in one line without carriage return between, because the action "file.read" can read the whole text when you insert no parameter, or specified lines what nime5ter suggest with the {Rnd.#.#} as parameter. So the parameter {Rnd.0.10} means a random line between 1 and 10 (depends on how much joke lines you have in this text file).

here is a example command group which show you how it works and also a attached demo joke text file which you must stored in VC mainfolder.

<?xml version="1.0" encoding="utf-16"?>
<!--VoxCommando 1.9.2.2-->
<commandGroup open="False" name="jokes" enabled="True" prefix="" priority="0" requiredProcess="" description="">
 <command id="308" name="read jokes" enabled="true" alwaysOn="False" confirm="False" requiredConfidence="0" loop="False" loopDelay="0" loopMax="0" description="">
   <action>
     <cmdType>File.Read</cmdType>
     <params>
       <param>{Path.VC}\jokes.txt</param>
     </params>
     <cmdRepeat>1</cmdRepeat>
   </action>
   <action>
     <cmdType>TTS.Speak</cmdType>
     <params>
       <param>{LastResult}</param>
     </params>
     <cmdRepeat>1</cmdRepeat>
   </action>
   <phrase>tell me a joke</phrase>
 </command>
</commandGroup>


I hope this example make it more clear  ;)

TIP: The IVONA Brian TTS for english is really good for such things, because it pronounce the jokes at best. (Ups, I noticed in a post above that you allready use IVONA Brian)
***********  get excited and make things  **********

nime5ter

Quote from: sirs2k on May 12, 2014, 02:57:10 AM
Unfortunately I don't understand how I would do that, I tried to put the action to File.Read, then pointed it to the txt file but nothing is being read out.
Also I don't it would be better than the scrape method.

Without seeing your command xml, and perhaps the file itself that you're trying to read and what messages you got back in your history window, I can't begin to speculate.

One reason for users in general to be aware of File.Read is that if they're not comfortable with regular expressions they can still use the simple trick of dividing their jokes or trivia snippets or whatever by line in order to achieve the same effect, without needing to use regex.

Both Scrape and File.Read are reasonable options that can be combined with regular expressions and variables such as {rnd.#.#} or {match.rnd} to do some powerful things. I was mainly just putting the alternative option out there for anyone who came across the thread, to point out to them actions they may not already be familiar with.

QuotePersonally I don't like the scrape method because sometimes it can repeat the same joke 5 times before moving on to another "random" joke.

That would have nothing to do with the Scrape action. Random is random. Flip a coin 20 times and see how many times in a row you see heads. Possibly, if you have more jokes, you'll have better luck not running into that scenario.



TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

nime5ter

#13
Attached is a command group and text file to demonstrate 3 different methods for accomplishing the exact same thing. Note that one of those does not require regex, but for that one users will want to know how many lines there are in their file.

My command group expects the qi.txt file to be in the main VC directory. ... I'm using OSD.ShowText, but obviously you can change that to a TTS action instead.

That raises one other advantage of using File.Read with a {rnd.#.#} parameter rather than a regex solution: you are then just calling {LastResult}, so that you can have both TTS and an OSD window, without having to first save your random match as a variable. It's a simple, 2 or 3 action command.

... OK. Now back to my day job. :)

P.S. How to copy a command group xml file to your tree: Just drag'n'drop the file itself into your tree.
http://voxcommando.com/mediawiki/index.php?title=XML_on_the_forum#Importing_XML_files
TIPS: POST VC VERSION #. Explain what you want VC to do. Say what you've tried & what happened, or post a video demo. Attach VC log. Link to instructions followed.  Post your command (xml)

jitterjames

Quote from: nime5ter on May 12, 2014, 10:35:03 AM
That would have nothing to do with the Scrape action. Random is random. Flip a coin 20 times and see how many times in a row you see heads. Possibly, if you have more jokes, you'll have better luck not running into that scenario.

http://youtu.be/T4SVVKuOr0c?t=3m20s