Post
4,124
Happy Diwali. For the full launch today: we now have one small speech-to-text model for each of the 22 languages of India's Eighth Schedule. Each one is a file under 30 MB with English in the same file, open weights, Apache-2.0, built on Cactus Whistle, and it all runs offline.
If you speak one of these, you can use it in the browser on your own device. If you build apps, you can integrate it, and what I wanted is that any developer can serve millions of Indians in their own language without a cloud bill, a key or a big company's permission. So this is the whole integration:
If your app already runs on ONNX Runtime or sherpa-onnx, all 22 are at udgamlabs/Shruti-ONNX, with
On DiarBench conversations, which we kept out of training, it makes fewer errors than IndicConformer in 11 languages when English words count only in English letters. Count them in the native script and IndicConformer leads in 10 of those 11. On clean read speech bigger models are ahead, on real conversation a quarter to over half the words are still wrong, and we have not had native readers review the output. I think one number for a family of 22 would hide all of this, so the write-up gives each language on its own.
Speak one of these? Try it and tell me where it fails. The code, the write-up and the report are already out.
Write-up: https://udgamlabs.com/blog/shruti-family
Try it: https://udgamlabs.com/models/shruti
Models: udgamlabs/shruti-6ad5f80d9d300685a6249c9b
Technical report: https://udgamlabs.com/research/shruti-family
If you speak one of these, you can use it in the browser on your own device. If you build apps, you can integrate it, and what I wanted is that any developer can serve millions of Indians in their own language without a cloud bill, a key or a big company's permission. So this is the whole integration:
# pip install cactus-needle
# hf download udgamlabs/Shruti shruti.cact --local-dir .
from needle import Whistle
model = Whistle("shruti.cact")
print(model.transcribe("clip.wav")["text"])If your app already runs on ONNX Runtime or sherpa-onnx, all 22 are at udgamlabs/Shruti-ONNX, with
pip install shruti-onnx and an npm package. Those builds are about 32 MB and 54 MB, and on the phone we tested, with Hindi, the file above is still faster and lighter.On DiarBench conversations, which we kept out of training, it makes fewer errors than IndicConformer in 11 languages when English words count only in English letters. Count them in the native script and IndicConformer leads in 10 of those 11. On clean read speech bigger models are ahead, on real conversation a quarter to over half the words are still wrong, and we have not had native readers review the output. I think one number for a family of 22 would hide all of this, so the write-up gives each language on its own.
Speak one of these? Try it and tell me where it fails. The code, the write-up and the report are already out.
Write-up: https://udgamlabs.com/blog/shruti-family
Try it: https://udgamlabs.com/models/shruti
Models: udgamlabs/shruti-6ad5f80d9d300685a6249c9b
Technical report: https://udgamlabs.com/research/shruti-family