--- uid: Uno.Features.SpeechRecognition --- # Speech Recognition in Uno > [!TIP] > This article covers Uno-specific information for `Windows.Media.SpeechRecognition`. For a full description of the feature and instructions on using it, see [SpeechRecognition Namespace](https://learn.microsoft.com/uwp/api/windows.media.speechrecognition). * The `Windows.Media.SpeechRecognition` class allows an application to recognize voice input. Uno's implementation currently supports basic native speech recognition. ## Supported Features The following features of `Windows.Media.SpeechRecognition.SpeechRecognizer` are currently supported: | Feature | iOS | Android | macOS (Skia) | WebAssembly | Remarks | |--------------------------------------------|-----|---------|--------------|-------------|-------------------------------| | SpeechRecognizer() | X | X | X | X | | | SpeechRecognizer(Language) | X | X | X | X | | | Constraints | - | - | - | - | | | ContinuousRecognitionSession | - | - | - | - | | | CurrentLanguage | X | X | X | X | | | State | X | X | X | X | | | SupportedGrammarLanguages | - | - | - | - | | | SupportedTopicLanguages | - | - | - | - | | | SystemSpeechLanguage | - | - | - | - | | | Timeouts | X | X | X | X | | | UIOptions | X | X | X | X | Not used | | CompileConstraintsAsync() | X | X | X | X | Always return Success (implemented to meet WinUI constraint that requires `CompileConstraintsAsync()` to be called before `RecognizeAsync()`) | | Dispose() | X | X | X | X | | | RecognizeAsync() | X | X | X | X | | | RecognizeWithUIAsync() | - | - | - | - | | | StopRecognitionAsync() | X | X | X | X | | | TrySetSystemSpeechLanguageAsync(Language) | - | - | - | - | | | HypothesisGenerated | X | X | X | X | | | RecognitionQualityDegrading | - | - | - | - | | | StateChanged | X | X | X | X | | ## Requirement ### iOS * iOS 10 or later is required. * The following lines need to be added to your info.plist: ```xml NSSpeechRecognitionUsageDescription [SpeechRecognition usage description] NSMicrophoneUsageDescription [SpeechRecognition usage description] ``` ### Android The following lines need to be added to your AndroidManifest.xml: ```xml ``` ### macOS (Skia) * macOS 10.15 or later is required. * The following lines need to be added to your app bundle's `Info.plist`: ```xml NSSpeechRecognitionUsageDescription [SpeechRecognition usage description] NSMicrophoneUsageDescription [SpeechRecognition usage description] ``` * The app must be packaged as an `.app` bundle when running speech recognition — macOS only displays the TCC authorization prompt for bundled apps. Launching the executable directly from a terminal (`dotnet run`) will result in `SFSpeechRecognizer` returning `Denied` without prompting. > [!NOTE] > For contributors: The Uno samples app (`SamplesApp.Skia.Generic`) ships a build target that automatically produces a minimal `.app` bundle next to the regular output on macOS. After `dotnet build`, launch it with: > > ```bash > open src/SamplesApp/SamplesApp.Skia.Generic/bin/Debug/net10.0/SamplesApp.Skia.Generic.app > ``` ### WebAssembly Speech recognition on WebAssembly relies on the browser's Web Speech API implementation: * `window.SpeechRecognition`, or * `window.webkitSpeechRecognition` (vendor-prefixed fallback). Requirements and behavior notes: * The app must run in a browser that exposes one of the APIs above. * The user must grant microphone permission in the browser. * Browsers typically require a secure context (`https://`), with `http://localhost` commonly allowed for local development. * Starting recognition may require user interaction (for example, a button click) depending on browser policies. ## Limitation In `Windows.Media.SpeechRecognition.SpeechRecognitionResult`, only `Text`, `Alternates`, and `GetAlternates(uint maxAlternates)` are implemented. In particular, `RawConfidence` and `Confidence` fields are not currently supported. On WebAssembly specifically, availability is browser-dependent. If speech recognition is not available in the current browser, `RecognizeAsync()` fails with an `InvalidOperationException`.