private Reclist GetReclist(IOReclist ioReclist, string name, bool isTest = false) { var reclist = new Reclist(); reclist.IsTest = isTest; reclist.Name = name; reclist.WavMask = WavMaskReader.Current.Read(PathResolver.Current.Mask(reclist.Name, reclist.IsTest)); var phonemes = new List <Phoneme> { Rest.Create() }; foreach (var phoneme in ioReclist.Phonemes.Consonants) { if (phoneme == Rest.ALIAS || phoneme == "") { continue; } // HACK: can't find how to escape ~ in yaml if (phoneme == null) { phonemes.Add(new Consonant("~")); } else { phonemes.Add(new Consonant(phoneme)); } } foreach (var phoneme in ioReclist.Phonemes.Vowels) { if (phoneme == Rest.ALIAS || phoneme == "") { continue; } if (phoneme == null) { phonemes.Add(new Vowel("~")); } else { phonemes.Add(new Vowel(phoneme)); } } reclist.SetPhonemes(phonemes); foreach (var file in ioReclist.Files) { var reclinePhonemes = file.Phonemes.Select(n => reclist.GetPhoneme(n)).ToList(); var recline = new Recline(reclist, file.Filename, reclinePhonemes, file.Description); reclist.AddRecline(recline); } reclist.IsLoaded = true; return(reclist); }
public Reclist Read(string filename) { var reclist = new Reclist(); if (!File.Exists(filename)) { return(reclist); } reclist.Name = Path.GetFileNameWithoutExtension(filename); reclist.WavMask = WavMaskReader.Current.Read(PathResolver.Current.Mask(reclist.Name, reclist.IsTest)); string[] lines = File.ReadAllLines(filename, Encoding.UTF8); if (lines.Length < 2) { reclist.IsLoaded = false; } var vs = lines[0].Split(' '); var cs = lines[1].Split(' '); var phonemes = new List <Phoneme> { Rest.Create() }; foreach (string v in vs) { phonemes.Add(new Vowel(v)); } foreach (string c in cs) { phonemes.Add(new Consonant(c)); } reclist.SetPhonemes(phonemes); for (int i = 2; i < lines.Length; i++) { string[] items = lines[i].Split('\t'); if (items.Length < 2) { continue; } string desc = items.Length >= 3 ? items[2] : $"{items[0]}"; var reclinePhonemes = items[1].Split(' ').Select(n => reclist.GetPhoneme(n)).ToList(); var recline = new Recline(reclist, Path.GetFileNameWithoutExtension(items[0]), reclinePhonemes, desc); reclist.AddRecline(recline); } reclist.IsLoaded = true; return(reclist); }