2012-03-21 119 views
0

我想轉換爲使用n音訊一個PCM 8位8千赫單聲道文件,以DSP TRUESPEECH 1位8千赫單聲道,而且我得到以下錯誤:如何使用PCM音頻轉換爲TRUESPEECH n音訊

第一次機會NAudio.dll中發生類型'NAudio.MmException'異常 AcmNotPossible acmStreamOpen

我明白,可能存在一個我缺少的中間步驟 - 任何見解都將不勝感激。這裏是我使用的代碼:

 WaveFormat outWaveFormat; 
     outWaveFormat = new TrueSpeechWaveFormat(); 
     Debug.Print("Sample Rate: " + outWaveFormat.SampleRate); //displays "8000" 
     Debug.Print("Bit Rate: " + outWaveFormat.BitsPerSample); //displays "1" 

     FileInfo f = new FileInfo(inputFile); 
     String outputFileName = this.txtDest.Text + @"\" + f.Name; 

     using (WaveFileReader reader = new WaveFileReader(inputFile)) 
     { 
      try 
      { 
       using (WaveStream convertedStream = new WaveFormatConversionStream (outWaveFormat, reader)) 
       { 
        WaveFileWriter.CreateWaveFile(outputFileName, convertedStream); 

       } 
      } 
      catch (Exception ex) 
      { 
       Debug.Print(ex.Message); 
      } 
     } 

回答

0

兩個原因這可能發生:

  1. 你沒有TRUESPEECH編碼器。我認爲Windows的新版本不再包含TrueSpeech - 它已經過時了。您可以運行NAudioDemo應用程序以查看機器上的ACM編解碼器。

  2. 您的輸入格式無法一步轉換爲目標格式。你確定你的輸入是PCM嗎。我也希望TrueSpeech編解碼器需要16位輸入而不是8位。

還有第三個原因,這可能發生,但我不認爲這會影響TRUESPEECH,那就是WaveFileWriter.CreateWaveFile假設AverageBytesPerSecond是BlockAlign的整數倍,這並非總是如此。

+0

非常感謝您的回覆。我看到DSP Group TrueSpeech編解碼器沒有顯示在可用編解碼器列表中。我認爲它已經安裝好了,但我想我所安裝的只是讀取/播放DSP文件,而不是創建它們?那可能嗎?任何想法,我可以獲得編碼器?我做了幾次網絡搜索,並沒有提供任何內容。 – user1284603 2012-03-27 18:08:52