User avatar
DavidL
Founder
Founder
Posts: 11562
Joined: Sat Feb 08, 2003 9:39 am
Location: Metamora, Michigan
Contact: Send private message

MLSpeak Plugin

Wed Sep 27, 2006 2:05 am

MLSpeak allows you to send MLServeCmds that are spoken by the text to voice agent in most post Win2000 versions of Windows. If you have purchased and installed aftermarket Sapi5 compatible voices, your PC can sound very realistic. This plugin is useful when used with the MLCallerID plugin to speak who's calling. Use it in conjunction with MLCalendar to speak calendar reminder events. Use it with your MLELKM1 or MLHAI security plugins to tell you what door or window is opened. The list goes on and on what you can do with MLSpeak

September 26, 2006
Public release 3.0.0

Download, unzip and run the installer on the PC that has the sound card that you will be listening to.
http://www.cinemaronline.com/software/p ... plugin.exe
Here you can purchase upgraded Sapi5 voices:
http://www.homeseer.com/products/software/voices.htm

Command syntax: MLServeCmd.MLSpeak|<<parameter>>~<<parameter>>
Pricing has not been announced yet. A link for purchase will be available soon.

Required:
MainLobby 3 Client 3.0.26 or later and MLServer 3 v 3.0.96 or later, Windows SAPI5 voice installed in Windows XP, XPPro, MediaCenter2005.


MLSpeak will install with a 30 day trial. The driver will be available for purchase soon for permanent licensing.

Enroll to this thread to get update notices (click "Watch this Thread for Replies" link at bottom of this page).
Please do not post into this thread to keep it clean for update notices.
Last edited by DavidL on Thu Feb 15, 2007 4:59 pm, edited 4 times in total.

User avatar
gstone
Expert
Expert
Posts: 582
Joined: Fri Apr 23, 2004 10:42 am
Contact: Send private message

Wed Sep 27, 2006 10:07 am

Works cool. Now I just have to figure out how to route it.

The example is MLServeCmd.MLSpeak|<<parameter>>~<<parameter>>

What is the difference in the parameters? It seems to just speak both?
Always ask! You can't stay dumb forever!

User avatar
cborod
Is there life beyond myServer?
Is there life beyond myServer?
Posts: 1212
Joined: Fri Oct 07, 2005 6:26 pm
Location: Mount Gretna, PA
Contact: Send private message

Mon Oct 02, 2006 11:15 pm

If I understand this......

MLSpeak runs on the MLServer computer.....and uses the audio output of that computer....(am I right?)

If that is the case, then the output of the MLserver computer needs to interface to either my phone system (being smart enough to send a group announcement/page) or to my zoned audio system (being smart enough to put the system in all zone synch mode, broadcast the page, and then put the zones back where they were....) or a whole new set of small in wall speakers for just this purpose......

I don;t think I'd want it ralphing all over the house every hour or whatever, but certainly announcing incoming calls, visitors at the door, car arriving (Cartell auto sensor), Weather warnings, and such. Enough to be attention getting but not overwhelming or riduculous.

Anyone else doing something they have lived with for more than a novelty?
ChrisB


___________________________________
"Round up the usual suspects."

User avatar
DavidL
Founder
Founder
Posts: 11562
Joined: Sat Feb 08, 2003 9:39 am
Location: Metamora, Michigan
Contact: Send private message

Mon Oct 02, 2006 11:52 pm

I have used it for CallerID.
You can use it to announce the name of a song that is being played, announce a movie, used in conjunction with MLCalendar for reminders, I have sent my wife "voice grams", can be used as an alarm clock, announce where a security break is taking place, I have my door bells as security panel monitored zones. MLSpeak then tells me which door bell is ringing. lots of choices. But I do agree, I wouldn't want it to speak regularily.

User avatar
cborod
Is there life beyond myServer?
Is there life beyond myServer?
Posts: 1212
Joined: Fri Oct 07, 2005 6:26 pm
Location: Mount Gretna, PA
Contact: Send private message

Tue Oct 03, 2006 12:19 am

okay....door bells as sec zones....hadn;t thought of that one. And you did it how?

I have Panasonic door phones......any creative thoughts on how that would work?
ChrisB


___________________________________
"Round up the usual suspects."

dr.frazier
Senior Member
Senior Member
Posts: 224
Joined: Sat Oct 15, 2005 11:27 pm
Contact: Send private message

Tue Oct 03, 2006 2:19 pm

ChrisB

