我在尝试在墨西哥西班牙语中使用文本到语音合成时遇到问题。我首先检查是否安装了西班牙语语音:
String Text = "some text in Spanish";
IEnumerable<VoiceInformation> spanishVoices = from voice in InstalledVoices.All
where voice.Language == "es-MX"
select voice;
if (spanishVoices.ElementAt(0) != null)
synth.SetVoice(spanishVoices.ElementAt(0));
await synth.SpeakTextAsync(Text);
现在,调试器显示它spanishVoices.ElementAt(0)
不为空,但我得到一个System.IO.DirectoryNotFoundException
,如果我注释掉该if
块就不会发生这种情况(并且我得到的文本发音就像它是用英语写的一样)。
检查手机上的语音设置后,发现手机需要下载西班牙语语音。完成此操作后,该应用程序按预期工作。
所以,问题是InstalledVoices.All
说实话,因为西班牙语并没有真正安装。
有什么可靠的方法可以确保它确实是这样吗?