我正在使用watson SDK统一构建AR CV应用程序。我是一个完全菜鸟,但是我设法按照视频讲了一些有趣的东西。
想法是,这将给候选人一种比一张纸更有趣的自我描述方式。我的问题是,尽管我设法完成了对文本流的语音处理,但是我不知道下一步是什么。这是用于大学项目,但我的导师也不知道。另外,如果TAJ读到这篇文章,也非常感谢您的youtube视频!
我的问题是如何在语音和助手中添加文本?
答案 0 :(得分:1)
这里的基本思想是,您将使用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);
}
}
您将需要正确地实例化和验证服务。