Have had same concerns as far as too much voice info throughout the house. I have a panasonic system, hai and doorbell output module set up through paging in the cav66 system. 18 zones now, getting ready to add 6 more. Originally I was going to add the mlspeak to the whole house paging mode but quickly realized, WAF NOT!!, that it would not work. I now am playing with putting the mlspeak as one of the inputs into the cav66 and using the cav plug in to direct where the sound goes. I can use voice response prompts in just the zone where the computer running the ml scene is located. I can direct certain responses to just certain zones. Missed calls to the garage upon arrival, etc. Wake up alarms to just the zones awakening. I can control, depending on time and other factors, which zones get full house pages. Possibilities are really endless depending on how much programming you want to do. Using recursive loops in command maps ( indebted to bhiga for his tutorial on his website ) it is fairly easy to record the on-off status, input selection and volume for each zone, select input MLSPEAK, say the message and then return the zones to their previous state. One command repeated for each zone. Easy to update and change.

This indirectly solved another problem I was having. If I announced callerID overhead, one statement was not enough, so I repeated it three times. This would then be distracting to pick up the call because it would continue to talk overhead. Since it was thru the page input it could not be muted with a phone off hook variable. Now since it is an input selection the callerid is announced until the phone is picked up and then muted, as is the music in general.

With a Panasonic interface then just the zone where the phone is picked up could be muted. :wink:

With an RFID interface then the music zone could follow where the wireless tablet goes. :wink:

Still testing and a long way away from any kind of finished product but very WAF accepted and blows my friends AMX and crestron systems away.

Randy

ricks
Is there life beyond myServer?
Is there life beyond myServer?
Posts: 1133
Joined: Wed Oct 27, 2004 8:01 pm
Location: Latham, Massachusetts
Contact: Send private message

Tue Oct 03, 2006 3:27 pm

dr.frazier

Not intending to hijack this thread but I find it fascinating what you've accomplished using the recursive loops to record zone stats and returning them to their original status following an announcement. Would you mind sharing what that code looks like?

Thanks,
Rick

User avatar
cborod
Is there life beyond myServer?
Is there life beyond myServer?
Posts: 1212
Joined: Fri Oct 07, 2005 6:26 pm
Location: Mount Gretna, PA
Contact: Send private message

Tue Oct 03, 2006 3:43 pm

Indeed! Please share....
ChrisB


___________________________________
"Round up the usual suspects."

dr.frazier
Senior Member
Senior Member
Posts: 224
Joined: Sat Oct 15, 2005 11:27 pm
Contact: Send private message

Tue Oct 03, 2006 11:43 pm

This is the code that saves the variables. I think you can get the idea. I know this works.

Four macro commands. The first initializes and starts the loop. The second loops through the controllers. The third loops through each zone. The fourth is the body that is the meat of the code.

1. loop.run.settempvar (starts loop and resets controller index to 0)

MLServeCmd.Macro|Setvariable|conindex~0!Loop.controllercontrol



2. loop.controllercontrol (loops through 3 times for 3 controllers, initializes zone index to zero on each controller call) - - change the 4 to n+1 controllers)

MLServeCmd.Macro|SetVariable|zoneindex~0!MLMath|ADD~conindex~{{conindex}}~1!MLConditional|ISEQUAL##{{conindex}}##4####loop.zonecontrol



3. loop.zonecontrol (loops through 6 times for each controller)

MLServeCmd.Macro|MLMath|ADD~zoneindex~{{zoneindex}}~1!MLConditional|Isequal##{{zoneindex}}##7##Loop.controllercontrol##Loop.body.settempvar



4. loop.body.settempvar ( this is the meat of the code, for each loop will set the variables for state,source and zone. Change as needed)

MLServeCmd.Macro|Setvariable|temp_{{conindex}}{{zoneindex}}source~{{cav66_c{{conindex}}z{{zoneindex}}_source}}!Setvariable|temp_{{conindex}}{{zoneindex}}state~{{cav66_c{{conindex}}z{{zoneindex}}_state}}!Setvariable|temp_{{conindex}}{{zoneindex}}volume~{{cav66_c{{conindex}}z{{zoneindex}}_volume}}!loop.zonecontrol

Happy to answer questions.

Hope this helps someone. This forum has been invaluable in learning the capabilities of mainlobby suite.

Randy

rjones
Senior Member
Senior Member
Posts: 190
Joined: Mon Nov 21, 2005 2:59 pm
Location: Bloomington, MN
Contact: Send private message

Thu Feb 15, 2007 4:54 pm

Why can't I download this for trial? I get a "page not found" when I try.

User avatar
DavidL
Founder
Founder
Posts: 11562
Joined: Sat Feb 08, 2003 9:39 am
Location: Metamora, Michigan
Contact: Send private message

Thu Feb 15, 2007 4:59 pm

Try it again.

Return to “MLSpeak”

Who is online

Users browsing this forum: No registered users and 1 guest