You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在常规.NET/.NET Framework控制台项目中使用UWP的SpeechRecognizer?

在常规.NET/.NET Framework控制台项目中使用UWP SpeechRecognizer的可行性及替代方案

直接使用的可行性

不可行。Windows.Media.SpeechRecognition.SpeechRecognizer是UWP专属API,依赖UWP的运行时环境,常规.NET/.NET Framework桌面项目的执行上下文不满足该API的运行要求,因此你尝试的两种方法都会失败:

  • UwpDesktop包仅能有限兼容部分UWP API,无法支持SpeechRecognizer这类依赖UWP核心运行环境的组件;
  • Windows Runtime Component在桌面项目中调用时,会因平台运行上下文不匹配抛出System.PlatformNotSupportedException。

替代方案

1. 使用桌面原生语音识别API

改用专为桌面应用设计的System.Speech.Recognition,无需依赖UWP环境:

  • .NET Framework:该API是框架自带的,直接引用即可;
  • .NET Core/.NET 5+:需安装NuGet包System.Speech。

示例代码(控制台项目):

using System;
using System.Speech.Recognition;

class Program
{
    static void Main()
    {
        using (var recognizer = new SpeechRecognizer())
        {
            // 加载默认听写语法
            recognizer.LoadGrammar(new DictationGrammar());
            
            recognizer.SpeechRecognized += (sender, e) =>
            {
                Console.WriteLine($"识别结果: {e.Result.Text}");
            };
            
            // 启动持续识别
            recognizer.RecognizeAsync(RecognizeMode.Multiple);
            
            Console.WriteLine("开始语音识别,按任意键退出...");
            Console.ReadKey();
        }
    }
}

2. 通过IPC让UWP与桌面.NET应用协作

若必须使用UWP的SpeechRecognizer,可将语音识别逻辑放在UWP应用中,通过**进程间通信(IPC)**让桌面.NET项目与UWP应用交互,获取识别结果。Windows平台常用的IPC方案:

  • 命名管道(Named Pipes):Windows原生IPC机制,支持双向通信。桌面端用System.IO.Pipes命名空间的API,UWP可通过WinRT互操作调用原生命名管道接口;
  • UWP App Service:UWP官方推荐的跨进程通信方式,专门用于UWP与桌面应用、其他UWP应用通信。桌面端可通过Windows.ApplicationModel.AppService相关API发起请求,UWP端实现App Service后台处理语音识别并返回结果;
  • WebSocket:跨平台通信方案,在本地建立WebSocket服务,UWP和桌面应用通过ws://localhost:端口地址实现消息交互,适合轻量数据传输;
  • 内存映射文件(Memory-Mapped Files):适合共享大量二进制数据,需自行处理同步逻辑和消息格式,复杂度较高。

内容的提问来源于stack exchange,提问作者w128

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:57:40