private void ResetParameters(Val_Talker val_, Dictionary <string, WPFSlider> _interface) { TalkerPrimitive defaultParam = talkerDefaultParamList[val_.talkerRealName]; AvatorParam_VREX avator = AvatorParams[ConvertNametoIndex(val_)] as AvatorParam_VREX; foreach (KeyValuePair <string, EffectValueInfo> val__ in defaultParam.VoiceEffects) { FormsTextBox TargetTextBox = null; double value = 0.00; if (val__.Key == "音量") { TargetTextBox = avator.AvatorUI.VolumeText; value = (double)val__.Value.val; } else if (val__.Key == "話速") { TargetTextBox = avator.AvatorUI.SpeedText; value = (double)val__.Value.val; } else if (val__.Key == "高さ") { TargetTextBox = avator.AvatorUI.PitchText; value = (double)val__.Value.val; } else if (val__.Key == "抑揚") { TargetTextBox = avator.AvatorUI.IntonationText; value = (double)val__.Value.val; } else { break; } if (TargetTextBox != null) { TargetTextBox.EmulateChangeText(string.Format("{0:0.00}", value)); } } }
private void ApplyEffectParameters(Val_Talker val_, Dictionary <string, WPFSlider> _interface) { FormsTextBox TargetTextBox = null; double value = 0.00; AvatorParam_VREX avator = AvatorParams[ConvertNametoIndex(val_)] as AvatorParam_VREX; foreach (var effect in avator.VoiceEffects) { switch (effect.Key) { case EnumVoiceEffect.volume: TargetTextBox = avator.AvatorUI.VolumeText; value = (double)val_.parametor["音量"].val_decimal; break; case EnumVoiceEffect.speed: TargetTextBox = avator.AvatorUI.SpeedText; value = (double)val_.parametor["話速"].val_decimal; break; case EnumVoiceEffect.pitch: TargetTextBox = avator.AvatorUI.PitchText; value = (double)val_.parametor["高さ"].val_decimal; break; case EnumVoiceEffect.intonation: TargetTextBox = avator.AvatorUI.IntonationText; value = (double)val_.parametor["抑揚"].val_decimal; break; } if (TargetTextBox != null) { TargetTextBox.EmulateChangeText(string.Format("{0:0.00}", value)); } } }
/// <summary> /// 指定話者で指定テキストで発声 /// </summary> /// <param name="cid">話者CID</param> /// <param name="talkText">発声させるテキスト</param> /// <returns>発声にかかった時間(ミリ秒)</returns> public double Play(Val_Talker talker, string talkText) { Stopwatch stopWatch = new Stopwatch(); int avatorIdx = ConvertNametoIndex(talker); AvatorParam_VREX avator = AvatorParams[avatorIdx] as AvatorParam_VREX; // avator.Semaphore.Wait(); if (avator.AvatorUI.PlayButton == null) { return(0.0); } if (avator.AvatorUI.SaveButton == null) { return(0.0); } if (avator.AvatorUI.TalkTextBox == null) { return(0.0); } dynamic VoiceroidExUiTab = new FormsTabControl(avator.AvatorUI.uiTreeTop.IdentifyFromZIndex(2, 0, 0, 0, 0)); VoiceroidExUiTab.EmulateTabSelect(2); // ApplyEffectParameters(avatorIdx); // ApplyEmotionParameters(avatorIdx); ApplyEffectParameters(talker, apply_interface[talker.talkerRealName]); // 再生中なので再生終了を待つ(音声保存ボタンがEnableになるのを待つ) if (!avator.AvatorUI.SaveButton.Enabled) { while (!avator.AvatorUI.SaveButton.Enabled) { Thread.Sleep(10); } } avator.AvatorUI.TalkTextBox["Text"](talkText); Thread.Sleep(10); stopWatch.Start(); avator.AvatorUI.PlayButton.EmulateClick(); // 再生開始を待つ(音声保存ボタンがDisableになるのを待つ) if (avator.AvatorUI.SaveButton.Enabled) { while (avator.AvatorUI.SaveButton.Enabled) { Thread.Sleep(10); } } // ResetParameters(talker, apply_interface[talker.talkerRealName], apply_interface_emotion[talker.talkerRealName]); // 再生終了を待つ(音声保存ボタンがEnableになるのを待つ) if (!avator.AvatorUI.SaveButton.Enabled) { while (!avator.AvatorUI.SaveButton.Enabled) { Thread.Sleep(10); } } ResetParameters(talker, apply_interface[talker.talkerRealName]); stopWatch.Stop(); // avator.Semaphore.Release(); return(stopWatch.ElapsedMilliseconds); }
private int ConvertNametoIndex(Val_Talker talker) { return(gyakubiki[talker.talkerRealName]); }