Я пытаюсь указать ключевые слова в Watson Speech-To-Text Unity SDK
, но не знаю, как это сделать.
На странице сведений нет примера (см. Здесь: https://www.ibm.com/watson/developercloud/doc/speech-to-text/output.shtml),
и другие сообщения на форуме написаны для приложений Java (см. здесь: Как указать фонетические ключевые слова для службы Speech2text IBM Watson?).
Я пробовал жестко закодировать эти значения в классе RecognizeRequest
, созданном в функции «Распознать», вот так, но безуспешно:
** РЕДАКТИРОВАТЬ - эта функция никогда не вызывается - **
public bool Recognize(AudioClip clip, OnRecognize callback)
{
if (clip == null)
throw new ArgumentNullException("clip");
if (callback == null)
throw new ArgumentNullException("callback");
RESTConnector connector = RESTConnector.GetConnector(SERVICE_ID, "/v1/recognize");
if (connector == null)
return false;
RecognizeRequest req = new RecognizeRequest();
req.Clip = clip;
req.Callback = callback;
req.Headers["Content-Type"] = "audio/wav";
req.Send = WaveFile.CreateWAV(clip);
if (req.Send.Length > MAX_RECOGNIZE_CLIP_SIZE)
{
Log.Error("SpeechToText", "AudioClip is too large for Recognize().");
return false;
}
req.Parameters["model"] = m_RecognizeModel;
req.Parameters["continuous"] = "false";
req.Parameters["max_alternatives"] = m_MaxAlternatives.ToString();
req.Parameters["timestamps"] = m_Timestamps ? "true" : "false";
req.Parameters["word_confidence"] = m_WordConfidence ? "true" :false";
//these "keywords" and "keywords_threshold" and "keywordsThreshold" parameters
//are just my guess for how to set these values
req.Parameters["keywords"] = new string[] {"fun", "match", "test" };
req.Parameters["keywordsThreshold"] = .2;
req.Parameters["keywords_threshold"] = .2;
//end my test insertions
req.OnResponse = OnRecognizeResponse;
return connector.Send(req);
}
но возвращенное значение результата SpeechRecognitionEvent
не содержит никакого keywords_result
. Это моя цель. Я пытаюсь проверить достоверность каждого ключевого слова в объекте keyword_result, но объект keywords_result
возвращается как null
.
private void OnRecognize(SpeechRecognitionEvent result) {
Debug.Log("Recognizing!");
m_ResultOutput.SendData(new SpeechToTextData(result));
if (result != null && result.results.Length > 0) {
if (m_Transcript != null)
m_Transcript.text = "";
foreach (var res in result.results) {
//the res.keywords_result comes back as null
foreach (var keyword in res.keywords_result.keyword) {
string text = keyword.normalized_text;
float confidence = keyword.confidence;
Debug.Log(text + ": " + confidence);
}
}
}
}
Кто-нибудь успешно реализовал оценку достоверности ключевых слов с помощью пакета SDK Watson Speech-To-Text в Unity или C #? Все идеи и предложения приветствуются.
PS Это мой первый пост :)