使用以下代码,我可以列出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可能是大卫,他的年龄设置不同,但是因为我不能改变大卫的年龄属性(这是只读的)。
任何帮助将不胜感激。
修改
有人建议我使用语音sdk 11 / sdk11运行时 - 然而,尝试使用sdk 11 / runtime使事情变得更糟。我删除了对System.Speech及其相关导入的引用,下载并安装了Microsoft Speech Platform - 软件开发工具包(SDK)(版本11)microsoft.com/en-us/download/details.aspx?id=27226添加了相关联dll(64位)作为参考并添加了'Imports System.Speech.Synthesis',之后,当我编译为x64,x86或AnyCPU时,没有报告任何设备。然后,我通过下载sdk11运行时并包含随附的dll来尝试相同的操作。没爱。恢复到原来的状态使我回到原来的问题。
答案 0 :(得分:0)
这将通过VB输出文本到语音的列表:
Imports System.Speech.Synthesis
Module Module1
Sub Main()
Dim synth As SpeechSynthesizer = New SpeechSynthesizer()
For Each voice In synth.GetInstalledVoices()
Console.WriteLine(voice.VoiceInfo.Name)
Next
Console.ReadLine()
End Sub
End Module
我最初是为C#here找到的。希望有帮助!