c#以特定语言的GetInstalledVoices

时间:2018-05-21 14:25:51

标签: c# cultureinfo

我能够获得安装在Windows 10系统上的所有声音的列表:

var voiceCollection = synthesizer.GetInstalledVoices();

我可以从某个语言环境中获取已安装语音的列表,例如:

var voiceCollection = synthesizer.GetInstalledVoices(new CultureInfo("es-ES"));

上述行不会返回任何已安装的es-MEX声音

我的问题是 - 有没有办法用某种语言获取所有已安装语音的列表 - 例如所有西班牙语的语音,无论其具体如何locale?

1 个答案:

答案 0 :(得分:2)

一般情况下,你可以尝试使用 Linq 过滤掉的声音:

using System.Linq;

... 

List<InstalledVoice> voices = synthesizer
  .GetInstalledVoices()                                          // all voices
  .Where(voice => voice.VoiceInfo.Culture.Name.StartsWith("es")) // but filtered
  .ToList();                                                     // organized in a list