Как использовать свойства Windows .Speech DictationRecognizer.AutoSilenceTimeoutSeconds и InitialSilenceTimeoutSeconds? - PullRequest
0 голосов
/ 09 февраля 2020

Я использую Windows .Speech.DictationRecognizer в своем проекте, и мне нужно как минимум 1 минута ожидания для голосового ввода пользователя.

Я создаю объект DictationRecognizer со свойствами внутри конструктора, как это :

m_DictationRecognizer = new DictationRecognizer()
         {
             InitialSilenceTimeoutSeconds = 60,
             AutoSilenceTimeoutSeconds = 60
         };

также пробовал вне конструктора:

m_DictationRecognizer = new DictationRecognizer();
 m_DictationRecognizer.AutoSilenceTimeoutSeconds = 60;
 m_DictationRecognizer.InitialSilenceTimeoutSeconds = 60;

Когда я запускаю сцену, через 15-16 секунд без голосового ввода запись останавливается из-за DictationRecognizer.DictationComplete событие с DictationCompletionCause = Complete . Похоже, DictationRecognizer игнорирует параметры AutoSilenceTimeoutSeconds и InitialSilenceTimeoutSeconds и применяет значения по умолчанию.

Это мой код:

using UnityEditor;
 using UnityEngine;
 using UnityEngine.UI;
 using UnityEngine.Windows.Speech;

 public class DictationScript : MonoBehaviour
 {
     [SerializeField]
     private Text m_Hypotheses;

     [SerializeField]
     private Text m_Recognitions;

     private DictationRecognizer m_DictationRecognizer;



     void Start()
     {
         m_DictationRecognizer = new DictationRecognizer()
         {
             AutoSilenceTimeoutSeconds = 60,
             InitialSilenceTimeoutSeconds = 60
         };

         m_DictationRecognizer.DictationResult += (text, confidence) =>
         {
             Debug.LogFormat("Dictation result: {0}", text);
             m_Recognitions.text += text + "\n";
         };

         m_DictationRecognizer.DictationHypothesis += (text) =>
         {
             Debug.LogFormat("Dictation hypothesis: {0}", text);
             m_Hypotheses.text += text;
         };

         m_DictationRecognizer.DictationComplete += (completionCause) =>
         {
             Debug.LogErrorFormat("Dictation completed : {0}.", completionCause);
         };

         m_DictationRecognizer.DictationError += (error, hresult) =>
         {
             Debug.LogErrorFormat("Dictation error: {0}; HResult = {1}.", error, hresult);
         };

         m_DictationRecognizer.Start();
     }
 }

Проверено на версиях: 2019.2.20, 2019.2.17, 2018.4. 9.

Любая помощь будет оценена.

...