DictationRecognizer 监听语音输入,并尝试确定说出的短语。
用户可以注册和监听假设和短语完成事件。Start() 和 Stop() 方法分别用于启用和禁用听写识别。用完识别器后,必须使用 Dispose() 方法对它进行处置以释放它使用的资源。它将在垃圾收集期间自动释放这些资源,如果资源没有在这之前得到释放,将会产生额外的性能成本。
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();
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) => { if (completionCause != DictationCompletionCause.Complete) Debug.LogErrorFormat("Dictation completed unsuccessfully: {0}.", completionCause); };
m_DictationRecognizer.DictationError += (error, hresult) => { Debug.LogErrorFormat("Dictation error: {0}; HResult = {1}.", error, hresult); };
m_DictationRecognizer.Start(); } }
听写识别器目前仅在 Windows 10 上可用,并且要求在用户的语音隐私政策(Settings > Privacy > Speech,inking & typing)中允许听写。如果听写未启用,DictationRecognizer 将会在 Start 上失败。开发者可以通过提供 DictationError 委托和测试 SPERR_SPEECH_PRIVACY_POLICY_NOT_ACCEPTED (0x80045509),以特定于此应用程序的方式处理此故障。
AutoSilenceTimeoutSeconds | 由于缺乏音频输入,听写识别器会话结束前持续的时长(以秒为单位)。 |
InitialSilenceTimeoutSeconds | 由于缺乏音频输入,导致不能在当前会话中听过任何音频,听写识别器会话在结束之前持续的时长(以秒为单位) |
Status | 指示听写识别器的状态。 |
DictationRecognizer | 使用指定的最小可信度和听写主题约束创建 DictationRecognizer。位于指定最低水平下的短语将被忽略。 |
Dispose | 处理此听写识别器使用的资源。 |
Start | 开启听写识别会话。听写识别只能在不运行 PhraseRecognitionSystem 时启动。 |
Stop | 结束听写识别会话。 |
DictationComplete | 当识别器会话结束时触发的事件。 |
DictationError | 当识别器会话发生错误时触发的事件。 |
DictationHypothesis | 当识别器更改它对当前片元的假设时触发的事件。 |
DictationResult | 指示已采用指定可信度识别某个短语的事件。 |
DictationCompletedDelegate | DictationComplete 事件的委托。 |
DictationErrorHandler | DictationError 事件的委托。 |
DictationHypothesisDelegate | 指示假设更改事件的回调。您应注册 DictationHypothesis 事件。 |
DictationResultDelegate | 指示已采用指定可信度识别某个短语的回调。您应注册 DictationResult 事件。 |