Udgam Labs släpper offlinemodeller för taligenkänning på 22 indiska språk
Udgam Labs Shruti-modeller transkriberar tal direkt i enheten med filer på omkring 30 megabyte. I företagets tester gjorde 11 modeller färre fel i samtal än IndicConformer när engelska ord måste skrivas med latinska bokstäver. I andra jämförelser är större modeller ofta mer träffsäkra.
Udgam Labs skrev i ett blogginlägg den 7 november att dess Shruti-modeller för taligenkänning nu finns för vart och ett av de 22 språken i den åttonde bilagan till Indiens konstitution. Varje språk har en egen modell, och varje modell känner även igen engelska.
Modellerna bygger på talmodellen Cactus Whistle från företaget Cactus Compute. Det är en modell med öppna vikter och 55 miljoner parametrar. Udgam Labs lade till ordförråd för varje språk och finjusterade alla modellvikter med offentliga taldata. Vikterna är komprimerade till fyra bitar, så modellfilen är 29,5–29,7 megabyte.
Modellerna skriver talet med språkets egen skrift. Engelska ord låter de ofta stå med latinska bokstäver, som många själva skriver: ”मेरा order कब आएगा”.
Fördelarna beror på poängsättningen
Företaget mätte träffsäkerheten med ordfelfrekvens. Den anger andelen felaktigt igenkända ord, så ett lägre värde är bättre. Huvudtestet var Indic DiarBench från Sarvam AI och AI4Bharat. Testets autentiska samtal ingick enligt företaget inte i någon modells träningsdata.
Enligt företaget gör 11 Shruti-modeller färre fel än IndicConformer för samma språk när ett engelskt ord räknas som rätt bara om det skrivs med latinska bokstäver. På gujarati fick till exempel Shruti 28,5, SraVaani-1.0 32,4 och IndicConformer 44,9.
Om engelska ord ska skrivas med språkets egen skrift är IndicConformer eller SraVaani-1.0 mer träffsäker för de flesta språk. I uppläst tal är större modeller klart mer träffsäkra för de flesta språk. I FLEURS-testet fick till exempel IndicConformer Punjabi 16,9 och Shruti Punjabi 29,3. I samtal är andelen felaktigt igenkända ord från en fjärdedel till över hälften, beroende på språk.
Testerna är delvis små: för 11 språk har samtalstestet färre än hundra repliker. För sju språk redovisar företaget ingen jämförelse som det själv bedömer som tillförlitlig. Alla siffror är Udgam Labs egna mätningar.
Hindimodellens fil är ungefär hundra gånger mindre än OpenAI:s Whisper large-v3. I företagets hinditester gjorde den färre fel; i Monsoon-testet blev resultaten till exempel 20,46 och 33,29. Företaget körde Whisper utan dess reservförfarande (temperature fallback), vilket gav upprepningsloopar. Shruti var enligt företaget mer träffsäker även när klipp som fastnat i en upprepningsloop togs bort. På engelska är Whisper klart bättre. Modeller som tagits fram enbart för hindi och är ungefär 16 gånger större är mycket mer träffsäkra, uppger företaget.
Begränsningar och driftsättning
Företaget har inte testat de nyare modellerna i buller eller med musik, och för de flesta språk inte heller med mikrofon. I kraftigt buller upprepade hindimodellerna ibland samma fras. Talare av språken har inte granskat transkriptionerna för de 16 nyare språken.
I företagets mätning fungerade 21 nyare modeller på en fem år gammal telefon med 6 gigabyte minne. De transkriberade 8,6–12,6 gånger snabbare än realtid och använde 64 megabyte minne.
Det finns också ONNX-paket av modellerna, till exempel för webbläsare och Android. Inget paket klarade alla sex av företagets jämförelseregler. Nio klarade inte testet, men företaget publicerade även dem och redovisade avvikelserna. För vissa innebar avvikelsen färre fel än när modellen kördes på needle-motorn från Cactus.
Modellerna finns på Hugging Face under licensen Apache-2.0, och körbara exempel finns i företagets kodförråd på GitHub. Licensen reglerar inte villkoren för träningsdata, och för två datamängder bakom Shruti Assamese har ingen licens angetts. Modellerna fungerar på needle-motorn utan nyckel eller konto, men den första nedladdningen kräver nätuppkoppling om inte modellen levereras med appen. Motorns Python-paket skickar som standard anonym användningsstatistik, som kan stängas av med miljövariabeln NEEDLE_TELEMETRY=0.
Läs mer: Modeller