2012-05-02 22 views
1

WaveformatConversionStreamを使用して、記録された音声を含むモノラル16ビットPCM WAVファイルのサンプルレートを11025から16000 Hzに引き上げます。結果として得られるWAVファイルはまだ分かりやすいですが、「静的」(それが部分的に吹き飛ばされたスピーカーで再生されているかのように聞こえる)という大きな違いがあるようです。これは正常な動作か期待される動作ですか、何か間違っていますか?コードは以下のとおり明らかに何もないNAudioを使用してWAVファイルのサンプルレートを増加させると、「静的」

using (WaveFileReader wfr = new WaveFileReader("inFile.wav")) 
{ 
    var newFormat = new WaveFormat(16000, wfr.WaveFormat.BitsPerSample, wfr.WaveFormat.Channels); 
    using (WaveFileWriter wfw = new WaveFileWriter("outFile.wav", newFormat)) 
    { 
    using (WaveFormatConversionStream conversionStream = new WaveFormatConversionStream(newFormat, wfr)) 
    { 
     conversionStream.Position = 0; 
     byte[] buffer = new byte[1024]; 
     while (conversionStream.Position < conversionStream.Length) 
     { 
     int bytesRead = conversionStream.Read(buffer, 0, 1024); 
     if (bytesRead > 0) 
     { 
      wfw.Write(buffer, 0, bytesRead); 
     } 
     else 
     { 
      break; 
     } 
     } 
    } 
    } 
} 

答えて

0

私は(位置= 0を設定する必要はありませんが)あなたのコードが間違って見ることができます。これは、フードの下でWindowsで提供されるACMサンプルレート変換を使用していますが、それは妥当ですが鮮明ではありません。特に、リサンプリングの際にエイリアシングやアーチファクトを減らすために推奨されるローパスフィルタは適用されていないと思います。しかし、あなたが描いていることは、それ以上に深刻に聞こえる。もう1つの方法は、バッファサイズを16000 *チャンネル* 2にすることです。

もう1つのことは、オーディオは16ビットだと思いますか?

関連する問題