Welcome to GotSpeech.NET Sign in | Help

while (speech > milk)

Speech Synthesis and Recognition
Moving my blog...

With the new job I'm moving my blog over to the MSDN site. The new URL is http://blogs.msdn.com/midunn

I'll still be answering questions on these forums as much as I can.

Fox Valley .NET Users Group

I'll be presenting at the Fox Valley .NET Users Group tonight. Details here... http://fvnug.wi-ineta.org/

I'm Joining Microsoft...

I've accepted a consulting position with Microsoft here in Minneapolis. I have very much enjoyed my time at Magenic, they have always treated me well and gave me a lot support in pursuing the Speech Server and UC work I enjoy. I have nothing but good things to say about Magenic and highly recommend them as an employer.

As of the 14th, I'll no longer be a MVP but I'm still going to be around blogging, speaking & answering questions about UC & Speech Server development. On that note, my email address is changing. Goodbye Gmail, hello Live! My new email address is michaeld.dunn@live.com. My phone number is the same and still free for anyone to call me about Speech Server/UC development questions. 612.859.1899

 

RoundTable Installation

I'm working with the RoundTable. We are using it to replace a Cisco Polycom speaker phone in a pilot program I'm working on.

I like how it functions, but I'm a little disappointed. Only because I had higher expectations, with out looking into the product. Microsoft never promised anything, I just assumed it worked a certain way. Hopefully my experience will help set your expectations.

First, why does it have such a large power supply box? It's bulky but light, so maybe it could of been smaller?

Second, it requires an analog line. Yes it has a RJ45 connection, but that is used only for remote administration, not actually connecting to your PBX. With Microsoft promoting VoIP why do we have to use an RJ11 connection?

Third, it's not available as a network device. If I want to use the camera portion, I need to plug the USB cable into a machine. I guess what I'd like to see is some tighter integration with OCS. The firmware maybe should be able to start a Live Meeting with OCS. As it was brought up to me, some people just want to have video conference calls, not necessarily present material.

Now what I do like, is that it works as described. The re focusing on the active speaker works well and audio and video quality are good. I wasn't sure how well the active speaker portion would, but it works great!

 

Upcoming MSDN Webcast

I'll be co presenting a MSDN Webcast on Thursday November 29th with Mithun Dhar.   This webcast will hopefully help you understand what APIs are available and what each of the APIs are used for.  Here is the webcast information and the registration link.

Unified Communications for Developers: Building Communications into Your Applications

Microsoft Unified Communications (UC) is turning the traditionally hardware-oriented communications world into software. Building the Unified Communications platform, with rich APIs and solid tool support, is a cornerstone of that strategy. In this session, we give an overview of what scenarios the UC platform enables and the APIs and software development kits (SDKs) that Microsoft Unified Communications offers. We demonstrate how to integrate presence, voice over IP (VoIP), video, and messaging into your applications, and also how to build powerful communications applications like IM-based query/response bots, outbound notifications, and speech technology-enabled telephony applications. Communications now can be a first class feature in Windows and Web applications; this is the introductory presentation of how you can leverage that capability as a developer.

Register Here: http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032357751&EventCategory=4&culture=en-US&CountryCode=US

Office Communications Server Ships with MSDN

I received my MSDN subscription DVDs today, OCS 2007 was included in this months release as well as Speech Server on a seperate DVD! I didn't see Speech Server on the subscriber downloads yet, but I didn't look real hard, I'm expecting that it will be there soon, if it isn't already.

 Friday I'm taking my OCS Exam (70-638) Friday, I'm undecided if I should try and take the two upgrade exam to upgrade my MCSD to MCPD on Friday as well.

 

Book Update

Some have asked if my book is available as an eBook, the answer is Yes. It's kind of hard to find but you can purchase it as an eBook directly from Apress at a steep discount. Save a few trees, think about getting an eBook instead.

http://www.apress.com/book/view/1590599020

I'm always available if you have questions. I may not always respond immediately, sometimes I can, sometimes I can't but I will eventually. Sometimes email goes into the Spam folder, so if I don't answer your questions after a week or so, give me a call 612-859-1899.

Bill Gates Interview on VoIP

http://www.crn.com/networking/202403532?pgno=1 

Good interview with Bill Gates on where VoIP is going, at least the Microsoft vision. 

If you read it on page 3, you'll notice Bill Gates actually names Gold Systems! Microsoft has a ton of partners and I'm sure Bill Gates doesn't know every partners name. (If he does, I'm even more impressed!)  I think it's impressive for that fact Gold Systems isn't the size of Nortel or Cisco, but Gold Systems is really leading alot of the Microsoft initiative in VoIP. I don't work for Gold, but I know Terry and of course Marshall, so I'm excited for them.

