Exemple #1
0
        public void TestVoice()
        {
            Debug.LogWarning("case start");
            // Local
            var localVoice = new Voice("TestVoice", 0.1f, 0.2f, null, null, null, VoiceSource.Local, false, "local voice");

            Assert.AreEqual("TestVoice", localVoice.Name);
            Assert.AreEqual(0.1f, localVoice.PreGap);
            Assert.AreEqual(0.2f, localVoice.PostGap);
            Assert.IsNull(localVoice.Text);
            Assert.IsNull(localVoice.Url);
            Assert.IsNull(localVoice.TTSConfig);
            Assert.AreEqual(string.Empty, localVoice.GetTTSFunctionName());
            Assert.IsNull(localVoice.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Local, localVoice.Source);
            Assert.IsFalse(localVoice.UseCache);
            Assert.AreEqual("local voice", localVoice.Description);

            var webVoice = new Voice(null, 0.1f, 0.2f, null, "https://test.url", null, VoiceSource.Web, true, "web voice");;

            Assert.IsNull(webVoice.Name);
            Assert.AreEqual(0.1f, webVoice.PreGap);
            Assert.AreEqual(0.2f, webVoice.PostGap);
            Assert.IsNull(webVoice.Text);
            Assert.AreEqual("https://test.url", webVoice.Url);
            Assert.IsNull(webVoice.TTSConfig);
            Assert.AreEqual(string.Empty, webVoice.GetTTSFunctionName());
            Assert.IsNull(webVoice.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Web, webVoice.Source);
            Assert.IsTrue(webVoice.UseCache);
            Assert.AreEqual("https://test.url", webVoice.CacheKey);
            Assert.AreEqual("web voice", webVoice.Description);

            var ttsConfig = new TTSConfiguration("TestTTSFuncName");

            ttsConfig.Params.Add("key1", "val1");
            ttsConfig.Params.Add("key2", 2.0f);
            var ttsVoice = new Voice(null, 0.1f, 0.2f, "Chatdoll speek this text.", null, ttsConfig, VoiceSource.TTS, true, "tts voice");

            Assert.IsNull(ttsVoice.Name);
            Assert.AreEqual(0.1f, ttsVoice.PreGap);
            Assert.AreEqual(0.2f, ttsVoice.PostGap);
            Assert.AreEqual("Chatdoll speek this text.", ttsVoice.Text);
            Assert.IsNull(ttsVoice.Url);
            Assert.AreEqual("TestTTSFuncName", ttsVoice.GetTTSFunctionName());
            Assert.AreEqual("val1", ttsVoice.GetTTSParam("key1"));
            Assert.AreEqual(2.0f, ttsVoice.GetTTSParam("key2"));
            Assert.AreEqual(VoiceSource.TTS, ttsVoice.Source);
            Assert.IsTrue(ttsVoice.UseCache);
            Assert.AreEqual("Chatdoll speek this text.", ttsVoice.CacheKey);
            Assert.AreEqual("tts voice", ttsVoice.Description);
        }
 public void AddVoiceTTS(string text, float preGap = 0.0f, float postGap = 0.0f, string name = null, TTSConfiguration ttsConfig = null, string description = null, bool asNewFrame = false)
 {
     AnimatedVoiceRequest.AddVoiceTTS(text, preGap, postGap, name, ttsConfig, description, asNewFrame);
 }
