2016-02-10 35 views
0

這就是我如何使用SpeechSynthesizer說「你好」,用NAudio WaveFormatConversionStream轉換並再次閱讀。出現錯誤「不是WAVE文件 - 沒有RIFF標頭」

而且我得到了錯誤

不是WAVE文件 - 無頭RIFF

int count = sourceFiles.Count; 
    WaveFileReader[] reader = new WaveFileReader[count];  

    var _wavStream = new MemoryStream(); 
          using (SpeechSynthesizer synth = new SpeechSynthesizer()) 
          { 
           synth.SetOutputToWaveStream(_wavStream); 
           synth.Speak("Hello"); 
           _wavStream.Position = 0; 
           int outRate = 44100; 
           var outFormat = new WaveFormat(outRate, 16, 1); 
           using (var resampler = new WaveFormatConversionStream(outFormat, new WaveFileReader(_wavStream))) 
           { 
          reader[i] = new WaveFileReader(resampler); <====GotTheErrorHere 

我怎樣才能解決呢?
謝謝!

回答

1

語音合成器尚未製作WAV文件,因此沒有RIFF標頭。而不是WaveFileReader您應該使用RawSourceWaveStream並傳遞存儲器流和正確的WaveFormat語音合成器正在輸出。

+0

我已經嘗試過這個http://stackoverflow.com/a/4237282/1427849但它仍然給我同樣的錯誤,請你幫我用代碼? – zey

相關問題