예제 #1
0
        /// <summary>
        /// 原音設定ファイルを読み込みます.
        /// </summary>
        /// <param name="oto_ini">原音設定のパス</param>
        private void readOtoIni(string oto_ini, string encoding_name, string db_root_directory)
        {
            // oto.ini読込み
            string dir      = Path.GetDirectoryName(oto_ini);
            var    encoding = Encoding.GetEncoding(encoding_name);

            using (var sr = new StreamReader(oto_ini, encoding)) {
                while (!sr.EndOfStream)
                {
                    var      line = sr.ReadLine();
                    string[] spl  = line.Split('=');
                    if (spl.Length < 2)
                    {
                        continue;
                    }
                    string file_name = spl[0]; // あ.wav
                    string a2        = spl[1]; // ,0,36,64,0,0
                    string a1        = Path.GetFileNameWithoutExtension(file_name);
                    spl = a2.Split(',');
                    if (spl.Length < 6)
                    {
                        continue;
                    }

                    // ファイルがちゃんとあるかどうか?
                    string fullpath = Path.Combine(dir, file_name);
                    if (!File.Exists(fullpath))
                    {
                        continue;
                    }

                    OtoArgs oa                  = new OtoArgs();
                    var     full_file_name      = Path.GetFullPath(Path.Combine(dir, file_name));
                    var     full_root_directory = Path.GetFullPath(db_root_directory) + @"\";
                    oa.fileName = full_file_name.StartsWith(full_root_directory) ? full_file_name.Substring(full_root_directory.Length) : file_name;
                    oa.Alias    = spl[0];

                    oa.msOffset       = parseOrDefault(spl[1]);
                    oa.msConsonant    = parseOrDefault(spl[2]);
                    oa.msBlank        = parseOrDefault(spl[3]);
                    oa.msPreUtterance = parseOrDefault(spl[4]);
                    oa.msOverlap      = parseOrDefault(spl[5]);

                    // 重複登録が無いかチェック
                    if (configs_.All((item) => !item.equals(oa)))
                    {
                        configs_.Add(oa);
                    }
                }
            }
        }