Tuning refers to the post-deployment tweaking of grammars in a speech app. Your QA department can test the features, but there's nothing like real callers in all their variations of speaking styles to really probe your app's grammars. If the open-source mantra is "with enough eyeballs all bugs are shallow", then the speech app mantra should be with enough speakers all grammar bugs are shallow.
Tuning is time-consuming because a human has to listen to the audio recordings of hundreds of phone calls. If the system can log speech rec errors, then the person doing the tuning can zero in on those utterances. If not, and we will see how this can happen, tuning becomes very difficult.
Out-of-grammar errors are the easiest to detect because the speech recognizer returns a NoRec error. These may be due to coughs, background noise or other audio problems that grammar changes can't fix. Others are due to variations in pronounciation that your grammar doesn't know about. People's names are notoriously hard this way because: (a) names are multi-lingual in origin, and (b) many people will mis-pronounce a name they've only read. We had a Mr Biber here, pronounced bee-ber, but many people would say bye-ber. Tuning revealed this, as well as the fact that some people would say only the last name. The grammar needed to be changed to cover all these possibilites.
The more difficult problem is what we call the Rumplestiltskin error. Most speech engines want to recognize. Try saying "Rumplestiltskin" to a speech-rec auto-attendant. You'll be suprised at how often it will find a (wrong) match. Saying something completely outside the grammar will cause a medium-confidence recognition of some wrong word in the grammar. Of course you can affect this by raising the recognition and confidence thresholds, but that may cause other unwanted recognition problems. Confirmation, for example, is an added step in the dialog that callers can grow to resent. The problem with a Rumplestiltskin error is that it's invisible; the system really has no knowledge that a recognition error has ocurred. This makes finding the error a time-consuming task for the tuner. The caller may be saying an acceptable alternative for a word, but until we discover this and add it to the grammar, the system will not be pleasing this caller.
Tuning becomes a big problem when dyamic grammars are used, because you can't do any pre-deployment tuning. The app will read a list of phrases from a database, say Little League team names, and generate a grammar. Consider the "Nowell Gnats". It's not unusual for the TTS engine to pronounce a word differently from what the speech rec engine accepts as a pronounciation. This is bad because your prompt may say it as "you can say Nole Nats..." whereas the speech rec engine wants "Now-well Nats".
It's easy to end up with a situation where the app won't accept any sensible pronounciation for a word, and even tells callers the wrong pronounciation to use! All without generating any recognition errors. Silent failure.
Can the speech rec platform help? Yes, here are a couple of ideas. First, the app should have "tuning mode" that can be set temporarily. It increases reco thresholds to force more confirmations, and logs all rejected confirmations as candidates for tuning. Secondly, the system should have a batch process that studies patterns of calls. If the same person calls back in several times in a row and never seems to complete a transaction, then these calls are also tuning candidates.
Wednesday, August 23, 2006
Tuesday, August 08, 2006
Bye Bye Speech Server -- Hello SPS
So, Microsoft Speech Server is being folded into Office Communication Server, and will be known as Speech Platform Services. This was announced at today's SpeechTek conference. Office Communication Server (OCS) is basically Live Communication Server, which does presence and SIP call routing.
I have fairly mixed views about this move. First, the negatives. Yet again, Microsoft is making a mid-course correction with their speech offering. At the beginning the vision was multimodal speech. Then it was telephony-based speech rec by web developers (by sprinkling "SALT" on their web pages to speech-enable them). Then it telephony-based speech rec using more standard methods, such as VoiceXML. Now it's speech rec as part of an enterprise information system. For developers actually trying to build applications, all these course corrections are unnerving, to say the least. If the overall goal, as Microsoft says, is to create an "ecosystem" then they need to realize that stability is a key factor. Wandering climate change isn't helping.
Now the positives. OCS is a strategic product for Microsoft. Communication is becoming a key part of every organization. Communication across devices. Synchronous and ayschronous communication. Features such as: presence, IM, VoIP, video, Find-Me, Follow-Me, and ad-hoc conferencing. Think EMail++. For speech rec to be bundled into such a strategic product is a huge win. It also shows that the speech folks at Microsoft have been listening and learning. Changing course often works out better than not changing course!
Lets hope the transition to OCS is as seamless as possible for existing MSS speech developers.
I have fairly mixed views about this move. First, the negatives. Yet again, Microsoft is making a mid-course correction with their speech offering. At the beginning the vision was multimodal speech. Then it was telephony-based speech rec by web developers (by sprinkling "SALT" on their web pages to speech-enable them). Then it telephony-based speech rec using more standard methods, such as VoiceXML. Now it's speech rec as part of an enterprise information system. For developers actually trying to build applications, all these course corrections are unnerving, to say the least. If the overall goal, as Microsoft says, is to create an "ecosystem" then they need to realize that stability is a key factor. Wandering climate change isn't helping.
Now the positives. OCS is a strategic product for Microsoft. Communication is becoming a key part of every organization. Communication across devices. Synchronous and ayschronous communication. Features such as: presence, IM, VoIP, video, Find-Me, Follow-Me, and ad-hoc conferencing. Think EMail++. For speech rec to be bundled into such a strategic product is a huge win. It also shows that the speech folks at Microsoft have been listening and learning. Changing course often works out better than not changing course!
Lets hope the transition to OCS is as seamless as possible for existing MSS speech developers.
Nice Clutch Play by Microsoft
Anyone who does speech recognition demos knows how they can go bad. This one by Microsoft's Rob Chambers (YouTube) is about as bad as it could get. After mis-recognizing the presenter's first utterance, the recognizer got even worse at understanding his correction attempts like "select all and delete".
Turns out it was a Longhorn bug with its audio software. Today Rob did the demo again, at SpeechTek no less! Eight minutes long and it worked fabulously. It was a nice comeback and a gutsy move -- way to go guys!
Turns out it was a Longhorn bug with its audio software. Today Rob did the demo again, at SpeechTek no less! Eight minutes long and it worked fabulously. It was a nice comeback and a gutsy move -- way to go guys!
Friday, June 16, 2006
Charlie Wilson's War -- Book Review
The sub-title says it all "The extra-ordinary story of the largest covert operation in history". George Crile has written a fascinating account of the CIA's role in the Afghan resistance to the Soviet Invasion of Afghanistan.
Charlie Wilson was a Dem senator from Texas. Most of the book deals with his efforts in Washington to get funding and support to his beloved mujahadeen. Washington is revealed not as a massive beurocratic system, or machine; but as a personality driven clique. One person, with the right skills (and Mr Wilson seems to have been a master), can find and grab the levers of power over literally billions of dollars in funding.
The other feature is the Alice-in-Wonderland nature of the world of the 1980s vs today's post-911 world. Then it was the Soviets who invaded a muslim country and faced a fierce insurgency. The US supported the insurgency at the urging of a Democratic president.
They supported (and were cheered) by fundamentalist jihadis, giving them secret weapons for attacking convoys and shelling bases.
One interesting question regarding today's Iraq is the lack of a Stinger missile. It made a huge difference in the Afghan war; as it would in Iraq. Strange that twenty years on there aren't tons of Stingers and its imitations available on the black market.
A movie is being made of the book.
Charlie Wilson was a Dem senator from Texas. Most of the book deals with his efforts in Washington to get funding and support to his beloved mujahadeen. Washington is revealed not as a massive beurocratic system, or machine; but as a personality driven clique. One person, with the right skills (and Mr Wilson seems to have been a master), can find and grab the levers of power over literally billions of dollars in funding.
The other feature is the Alice-in-Wonderland nature of the world of the 1980s vs today's post-911 world. Then it was the Soviets who invaded a muslim country and faced a fierce insurgency. The US supported the insurgency at the urging of a Democratic president.
They supported (and were cheered) by fundamentalist jihadis, giving them secret weapons for attacking convoys and shelling bases.
One interesting question regarding today's Iraq is the lack of a Stinger missile. It made a huge difference in the Afghan war; as it would in Iraq. Strange that twenty years on there aren't tons of Stingers and its imitations available on the black market.
A movie is being made of the book.
C# Cookbook -- Book Review
If you program in C# then buy this book. It's an indispensible reference with 300 code snippets of everything you never have time to look up. Snippets on things like: better ways to use collections, regular expressions, generics, delegates, exceptions, reflection, i/o, XML, and security.
MSDN is great if you already know the name of the class or function that you're interested in. But if you don't, then it can be very hard. Date formatting, for example, is under string.Format() instead of under DateTime.
C# Cookbook is goal-driven. Each topic, such as "Writing a TCP Server", "Increasing StringBuilder Performance" or "Creating a Priority Queue" is a full solution to a programming problem. It covers C# 2.0 so generics and anonymous methods are covered.
Put it beside your desk. Read ten snippets a day, and in a month you'll be a better programmer.
MSDN is great if you already know the name of the class or function that you're interested in. But if you don't, then it can be very hard. Date formatting, for example, is under string.Format() instead of under DateTime.
C# Cookbook is goal-driven. Each topic, such as "Writing a TCP Server", "Increasing StringBuilder Performance" or "Creating a Priority Queue" is a full solution to a programming problem. It covers C# 2.0 so generics and anonymous methods are covered.
Put it beside your desk. Read ten snippets a day, and in a month you'll be a better programmer.
Wednesday, June 07, 2006
Eating with Kids at the Bar-B-Barn
Eating with kids at restaurants can be a challenge, but last weekend in Montreal we hit a new high (or low). The Bar-B-Barn is a classic Quebec chicken & ribs place that takes its tradition seriously. With puritanical zeal, they have kept the same menu and decor: department of highways road-stripe-yellow paint, pine panelling, and ancient posters of hockey players.
The kids couldn't believe we were planning to eat in this low-ceilinged room with creaky floors and exposed heating ducts. My older son couldn't get over the menu. He kept asking "But there's only two items on the menu?". Yes, I'ld reply: chicken or ribs. "Just two things!?" and "Is that really it?" For someone used to the multi-page menus of a typically eatery, it blew his mind.
Son #2 is precise and his criticisms were detailed: the ribs had too much sauce, the fries were too long, and "this bun sucks!". Summing up, he concluded that "at least a crappy restaurant could have better lighting". Needless to say this sort of side commentary dulls the enjoyment of the others at the table. But we all got through it, and the food is actually pretty good. A broadening experience; for when I asked days later if they had told their friends about the Bar-B-Barn, they said "it wasn't that bad."
The kids couldn't believe we were planning to eat in this low-ceilinged room with creaky floors and exposed heating ducts. My older son couldn't get over the menu. He kept asking "But there's only two items on the menu?". Yes, I'ld reply: chicken or ribs. "Just two things!?" and "Is that really it?" For someone used to the multi-page menus of a typically eatery, it blew his mind.
Son #2 is precise and his criticisms were detailed: the ribs had too much sauce, the fries were too long, and "this bun sucks!". Summing up, he concluded that "at least a crappy restaurant could have better lighting". Needless to say this sort of side commentary dulls the enjoyment of the others at the table. But we all got through it, and the food is actually pretty good. A broadening experience; for when I asked days later if they had told their friends about the Bar-B-Barn, they said "it wasn't that bad."
Friday, May 26, 2006
The Joy of Ethereal
Ethereal really saved our bacon recently on an MSS + SIP project. Calls from one gateway worked, but another gateway in California wouldn't work. Turned out that the RTP packet length was 20 msec on the "good" gateway, and 10 msec on the "bad" one.
Whoever thought up the idea of human-readable message protocols should get a Nobel Prize. Protocols like SIP, HTTP and RSS are so much easier to troubleshoot because of this. The bad old days of RPC, ASN.1, and ISDN are hopefully nearly gone.
Of course, security may force encryption of the human-readable protocols : so we may end up back where we started...
Whoever thought up the idea of human-readable message protocols should get a Nobel Prize. Protocols like SIP, HTTP and RSS are so much easier to troubleshoot because of this. The bad old days of RPC, ASN.1, and ISDN are hopefully nearly gone.
Of course, security may force encryption of the human-readable protocols : so we may end up back where we started...
Wednesday, December 07, 2005
Memory leaks in .Net
.Net was supposed to make memory leaks a thing of the past. Turns out they can happen in C#, even pure .Net code that has no COM objects or unmanaged codes.
The culprit is async sockets.
The the buffer we pass to Socket.BeginReceive gets "pinned" in memory, preventing GC memory compaction. Since all new allocation uses the top of the stack, .Net has no choice but to keep allocating more Private Bytes.
Here's a thread about someone else having this problem
The culprit is async sockets.
The the buffer we pass to Socket.BeginReceive gets "pinned" in memory, preventing GC memory compaction. Since all new allocation uses the top of the stack, .Net has no choice but to keep allocating more Private Bytes.
Here's a thread about someone else having this problem
http://groups.google.ca/group/microsoft.public.dotnet.framework/brows...
Strangely, the addition of a Thread.Sleep(1) seems to make the memory
leak go away.
Basically, here is the BeginReceive callback function:
void AsyncReceiveCallback(IAsyncResult result)
{
VeoAsyncIOInfo thisConnection = (VeoAsyncIOInfo)result.AsyncState;
int num_read = thisConnection.m_socket.EndReceive(result);
if (0 != num_read) {
ProcessNewData(thisConnection.m_buffer, num_read,
thisConnection.m_socket);
}
Thread.Sleep(1); //hack hack hack
thisConnection.m_socket.BeginReceive(thisConnection.m_buffer, 0,
MAXMSGSIZE, SocketFlags.None, new AsyncCallback(AsyncReceiveCallback),
thisConnection);
}
Wednesday, July 14, 2004
HOW-TO: Subversion on Windows
Spent a week trying out Subversion, as a replacement for Starteam which (in our old version) doesn't support branching.
Summary: Subversion works well on Windows. TortoiseSVN is OK but the integration within File Explorer is a bit disconcerting since it lets you check-in to any trunk or branch. I would prefer a 'Set current svn URL' feature.
Setting up the subversion server
I used svnserve (their daemon) instead of Apache, because (a) our needs are simple, and (b) svnserve is a bit faster.
1. Downloaded svn1.0.5-setup.exe from http://subversion.tigris.org/. Download firedaemon (the Lite version which is free). Have it run c:\program files\subversion\bin\svnserve.exe -d -r c:\svn. This runs svnserve as a service so it gets loaded automatically at boot time and no one can close it by mistake.
2. download Tortoise SVN?-1.0.6-UNICODE_svn-1.0.4.msi. We use ASP.NET and there's a problem with tsvn's use of ".svn" directory names. The modified version
of tsvn that we downloaded uses "_svn".
3. Create a directory to keep your repositories (c:\svn\products). We chose one big repository for all our product source code (2 products, 3 versions of each) because this
makes porting changes between versions straightforward.
* create c:\svn\products
* svnadmin create \svn\products
* edit the .conf files in products\conf for authentication
see 3.2.4 in Tortoise SVN? manual
basically change the conf/svnserve.conf file to have
[general]
anon-access = none
auth-access = write
password-db = password.conf
This requires people to type a login. You need to create the password.conf file in the same dir.
No need to restart svnserve.exe when you change this file.
[users]
joe=angle
sue=water4
* create c:\layout and under it create sub-directories for both products vbvoice and vbsalt.
vbvoice \ trunk
\ branches
\ tags
vbsalt \ trunk
\ branches
\ tags
* copy a full set of files from s: to vbvoice\trunk.
* tsvn right-click on c:\layout and do Import to '''svn://localhost/svn/products'''
* now you can
Additional projects such as Installs or Builds should be their own repository created with svnadmin create. Each repository should get its own dir under c:\svn. These should be checked-out if possible to somewhere else than S: on dev machines to avoid mixups. But multiple repos in S: works (see SubversionTips)
Ignoring Files & Directories
Directories: tsvn Add To Ignore List . This add svn:ignore property in the parent directory. For directories at the root of S:, you can't see the TSVN property dialog, so view the unmapped dir that you SUBST'd, eg. D:\source52. You can clear the ignore on this dialog.
Registry has a system-wide global-ignore list of extensions and files to ignore. HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany But this is set via the TSN Settings dialog box.
There is also a config file and auth logins saved at C:\Documents and Settings\Ian Rae?\Application Data\Subversion
Development Machine setup
* install svn + tsvn
* create a directory structure like c:\layout above but call it d:\source. Do it on the drive where you keep your data files (such as d:)
* map S: to d:\source\trunk
* view S: in file explorer
* tsvn right-click and do check-out from '''svn://raidbuild/products/vbvoice/trunk'''
Files To Check In
tsvn Commit+cancel is fastest (doesn't contact repos). tsvn Check for Updates is good but chokes on "in-use" files. icon overlays helpful but may be slow.
Files To Check Out
tsvn Check for Updates. Remote status will be 'modified' or 'added' for all files to check out.
Files Not In Project
tsvn Add (use Add To Ignore list on directories, such as IntermediateFiles that you don't want to add to the project).
or tsvn Commit+cancel and check the 'show unversioned files'. However the checkbox is sticky and it may show all sorts of other files unless you configure the ignore lists.
Files In Project
just look in File Explorer (icon). Or use Repo-browser.
Update (getting latest code from repository to your source tree
Commit first then Update. Resolve conflicts
create file & dir
tsvn Add and later Commit
create branch, merge branch
tsvn Branch/Tag... and type '''svn://svn/products/vbvoice/branches/rel5.2'''
now remap S: to a new branch dir, such as d:/source/products/vbvoice/branches/rel5.2
tsvn right-click on S:\ and Checkout the rel5.2 branch.
''svn remembers what trunk or branch your files are at, so you can always do Commit/cancel to see, either on S: or the actual directory''
..now S: has the branch code, make your changes, commit...
merge branch
Once you final branch changes haved been checked-in, do the following:
1. write down the revision # of your final branch commit. (or just do Update which shows you the current branch revision number)
2. Subst S: back to the trunk version
3. Do TSVN right-click '''Merge''' and enter the branch URL and it's creation revision (usually labelled "copy" or the reversion after the last merged revision (see SubversionSampleBranchAndMerge)). If its not the first time you've merged from this branch then you need to enter the revision ''before'' the first new revision that hasn't yet been merged. For example, if you have branch revisions as shown below, then you need to enter "10" in the Merge dialog box since you merging ''everything changed since revision 10''.
14 my latest fixes
10 last weeks fixes
4. resolve any conflicts (the Merge log window will say "conflict" for each conflicted file). tsvn Edit Conflicts. then tsvn Resolved to clean up tmp files.
5. '''Commit''' the changes done by '''Merge'''. BE SURE to include branch revision numbers (from steps 1 and 3 above) in the Commit log message. eg. "merged bran2 r11-14 agentx changes".
Summary: Subversion works well on Windows. TortoiseSVN is OK but the integration within File Explorer is a bit disconcerting since it lets you check-in to any trunk or branch. I would prefer a 'Set current svn URL' feature.
Setting up the subversion server
I used svnserve (their daemon) instead of Apache, because (a) our needs are simple, and (b) svnserve is a bit faster.
1. Downloaded svn1.0.5-setup.exe from http://subversion.tigris.org/. Download firedaemon (the Lite version which is free). Have it run c:\program files\subversion\bin\svnserve.exe -d -r c:\svn. This runs svnserve as a service so it gets loaded automatically at boot time and no one can close it by mistake.
2. download Tortoise SVN?-1.0.6-UNICODE_svn-1.0.4.msi. We use ASP.NET and there's a problem with tsvn's use of ".svn" directory names. The modified version
of tsvn that we downloaded uses "_svn".
3. Create a directory to keep your repositories (c:\svn\products). We chose one big repository for all our product source code (2 products, 3 versions of each) because this
makes porting changes between versions straightforward.
* create c:\svn\products
* svnadmin create \svn\products
* edit the .conf files in products\conf for authentication
see 3.2.4 in Tortoise SVN? manual
basically change the conf/svnserve.conf file to have
[general]
anon-access = none
auth-access = write
password-db = password.conf
This requires people to type a login. You need to create the password.conf file in the same dir.
No need to restart svnserve.exe when you change this file.
[users]
joe=angle
sue=water4
* create c:\layout and under it create sub-directories for both products vbvoice and vbsalt.
vbvoice \ trunk
\ branches
\ tags
vbsalt \ trunk
\ branches
\ tags
* copy a full set of files from s: to vbvoice\trunk.
* tsvn right-click on c:\layout and do Import to '''svn://localhost/svn/products'''
* now you can
Additional projects such as Installs or Builds should be their own repository created with svnadmin create. Each repository should get its own dir under c:\svn. These should be checked-out if possible to somewhere else than S: on dev machines to avoid mixups. But multiple repos in S: works (see SubversionTips)
Ignoring Files & Directories
Directories: tsvn Add To Ignore List . This add svn:ignore property in the parent directory. For directories at the root of S:, you can't see the TSVN property dialog, so view the unmapped dir that you SUBST'd, eg. D:\source52. You can clear the ignore on this dialog.
Registry has a system-wide global-ignore list of extensions and files to ignore. HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany But this is set via the TSN Settings dialog box.
There is also a config file and auth logins saved at C:\Documents and Settings\Ian Rae?\Application Data\Subversion
Development Machine setup
* install svn + tsvn
* create a directory structure like c:\layout above but call it d:\source. Do it on the drive where you keep your data files (such as d:)
* map S: to d:\source\trunk
* view S: in file explorer
* tsvn right-click and do check-out from '''svn://raidbuild/products/vbvoice/trunk'''
Files To Check In
tsvn Commit+cancel is fastest (doesn't contact repos). tsvn Check for Updates is good but chokes on "in-use" files. icon overlays helpful but may be slow.
Files To Check Out
tsvn Check for Updates. Remote status will be 'modified' or 'added' for all files to check out.
Files Not In Project
tsvn Add (use Add To Ignore list on directories, such as IntermediateFiles that you don't want to add to the project).
or tsvn Commit+cancel and check the 'show unversioned files'. However the checkbox is sticky and it may show all sorts of other files unless you configure the ignore lists.
Files In Project
just look in File Explorer (icon). Or use Repo-browser.
Update (getting latest code from repository to your source tree
Commit first then Update. Resolve conflicts
create file & dir
tsvn Add and later Commit
create branch, merge branch
tsvn Branch/Tag... and type '''svn://svn/products/vbvoice/branches/rel5.2'''
now remap S: to a new branch dir, such as d:/source/products/vbvoice/branches/rel5.2
tsvn right-click on S:\ and Checkout the rel5.2 branch.
''svn remembers what trunk or branch your files are at, so you can always do Commit/cancel to see, either on S: or the actual directory''
..now S: has the branch code, make your changes, commit...
merge branch
Once you final branch changes haved been checked-in, do the following:
1. write down the revision # of your final branch commit. (or just do Update which shows you the current branch revision number)
2. Subst S: back to the trunk version
3. Do TSVN right-click '''Merge''' and enter the branch URL and it's creation revision (usually labelled "copy" or the reversion after the last merged revision (see SubversionSampleBranchAndMerge)). If its not the first time you've merged from this branch then you need to enter the revision ''before'' the first new revision that hasn't yet been merged. For example, if you have branch revisions as shown below, then you need to enter "10" in the Merge dialog box since you merging ''everything changed since revision 10''.
14 my latest fixes
10 last weeks fixes
4. resolve any conflicts (the Merge log window will say "conflict" for each conflicted file). tsvn Edit Conflicts. then tsvn Resolved to clean up tmp files.
5. '''Commit''' the changes done by '''Merge'''. BE SURE to include branch revision numbers (from steps 1 and 3 above) in the Commit log message. eg. "merged bran2 r11-14 agentx changes".
Thursday, June 03, 2004
The CD has left the building!
Wow. After months of development, VBSalt 1.0 shipped. The blue and silver CDs arrived today from the printers. They look great. It's hard to believe that months of work turns into just a bunch of bits.
I saw the movie “Pieces of April” last week. It’s about a woman, April, who is trying to cook Thanksgiving dinner in her little apartment. The stove breaks, and she spends most of the movie wandering her apartment building trying to borrow a stove. Things get worse. The bird gets kidnapped. A dog bites off a leg. She starts to think this dammed turkey will never get cooked.
If you’re thinking that wandering the halls with a half-cooked turkey in your arms sounds a lot like developing a software product, you would be right. Well, our “bird” is ready thanks to the unending persistence of
Fouad & Jim (chefs)
Dicky, Hui, and Val (associate chefs)
Mark and Bela (chief tasters)
Melanie (invitations)
Mark and Andrew (menu selection)
I saw the movie “Pieces of April” last week. It’s about a woman, April, who is trying to cook Thanksgiving dinner in her little apartment. The stove breaks, and she spends most of the movie wandering her apartment building trying to borrow a stove. Things get worse. The bird gets kidnapped. A dog bites off a leg. She starts to think this dammed turkey will never get cooked.
If you’re thinking that wandering the halls with a half-cooked turkey in your arms sounds a lot like developing a software product, you would be right. Well, our “bird” is ready thanks to the unending persistence of
Fouad & Jim (chefs)
Dicky, Hui, and Val (associate chefs)
Mark and Bela (chief tasters)
Melanie (invitations)
Mark and Andrew (menu selection)
Tuesday, June 01, 2004
Calling Microsoft
Now that John Lawrence has moved to a new position, his blog is no longer dealing with Speech Server. We need some other Microsofters who work on speech server or the SASDK to start blogging.
For instance, today we were dealing with a false barge-in problem on our MSS-based Auto-Attendant. There are a bunch of TIM and SES settings for controlling the sensitivity of the speech detector. Without a lot of playing around it's hard to know which one to use. A great subject for a little blog from the folks who know, like the one
The Old New Thing does so well.
When we learn how to prevent false barge-in, I'll post here.
For instance, today we were dealing with a false barge-in problem on our MSS-based Auto-Attendant. There are a bunch of TIM and SES settings for controlling the sensitivity of the speech detector. Without a lot of playing around it's hard to know which one to use. A great subject for a little blog from the folks who know, like the one
The Old New Thing does so well.
When we learn how to prevent false barge-in, I'll post here.
Thursday, May 27, 2004
SALT vs VXML : Part 1 - XML is not a programming language
moved to http://www.computertelephony.org/blog/index.php?p=25
Wednesday, May 26, 2004
Jail cells do not have windows!
From the Fish Don't Notice Water file:
A standard feature of movie jail cells seems to be a window with bars and no glass. The hero can chat with friends standing outside or (more commonly) receive escape materials through the window. What gives? This is some sort of cultural QWERTY phenomenum, a cliche so engrained it doesn't get changed. It's been decades since a jail cell had glassless windows, or even windows at all.
A standard feature of movie jail cells seems to be a window with bars and no glass. The hero can chat with friends standing outside or (more commonly) receive escape materials through the window. What gives? This is some sort of cultural QWERTY phenomenum, a cliche so engrained it doesn't get changed. It's been decades since a jail cell had glassless windows, or even windows at all.
Thursday, May 20, 2004
The Name: Silent Software
The name of this blog refers to a quality of good server software, it sits in the corner and just works. The fact that people forget about it, or at least take it for granted, is an indication of success. But silent software is not about software that is mute; servers should log copiously when asked to, and fail loudly.
"Just works" is a perception, not a physical characteristic. Lack of quality for a product can be defined as the gap between reality and expectations. It's just as important for a product to manage expectations as it is to manage the product itself. Especially new technology like speech recognition, where expectations can easily be set sky high. There is an interesting graph in Speech Server white paper showing how increasing CPU speed will improve recognition quality over the next number of years. The challenge for the next few years is finding domains where the current speech rec software can work well.
"Just works" is a perception, not a physical characteristic. Lack of quality for a product can be defined as the gap between reality and expectations. It's just as important for a product to manage expectations as it is to manage the product itself. Especially new technology like speech recognition, where expectations can easily be set sky high. There is an interesting graph in Speech Server white paper showing how increasing CPU speed will improve recognition quality over the next number of years. The challenge for the next few years is finding domains where the current speech rec software can work well.
Testing, testing, testing
Hello, world\n :)
I'm new to Blogger and to blogging so we'll take this slow.
This will be a blog about two things. First, I have an interest in the process of developing software
software, including agile practices, software architectures, and project tracking.
Secondly, I'm interested telephony and in particular speech recognition applications. This stems from my current position at Pronexus, working on two telephony toolkits VBVoice and VBSalt. VBSalt 1.0 is being released shortly, to coincide with Microsoft Speech Server.
I'm new to Blogger and to blogging so we'll take this slow.
This will be a blog about two things. First, I have an interest in the process of developing software
software, including agile practices, software architectures, and project tracking.
Secondly, I'm interested telephony and in particular speech recognition applications. This stems from my current position at Pronexus, working on two telephony toolkits VBVoice and VBSalt. VBSalt 1.0 is being released shortly, to coincide with Microsoft Speech Server.
Subscribe to:
Posts (Atom)