Exemple #3
0
        public void TestVoiceRequest()
        {
            // Without params
            var voiceRequest = new VoiceRequest();

            Assert.IsTrue(voiceRequest.DisableBlink);

            voiceRequest.AddVoice("LocalVoice");
            voiceRequest.AddVoiceWeb("https://voice.url");
            voiceRequest.AddVoiceTTS("This text will be read by chatdoll.");

            var localVoice = voiceRequest.Voices[0];

            Assert.AreEqual("LocalVoice", localVoice.Name);
            Assert.AreEqual(0.0f, localVoice.PreGap);
            Assert.AreEqual(0.0f, localVoice.PostGap);
            Assert.AreEqual(string.Empty, localVoice.Text);
            Assert.AreEqual(string.Empty, localVoice.Url);
            Assert.IsNull(localVoice.TTSConfig);
            Assert.AreEqual(VoiceSource.Local, localVoice.Source);

            var webVoice = voiceRequest.Voices[1];

            Assert.AreEqual(string.Empty, webVoice.Name);
            Assert.AreEqual(0.0f, webVoice.PreGap);
            Assert.AreEqual(0.0f, webVoice.PostGap);
            Assert.AreEqual(string.Empty, webVoice.Text);
            Assert.AreEqual("https://voice.url", webVoice.Url);
            Assert.IsNull(webVoice.TTSConfig);
            Assert.AreEqual(VoiceSource.Web, webVoice.Source);
            Assert.IsTrue(webVoice.UseCache);

            var ttsVoice = voiceRequest.Voices[2];

            Assert.AreEqual(string.Empty, ttsVoice.Name);
            Assert.AreEqual(0.0f, ttsVoice.PreGap);
            Assert.AreEqual(0.0f, ttsVoice.PostGap);
            Assert.AreEqual("This text will be read by chatdoll.", ttsVoice.Text);
            Assert.AreEqual(string.Empty, ttsVoice.Url);
            Assert.IsNull(ttsVoice.TTSConfig);
            Assert.AreEqual(VoiceSource.TTS, ttsVoice.Source);
            Assert.IsTrue(ttsVoice.UseCache);

            // With params
            var voiceRequestP = new VoiceRequest(disableBlink: false);

            Assert.IsFalse(voiceRequestP.DisableBlink);

            voiceRequestP.AddVoice("LocalVoice", 0.1f, 0.2f);
            voiceRequestP.AddVoiceWeb("https://voice.url", 0.1f, 0.2f, useCache: false);
            var ttsConfig = new TTSConfiguration("TestTTSFuncName");

            ttsConfig.Params.Add("key1", "val1");
            ttsConfig.Params.Add("key2", 2.0f);
            voiceRequestP.AddVoiceTTS("This text will be read by chatdoll.", 0.1f, 0.2f, ttsConfig: ttsConfig, useCache: false);

            var localVoiceP = voiceRequestP.Voices[0];

            Assert.AreEqual(0.1f, localVoiceP.PreGap);
            Assert.AreEqual(0.2f, localVoiceP.PostGap);

            var webVoiceP = voiceRequestP.Voices[1];

            Assert.AreEqual(0.1f, webVoiceP.PreGap);
            Assert.AreEqual(0.2f, webVoiceP.PostGap);
            Assert.IsFalse(webVoiceP.UseCache);

            var ttsVoiceP = voiceRequestP.Voices[2];

            Assert.AreEqual(0.1f, ttsVoiceP.PreGap);
            Assert.AreEqual(0.2f, ttsVoiceP.PostGap);
            Assert.AreEqual("TestTTSFuncName", ttsVoiceP.GetTTSFunctionName());
            Assert.AreEqual("val1", ttsVoiceP.GetTTSParam("key1"));
            Assert.AreEqual(2.0f, ttsVoiceP.GetTTSParam("key2"));
            Assert.IsFalse(ttsVoiceP.UseCache);
        }
