使用SAPI进行语音转换:自定义语言

时间:2015-04-20 12:22:35

标签: c# sapi

我来自希腊,我想制作一个使用SAPI与用户互动的应用程序,但我无法找到将SAPI的语言从英语更改为希腊语的方法。

我的操作系统默认为希腊语&英文,我安装了SAPI SDK;希腊语是由SAPI支持的。

问题是SAPI没有自动识别传递给它的语言,并且还原为单个字母逐个

以下是我使用的代码,英文文本:

using SpeechLib;

SpVoice voice = new SpVoice();
voice.Speak("Pdf File Successfully Installed", SpeechVoiceSpeakFlags.SVSFlagsAsync);
voice.WaitUntilDone(30000);

这样可行,但是当我将希腊语文本传递给函数(例如"Να ενα κειμενο")时,我发现问题就出现了。

1 个答案:

答案 0 :(得分:2)

您可以通过将SSML传递到Speak API并包含xml:lang属性来设置语言。

例如,这应该有效:

SpVoice voice = new SpVoice();
voice.Speak(
"<speak version='1.0' xmlns='http://www.w3.org/2001/10/synthesis' xml:lang='el-GR'>"
+ "Να ενα κειμενο"
+ "</speak>",
 SpeechVoiceSpeakFlags.SVSFlagsAsync|SpeechVoiceSpeakFlags.SVSFIsXML);
voice.WaitUntilDone(30000);

您还可以在语音中切换语言。文档有这个例子:

<speak version="1.0"
   xmlns="http://www.w3.org/2001/10/synthesis"
  xml:lang="en-US">

   For English, press 1.

   <voice xml:lang="fr-FR" gender="female"> 
   Pour le français, appuyez sur 2 </voice>

</speak>

有关详情,请参阅此处: