首页 > 解决方案 > SpeechSynthesizer.SelecVoice(字符串)不工作

问题描述

我正在尝试在下面运行此代码,它可以与“(en-US,Helen)”一起正常工作。

但是当我尝试将语言更改为“(pt-BR,Maria)”时,它给了我一个例外,即语音未安装或被禁用。

我运行了一段代码,显示所有可用的语音语言:

 Console.WriteLine("Installed voices -");
 foreach (InstalledVoice voice in synth.GetInstalledVoices())
 {
     VoiceInfo info = voice.VoiceInfo;
     Console.WriteLine(" Voice Name: " + info.Name + info.Culture + info.Description);
 }

输出显示:

Voice Name: Microsoft David Desktopen-USMicrosoft David Desktop - English (United States)
Voice Name: Microsoft Zira Desktopen-USMicrosoft Zira Desktop - English (United States)
Voice Name: Microsoft Maria Desktoppt-BRMicrosoft Maria Desktop - Portuguese(Brazil)

设置语言的代码:

using (var synth = new SpeechSynthesizer())
{
    synth.SelectVoice("Microsoft Server Speech Text to Speech Voice (pt-BR, Maria)");
    synth.Volume = 100;  // (0 - 100)
    synth.Rate = 0;     // (-10 - 10)
    synth.Speak("Central esta Off-Line");
}

编辑:

一切都安装得很好,包等。选择方法不起作用(不知道为什么)......我已经发布了解决方案,希望它可以帮助遇到同样问题的人。干杯!

标签: c#text-to-speech

解决方案


我设法用这段代码解决了这个问题:

synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult, 0, CultureInfo.GetCultureInfo("pt-BR"));

显然,Microsoft 解决方案对我不起作用……好吧,那行得通。我会离开这里帮助其他人解决这类问题。谢谢!


推荐阅读