Slashdot Log In
Open Source Speech Recognition - With Source
Posted by
timothy
on Tue Sep 28, 2004 06:18 PM
from the what-I-hear-you-saying-is dept.
from the what-I-hear-you-saying-is dept.
Paul Lamere writes " This story
on ZD-Net and this recent story
on Slashdot
describes the recent open sourcing of IBM's voice
recognition software. This release, unfortunately, doesn't include
any source for the actual speech recognition engine. Olaf Schmidt, a
developer on the KDE Accessibility Project ,
is quoted as saying 'There is no speech-recognition system available
for Linux, which is a big gap.' In an attempt to close this gap, we
have just released Sphinx-4,
a state-of-the-art, speaker-independent, continuous
speech recognition system written entirely in the Java programming
language. It was created by researchers and engineers from Sun, CMU,
MERL, HP, MIT and UCSC. Despite (or because of) being written in the
Java programming language, Sphinx-4 performs as well as similar
systems written in C. Here are the release notes and
some performance data."
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
Aim You Sing Ate Write How (Score:5, Funny)
Translation for those who still don't get it... (Score:4, Informative)
Body: It(Ate) works(lurks) very(barry) well(wall).
Parent
Re:Translation for those who still don't get it... (Score:3, Funny)
Re:Translation for those who still don't get it... (Score:4, Insightful)
It takes at least 3 people to make for a really good joke:
-
One person to tell it
- One person to get it
- One perdon to laugh at for just missing the whole point.
#3 is a little bit less obvious when the joke telling is online.Parent
Re:Aim You Sing Ate Write How (Score:5, Funny)
Who ate my wall?
Parent
Java!?! (Score:3, Funny)
Re:Java!?! (Score:5, Funny)
Just be glad it wasn't written in Lisp.
Parent
Convert to C easily with ALMA (Score:4, Informative)
It can read several high level languages and build an internal representation and the convert that to other high level languages.
It is a great tool to help port this software to C for example.
Unfortunately the site seems to have gone, although I have used this software in the past.
See the google cache though: http://66.102.9.104/search?q=cache:Dbw7OX6Tco4J:w
Parent
Re:Java!?! (Score:5, Informative)
Does this mean that one could make a shared library out of the java code for C-programmers to use?
Parent
withOUT source surely? (Score:3, Funny)
"This release, unfortunately, doesn't include any source for the actual speech recognition engine."
Java comment (Score:3, Insightful)
Im sick of these comments. Anyone that needs to know about the performance of Java knows its very fast. Why bother commenting about it anymore?
Its like saying "... and because it was written in C, its very fast...", as if we didn't know already.
Re:Java comment (Score:4, Insightful)
Parent
Obviously (Score:5, Funny)
Looking at the performance data it just blazes along on that config. Not exactly what I'd call an embedable system, though Microsoft might beg to differ.
Parent
The issue is Javas footprint and integration (Score:5, Insightful)
Java is a memory hog, and it's certainly not going to be on any device I would want speech recognition on. Heck, I don't have Java installed on any of my machines, mostly because of the absolutely ridiculous footprint on disk as well as when running in ram.
And integrating Java applications into other applications is very difficult. Now, Java is good for certain things, but a speech recognition engine in Java sounds like the worst abuse possible
That and I still can't train it to recognise my slight australian accent, unlike every other bit of SR software I've used on Win32
Whether or not Sphinx-4 works, and whether or not Java is 'fast' enough to do speech recognition processing, its of no use to me.
Parent
But what about text to speech? (Score:5, Interesting)
Re:But what about text to speech? (Score:5, Informative)
Parent
Re:But what about text to speech? (Score:3, Interesting)
We would like to know if something does not sound quite right. After entering some text and listening to it, please fill out a feedback form and tell us what was mispronounced. And please note that no language translation is done so, for example, if you choose a French voice you should submit French text.)
(That text is from the same page.)
Re:But what about text to speech? (Score:4, Interesting)
Have the same person read the same passage ten times the same way and you will get ten very different results. Ask them to change tones/emotions and it will be even different.
Parent
Re:But what about text to speech? (Score:5, Funny)
Parent
Re:But what about text to speech? (Score:3, Funny)
OT Star Wars Nitpick (Score:5, Informative)
Parent
Re:But what about text to speech? (Score:4, Insightful)
Probably because speaking is incredibly complicated, and providing realistic speech from unmarked text is an intractable problem.
When you write something down, you don't provide a pronunciation guide. Rather, the reader is guided by context. For instance, if I write the word "import", how do you pronounce it? If we're talking about trade deficits, you probably know that the stress is on the second syllable; but if we're discussing meaning, the stress is on the first.
How do we expect computers that have a difficult time with context to make a pronunciation decision? This is a serious barrier to "good" text to speech (whatever "good" means).
If you mean that you want the voice to sound more natural, even if it's pronouncing words incorrectly, you still have a lot of hard problems. For instance, the muscles in the tongue and lips move differently based on how phonemes are grouped. Coarticulation models are difficult to construct, and when you try to account for a convincing number of muscles and vibrations, the problem may quickly become intractable.
Not only do we have to pay attention to the physics of speaking, but also the physics of hearing. The amount of signal processing involved can be pretty staggering if you're going to implement a complete system. Thierry Dutoit has a really good book on the subject called An Introduction to Text-to-Speech Synthesis. You should check it out if you want a somewhat more exhaustive answer to your question.
Parent
Virtual Machine Syndrome (Score:5, Funny)
Treat suspected cases with caution, and under no condition contradict the patient. There is no known cure.
Re:Virtual Machine Syndrome (Score:5, Funny)
TREATMENT: Implement reliable and efficient systems using virtual machine of choice, regardless of criticisms. Apply free-market therapy judiciously, allowing adopters of Virtual Machine technology to thrive and become prosperous if warranted. VMS symptoms typically disappear when sufferer's stock options are valued at 300% of their strike price. Symptoms may also be temporarily relieved through just-in-time compilation.
RELATED SYNDROMES: Ossified Self-Important Myopia (OSIM), which is the tendency to assume that one's favorite programming paradigm, language, or OS is unconditionally and unreservedly the best choice for any software project. Characterised by the inability to understand that the only way to guarantee maximum efficiency is to write everything in assembly language, with complete and perfect knowledge of all quirks of the specific target instruction set.
Parent
Re:Virtual Machine Syndrome (Score:5, Informative)
An expecially odd statement considering much of speech recognition can be broken down into great big vector operations, which are perfect for hand coding in C. Bet I could quadruple the speed of it in a couple of hours with some hand coded SIMD ops in x86 assembler.
It's funny because Java is fantastic at JIT compiling code with lots of non-local behaviour (e.g complex UIs) because it can take into account global behaviour at runtime. But it sucks at tight, heavy computation loop. DSP is a fantastic example of something Java is going to get creamed at when pitched against non-virtual machines.
Of course, if you have some cross-platform standard API calls for those vector DSP ops, then it's a different argument...
Parent
Re:Virtual Machine Syndrome (Score:5, Funny)
Why should I?
Because it's written in Java!
How is it better than what I'm currently using?
It's written in Java!
I'm already using vi, emacs, kate and gedit, why should I use yours as well?
Because it's written in Java!
Does it have a spell checker, syntax highlighting, and auto-indent?
Who cares? It's written in Java!
Name two benefits to your text editor?
That's easy! First, it's written in Java. Second, it's uh... uh... hang on, uh... it's written in Java! Yeah, that's it, it's written in Java!
Parent
Re:Virtual Machine Syndrome (Score:4, Insightful)
Seriously though, Sphinx-4 is really worth looking at. That group at Sun does great work.
Parent
Re:Virtual Machine Syndrome (Score:5, Insightful)
True, instead there are a thousand "super-efficient" .jar libraries required by a "Hello World" app, which use the "Object Oriented Programing and Long Lasting Cure All and Testicular Itch Relief Paradigm(tm)" to such extremes that it takes 12 objects instantiated in 4 containers to flip a bit in a byte. Additionally, there is the substitution of native performance of compiled code to code compiled "Just Too Late" combined with exceptional memory usage that entails. If it were not enough, as a bonus, we get the garbage collector which is scientifically fine-tuned to run just when user is expected to interact with the application in most time sensitive manner. As an icing on the cake we also are treated to multiple, insideously incompatible with each other, versions of the so-called "universal" VM, resulting in one app demanding that SunVM is used and the other that MS VM is used thus resulting in total impossibility of using both at the same time. Yes I do speak from looong and utterly infuriorating experience with Java apps.
At one point I considered printing a sign warning of Java advocates being shot on sight, I could probably make some serious money selling it, given similiar amount of grief my other colleagues are going through.
Ahem, and yes, the greatest offenders in me experience are... err... frigging IBM Java apps. We actually abandoned DB2 8.x release because noone could deal with the havoc the DB2 admin tools were causing with various other retarded banking related Java apps.
Parent
Re:Virtual Machine Syndrome (Score:5, Insightful)
Garbage collection, in particular, is coming along nicely. Check out "Metronome" by David Bacon, of IBM. You set the knobs, it tells you how much memory you will need, and it gives you GC with real time performance. No pauses.
Or, consider the machine that Azul is working on (good luck getting details now that they are in some sort of a quiet period). It has hardware support for read and write barriers, plus a good story for stack caches. Chances are good its GC pauses will be tiny (1-10 ms).
I can also tell you that the market very much prefers JIT compilation. I worked on an ahead-of-time-compiling JVM, and there were a couple of others built by other companies. I don't work on that JVM any more, and the other AOT JVM companies have either failed or gone into other lines of business.
So, great story, but not exactly correlated with reality.
On the other hand, consider all the buggy apps that we (who sometimes administer Windows machines) have needed to patch over and over again over the years. If I am unwilling to run an application in the first place because of its poor security, does it really matter how little memory it uses, how fast it runs, or how well it gets along with the other worm-friendly apps?
Parent
Re:Virtual Machine Syndrome (Score:5, Funny)
I dont give a damn about Metronomes and speech recognition of questionable usefulnes. None of those are Java apps I deal with. And of those I deal with all suck.
worm-friendly apps?
Speaking of security, most Java apps are deployed in places that need them not in the first place, as a kludge for an E-Commerce site or electronic banking interface which can be done with a bit of thinking in plain HTML. Others, like IBMs for example, are mainly administrative tools which have no communication abilities outside of their narrow scope. These, if made in any other language would not be any more prone to worms. As a matter of fact, the use of Java on some of these electronic commerce sites introduces unneeded complexity and results in code executing on customer's computers whereby they become prone to being abused by spoofed/buggy VM's etc.
So, great story, but not exactly correlated with reality.
Reality? Oh dear. Listen dude, I am telling you as a user of your wonderful computer science masturbation effort otherwise known as Java: No. Nada. Niet. It aint a go. No can do. The bank we deal with is rewriting their apps to be java-free because of the amount of flaq they are getting (and no they are not going to that other aberration known as C# either). IBM DB2 is banned in many companies we deal with. Etc etc. We, the users, not you, Mr. Java Wanker, have the final word on this. Trust me.
Parent
Free C++ alternative from Mississippi State Univ. (Score:5, Interesting)
--
Try Nuggets [mynuggets.net], the mobile search engine. We answer your questions via SMS, across the UK.
Another alternative: HTK (Score:3, Informative)
Maybe you like the Cambridge HTK [cam.ac.uk] better, then ;-)
--
Try Nuggets [mynuggets.net], the mobile search engine. We answer your questions via SMS, across the UK.
Cool... (Score:3, Funny)
Open Source - With Source! (Score:4, Funny)
I'm not one to be picky about titles, but sheesh...
Sphinx 2 (Score:5, Informative)
"There is no speech-recognition system available for Linux, which is a big gap."
Um, Sphinx 2 [sourceforge.net] (a predecessor of Sphinx 4) has been around for quite some time now. Like Sphinx 4, it's speaker-independent. Unlike Sphinx 4, it's a C library, and is thus easily interfaced with other languages (insert shameless plug for a simple Python interface [wpi.edu] for Sphinx 2 I wrote).
Speech recognition (Score:5, Interesting)
And lo, the point was missed... (Score:5, Insightful)
There are a number of HCI aspects where speech recognition is not a good solution.
However, let me enumerate a number of other ones, where it's superior:
Minutes of meetings, or similar. Imagine having a verbatim record of a discussion there by the time you get back to your desk.
Someone who cannot type - e.g. no hands. Rare, granted, but still a viable use.
Someone whose hands are busy. The cannonical example here is a pathologist doing an autopsy, where they dictate everything. Speech recogition saves time in transcription (and money for the audio typist).
I'd love to be able to issue voice commands to a computer, for a few, isolated cases. For example, diagnosing hardware. Bring up a doc, and be able to get the computer to flip pages, without having to remove the probes from the hardware. Re locating them is a pain, and sucks time.
Moreover, I'm certain that there are others, some of which will only be realised when it's common and cheap enough to be widely available.
It's like a mouse. It's one of the worst general purpose input devices for a computer [0], but it's excels at indicating a single element on a display. The mouse and keyboard complement each other, and there are a bunch of other, more specifc input devices, such as the graphics tablet. I have no doubt that if speech recognition was as accurate and reliable as a graphics tablet, it would get a similar amount of use.
[0] Try inputing a block of prose with only a mouse. Even specilist software makes it only suck marginally less.
Parent
Obligatory Commercial Break (Score:5, Funny)
Cell Phone: To: Mike. I have lip fungus.
Woman: [into cell phone, angrily] I had FUN, not lip fungus!
Cell Phone: I have fungus, not lip fungus.
Woman: I DON'T HAVE LIP FUNGUS!!!
Never a huge fan... (Score:4, Insightful)
I must say though that speech recognition is something that the whole computer community needs to work on. Now, we can finally do that. All the "open source community" needs is source that works a little. In a year or so, I bet this works better then most options available today.
Now, I know that isn't the rule but this is the type of thing that computer/math engineers could sit down to and contribute where others can't. It seems to be the rule that the really smart ones tend to work with open source software...
Really the cool thing is that this could get people involved who otherwise wouldn't because they don't know where to start.
Argh! (Score:3, Funny)
It even uses Java!!!! Slashbots must fight back!
nifty desktop control with sphinx and festival (Score:5, Interesting)
The very small vocabulary needed for desktop control makes the speech recognition much more accurate and usable.
I used to work for MacSpeech, doing UI work (Score:5, Insightful)
With that said, you can probably guess I have a lot to say about Speech Recognition. (Not Voice Recognition, that's different, that would be able to distinguish Ben from Charlie for example.)
A good SR engine is, of course, essential. And I've not read the details on the two recent giveaways, but I suspect that they are only the engine.
The SR engine is just a begining. There is a ton of UI work that needs to be done. Sit and think about spacing around punctuation marks and then think about capitalization around puncuation marks. Yeah, it is all pretty cut and dried and known but the details really need to be sweated to get it right. This is very time consuming.
Next you have to worry about exactly where you are editing. Is that into Microsoft Word (or Open Office), or emacs, or where? It can make a huge difference when you want to go back and correct misrecognitions. You just don't want to send N delete characters and retype it, that results in a lousy user experience. So just exactly where is the input cursor at all times? This is not an impossible problem, but one where the details must be sweated.
Next is command and control. Just how are you going to let the user grab the text of all the menus and all the text in the dialog box buttons. Again, not impossble, but more of those pesky details.
Finally, is your SR engine good enough? Maybe, maybe not. Let just say that 98% accuracy might look good on paper, but that is one in 50 words wrong. Unless your correction mechanism is smooth, an error rate that high greatly slow you down.
Is Open Source SR a good thing? Oh yes sir, yes! But lets not forget the details. One thing the Open Source community has been accused of, perhaps justly, perhaps, unjustly, is not sweating the details.
Speech Recognition has an awful lot of details.
Why speech recognition on Linux will kill Windows (Score:5, Insightful)
I was thinking about this the other day, and was wondering if this is a huge gap in the Windows user interaction model.
Think about how you input info using windows. You click on a few locations using the mouse, perhaps use some keyboard input, click some more. The output from these inputs is arbitrary: it may result in anything from a 'File/Save' dialog to a custom error dialog box. There is no linear path for inputting commands, or for mapping inputs to results.
Compare this to the command line. You enter a few distinct atomic commands, and view the results in the same medium. You then enter more commands, refining your actions. The key here is that you already have a linear model for input that produces well defined expected results, all in a common medium that is conceptually simple, visible to the user, and easily processed by machines. Extending this model to accept voice input or output is trivial.
How is one supposed to quantify basic tasks and turn them into equivelant voice commands without a baseline framework or paradigm to extend from? How do you automate, simplify, or extend existing tasks without a common input or output medium? GUIs provide no such medium or framework; that same framework is at the heart of the command line interface!
Perhaps this is why we never saw voice recognition technology take off on Windows. It's blinking impossible to script actions for an arbitrary task, let alone process the arbitrary results!
On a similar note we may see voice recognition on Linux take off like a rocket. Anybody can add voice recognition to perform almost any command because the actions are all scriptable throught the CLI already. If you can type it, you can get your computer to do it when you say 'computer, foo!'
Mars
P.S. It would be greatly appreciated if someone could please clarify my point. It's buried in there somewhere...
I am sick of these "Java sucks" comments (Score:4, Insightful)
I think some people should open their eyes, otherwise the world will leave you behind while you are happily consoling each other how Java is slow and unusable. Wake up, folks!
To people which argument about hand writing C and assembly - well, you obviously didn't try to implement any of the algorithms (like hidden Markov models or the statistical searches) used in speech recognition. It is pain in the butt to do it even in Java, but at least you do not have the pointer mess you would have in C/C++. The engine has a good performance already, I am not sure what you would gain by rewriting it, except of bugs (the older Sphinx2 was for sure buggy as hell).
Something about the memory footprint. Java can have a large memory footprint, however with speech recognition, you will always have it. Just the accoustic models for one language can be easily in the order of several hundreds of megabytes. Memory footprint of Java is completely irrelevant here.
And before somebody compares Sphinx with speech "recognition" on you mobile phone or in your car - be aware, that you are comparing scateboard with a Concorde here. Sphinx family of engines are intended for recognition of continuous, large vocabuly speech and to be speaker independent. Your phone/car is small vocabulary, single words and speaker dependent - i.e. completely different problem. You cannot think about Sphinx as something "to have on some device". It is more intended to act as a speech recognition server on a dedicated machine e.g. for a large call center or ticket reservation system. I guess it could be used also in KDE for the KAccessibility purposes, but it is a bit heavy for that (especially with the large datasets).
So next time, before you start spouting BS about Java and applications written in it, at least check the facts. People will not see you as a complete idiot.
Re:Speech Recognition is a Mature Technology. (Score:4, Funny)
Ba-dum-dum ding!
Parent
Rolling your own speech recognition isn't so easy (Score:5, Informative)
Speech recognition is not really a solved problem. For some applications it works adequately, but if you take a look at the error rates for the Sphinx system to which the post links, you'll see that the Word Error Rate for large vocabulary is over 18%. Even for 5,000 words it is 7%. For many applications that is unacceptable.
A second factor is that these statistical speech recognition systems require extensive data for their language model. Building such a system requires recording real speech, segmenting it and creating a set of examples from which to compute the probabilities, which requires some knowledge of acoustic phonetics, and doing the computation for the model. This is time-consuming.
Speech recognition technology isn't a dark secret, but it isn't trivial to create a system with good performance either.
Parent
Re:The Myth Must Die (Score:5, Funny)
And many studies have shown that going with Microsoft software is cheaper than going with open sourced software.
Parent
There's more than one kind of overhead. (Score:5, Insightful)
For applications where you can create a JVM and use it as you need it, Java's great. Webservers, sure, no problem. Desktop applications, heck, the GUI overhead's getting to be the same order of magnitude (though that HAS to change, we can't afford to depend on Moore's Law much longer unles someone comes up with a clever way to cut the power consumption of processors faster than the speed increases). Browser plugins? For content, yes, but not for navigation... if it takes 10s to start up a JVM your customer's already hit "back".
Parent
Re:There's more than one kind of overhead. (Score:4, Informative)
I find that startup/shutdown for a simple Java program takes about 200ms at 1GHz with the vanilla Sun JDK 1.5 JVM, or 150ms using gcj (gcc), and an equivalent C program takes about 2ms.
The overhead of starting a JVM should be incurred only once per browsing session.
Larry
Parent
Benchmarks are TIGHT LOOPS with no GC !! (Score:4, Interesting)
Before you mod me down as a Troll , I work on a virtual machine as a hobby.
The problems with Java being slow have little to do with the "execution of code" part. The part that takes a hit are the Garbage Collector and the Class Loader. The latter causes a HUGE hit in the start up. The former is responsible for those strange Swing freezes I've been seeing when I switch into a Java app.
Unicode also brings its own set of junk , for example "Hello World" in dotgnu's JIT does 7302 hastable inserts, 6000+ StringBuffer operations to initialize the Unicode encoder/decoder. And that is the standard way of decoding unicode (mono uses the same code).
Lastly , C/C++ commonly uses a lot of fields while Java brings in get/set methods for these. A method calls for a get or set is a LOT more expensive than a pointer read . Design has a lot to do with why Java is slow.
The enterprise apps where Java is popular are essentially backend applications which run for long periods of time (so have all the classes looked up and loaded) with a HUGE heap (256 MB or more) where occasional GC freeze won't destroy the entire experience (as it is often JSP/Web based interfaces).
Java *is* fast, if you don't count the slow parts.
Parent