【发布时间】:2018-09-25 16:39:39
【问题描述】:
通过以下代码,我可以列出 Windows 中安装的所有声音(或者我认为):
Imports System.Speech.Synthesis
...
Dim sp As New SpeechSynthesizer
Each InstalledVoice As InstalledVoice In sp.GetInstalledVoices()
ListOfInstalledVoices.Add(InstalledVoice)
Next
sp.Dispose()
问题是在我的机器上它只列出了两个声音(Microsoft David Desktop 和 Microsoft Zira Desktop),但是当我进入 Windows 文本到语音设置时,列出了五个声音(David、Linda、Zira、Marc和理查德)。
最初我认为这与 32 位和 64 位有关(此处引用:SpeechSynthesizer doesn't get all installed voices),但事实并非如此(我尝试使用 x86 和 x64 进行编译,但没有区别)。
也许我还想,Marc 可能是年龄设置不同的 David,但无法判断,因为我无法更改 David 的年龄属性(它是只读的)。
任何帮助将不胜感激。
编辑
有人建议我使用语音 sdk 11 / sdk11 运行时 - 但是,尝试使用 sdk 11 / 运行时会使事情变得更糟。我删除了对 System.Speech 及其相关导入的引用,下载并安装了 Microsoft Speech Platform - Software Development Kit (SDK) (Version 11) microsoft.com/en-us/download/details.aspx?id=27226 添加了相关的dll(64 位)作为参考并添加了“Imports System.Speech.Synthesis”,之后,当我编译为 x64、x86 或 AnyCPU 时,没有报告任何设备。然后我通过仅下载 sdk11 运行时并包括它附带的 dll 来尝试相同的方法。没爱。恢复到原来的状态让我回到了原来的问题。
【问题讨论】:
标签: .net vb.net text-to-speech