【问题标题】:Text-To-Speech inventorying voices文字转语音清单声音
【发布时间】: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


【解决方案1】:

这将通过 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 找到这个的。希望对您有所帮助!

【讨论】:

  • 谢谢,但遗憾的是这并没有奏效,它只返回了五个声音中的两个。
猜你喜欢
  • 2012-04-06
  • 2015-03-11
  • 1970-01-01
  • 2017-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多