【问题标题】:.net SpeechSynthesizer languages.net SpeechSynthesizer 语言
【发布时间】:2016-02-09 15:08:07
【问题描述】:

我正在尝试编写一个读取多种语言文本的应用程序 - 我已经用一些非常简单的代码让它用英语说,但我现在需要让同一个应用程序说法语。 我在代码中所做的一切都是从这个开始

    SpeechSynthesizer speaker = new SpeechSynthesizer();

然后

    speaker.Speak("Hello world.");

它是用英语读出来的——我只需要它也能做法语

事实证明,很难获得这方面的示例代码 - 任何人都有线索吗?

我还尝试下载 Microsoft Speech Platform,以便让 Excel 或 Word 执行相同的操作,但该平台未安装在我的系统上(Office 2016、Windows 10),并且谷歌搜索没有不要给我任何答案

【问题讨论】:

  • 换一种说法,如何添加另一种语言的已安装语音,以便它们显示在 SpeechSynthesizer 的 GetInstalledVoices 方法中?

标签: .net text-to-speech


【解决方案1】:

.Net 使用的默认语音合成器仅使用 Windows 附带的 [SAPI 兼容] TTS 引擎,因此您获得的语音语言将取决于安装的操作系统版本。

我还没有切换到 Windows 10,但在 Windows 7 时代,默认情况下,你会得到“Microsoft Sam”和另一种英语语音。

您需要找到并安装其他语言的语音才能阅读文本(大多数需要许可证)或使用不同的语音合成方法。

L&H 的法语语音可用于download here。我以前没有使用过该网站,但VirusTotal says 法语下载是安全的。我不保证。

安装语音后,使用 speaker.SelectVoice() 按名称选择语音(或者更好的是,speaker.SelectVoiceByHints() 可让您指定所需的文化)。

包括在 cmets 中提到的细节;另一种方法是使用this answer 中讨论的 Google 翻译 TTS Api。示例网址:(Bonjour le Monde)

http://translate.google.com/translate_tts?tl=fr&q=Bonjour%20le%20monde

【讨论】:

  • 您好,谢谢您-但这不是我需要做的翻译,而是说不同的语言:所以在上面的示例中,我想添加(例如)“Je me leve”而不是“Hello World”,并用法国口音发音。如果我让现有的合成器说出它,它会认为这些词是英文的,并且会发出类似“Gee meee leeeve”的发音,这显然不是现在的法语发音!
  • 是的...但是您不希望它说“Hello World”,您想要“Bonjour le Monde”或类似的。没有什么会自动为您做到这一点。您需要弄清楚另一种语言中的单词是什么,然后您需要找到一种能够以适当的口音/语调阅读该语言文本的声音。这是一个多步骤的问题
  • 嗨,基本 - 刚刚在您输入时发表了评论。我的应用程序不需要翻译 - 我会输入“Hello World”,我希望它用英语说。我还将输入“Bonjour le Monde”,我希望它用法语发音
  • 啊,请原谅。那还不清楚。然后您可以忽略翻译步骤...您仍然需要将国际语音安装到 Windows 中(它们必须符合 SAPI)。完成此操作后,您可以像使用其他任何方法一样使用框架选择适当的声音。 ViaVoice 曾经免费提供国际语音,但自从他们成为 Nuance,我认为他们不再这样做了
  • 看看有没有帮助?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-26
  • 2010-09-07
  • 2011-08-09
  • 1970-01-01
  • 2013-09-04
  • 2010-10-05
相关资源
最近更新 更多