无法在 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

win10 uwp 选择文本转语音的机器人

win10 uwp 选择文本转语音的机器人

关闭并重新打开我的应用程序后无法从 URI 播放音频

如何使用 python 和音频文件创建自定义文本到语音?

在 Android 上从照片 URI 创建文件

通过 Xamarin 在 UWP 上使用文本转语音