I think this shows two things.

1.) Microsoft has very high level interest invested and support from the top in VoIP. Least to say it's probably not going away.
2.) Gold Systems is doing a lot of interesting things within the same space.

Twin Cities XNA User Group - 1st Meeting

The first meeting for the Twin Cities XNA User Group is next on November 15th. For details check it out the site: http://www.twincitiesxnausergroup.com/

 

UCC API Released!

The UCC API (Unified Communications Client API), formerly UCCP, is finally released! This differs from UCMA in that the UCC API is meant for client applications, such as building your own IM client and UCMA is meant for server side applications, such as bots.

http://www.microsoft.com/downloads/details.aspx?FamilyID=82c468da-3294-4ca9-bbcc-d455cfd06af2&displaylang=en

 The UCC API isn't a replacement for the Communicator API, but it really seems to replace the RTC API. So if you are have exisiting applications which use RTC, you could use UCC API instead. There are some gotchas such as the UCC API doesn't have support for Peer to Peer like RTC has, but if you are targetting your application to hit an OCS deployment anyways, you aren't going to want to use Peer to Peer anyways.

I'm will be working on some UCC API samples and will be blogging about it probably mid November as I am currently swamped with projects right now.

RE: What every Speech Server (2007) Developer needs to know

Q: Clear and Append or Set?

statementActivity1.MainPrompt.ClearContent();
statementActivity1.MainPrompt.AppendText("This is a prompt");
or
statementActivity1.MainPrompt.SetText("This is a prompt");

A: I've used both, and it doesn't make that big of a difference. I've decided on the SetText as a primary method, as it is one call vs two. As the PromptBuilder really acts a string builder, you probably won't notice a performance difference.

 

Q: What's the difference between setting it in the TurnStarting event and via the IDE?

A: We've seen this in all of the samples, post etc..

sayGreeting_TurnStarting(...)
{

this.sayGreeting.MainPrompt.SetText("Welcome to whatever application");

}

It's typically good for samples to get to the point, but you really shouldn't do this in a real application. If you set this text via the Workflow IDE instead, your application sets it once, not once per turn! Again you won't notice much of a performance difference, but it adds up!

 

Q: Should you load inline grammar in the TurnStarting event? 

A: Like the previous question, if you need to change the grammar once per turn instead of once per session, the change it in the TurnStarting otherwise set it via the IDE. If you need something in between, you can use the Executing event instead...

 

Q: What is the order of Event execution - Workflow & Activity?

A:  Workflow execution is as follows:

1.) Designer code is called via the Constructor InitializeComponent()
2.) InitializeProperties
3.) Initialize
4.) Execute
5.) Your Code
6.) Uninitialize
7.) Dispose

Activity:

1.) StatusChanged
2.) Executing
3.) TurnStarting
4.) Closed

It will help you tremendously to figure out how each of these works, and will help make the right decision of where to set your prompts and grammars.

I didn't answer all of the questions, but count on reading about them shortly. Look over and learn the execution order and what exactly happens in each event.

Halo 3 Pre Launch Party - Minneapolis

Monday night I was lucky enough to attend the Halo 3 Pre Launch party at the Minneapolis Microsoft Office. What a blast!

