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

.NET 6使用Microsoft.Speech语音合成提示无可用语音问题求助

问题描述

开发本地任务辅助应用,不使用Azure认知API。因.NET 6移除了System.Speech组件,故下载Speech SDK并引用Microsoft.Speech的DLL。运行代码时出现错误:

No voice installed on the system or none available with the current security setting.

调试代码:

using System;
using Microsoft.Speech.Synthesis;

SpeechSynthesizer ssTest = new SpeechSynthesizer();
System.Diagnostics.Debug.WriteLine(ssTest.GetInstalledVoices().Count);

控制面板语音设置中可见多个已安装且可用的语音,已尝试查阅旧解决方案、检查注册表、重装SDK及语音运行时、以管理员身份运行应用,均未解决问题。

可行修复方案
  • 区分两个Speech库的语音依赖:Microsoft.Speech.Synthesis依赖的是**桌面语音平台(Desktop Speech Platform)**专属语音包,而非你在控制面板看到的系统默认TTS语音(后者属于旧版System.Speech的依赖范畴)。需要下载对应语言的桌面语音平台语音包,注意要匹配Speech SDK的版本和系统架构。
  • 核对项目与语音包的架构匹配:项目编译平台(x86/x64/Any CPU)必须和安装的桌面语音平台语音包架构一致。比如SDK是x64版本,就不能安装x86语音包;项目设为x86编译,就得装x86架构的语音包。建议直接指定项目编译平台为x64或x86,再安装对应架构的语音包。
  • 检查桌面语音平台的注册表注册信息:桌面语音的注册条目存于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices(x64系统下x86程序需查看HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech\Voices)。如果该路径下为空,说明语音包未完成注册,可重新运行语音包安装程序并确保勾选注册选项,或手动导入对应语音的注册表项。
  • 替换为兼容的替代方案:若不想依赖桌面语音平台,可尝试在NuGet安装支持.NET 6的System.Speech兼容包,或使用NAudio等第三方库间接调用系统自带TTS语音,绕开Microsoft.Speech的限制。
  • 确认语音权限设置:除管理员身份外,需前往Windows设置「隐私和安全性」-「语音」,确认你的应用已被允许访问语音功能。部分Windows版本中,即使是管理员身份,也需要手动开启该权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:35:28