a. What is a speech recognition "toolkit"? Does it transform audio data into text?
b. How does Kaldi compare to any other "toolkit"?
I clicked the Github link, read the README, found the link to the project home page, read that, clicked the Documentation link, and read "About Kaldi", and haven't found the answer for a., and the answer for b. is clearly beyond me.[1]
[1] "Kaldi is similar in aims and scope to HTK... Important features include: Code-level integration with Finite State Transducers (FSTs). We compile against the OpenFst toolkit (using it as a library)." etc.
b) It's different in that it's not just a monolithic speech recognition engine that functions as a black box taking speech as input and producing text as output. Instead, the point is to be an extensible platform which researchers can use to develop new techniques, plugging in their own algorithms and testing the results.
(At least that's how I understand it, but I'm not affiliated with the project.)
Automatic Speech Recognition (ASR) is a complicated, multifaceted and fun(!) problem and practical solutions require two big pieces to come together.
The first is modeling. Both the latest and greatest in process models, like Hidden Markov Models (an oldie but goodie), that learn how to predict the likelihood of the next thing in a sequence given what things we've seen (usually a HMM only looks at the last one we've seen) and acoustic models which transform audio signals in ways that accentuate the characteristics of a speech signal that are most helpful in recognizing speech. OSS speech "toolkits" are often composed of the latest and greatest models of both types coming out of speech recognition literature.
The second is data. Like any modeling project that makes used of supervised model training, you need labeled data and lots of it. The labeling must be correct, and labeling speech data is an extremely tedious and costly endeavor. This makes doing speech recognition in your garage difficult, as there is only one collaboratively constructed speech recognition data corpus that is free on the web and the quality is really not great. (It's unforgiving work, that must be correct and double checked. It must be consistent. You really need to pay for it.)
So, when you look around the web and you see open source ASR toolkits, what you're really seeing is people passing around toolkits for people who develop ASRs to play with modeling. Taking one of these toolkits and turning it into a commercial quality functioning speech recognizer requires training it on good data and validating your results. While this could potentially be done openly and on the Internet, the costs involved in getting good labeled data has kept the production of really well functioning turnkey systems within the walls of corporate and academic entities.
That said, it would be pretty awesome if Google went ahead and release a giant labeled corpus to the public. : )
Many industrial speech recognition systems start with Kaldi, add their own data and any modifications to the recognizer, and then spend a while tuning the model. Speech recognition is one of those problems where you need a ph.d. and hundreds of ours of transcribed audio plus a large amount of in domain text to build a good model. So it's not really accessible without serious resources.
Thanks for the clear description of the situation.
So (metaphorically speaking) this sounds like Google's Tesseract OCR "engine"[1]: yes it'll recognize letters - but it does no layout analysis. It's only one piece of a much larger puzzle.
a)Yes it does transform audio data into text, provided you have audio data to start with. One good free data base the creators of Kaldi championed and support is called Librispeech which is available here:http://www.openslr.org/12/.
b)Kaldi gives you access to some of the state-of-the-art algorithms for modelling speech acoustic models. This includes deep neural networks, long-short term memory recurrent neural networks, hidden markov models and a variant called subspace Gaussian mixture models. It differs from other well known projects like HTK in terms of its licensing - it is released under the Apache licence and the suite of state-of-the-art algorithms it offers. So it can be modified and adopted for research and commercial use. Additionally, it has supporting scripts or "recipes" for some benchmark data sets like the Switchboard data set and Wall Street Journal read speech data.
Healthcare is really a prime example of a field where each speech recognition system (currently) needs adaptation to your particular needs; the language is very specific for each subfield, general use systems don't work well for healthcare use cases, and system built for one use case doesn't work for others.
But Kaldi seems to be a common way to go - you'd take that, add samples of your audio data, add a lot of text from your domain (to get a language model that captures your terminology and common phrasing), retrain the system on this data and you'd have something useful. Well, something useful that can be tuned ad infinitum for more accuracy.
11 comments
[ 2.2 ms ] story [ 29.7 ms ] threadb. How does Kaldi compare to any other "toolkit"?
I clicked the Github link, read the README, found the link to the project home page, read that, clicked the Documentation link, and read "About Kaldi", and haven't found the answer for a., and the answer for b. is clearly beyond me.[1]
[1] "Kaldi is similar in aims and scope to HTK... Important features include: Code-level integration with Finite State Transducers (FSTs). We compile against the OpenFst toolkit (using it as a library)." etc.
b) It's different in that it's not just a monolithic speech recognition engine that functions as a black box taking speech as input and producing text as output. Instead, the point is to be an extensible platform which researchers can use to develop new techniques, plugging in their own algorithms and testing the results.
(At least that's how I understand it, but I'm not affiliated with the project.)
The first is modeling. Both the latest and greatest in process models, like Hidden Markov Models (an oldie but goodie), that learn how to predict the likelihood of the next thing in a sequence given what things we've seen (usually a HMM only looks at the last one we've seen) and acoustic models which transform audio signals in ways that accentuate the characteristics of a speech signal that are most helpful in recognizing speech. OSS speech "toolkits" are often composed of the latest and greatest models of both types coming out of speech recognition literature.
The second is data. Like any modeling project that makes used of supervised model training, you need labeled data and lots of it. The labeling must be correct, and labeling speech data is an extremely tedious and costly endeavor. This makes doing speech recognition in your garage difficult, as there is only one collaboratively constructed speech recognition data corpus that is free on the web and the quality is really not great. (It's unforgiving work, that must be correct and double checked. It must be consistent. You really need to pay for it.)
So, when you look around the web and you see open source ASR toolkits, what you're really seeing is people passing around toolkits for people who develop ASRs to play with modeling. Taking one of these toolkits and turning it into a commercial quality functioning speech recognizer requires training it on good data and validating your results. While this could potentially be done openly and on the Internet, the costs involved in getting good labeled data has kept the production of really well functioning turnkey systems within the walls of corporate and academic entities.
That said, it would be pretty awesome if Google went ahead and release a giant labeled corpus to the public. : )
So (metaphorically speaking) this sounds like Google's Tesseract OCR "engine"[1]: yes it'll recognize letters - but it does no layout analysis. It's only one piece of a much larger puzzle.
[1] https://code.google.com/p/tesseract-ocr/
But Kaldi seems to be a common way to go - you'd take that, add samples of your audio data, add a lot of text from your domain (to get a language model that captures your terminology and common phrasing), retrain the system on this data and you'd have something useful. Well, something useful that can be tuned ad infinitum for more accuracy.
So basically, not for beginners or hobbyists.