slp-ntua / slp-labs

Lab code and instructions for the Speech and language Processing course in the National Technical University of Athens
MIT License
7 stars 6 forks source link

[Lab2][Step 4.2] #41

Closed mikatsukons closed 2 years ago

mikatsukons commented 3 years ago

"4. Μέσα στο φάκελο data/lang θα δημιουργήσετε το FST του λεξικού της γλώσσας (L.fst) χρησιμοποιώντας την εντολή του Kaldi prepare_lang.sh."

Ενώ κάνω source το path.sh παίρνω το εξής : mihaelakonstantinou@mikatsusmachine:~/kaldi/egs/usc/data/lang$ prepare_lang.sh prepare_lang.sh: command not found

Αφού βρήκα στο ιντερνετ οτι το τρέχουν απ' το utils και το έτρεξα έτσι (:~/kaldi/egs/usc/data/lang$ ../utils/prepare_lang.sh) χωρίς παραμέτρους για να δω το usage παίρνω το εξής ../utils/prepare_lang.sh ../utils/prepare_lang.sh: line 76: utils/parse_options.sh: No such file or directory Usage: utils/prepare_lang.sh (μπλα μπλα)

Και με agruments που το έτρεξα το ίδιο μήνυμα βγάζει. Τι σημαίνει αυτο;

επίσης στο arg εγώ βάζω το "sil" (όπως είδα σε κάτι tutorial στο kaldi-asr) αλλά μάλλον δεν είναι αυτός ο σωστός τρόπος. Μπορούμε να έχουμε κάποια hint για το τι σημαίνει αυτό ?

mikatsukons commented 3 years ago

και όταν πήγα να εκτελέσω την εντολή από το data

mihaelakonstantinou@mikatsusmachine:~/kaldi/egs/usc/data$ utils/prepare_lang.sh data/local/dict "" data/local/lang_tmp data/lang utils/prepare_lang.sh data/local/dict data/local/lang_tmp data/lang Checking data/local/dict/silence_phones.txt ... --> ERROR: fail to open data/local/dict/silence_phones.txt Error validating directory data/local/dict

ενώ υπάρχει το silence_phones.txt τσεκαρισμένα

georgepar commented 3 years ago

λογικά αυτά τα λάθη τα παίρνεις επειδή πας να τρέξεις τα scripts μέσα από υποφακέλους, πχ /path/to/kaldi/egs/usc/data/lang ή τον /path/to/kaldi/egs/usc/data/local/dict. Αυτό δεν δουλεύει γιατί εσωτερικά τα scriptακια μπορεί να χρησιμοποιούν relative paths.

Τρέχε όλα τα scripts μέσα από το φάκελο /path/to/kaldi/egs/usc

georgepar commented 3 years ago

Επίσης το prepare_lang.sh περιμένει το Unknown token όχι το spoken_noise. Λογικά στην περίπτωσή σας είναι <oov> ή <unk>

mikatsukons commented 3 years ago

όταν έφτιαχνα το dictionary που αντιστοίχιζε τις λέξεις σε φωνήματα προσωπικά αγνοήσα το \<oov> \<oov> που είχε. πρέπει να το συμπερλάβουμε κάπου;

Οτνα έτρεξα την prepare_lang από το data και με όρισμα \<oov> μου βγάζει τo εξής πρόβλημα που μάλλον σχετίζεται με το \<oov>:

mihaelakonstantinou@mikatsusmachine:~/kaldi/egs/usc/data$ prepare_lang.sh ./local/dict "" ./local/lang ./lang /home/mihaelakonstantinou/kaldi/egs/usc/data/utils/prepare_lang.sh ./local/dict ./local/lang ./lang Checking ./local/dict/silence_phones.txt ... --> reading ./local/dict/silence_phones.txt --> text seems to be UTF-8 or ASCII, checking whitespaces --> text contains only allowed whitespaces --> ./local/dict/silence_phones.txt is OK

Checking ./local/dict/optional_silence.txt ... --> reading ./local/dict/optional_silence.txt --> text seems to be UTF-8 or ASCII, checking whitespaces --> text contains only allowed whitespaces --> ./local/dict/optional_silence.txt is OK

Checking ./local/dict/nonsilence_phones.txt ... --> reading ./local/dict/nonsilence_phones.txt --> text seems to be UTF-8 or ASCII, checking whitespaces --> text contains only allowed whitespaces --> ./local/dict/nonsilence_phones.txt is OK

Checking disjoint: silence_phones.txt, nonsilence_phones.txt --> disjoint property is OK.

Checking ./local/dict/lexicon.txt --> reading ./local/dict/lexicon.txt --> text seems to be UTF-8 or ASCII, checking whitespaces --> text contains only allowed whitespaces --> ./local/dict/lexicon.txt is OK

Checking ./local/dict/extra_questions.txt ... --> ./local/dict/extra_questions.txt is empty (this is OK) --> SUCCESS [validating dictionary directory ./local/dict]

**Creating ./local/dict/lexiconp.txt from ./local/dict/lexicon.txt sym2int.pl: undefined symbol \<oov> (in position 1)

edit: προσέθεσα το \<oov> και στο nonsilence_phones.txt και το προβλημα παραμένει

οταν το προσέθετα και στο λεξικον με αντιστοίχιση στον εαυτό του τότε χαλούσε το match με το lexiconp.txt Checking lexicon pair ./local/dict/lexicon.txt and ./local/dict/lexiconp.txt --> ERROR: ./local/dict/lexicon.txt and ./local/dict/lexiconp.txt mismatch at line 1. sorting?

mikatsukons commented 3 years ago

το πρόβλημα λύθηκε όταν προσέθετα manually στην αρχή του lexicon.txt το \<oov> \<oov> και στην αρχή του lexiconp.txt το \<oov> 1.0 \<oov>