无法在 UWP 上从文本到语音的音频创建 URI 文件
Posted
技术标签:
【中文标题】无法在 UWP 上从文本到语音的音频创建 URI 文件【英文标题】:Cannot create an URI file from text-to-speech audio on UWP 【发布时间】:2016-12-14 02:42:33 【问题描述】:我试图创建一个以文本转语音作为音频通知的 toast 通知。当用户输入“让我们吃饭”这样的描述并保存吐司时,到时候吐司会说“让我们吃饭”。它就像敬酒的铃声。
我从Social MSDN 得到了如何从文本到语音创建 toast 通知的答案,但在我的程序中它总是转向异常。
这是创建文本转语音 toast 通知的代码:
private static async Task<Uri> AudioforToast(string text)
var voices = SpeechSynthesizer.AllVoices;
using (var synthesizer = new SpeechSynthesizer())
if (!String.IsNullOrEmpty(text))
try
synthesizer.Voice = voices.First(gender => gender.Gender == VoiceGender.Female);
// Create a stream from the text.
SpeechSynthesisStream synthesisStream = await synthesizer.SynthesizeTextToStreamAsync(text);
// And now write that to a file
var file = await ApplicationData.Current.TemporaryFolder.CreateFileAsync("ToastAudio", CreationCollisionOption.ReplaceExisting);
using (var fileStream = await file.OpenStreamForReadAsync())
await synthesisStream.AsStream().CopyToAsync(fileStream);
// And then return the file path
return new Uri("ms-appdata:///temp/ToastAudio");
catch (Exception)
// If the text is unable to be synthesized, throw an error message to the user.
var messageDialog = new Windows.UI.Popups.MessageDialog("Unable to synthesize text. Toast Audio is default");
await messageDialog.ShowAsync();
// If the text is unable to be synthesized, don't return a custom sound
return null;
当我尝试调试它时,代码无法将文本转语音结果保存到文件中。
此音频稍后将用作 toast 的自定义音频。
【问题讨论】:
【参考方案1】:当我尝试调试它时,代码无法将文本转语音结果保存到文件中。
我已经在我身边测试了你的代码。我得到了例外“流不支持写入”,所以问题很明显。在您的代码中,您只需打开流以读取file.OpenStreamForReadAsync()
您应该使用file.OpenStreamForWriteAsync()
然后它会起作用。
【讨论】:
感谢您的回答。改成 OpenStreamForWriteAsync() 后,进入 try 部分,但还是没有文字转语音。 @OliviaOlgaClarissa 我已经联系了相关团队。目前,它不支持临时文件夹。您可以将音频文件复制到本地文件夹。我们会考虑在未来的 Windows 版本中添加对临时文件夹的支持。以上是关于无法在 UWP 上从文本到语音的音频创建 URI 文件的主要内容,如果未能解决你的问题,请参考以下文章