2014-04-29 21 views
1

我有一个C#的Windows Store应用时,我尝试使用语音合成是得到一个System.UnauthorizedAccessException的:在WinRT设备上使用语音合成时出现UnauthorizedAccessException?

 SpeechSynthesisStream stream = await this._tts.SynthesizeTextToStreamAsync("Hello ragdoll man!"); 

     // Send the stream to the media object. 
     this._mediaElement.SetSource(stream, stream.ContentType); 
     this._mediaElement.Play(); 

例外发生在第一线当我打电话SynthesizeTextToStreamAsync()。这不是明显功能包问题,就像有些人在Windows Phone 8:

UnauthorizedAccessException when initializing SpeechSynthesizer

我这样说是因为首先,Windows应用商店的应用程序清单没有ID_CAP_SPEECH_RECOGNITION能力;第二,作为一个测试我检查了每个可用功能框功能选项卡,我仍然得到例外。

什么是导致这个错误,我该如何解决它?

回答

0

这工作正常,我在一个新的空的Windows 8.1的应用程序项目:

private async void UIElement_OnTapped(object sender, TappedRoutedEventArgs e) 
{ 
    // The media object for controlling and playing audio. 
    MediaElement mediaElement = this.media; 

    // The object for controlling the speech synthesis engine (voice). 
    var synth = new SpeechSynthesizer(); 

    // Generate the audio stream from plain text. 
    SpeechSynthesisStream stream = await synth.SynthesizeTextToStreamAsync("Hello World"); 

    // Send the stream to the media object. 
    mediaElement.SetSource(stream, stream.ContentType); 
    mediaElement.Play(); 
} 
+0

我看到MSDN该示例代码和原来尝试过了,“媒体”没有为“本”对象,定义了在我的情况下是一个Page对象。你的解决方案中的“这个”对象是什么? –

+0

哦,它是一个'Page'。我只是在页面中添加了一个'MediaElement'。 –

+0

你称之为“媒体”?如果是这样,你的代码和我的代码之间没有功能差异。 –

相关问题