我尝试使用这个代码exampleC#是所必需的非静态字段,方法或属性的对象引用 - 语音合成
我定义一个公共类按下面构建一个测试应用程式:
public class iSpeech
{
// Performs synthesis
public async Task<IRandomAccessStream> SynthesizeTextToSpeechAsync(string text)
{
IRandomAccessStream stream = null;
using (SpeechSynthesizer synthesizer = new SpeechSynthesizer())
{
VoiceInformation voiceInfo =
(
from voice in SpeechSynthesizer.AllVoices
where voice.Gender == VoiceGender.Male
select voice
).FirstOrDefault() ?? SpeechSynthesizer.DefaultVoice;
synthesizer.Voice = voiceInfo;
stream = await synthesizer.SynthesizeTextToStreamAsync(text);
}
return (stream);
}
// Build audio stream
public async Task SpeakTextAsync(string text, MediaElement mediaElement)
{
IRandomAccessStream stream = await this.SynthesizeTextToSpeechAsync(text);
await mediaElement.PlayStreamAsync(stream, true);
}
}
从应用程序的主网页,我又试图以拨打:
public async void btnClick(object sender, RoutedEventArgs e)
{
await iSpeech.SpeakTextAsync("test speech", this.uiMediaElement);
}
我不断获取
“非静态字段,方法或属性...”需要对象引用错误。
有人请让我知道我做错了吗?
非常感谢Scott,这正是我所需要的。 var mySpeechThing = new iSpeech();等待mySpeechThing.SpeakTextAsync(“测试语音”,this.uiMediaElement); –
不客气!头发拆分细节:为了使代码更加一致可读,建议让类以大写字母开头。除非它是以“I”开头的单词,否则通常将接口用于使用“I”表示类型名称。 (但显然没有规则。) –
再次感谢:) –