用途:在 .NET MAUI 应用中通过 CommunityToolkit.Maui 添加语音转文字输入能力,实现语音识别与免手输入。详细服务实现、类型与 UI 集成模式参见 references/speech-to-text-api.md。
主要能力与用法:核心接口为 ISpeechToText,可调用 StartListeningAsync、StartListenAsync,并通过 PartialResultReceived 获取实时转写、RecognitionResultUpdated 获取识别结果。CommunityToolkit.Maui 返回规范化并带标点的文本,基础场景无需后处理。建议将 ISpeechToText 封装为 ISpeechRecognitionService,避免在 ViewModel 中直接用 SpeechToText.Default,便于测试与状态管理;该模式在 XAML/MVVM、C# Markup 与 MauiReactor 中一致。
必要配置:安装 CommunityToolkit.Maui NuGet 包(版本需自行查询当前版本);在 MauiProgram.cs 调用 UseMauiCommunityToolkit();将 ISpeechToText 以单例方式注册到 DI。iOS 需在 Info.plist 同时配置 NSSpeechRecognitionUsageDescription 与 NSMicrophoneUsageDescription;Android 需在 AndroidManifest.xml 声明 RECORD_AUDIO。每次 StartListeningAsync 前都要检查权限。
限制与注意事项:iOS 缺少任一 plist 键会导致运行时崩溃而非优雅失败;Android 上用户两次拒绝 RECORD_AUDIO 后系统不再弹窗,需引导用户到设置手动开启;应设置超时(建议最长 60 秒)并组合用户取消令牌,避免无限监听耗电;需在 finally 中注销事件处理器并释放 CancellationTokenSource;已在监听时再次调用会返回错误而非抛异常;连续监听模式可用循环调用 StartListeningAsync 并配合小延迟(如 Task.Delay(100))。其他具体实现细节资料未提供。