Я использую 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.
Любая помощь будет оценена.