Microsoft TTS SaveToWaveFileAsync 功能不起作用

问题描述

我正在使用 Xamarin Forms 开发移动文本转语音应用程序。 Quickstart 到目前为止工作并合成了我的文本,但将结​​果保存到文件似乎不起作用。这是综合类的代码

        var config = SpeechConfig.FromSubscription("6e4a67f034a545e0833179044dd6d172","westeurope");
        var synthesizer = new SpeechSynthesizer(config);
        var result = await synthesizer.SpeakSsmlAsync(xmlFirstPart + voice + xmlSecondPart + synthesisText + xmlThirdPart).ConfigureAwait(false);
        var stream = AudioDataStream.Fromresult(result);
      
        string file = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"SpeechSynthesis.wav");
        await stream.SavetoWaveFileAsync(file);

它没有给出错误,但是一旦我使用此代码从另一个调用它:

ISimpleAudioPlayer player = CrossSimpleAudioPlayer.CreateSimpleAudioPlayer();
player.Load(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),"SpeechSynthesis.wav"));

它给出了以下错误

Java.IO.FileNotFoundException: '/data/user/0/com.companyname.mobileapp/files/SpeechSynthesis.wav'

如果有人知道导致此错误的可能原因,那将对我有很大帮助。谢谢。

解决方法

用法看起来不错,但您使用的路径似乎有误:Environment.GetFolderPath(Environment.SpecialFolder.Personal),"SpeechSynthesis.wav"

例如尝试给出 "path/to/write/file.wav",它会起作用。

或者,您可以使用以下代码保存到 .wav:

using var audioConfig = AudioConfig.FromWavFileOutput("path/to/write/file.wav");