slp-ntua / slp-lab-support-19-20

1 stars 0 forks source link

Lab2 - Βήματα 4.2.4 & 4.2.5 #5

Open manos1996 opened 4 years ago

manos1996 commented 4 years ago

Καλησπέρα,

Για το βήμα 4.2.4 όταν τρέχω το 'prepare_lang.sh' παίρνω το εξής error:

utils/prepare_lang.sh: line 547: fstaddselfloops: command not found ERROR: FstHeader::Read: Bad FST header: standard input

Γενικά έχω κάνει source to path.sh και δεν νομίζω να υπάρχει κάποιο πρόβλημα με αυτό. Επίσης σίγουρα υπάρχει το αρχείο 'fstaddselfloops.cc' στο path 'kaldi-master/src/fstbin' οπότε δεν ξέρω γιατί εμφανίζεται αυτό το πρόβλημα.

Στο βήμα 4.2.5 τώρα αν καταλαβαίνω καλά θέλετε να πάρουμε το αρχείο 'timit_format_data.sh.' και να το τρέξουμε για τα δικά μας δεδομένα. Για να το κάνω αυτό έπρεπε να αλλάξω το 'scrdir' σε 'srcdir=data/train' αλλιώς δεν έβρισκε το path, καθώς και να αλλάξω τα ονόματα ορισμένων αρχείων στον φάκελο 'train' έτσι ώστε να είναι συμβατά με το script. Αλλά και πάλι παίρνω αυτό to error στην έξοδο:

utils/validate_data_dir.sh: file data/train/utt2spk is not in sorted order or has duplicates

Παρόλα αυτά δεν νομίζω να υπάρχουν duplicates στο αρχείο ή να μην είναι ταξινομημένα. Παραθέτω εδώ την δομή του αρχείου

utterance_id_1 f1 utterance_id_2 f1 utterance_id_3 f1 utterance_id_4 f1 utterance_id_5 f1 ... utterance_id_1465 m3 utterance_id_1466 m3 utterance_id_1467 m3 utterance_id_1468 m3

georgepar commented 4 years ago

πώς ακριβώς τρέχεις την εντολή. απ' ότι φαίνεται δεν του περνας το fst αρχείο και το περιμένει από το stdin

manos1996 commented 4 years ago

Αν μιλάμε για το 4.2.4 τρέχω αυτήν την εντολή:

utils/prepare_lang.sh data/local/dict '' data/local/lang data/lang

Αντί του '' δεν έχω καταλάβει ακριβώς τι πρέπει να βάλουμε. Στην αρχή είχα '< UNK >' το οποίο είδα εδώ:

http://kaldi-asr.org/doc/data_prep.html#data_prep_lang_creating

αλλά έβγαζε άλλο error επειδή δεν αναγνώριζε το '< UNK >', αν και το error που έγραψα στο issue δεν νομίζω ότι σχετίζεται με αυτό.

*Edit: 4.2.4

njellinas commented 4 years ago

Το path.sh αρχείο πρέπει να είναι μαζί με το αρχείο που τρέχεις τον κώδικά σου π.χ. run.sh. Και μέσα από το path.sh πρέπει η μεταβλητή KALDI_ROOT να δείχνει στο φάκελο kaldi. 1) Βάλε την εντολή . ./path.sh μέσα στο run.sh σου πάνω πάνω. 2) Αν το έχεις κάνει και πάλι δεν παίζει, δοκίμασε να το βάλεις με το χέρι μέσα στο PATH σου: $KALDI_ROOT/src/fstbin. Αν δε μπορείς να τρέξεις το script από το command line σημαίνει ότι είτε δεν είναι compiled είτε δεν είναι στο PATH.

Απαντάω με βάση ίδιο issue που βρήκα στο kaldi repo: https://github.com/kaldi-asr/kaldi/issues/3450 όπου απαντάει ο creator του.

manos1996 commented 4 years ago

Εντάξει λύθηκε το πρόβλημα, λογικά δεν είχε γίνει σωστό compile του kaldi. Παρόλα αυτά έχω ακόμα θέμα με το 4.2.5. Το error που ανέφερα εξαφανίζεται αν προσθέσουμε μηδενικά στα id έτσι ώστε να έχουν ίδιο length. Π.χ αν το μεγαλύτερο id είναι το 1400, τότε το '3' θα γίνει '0003'. Στην συνέχεια όμως παίρνω άλλο error γιατί δεν υπάρχουν τα αρχεία t.spk2gender, t.stm και t.glm, όπου t = 'train, 'test' ή 'dev'. Το spk2gender υποπτεύομαι ότι κάπως θα πρέπει να το φτιάξουμε έμεις όπως κάναμε και τα υπόλοιπα κατά την προπαρασκευή, με τα άλλα δύο τι γίνεται?

njellinas commented 4 years ago

Δε θα τρέξει ακριβώς ίδιο το script από την timit, πρέπει να το διαμορφώσεις ώστε να ταιριάξει στο δικό σου recipe. Οπότε, πάρε μόνο τα χρήσιμα paths και τις χρήσιμες εντολές.

Yenn1s commented 4 years ago

Έχω παρόμοιο πρόβλημα (utils/prepare_lang.sh: line 547: fstaddselfloops: command not found ERROR: FstHeader::Read: Bad FST header: standard input), έχω κάνει source το path και έβαλα χειροκίνητα το $KALDI_ROOT/src/fstbin και δοκίμασα να ξανακατεβάσω το kaldi 2-3 φορές δεν φτιάχνει, στο fstbin υπάρχει η εντολή fstaddselfloops.cc αλλά δεν υπαρχει η fstaddselfloops.ο ή η fstaddselfloops σκέτο, υπάρχει τπτ άλλο που ίσως θα μπορούσα να κάνω?

manos1996 commented 4 years ago

@Yenn1s Εγκατέστησε τα IRSTLM/OpenBLAS σε περίπτωση που σου διέφυγε, και δοκίμασε να ξανακάνεις compile. Για εμένα τουλάχιστον έτσι λύθηκε το πρόβλημα.