Как определить, завершено ли обнаружение предложения в преобразовании речи в текст (Unity IBM Watson sdk)?

Я хочу отправлять на сервер предложение каждый раз, когда он заканчивает обнаружение предложения.

Например, когда он обнаруживает, я говорю: «Как мне поступить?». Я хочу отправить это предложение на сервер. Однако следующий метод вызывается каждый раз, когда он пытается составить предложение. Например, когда я говорю «Как мне сделать», он напечатает «как», «как сделать», «как мне сделать». Есть ли место, где я могу знать, что предложение закончено?

private void OnRecognize(SpeechRecognitionEvent result)
{
    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)
        {
            foreach (var alt in res.alternatives)
            {
                string text = alt.transcript;

                if (m_Transcript != null)
                {
                        //   print(text);

                        //m_Transcript.text += string.Format("{0} ({1}, {2:0.00})\n",
                        //    text, res.final ? "Final" : "Interim", alt.confidence);

                        m_Transcript.text = text;
                }
            }       
        }   
    }
}

person weijia_yu    schedule 06.03.2017    source источник
comment
Кажется, это код, который запускается после распознания предложения, но, похоже, вам нужна помощь с распознаванием? Покажите нам, где возникло это событие! (отказ от ответственности: я не знаком с когнитивной функцией Ватсона)   -  person Fredrik Schön    schedule 06.03.2017


Ответы (1)


В объекте ответа есть свойство final.

private void OnRecognize(SpeechRecognitionEvent result)
{
    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)
        {
            foreach (var alt in res.alternatives)
            {
                string text = alt.transcript;

                if (m_Transcript != null)
                {
                    // print(text);

                    //m_Transcript.text += string.Format("{0} ({1}, {2:0.00})\n",
                    //  text, res.final ? "Final" : "Interim", alt.confidence);

                    if(res.final)
                    {
                        m_Transcript.text = text;
                        //  do something with the final transcription
                    }
                }
            }       
        }   
    }
}
person taj    schedule 06.03.2017