Closed dlukes closed 3 years ago
Oh interesting, I'll see if I can reproduce it, I agree it should be pretty trivial to fix. Just to get some more information what sort of directory structure do you have set up for it, and are the files prefixed with the directory? Are 14ee
and a0
speakers that have their own directory, or are the file names more random?
Just one big flat directory, which I thought was required, but now I see the docs clearly state the default expected structure is with speaker-subdirectories... I don't know where I got the idea that it had to be flat, the nested structure is of course much more convenient :)
(Maybe MFA 1.x wanted it? Probably not.)
At any rate, I'm using -s prosodylab
, so speaker IDs are the second _
-delimited field, i.e. 12A023N-78
and 12A001N-40
; 14ee
and a0
are utterance IDs.
So maybe the problem simply is that a flat directory layout + -s prosodylab
isn't supported?
Ok, thanks, that's helpful! It's mostly that I updated the feature parsing to be easier on disk space, and just happened that the data I had been testing it with was properly sorted. I'll test out the prosodylab style IDs a bit more, I usually don't use them since speaker directories are easier for me to comprehend for my own data, but in general, MFA walks through the full corpus directory, so any nested data should get found as long as it has wav/lab pairs or wav/textgrid pairs.
speaker directories are easier for me to comprehend for my own data
I prefer them too, I just didn't realize I could use them :) I'll switch over to the nested layout first thing tomorrow.
And thank you very much for the quick replies and all the help!
Added a fix to make sure that utterance with prosodylab parsing have speaker prefixed to the utterances, which should keep Kaldi happy, and then it'll get stripped out when outputting textgrids.
Just FYI: I restructured my data to take advantage of speaker subdirs, so that instead of e.g.14ee_12A023N-78_Uo
, I now have 12A023N-78/14ee-Uo
, and I'm not passing -s prosodylab
anymore. But I'm still hitting the same error: You provided the "cs" option but are not calling with keys in sorted order: 14ee-Uo < a0-uo
.
So it looks like there might be another underlying issue here? I'm not quite sure how your setup differs from mine, but maybe the filenames need to have the same number of characters? (Which is a bit of a shot in the dark, but it's the type of thing that does affect lexicographical sorting -- 14ee < a0
, but 00a0 < 14ee
.)
Hmm, ok, it's possible that the difference between your set up and the one I've had working over the weekend was that all filenames started with the speaker ID, so they were all sorted by speaker, I'll take a look more at it tonight, but you can try out the git repo version (cloning and installing with python setup.py install
) with the -s prosodylab
flag and that should do the prefixing internally to get it to work.
Padding the filenames to the same width with leading 0's seems to have done the trick, SAT1 is now running :) I'll try the git install + flat layout + -s prosodylab
later if I have a bit of time to spare.
Sounds like you have a solution, but MFA should now prefix all utterances with speakers if they aren't already, and that should make Kaldi happy with sorting.
I re-installed with git and re-ran the aligner 1) with flat dir layout + -s prosodylab
, and 2) with speaker subdirs, both without zero-padding the utterance IDs, and got past the SAT1 training in both cases, so I can confirm your fix works! :) :tada:
In the next episode of this never-ending story, now I'm getting stuck at the next stage, generating alignments using SAT1 models... Basically, three utterances are failing with ERROR (apply-cmvn[5.5]:ApplyCmvn():transform/cmvn.cc:70) Dim mismatch: cmvn 2x14, feats 0x0
.
I'll open a new issue, but I'm guessing the advice at this point might be that this means these utterances are probably weird, so just leave them out. In which case, the solution would be to add a helpful error message to MFA suggesting to do so.
Thank you very much for #201, I can now get past the LDA stage! However, I'm getting stuck at the very next one instead (SAT1):
Digging into the corresponding logs, the problem seems to be fairly trivial -- just something to do with sorting the input files? Cf. the title of the issue, and here's a sample
fmllr.1.*.log
: