コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }