【发布时间】:2019-03-05 09:02:25
【问题描述】:
在编程方面我是个菜鸟,但我想创建一个语言请求处理程序,在其中我得到一个数组(语法:说语言文本),将其拆分,在语言上设置设备语言给给我,让设备说出给定的文字。我真的找不到任何关于在设备上设置语言的信息。
我正在做一个 UWP-Project,所以我只能使用 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();
}
【问题讨论】:
标签: c# uwp speechsynthesizer