DictationRecognizer always fails with UnknownError

I am using Windows 10 and trying to use the DictationRecognizer.

It always results in an UnknownError. I’m at a loss for what to try to fix it.

Cortana works on my machine and understands dictation. I tried building with a Windows Store build but that didn’t affect the result. The KeywordRecognizer works.

Dictation completed unsuccessfully: UnknownError.
UnityEngine.Debug:LogErrorFormat(String, Object[])
DictationTest:<Start>m__5(DictationCompletionCause) (at Assets/DictationTest.cs:35)

Here’s the code I’m using. It’s adapted from these docs.

using UnityEngine;
using System.Collections;
using UnityEngine.Windows.Speech;

public class DictationTest : MonoBehaviour
{

	private DictationRecognizer m_DictationRecognizer;

	void Start()
	{

		Debug.Log ("phrase rec sup" + PhraseRecognitionSystem.isSupported);

		m_DictationRecognizer = new DictationRecognizer(DictationTopicConstraint.Form);

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

		m_DictationRecognizer.DictationHypothesis += (text) =>
		{
			Debug.LogFormat("Dictation hypothesis: {0}", 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();
	}
}

I just updated to the latest windows 10, this problem is solved. You can manually update your windows here https://www.microsoft.com/en-us/software-download/windows10

If you press “Play” in Unity you will see the “UnknownError”.
But if you “Build and Run” It will work.

I am having the same issue. Anybody know why it won’t work on 64-bit Unity? Or if there’s a way to fix it other than using 32-bit?

I have the exact same problem, only solution that has been found thus far is to roll back pre-Win10-Anniversary update. Not sure who broke what but some attention from either Microsoft or Unity would be much appreciated!

EDIT: I’ve been in contact with Unity, and they claim it’s the fault of Windows and they will never fix it. The solution is to downgrade windows (or upgrade to the next version when it comes out), as 1607 is broken. The problem is, any users on the Anniversary Edition won’t be able to use your stuff.

Our solution, for those who really need this, is to spin the voice recognition off into a separate process, and send the inputs back into Unity.

Good luck!

The DictationCompletionCause.UnknownError received upon request completion seems to be related to your Windows updates. I tried the same piece of code on several devices, with or without updates, and devices which were last updated before October were able to recognize speech.

The problem does not occur when using the 32-bits version of the Unity Editor, or in a 32-bits build; but will always occur on an updated, 64-bits Windows.

“Solution” would be to switch Unity to 32-bits (Editor or only your build configuration); or revert the faulty update (don’t know which one though).

Edit: I am using Unity 5.4.1. Updating to 5.4.3 to see if it changes anything.

Any idea of how to make this into a full-fledged bug report? Still the same in 5.5.

I hope this helps other Hololens devs (that was how I found this thread):

-DictationRecognizer works fine on Hololens (Win 10 Holographic) w/ Unity 5.5.2 p4 (64 bit), but only when deployed on the device, on the editor it’s still bust.

Could it be related to the fact that the Hololens is an x86 device?

Just as an FYI, it seems that the Windows 10 creators update fixes this issue, or at least it did for me.