在编程方面我是个菜鸟,但我想制作一个语言请求处理程序,在其中我得到一个数组(语法:说语言文本),将其拆分,将设备语言设置为给我的语言和让设备说出给出的文本。我真的找不到任何关于在设备上设置语言的信息。
我正在做一个 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();
}