Here is a photo of a couple of fellow Magenicons at Launch: (Hijacked from Jason's Blog)

One of our region's Developer Evangelist, Steve Loethen, wearing a skirt...err I mean kilt...

And finally a picture stolen from Steve's blog:

 To the parent's of this little guy: That's awesome! I can't say I would of done that to my kids.

What every SpeechServer (2007) Developer needs to know

For now I'm going to put questions for you to think about now and answer them in a later post. These are questions you should know and are really some best practice guidelines.

Clear and Append or Set?

statementActivity1.MainPrompt.ClearContent();
statementActivity1.MainPrompt.AppendText("This is a prompt");
or
statementActivity1.MainPrompt.SetText("This is a prompt");

What's the difference between setting it in the TurnStarting event and via the IDE?

Should you load inline grammar in the TurnStarting event? 

What is the order of Event execution - Workflow & Activity?

Difference between Grammars values?

questionAnswerActivity1.RecognitionResults.Text()
questionAnswerActivity1.RecognitionResult.Semantics.Value.ToString()
questionAnswerActivity1.RecognitionResults.Semantics["SomeKey"].Value.ToString();

How to set max silence and norecognition turns for the entire Workflow?

Create grammar for with repeative values? IE: A grammar that accepts between 5-10 letters.

Really the order of execution and know why you would or would not want to set something in the Turn_Starting event....

I'll post answers and reasoning later this week.

Magenicon - Robotics Studio Project

So I'm almost finished building the Robot and before I start writing code, I figure I should give this thing a name. I thought of names for awhile it came to me when I was speaking with some one about Magenic and how we refer to each other as Magenicons. I sounds very robotics ... so that's the name.

Right now the robot has the following software:
Windows Vista Ultimate
SQL Server 2005 Express
Visual Studio Team Suite
Robotics Studio 1.5
Speech Server 2007

I bet you may be asking...Spech Server?!? Well this robot will run Speech Server for out bound calls. The idea is that I will have a Windows application that uses SAPI, that someone can say.."I am here to see Michael Dunn". It will then use Speech Server to call my office and tell me, "Someone is here to see you". I then can reply, "Bring them to my office" At that time it will use SAPI TTS to tell them to "follow me" and bring them to my office and then return to it's starting location.

Yea, I know I could have Speech Server installed on another server and this robot could just have an application to place a call in the queue for the other server to call, but right now I it's on the robot it self. At 1Ghz and 1GB of RAM, I won't be doing a lot of calls, and being installed on Vista I have a 2 port limitation anyways but it works for what I'm trying to do.

I had to buy a few more parts since my first post.

Additonal Parts List:

Logictech USB Webcam with microphone
Generic Lithion Ion Battery for Motors (Bought from Ebay - Hong Kong)
iRecharge Universal Laptop Battery for the PicoITX motherboard.
Polycarbonite sheets
Misc Screws
Cable Ties
Phidgets 8/8/8/8 with LCD
5 Volt, 1.5 Amp Voltage Regulator
Voltage Regulator Breakout Board
USB Hub
Power button for the motherboard
IR Range Detector Senor
New Drill and Jigsaw

Assembly and Pictures

After first putting together the tracked chassis for the base, the Polycarbonite was pre cut for electonic boards I wasn't going to use. So I had to buy more and recut the base, so I cut more and built two more tiers on top of that.

I found a Lithum Ion 12v battery on Ebay for $20 from some place in Hong Kong which was smaller than my NiMH battery I had orginally intended on using. Next, I realized that using the on motherboard 4GB Flash drive, wouldn't be enough for Vista, so I bought a 60 GB Laptop hard drive to use. I then needed to find a universal laptop battery that was small enough to fit on here, but powerful enough to keep this thing running for a couple of hours. I found the perfect one called iRecharge at RadioShack. for $99. Now I needed a Voltage Regulator with a breakout board (as I can't cut with a Jig saw, let alone solder anything) so that my 12v battery didn't ruin my motors.

At this point I have already gone way out of budget, I went ahead and bought a Phidget 8/8/8 with LCD text screen (Not added yet) and a Logictech Web cam, with a microphone on it.

So here are the initial pictures, I'm finalizing it this weekend so it will change slightly.


PicoITX and parts - This motherboard is @#$#@% small!

Phidgets 8/8/8/8 and Phidgets MotorLV control boards

Assembly tracked chassis with some of the electronics

3rd and 4th tiers with electronics


Front view - almost finished

I eventually need to create a navigation system, right now I'm thinking RFID, but we will see. The fun really starts now as I need to start programming this thing. Let me say this Robotics Studio is freaking hard! I can't wait for Sara to finish the book on it!

Looking for work?

Right now Magenic (www.magenic.com) is looking for more developers for most of our offices. Minneapolis, Chicago, Atlanta, San Francisco, and Boston. If you are a .NET Developer currently looking for work in any of these areas, shoot me an email. michaeldu@magenic.com

If you are looking for work in other areas, let me know as I have contacts with other companies looking for good people. One company I'd like to mention is Stratagem. (www.stratagemnet.com). They have some really good people there, and if you are looking for work in Wisconsin (.NET or Java) , you should look into this company. If you are interested give Brian Solderling a call:

bsoderling@stratagemnet.com
tel: 608.246.4300 x137

And of course if you are looking for UC/UM type work, check into Marshall's employer, Gold Systems, (www.goldsys.com). I've met and dealt with Terry Gold a couple times, great guy to deal with and from what I'm told he's an awesome boss.

On that note, of course Microsoft is always hiring, check out thier new recruiting site: http://www.hey-genius.com/ or NEW http://www.exchangeyourcareer.com/

More Posts Next page »