MontrealCorpusTools / Montreal-Forced-Aligner

Command line utility for forced alignment using Kaldi
https://montrealcorpustools.github.io/Montreal-Forced-Aligner/
MIT License
1.31k stars 244 forks source link

TypeError: Population must be a sequence or set. For dicts, use list(d). #354

Closed Tian14267 closed 2 years ago

Tian14267 commented 2 years ago

HI, I get a error whenmfa train

mfa train ./AISHELL3/ aishell3_dict.txt ./aishell_out/ INFO - Setting up corpus information... INFO - Number of speakers in corpus: 218, average number of utterances per speaker: 403.8302752293578 INFO - Parsing dictionary "aishell3_dict" without pronunciation probabilities without silence probabilities INFO - Creating dictionary information... INFO - Setting up training data... INFO - Generating base features (mfcc)... INFO - Calculating CMVN... INFO - Setting up training data... INFO - Setting up training data... INFO - Initializing training for mono... INFO - Initialization complete! 100%|██████████████████████████████████████| 40/40 [01:15<00:00, 1.90s/it] INFO - Training complete! INFO - Generating alignments using mono models using 5000 utterances... INFO - Initializing training for tri... INFO - Initialization complete! 100%|███████████████████████████████████████████████| 35/35 [01:24<00:00, 2.41s/it] INFO - Training complete! INFO - Generating alignments using tri models using 10000 utterances... Traceback (most recent call last): File "/root/anaconda3/envs/aligner/bin/mfa", line 11, in sys.exit(main()) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/command_line/mfa.py", line 751, in main run_train_acoustic_model(args, unknown) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/command_line/train_acoustic_model.py", line 257, in run_train_acoustic_model train_acoustic_model(args, unknown_args) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/command_line/train_acoustic_model.py", line 179, in train_acoustic_model a.train(generate_final_alignments) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/aligner/trainable.py", line 119, in train previous.align(trainer.subset) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/trainers/base.py", line 411, in align self.data_directory = self.corpus.subset_directory(subset) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/corpus/base.py", line 225, in subset_directory self.create_subset(subset) File "/root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/corpus/base.py", line 257, in create_subset subset_utts = set(random.sample(larger_subset, subset)) File "/root/anaconda3/envs/aligner/lib/python3.8/random.py", line 359, in sample raise TypeError("Population must be a sequence or set. For dicts, use list(d).") TypeError: Population must be a sequence or set. For dicts, use list(d).

can you tell me how to solve it ?

Adliyan commented 2 years ago

I encountered the same bug after I updated the mfa

Tian14267 commented 2 years ago

I encountered the same bug after I updated the mfa

enter file path: /root/anaconda3/envs/aligner/lib/python3.8/site-packages/montreal_forced_aligner/corpus and change file **base.py** by your self. It will solve this problem.

mmcauliffe commented 2 years ago

This bug is fixed on the latest version on conda, so it should work after upgrading: https://montreal-forced-aligner.readthedocs.io/en/latest/installation.html#installation-ref