c# - 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");
}
编辑:
一切都安装得很好,包等。选择方法不起作用(不知道为什么)......我已经发布了解决方案,希望它可以帮助遇到同样问题的人。干杯!
解决方案
我设法用这段代码解决了这个问题:
synth.SelectVoiceByHints(VoiceGender.Female, VoiceAge.Adult, 0, CultureInfo.GetCultureInfo("pt-BR"));
显然,Microsoft 解决方案对我不起作用……好吧,那行得通。我会离开这里帮助其他人解决这类问题。谢谢!
推荐阅读
- javascript - JavaScript 和 PHP 代码不起作用
- ios - 链接器命令失败,退出代码为 1 Xcode 10 中的错误
- rollupjs - 使用 rollup 将导入的 javascript 打包到 svelte 组件中
- java - 什么是线程上下文中的缓存以及何时在 Java 中使用 volatile 关键字?
- sql - 在超过 100 万行的表中什么更有效?交叉连接还是子查询?
- c# - 如何获取从.net中的静态方法调用的实例方法的asp.net控件
- html - 如何编写一个 R 函数来创建一系列散布有降价的绘图
- powerbi - 将 Power BI Desktop 文件迁移到 Analysis Services
- python - Pytest 夹具:在每个测试之间运行的设置、拆卸和代码
- asp.net-mvc - 如何在 Umbraco 中创建自己的包?