Сайн уу Бэби? (STT) part 2
2B | +1% better 2day | ai.003
Өмнөх нийтлэл дээр хэлж байсан шиг өнөөдөр бүгдээрээ аялгуу сайхан Монгол хэл дээрээ Mozilla DeepSpeech-г сургаж үзнэ ээ. За олон таван үггүй шууд эхэлцгээе.
Сургах процесс
Үндсэндээ туршилт маань ажиллах орчноо байгуулах, датагаа бэлтгэх, model-оо сургах, төгсгөлд нь шалгаж үзэх гэсэн 4 дамжлагаас бүрдэж байгаа.
Prepare environment -> Data Process -> Train -> Check result
Part 1 : Environment
За тэгээд нэг юм хийхийн тулд орчноо бэлдэх гэж том ажил байдаг. Deep Speech ашиглахын тулд хэрэгтэй хэд хэдэн зүйлсийг бэлтгэнэ дээ.
- Git Large File Storage (to clone DeepSpeech)
- SOX (to resample files to 16kHz)
- Virtual Environment (to work with python3)
Орчноо бэлдсэний дараа Git LFS ашиглан Deep Speech project-оо хуулж аваад араас нь хэрэгтэй python сангуудыг суулгана. Хэрвээ NVIDIA GPU 8GB+ VRAM-тай машин ашиглаж байгаа бол Tensorflow GPU хувилбарыг нь суулгавал зүгээр. Тэгвэл илүү хурдан сургалт хийдэг #гэсэн.
Part 2 : Data
Common Voice-с хэрэглэх dataset-ээ татаж авна. Эхлээд browser-аасаа орж татаж эхлүүлээд URL-г нь олж аваад, тэрийгээ Google Colab дээр wget
ашиглан татаж авч задлах хэрэгтэй. Татаж авсны дараа unzip хийн import_cv2.py
-аар CSV файл үүсгэнэ. (generate CSV from dataset TSV files)
Сургалт хийх үед alphabet.txt-ийн зөрүүнээс үүсэх алдаа ⛔
- alphabet.txt файлыг шинэчлэх (кирилл үсэг)
- *.csv файл доторх wav_filename-ийг янзлах
❌ CSV доторх утга жинхэнэ дата байгаа зам (path) хоёрыгоо зөрүүлэхгүйн үүднээс wav_filename-г янзлах хэрэгтэй.
❌ Хэрвээ csv болон alphabet.txt файлууд хоорондоо үсэг зөрөх юм бол алдаа заах учраас util/check_character.py
-аар шалгаад засах хэрэгтэй. Эсвэл бэлдсэн alphabet.txt, train.csv, dev.csv, test.csv ашигласан ч болно. Эндээс — link.
Үүнээс гадна бас Language Model үүсгэх шаардлагатай. KenLM ашиглаад words.arpa болон lm.binary гаргаж авна.
(Бөөн юм болж байж хийсэн шүү 😅)
Эндээс гаргаж авсан words.arpa, lm.binary 2-г ашиглан trie файлыг үүсгэх бөгөөд сургасан model-оо шалгахад lm.binary, trie 2 нь хэрэг болно.
Part 3 : Train
За тэгээд дата бэлэн болсон бол model-оо сургана даа.
Сургах явц нь нилээн удаан. Багадаа 1 цаг болно. Сургах параметруудаа яаж өгөхөөс хамаараад хэдэн өдөр ч болж магадгүй.
Part 4 : Check
Амжилттай сургалт хийж чадсан бол output_graph.pb файл үүсэх ёстой. Тест хийхдээ түүнийгээ ашиглана.
!deepspeech \
--model models/output_graph.pb \
--alphabet models/alphabet.txt \
--lm models/lm.binary \
--trie models/trie \
--audio test.wav
Хариуд нь харин иймэрхүү юм гарч ирнэ дээ.
Харамсалтай нь миний сургасан model маань ингэж ажиллаагүй. Яг юунаас болоод вэ гэдгийг нь тодорхойлж чадсангүй 😭. Дараах хэдэн шалтгаануудын нэг байж болох юм гэсэн дүгнэлтэнд хүрээд байна.
- Language Model : words.arpa, lm.binary, trie файл нь буруу?
- Runtime : DeepSpeech-г ажиллуулж турших runtime орчин бэлэн биш?
- Dataset : бага хэмжээний дата байсан учир, сургалт амжилтгүй болсон?
Conclusion
Нийтдээ 10 гаран удаагийн ганцаарчилсан давшилт, 1 удаагийн хамтарсан комбины ачаар Mozilla Deep Speech-г монгол хэлний жижигхээн дата дээр сургах гэж оролдлоо. 😅
Тийм ч амар байсангүй. Амралтын өдрөөрөө хамтдаа хийлцэж алдааг минь олж өгсөн Jagaa PuuGee & Мөнх-Ундрал 2-тоо баярлалаа.
(😎 6 eyes are better than 2 👀)
Одоо уул нь үр дүнгээ л харчихвал цаашлаад яриаг сайн таних, орчны дуу чимээнээс ялгаж таних, өөр өөр аялгатай яриаг таних, хар яриаг таних гэх мэт сайжруулж болох, сайжруулах шаардлагатай зүйлс бол зөндөө. Гэхдээ яахав энэ бол дөнгөж эхлэл.
References :
- Baidu Research Deep Speech
- Mozilla Deep Speech
- TUTORIAL : How I trained a specific french model to control my robot