Основная идея здесь заключается в том, что вы будете использовать службы Watson Unity SDK для передачи речи через микрофон и преобразования ее в текст. Вы не должны отправлять этот текст обратно в текст в речь, так как это то, что вы просто вводите (если это не то, что вы хотели). Этот текст можно использовать по-разному. Одним из способов будет использование службы Watson Assistant и создание своего рода сценария, который вы можете использовать на естественном языке. Вывод метода message
- это текст, который можно передать в Watson Text to Speech, что приведет к воспроизведению аудиофайла. По сути из StreamingExample
private void OnRecognize(SpeechRecognitionEvent result, Dictionary<string, object> customData)
{
if (result != null && result.results.Length > 0)
{
foreach (var res in result.results)
{
foreach (var alt in res.alternatives)
{
// Is final for the utternace?
if (res.final)
{
MessageRequest messageRequest = new MessageRequest()
{
Input = new MessageInput()
{
Text = alt.transcript
}
};
// Send the text to Assistant
assistant.Messsage(OnMessage, OnFail, assistantId, sessionId, messageRequest);
}
}
}
}
}
private void OnMessage(MessageResponse response, Dictionary<string, object> customData)
{
// Send Assistant output to TextToSpeech
textToSpeech.ToSpeech(OnSynthesize, OnFail, response.output.generic[0].text, true)
}
private void OnSynthesize(AudioClip clip, Dictionary<string, object> customData)
{
// Play the clip from TextToSpeech
PlayClip(clip);
}
private void PlayClip(AudioClip clip)
{
if (Application.isPlaying && clip != null)
{
GameObject audioObject = new GameObject("AudioObject");
AudioSource source = audioObject.AddComponent<AudioSource>();
source.spatialBlend = 0.0f;
source.loop = false;
source.clip = clip;
source.Play();
Destroy(audioObject, clip.length);
}
}
Вам потребуется правильно создать и аутентифицировать службы.