Exemple #4
0
        public void TestAnimatedVoiceRequest()
        {
            var animatedVoiceRequest = new AnimatedVoiceRequest();

            Assert.AreEqual(new Dictionary <string, List <AnimatedVoice> >(), animatedVoiceRequest.AnimatedVoices);
            Assert.IsTrue(animatedVoiceRequest.DisableBlink);
            Assert.IsTrue(animatedVoiceRequest.StartIdlingOnEnd);
            Assert.IsTrue(animatedVoiceRequest.StopIdlingOnStart);
            Assert.IsTrue(animatedVoiceRequest.StopLayeredAnimations);
            Assert.AreEqual(string.Empty, animatedVoiceRequest.BaseLayerName);

            // 1st frame
            animatedVoiceRequest.AddAnimation("Walk");
            animatedVoiceRequest.AddAnimation("Run", 2.0f, 1.0f, 0.5f, 0.1f);
            animatedVoiceRequest.AddAnimation("WaveHands", "UpperBody", 3.0f, 2.0f, 0.8f, 0.2f, "upper animation");
            animatedVoiceRequest.AddVoice("Hello");
            animatedVoiceRequest.AddVoice("Goodby", 0.1f, 0.2f);
            animatedVoiceRequest.AddFace("Neutral");
            animatedVoiceRequest.AddFace("Default", 0.1f, "default face");

            // 2nd frame
            animatedVoiceRequest.AddAnimation("Jump", asNewFrame: true);
            animatedVoiceRequest.AddVoiceWeb("https://voice.local/goodmorning");
            animatedVoiceRequest.AddVoiceWeb("https://voice.local/goodafternoon", 0.1f, 0.2f);
            animatedVoiceRequest.AddFace("Cry");

            // 3rd frame
            var ttsConfig = new TTSConfiguration("TestTTSFuncName");

            ttsConfig.Params.Add("key1", "val1");
            ttsConfig.Params.Add("key2", 2.0f);
            animatedVoiceRequest.AddVoiceTTS("Good afternoon.", asNewFrame: true);
            animatedVoiceRequest.AddVoiceTTS("Good evening.", 0.1f, 0.2f, ttsConfig: ttsConfig);
            animatedVoiceRequest.AddAnimation("HandsFront");
            animatedVoiceRequest.AddFace("Jito");

            // 4th frame
            animatedVoiceRequest.AddFace("Surprise", asNewFrame: true);
            animatedVoiceRequest.AddVoice("GoodNight");
            animatedVoiceRequest.AddAnimation("HandsBack");

            // 1st frame
            var animation0101 = animatedVoiceRequest.AnimatedVoices[0].Animations[string.Empty][0];

            Assert.AreEqual("Walk", animation0101.Name);
            Assert.AreEqual(string.Empty, animation0101.LayerName);
            Assert.AreEqual(0.0f, animation0101.Duration);
            Assert.AreEqual(-1.0f, animation0101.FadeLength);
            Assert.AreEqual(1.0f, animation0101.Weight);
            Assert.AreEqual(0.0f, animation0101.PreGap);
            Assert.IsNull(animation0101.Description);
            Assert.AreEqual(0.0f, animation0101.Length);

            var animation0102 = animatedVoiceRequest.AnimatedVoices[0].Animations[string.Empty][1];

            Assert.AreEqual("Run", animation0102.Name);
            Assert.AreEqual(string.Empty, animation0102.LayerName);
            Assert.AreEqual(2.0f, animation0102.Duration);
            Assert.AreEqual(1.0f, animation0102.FadeLength);
            Assert.AreEqual(0.5f, animation0102.Weight);
            Assert.AreEqual(0.1f, animation0102.PreGap);
            Assert.IsNull(animation0102.Description);
            Assert.AreEqual(2.1f, animation0102.Length);

            var animation0103 = animatedVoiceRequest.AnimatedVoices[0].Animations["UpperBody"][0];

            Assert.AreEqual("WaveHands", animation0103.Name);
            Assert.AreEqual("UpperBody", animation0103.LayerName);
            Assert.AreEqual(3.0f, animation0103.Duration);
            Assert.AreEqual(2.0f, animation0103.FadeLength);
            Assert.AreEqual(0.8f, animation0103.Weight);
            Assert.AreEqual(0.2f, animation0103.PreGap);
            Assert.AreEqual("upper animation", animation0103.Description);
            Assert.AreEqual(3.2f, animation0103.Length);

            var voice0101 = animatedVoiceRequest.AnimatedVoices[0].Voices[0];

            Assert.AreEqual("Hello", voice0101.Name);
            Assert.AreEqual(0.0f, voice0101.PreGap);
            Assert.AreEqual(0.0f, voice0101.PostGap);
            Assert.IsNull(voice0101.Text);
            Assert.IsNull(voice0101.Url);
            Assert.IsNull(voice0101.TTSConfig);
            Assert.AreEqual(string.Empty, voice0101.GetTTSFunctionName());
            Assert.IsNull(voice0101.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Local, voice0101.Source);
            Assert.IsFalse(voice0101.UseCache);

            var voice0102 = animatedVoiceRequest.AnimatedVoices[0].Voices[1];

            Assert.AreEqual("Goodby", voice0102.Name);
            Assert.AreEqual(0.1f, voice0102.PreGap);
            Assert.AreEqual(0.2f, voice0102.PostGap);
            Assert.IsNull(voice0102.Text);
            Assert.IsNull(voice0102.Url);
            Assert.IsNull(voice0102.TTSConfig);
            Assert.AreEqual(string.Empty, voice0102.GetTTSFunctionName());
            Assert.IsNull(voice0102.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Local, voice0102.Source);
            Assert.IsFalse(voice0102.UseCache);

            var face0101 = animatedVoiceRequest.AnimatedVoices[0].Faces[0];

            Assert.AreEqual("Neutral", face0101.Name);
            Assert.AreEqual(0.0f, face0101.Duration);
            Assert.IsNull(face0101.Description);

            var face0102 = animatedVoiceRequest.AnimatedVoices[0].Faces[1];

            Assert.AreEqual("Default", face0102.Name);
            Assert.AreEqual(0.1f, face0102.Duration);
            Assert.AreEqual("default face", face0102.Description);

            // 2nd frame
            var animation0201 = animatedVoiceRequest.AnimatedVoices[1].Animations[string.Empty][0];

            Assert.AreEqual("Jump", animation0201.Name);

            var voice0201 = animatedVoiceRequest.AnimatedVoices[1].Voices[0];

            Assert.AreEqual(string.Empty, voice0201.Name);
            Assert.AreEqual(0.0f, voice0201.PreGap);
            Assert.AreEqual(0.0f, voice0201.PostGap);
            Assert.IsNull(voice0201.Text);
            Assert.AreEqual("https://voice.local/goodmorning", voice0201.Url);
            Assert.IsNull(voice0201.TTSConfig);
            Assert.AreEqual(string.Empty, voice0201.GetTTSFunctionName());
            Assert.IsNull(voice0201.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Web, voice0201.Source);
            Assert.IsTrue(voice0201.UseCache);
            Assert.AreEqual("https://voice.local/goodmorning", voice0201.CacheKey);

            var voice0202 = animatedVoiceRequest.AnimatedVoices[1].Voices[1];

            Assert.AreEqual(string.Empty, voice0202.Name);
            Assert.AreEqual(0.1f, voice0202.PreGap);
            Assert.AreEqual(0.2f, voice0202.PostGap);
            Assert.IsNull(voice0202.Text);
            Assert.AreEqual("https://voice.local/goodafternoon", voice0202.Url);
            Assert.IsNull(voice0202.TTSConfig);
            Assert.AreEqual(string.Empty, voice0202.GetTTSFunctionName());
            Assert.IsNull(voice0202.GetTTSParam("key1"));
            Assert.AreEqual(VoiceSource.Web, voice0202.Source);
            Assert.IsTrue(voice0202.UseCache);
            Assert.AreEqual("https://voice.local/goodafternoon", voice0202.CacheKey);

            var face0201 = animatedVoiceRequest.AnimatedVoices[1].Faces[0];

            Assert.AreEqual("Cry", face0201.Name);

            // 3rd frame
            var voice0301 = animatedVoiceRequest.AnimatedVoices[2].Voices[0];

            Assert.AreEqual(string.Empty, voice0301.Name);
            Assert.AreEqual(0.0f, voice0301.PreGap);
            Assert.AreEqual(0.0f, voice0301.PostGap);
            Assert.AreEqual("Good afternoon.", voice0301.Text);
            Assert.AreEqual(string.Empty, voice0301.Url);
            Assert.IsNull(voice0301.TTSConfig);
            Assert.AreEqual(VoiceSource.TTS, voice0301.Source);
            Assert.IsTrue(voice0301.UseCache);

            var voice0302 = animatedVoiceRequest.AnimatedVoices[2].Voices[1];

            Assert.AreEqual(string.Empty, voice0302.Name);
            Assert.AreEqual(0.1f, voice0302.PreGap);
            Assert.AreEqual(0.2f, voice0302.PostGap);
            Assert.AreEqual("Good evening.", voice0302.Text);
            Assert.AreEqual(string.Empty, voice0302.Url);
            Assert.AreEqual("TestTTSFuncName", voice0302.GetTTSFunctionName());
            Assert.AreEqual("val1", voice0302.GetTTSParam("key1"));
            Assert.AreEqual(2.0f, voice0302.GetTTSParam("key2"));
            Assert.AreEqual(VoiceSource.TTS, voice0302.Source);
            Assert.IsTrue(voice0302.UseCache);

            var animation0301 = animatedVoiceRequest.AnimatedVoices[2].Animations[string.Empty][0];

            Assert.AreEqual("HandsFront", animation0301.Name);

            var face0301 = animatedVoiceRequest.AnimatedVoices[2].Faces[0];

            Assert.AreEqual("Jito", face0301.Name);

            // 4th frame
            var face0401 = animatedVoiceRequest.AnimatedVoices[3].Faces[0];

            Assert.AreEqual("Surprise", face0401.Name);

            var voice0401 = animatedVoiceRequest.AnimatedVoices[3].Voices[0];

            Assert.AreEqual("GoodNight", voice0401.Name);

            var animation0401 = animatedVoiceRequest.AnimatedVoices[3].Animations[string.Empty][0];

            Assert.AreEqual("HandsBack", animation0401.Name);
        }