using System; using System.Collections.Generic; using UnityEngine; public class LocalizedMockDataModel { public string Text; public string LanguageCode; public string VoiceName; } public class ViaggioAIDemo : MonoBehaviour { #region Inspector Properties #endregion #region Public Properties #endregion #region Private Properties private List mockRequestDataModels = new List(); private int mockQuestionIndex = 0; private List mockSynthesisDataModels = new List(); private int mockSynthesisIndex = 0; #endregion #region Framework Functions void Awake() { this.createMockRequestDataModels(); } #endregion #region Private Events #endregion #region Public Events #endregion #region Public Functions public void StartMockIntentRecognition() { ViaggioAIManager.Instance.StartIntentRecognition(this.mockRequestDataModels[this.mockQuestionIndex].PossibleIntents); } public void SynthesizeNextMockText() { LocalizedMockDataModel localizedMockText = this.mockSynthesisDataModels[this.mockSynthesisIndex]; ViaggioAIManager.Instance.SynthesizeText(localizedMockText.Text, localizedMockText.LanguageCode, localizedMockText.VoiceName); this.mockSynthesisIndex++; if (this.mockSynthesisIndex >= this.mockSynthesisDataModels.Count) { this.mockSynthesisIndex = 0; } } public void GotoNextMockIntent() { this.mockQuestionIndex++; if (this.mockQuestionIndex >= this.mockRequestDataModels.Count) { this.mockQuestionIndex = 0; } this.StartMockIntentRecognition(); } #endregion #region Private Functions private void createMockRequestDataModels() { // Intent Recognition RequestDataModel grottoRequestDataModel = new RequestDataModel(); grottoRequestDataModel.PossibleIntents.Add("Story_B_Grotto.Nachfrage_Nonna_Grotto.2", "Ich helfe in der Küche."); grottoRequestDataModel.PossibleIntents.Add("Story_B_Grotto.Nachfrage_Nonna_Grotto.4", "Ich warte im Garten auf sie."); this.mockRequestDataModels.Add(grottoRequestDataModel); RequestDataModel zugabteilRequestDataModel = new RequestDataModel(); zugabteilRequestDataModel.PossibleIntents.Add("Zugabteil.Szenenwahl.4", "A (oder Picknick)"); zugabteilRequestDataModel.PossibleIntents.Add("Zugabteil.Szenenwahl.6", "B (oder Grotto)"); zugabteilRequestDataModel.PossibleIntents.Add("Zugabteil.Szenenwahl.8", "C (oder Wandern)"); this.mockRequestDataModels.Add(zugabteilRequestDataModel); RequestDataModel castelliRequestDataModel = new RequestDataModel(); castelliRequestDataModel.PossibleIntents.Add("Castelli_di_Bellinzona.Intro.16", "Ja (oder gerne)"); castelliRequestDataModel.PossibleIntents.Add("Castelli_di_Bellinzona.Intro.18", "Nein"); this.mockRequestDataModels.Add(castelliRequestDataModel); // Speech synthesis this.mockSynthesisDataModels.Add(new LocalizedMockDataModel() { Text = "Dies ist ein deutscher Text in der deutschen Standard-Stimme", LanguageCode = "de-DE", VoiceName = null }); this.mockSynthesisDataModels.Add(new LocalizedMockDataModel() { Text = "Dies ist ein deutscher Text in der Stimme von Christoph", LanguageCode = "de-DE", VoiceName = "de-DE-ChristophNeural" }); this.mockSynthesisDataModels.Add(new LocalizedMockDataModel() { Text = "Questo è un testo italiano nella voce italiana standard", LanguageCode = "it-IT", VoiceName = null }); this.mockSynthesisDataModels.Add(new LocalizedMockDataModel() { Text = "Questo è un testo italiano con la voce di Benigno", LanguageCode = "it-IT", VoiceName = "it-IT-BenignoNeural" }); this.mockSynthesisDataModels.Add(new LocalizedMockDataModel() { Text = "这是艾玛后备多语言语音中的中文文本", LanguageCode = "zh-CN", VoiceName = null }); } #endregion }