示例#1
0
 private static void SpeakByYukkuri(TTSMessage.SpeakEventArg e)
 {
     lock (lockObject)
     {
         YukkuriController.Default.OutputWaveToFile(
             e.TextToSpeack,
             (ushort)e.SpeakSpeed,
             e.WaveFile);
     }
 }
示例#2
0
        private static void SpeakBySasara(TTSMessage.SpeakEventArg e)
        {
            lock (lockObject)
            {
                SasaraController.Default.OutputWaveToFile(
                    e.TextToSpeack,
                    e.WaveFile);

                isSasaraStarted = true;
            }
        }
示例#3
0
        private static void message_OnSpeak(TTSMessage.SpeakEventArg e)
        {
            switch (e.TTSType)
            {
            case TTSTEngineType.Yukkuri:
                SpeakByYukkuri(e);
                break;

            case TTSTEngineType.CeVIO:
                SpeakBySasara(e);
                break;
            }
        }
示例#4
0
        /// <summary>
        /// テキストを読み上げる
        /// </summary>
        /// <param name="text">読み上げるテキスト</param>
        public override void Speak(
            string text)
        {
            lock (lockObject)
            {
                if (string.IsNullOrWhiteSpace(text))
                {
                    return;
                }

                // 今回の再生データをMD5化したものからwaveファイルの名称を作る
                var wave = ("Yukkuri" + TTSYukkuriConfig.Default.YukkuriSpeed.ToString() + text).GetMD5() + ".wav";
                wave = Path.Combine(
                    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                    @"anoyetta\ACT\" + wave);

                if (!File.Exists(wave))
                {
                    // よみがなに変換する
                    var textByYomigana = this.ConvertYomigana(text);

                    // サーバに送信する
                    var e = new TTSMessage.SpeakEventArg()
                    {
                        TTSType      = TTSTEngineType.Yukkuri,
                        TextToSpeack = textByYomigana,
                        SpeakSpeed   = TTSYukkuriConfig.Default.YukkuriSpeed,
                        WaveFile     = wave
                    };

                    TTSServerController.Message.Speak(e);
                }

                // サブデバイスを再生する
                // サブデバイスは専らVoiceChat用であるため先に鳴動させる
                if (TTSYukkuriConfig.Default.EnabledSubDevice)
                {
                    SoundPlayerWrapper.Play(
                        TTSYukkuriConfig.Default.SubDeviceID,
                        wave,
                        TTSYukkuriConfig.Default.EnabledYukkuriVolumeSetting ? TTSYukkuriConfig.Default.YukkuriVolume : 100);
                }

                // メインデバイスを再生する
                SoundPlayerWrapper.Play(
                    TTSYukkuriConfig.Default.MainDeviceID,
                    wave,
                    TTSYukkuriConfig.Default.EnabledYukkuriVolumeSetting ? TTSYukkuriConfig.Default.YukkuriVolume : 100);
            }
        }
        /// <summary>
        /// テキストを読み上げる
        /// </summary>
        /// <param name="text">読み上げるテキスト</param>
        public override void Speak(
            string text)
        {
            lock (lockObject)
            {
                if (string.IsNullOrWhiteSpace(text))
                {
                    return;
                }

                // 今回の再生データをMD5化したものからwaveファイルの名称を作る
                var wave = ("Sasara" + TTSYukkuriConfig.Default.SasaraSettings.GetMD5() + text).GetMD5() + ".wav";
                wave = Path.Combine(
                    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
                    @"anoyetta\ACT\" + wave);

                if (!File.Exists(wave))
                {
                    // 初期化する
                    this.Initialize();

                    // 音声waveファイルを生成する
                    var e = new TTSMessage.SpeakEventArg()
                    {
                        TTSType      = TTSTEngineType.CeVIO,
                        TextToSpeack = text,
                        WaveFile     = wave
                    };

                    TTSServerController.Message.Speak(e);
                }

                // サブデバイスで再生する
                if (TTSYukkuriConfig.Default.EnabledSubDevice)
                {
                    SoundPlayerWrapper.Play(
                        TTSYukkuriConfig.Default.SubDeviceID,
                        wave,
                        (int)TTSYukkuriConfig.Default.SasaraSettings.Onryo);
                }

                // メインデバイスで再生する
                SoundPlayerWrapper.Play(
                    TTSYukkuriConfig.Default.MainDeviceID,
                    wave,
                    (int)TTSYukkuriConfig.Default.SasaraSettings.Onryo);
            }
        }