在编程方面,我是一个菜鸟,但是我想创建一个Language Request-Handler,在其中获得一个数组(语法:说语言文本),将其拆分,然后在该语言上设置设备语言给我,让设备说出给定的文字。我真的找不到有关在设备上设置语言的任何信息。
我正在做一个UWP项目,所以我只能使用Windows.Media.Speechsynthezier。
这是我目前的代码(未完成!):
///公共类LanguageRequestHandler
string _request;
SpeechSynthesizer synth;
private SpeechSynthesizer _synth;
public LanguageRequestHandler( string request)
{
_request = request;
_synth = new SpeechSynthesizer();
var voice = SpeechSynthesizer.AllVoices.SingleOrDefault(i => i.Gender == VoiceGender.Female) ?? SpeechSynthesizer.DefaultVoice;
_synth.Voice = voice;
}
///这只是对发送给我的命令是否具有正确调用的检查
public string GetResponse()
{
string response = "invalid command";
string[] args = _request.Split(' ');
if (args[0] == "say")
{
response = CheckLanguage(args[1]);
}
return response;
}
///在这里,我想检查要求的语言,而我实际上是想设置设备应该说的语言(但据您所知,它尚未完成)
public string CheckLanguage(string language)
{
string response = "No language selected";
string[] args = _request.Split(' ');
if (language == "spanish")
{
}
else if(language == "english")
{
}
else if (language == "german")
{
}
else if (language == "french")
{
}
return language;
}
//在这里,我将文本提供给我,然后将其放到一个句子中,稍后再翻译
public string Text(string text)
{
string response = "No text given to translate";
string[] args = _request.Split(' ');
for (int i = 2; i < args.Length; i++)
{
response += args[i] + " ";
}
return text;
}
//最后,我正在尝试设置设备的音量以及从文本到语音的合成,然后将其传输到设备并让其讲话
public async void Talk(string message)
{
MediaPlayer mp = new MediaPlayer { Volume = 100 };
var stream = await _synth.SynthesizeTextToStreamAsync(message);
mp.Source = MediaSource.CreateFromStream(stream, stream.ContentType);
mp.Play();
}
答案 0 :(得分:0)
答案 1 :(得分:0)
我发现我需要添加Language.Contains()函数来设置或更改语言。请注意,您需要为所需的语言插入BCP47代码(示例: i.Language.Contains(“ fr-FR”)(法语)
“ var voice = SpeechSynthesizer.AllVoices.SingleOrDefault(i => i.Gender == VoiceGender.Female && i.Language.Contains(_request))?? SpeechSynthesizer.DefaultVoice;” >
由于我找到了解决此问题的方法,因此我需要以某种方式拆分给我的_request(因为语法为“ say”),然后在其中提供BCP47代码(这就是为什么我将方法设为Checklanguage,应该将其从数组中取出并将代码放入其中)