117 lines
4.1 KiB
C#
Executable File

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<RequestDataModel> mockRequestDataModels = new List<RequestDataModel>();
private int mockQuestionIndex = 0;
private List<LocalizedMockDataModel> mockSynthesisDataModels = new List<LocalizedMockDataModel>();
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
}