Сайн уу Бэби? (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 ашиглахын тулд хэрэгтэй хэд хэдэн зүйлсийг бэлтгэнэ дээ.

  1. Git Large File Storage (to clone DeepSpeech)
  2. SOX (to resample files to 16kHz)
  3. Virtual Environment (to work with python3)

Орчноо бэлдсэний дараа Git LFS ашиглан Deep Speech project-оо хуулж аваад араас нь хэрэгтэй python сангуудыг суулгана. Хэрвээ NVIDIA GPU 8GB+ VRAM-тай машин ашиглаж байгаа бол Tensorflow GPU хувилбарыг нь суулгавал зүгээр. Тэгвэл илүү хурдан сургалт хийдэг #гэсэн.

Part 1 : Prepare environment

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.

Part 2 : Data (download & prep)

Үүнээс гадна бас Language Model үүсгэх шаардлагатай. KenLM ашиглаад words.arpa болон lm.binary гаргаж авна.
(Бөөн юм болж байж хийсэн шүү 😅)

Эндээс гаргаж авсан words.arpa, lm.binary 2-г ашиглан trie файлыг үүсгэх бөгөөд сургасан model-оо шалгахад lm.binary, trie 2 нь хэрэг болно.

Part 3 : Train

За тэгээд дата бэлэн болсон бол model-оо сургана даа.

Сургах явц нь нилээн удаан. Багадаа 1 цаг болно. Сургах параметруудаа яаж өгөхөөс хамаараад хэдэн өдөр ч болж магадгүй.

Part 3 : Train

Part 4 : Check

Амжилттай сургалт хийж чадсан бол output_graph.pb файл үүсэх ёстой. Тест хийхдээ түүнийгээ ашиглана.

Хариуд нь харин иймэрхүү юм гарч ирнэ дээ.

Харамсалтай нь миний сургасан model маань ингэж ажиллаагүй. Яг юунаас болоод вэ гэдгийг нь тодорхойлж чадсангүй 😭. Дараах хэдэн шалтгаануудын нэг байж болох юм гэсэн дүгнэлтэнд хүрээд байна.

  1. Language Model : words.arpa, lm.binary, trie файл нь буруу?
  2. Runtime : DeepSpeech-г ажиллуулж турших runtime орчин бэлэн биш?
  3. Dataset : бага хэмжээний дата байсан учир, сургалт амжилтгүй болсон?

Conclusion

Нийтдээ 10 гаран удаагийн ганцаарчилсан давшилт, 1 удаагийн хамтарсан комбины ачаар Mozilla Deep Speech-г монгол хэлний жижигхээн дата дээр сургах гэж оролдлоо. 😅

Тийм ч амар байсангүй. Амралтын өдрөөрөө хамтдаа хийлцэж алдааг минь олж өгсөн Jagaa PuuGee & Мөнх-Ундрал 2-тоо баярлалаа.
(😎 6 eyes are better than 2 👀)

Одоо уул нь үр дүнгээ л харчихвал цаашлаад яриаг сайн таних, орчны дуу чимээнээс ялгаж таних, өөр өөр аялгатай яриаг таних, хар яриаг таних гэх мэт сайжруулж болох, сайжруулах шаардлагатай зүйлс бол зөндөө. Гэхдээ яахав энэ бол дөнгөж эхлэл.

--

--

Билигүн.Б (Програмч аав)
2B +1% better 2day

I am who I am... || өөрийнхөөрөө байхаас ичихгүй