我来自希腊,我想制作一个使用SAPI与用户互动的应用程序,但我无法找到将SAPI的语言从英语更改为希腊语的方法。
我的操作系统默认为希腊语&英文,我安装了SAPI SDK;希腊语是由SAPI支持的。
问题是SAPI没有自动识别传递给它的语言,并且还原为单个字母逐个。
以下是我使用的代码,英文文本:
using SpeechLib;
SpVoice voice = new SpVoice();
voice.Speak("Pdf File Successfully Installed", SpeechVoiceSpeakFlags.SVSFlagsAsync);
voice.WaitUntilDone(30000);
这样可行,但是当我将希腊语文本传递给函数(例如"Να ενα κειμενο"
)时,我发现问题就出现了。
答案 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>
有关详情,请参阅此处: