コードでこのWaveReader クラスを使用しています。次のエラーが表示されます。
エラー: サンプルが整数であることを確認してください (たとえば、浮動小数点数ではありません)。
if (format.wFormatTag != 1) // 1 = PCM 2 = Float
throw new ApplicationException("Format tag " + format.wFormatTag + " is not supported!");
私が試みているのは、WAV ファイルを FLAC に変換して、GoogleSpeechAPI にフィードできるようにすることだけです。最初のステップとして、WAV ファイルを録音できます。私は 2 番目のステップで立ち往生しています: WAV ファイルを FLAC に変換します。3 番目のステップを実行できます: GoogleSpeech API を使用して FLAC をテキストに変換します。
私が立ち往生している2番目のステップでは、ここに私のコードがあります:
public void WAV_to_FLAC_converter()
{
string inputFile = "inputFile.wav";
//string outputFile = Path.Combine("flac", Path.ChangeExtension(input, ".flac"));
string outputFile = "outputFile.flac";
if (!File.Exists(inputFile))
throw new ApplicationException("Input file " + inputFile + " cannot be found!");
var stream = File.OpenRead(@"C:\inputFile.wav");
WavReader wav = new WavReader(stream);
using (var flacStream = File.Create(outputFile))
{
FlacWriter flac = new FlacWriter(flacStream, wav.BitDepth, wav.Channels, wav.SampleRate);
// Buffer for 1 second's worth of audio data
byte[] buffer = new byte[wav.Bitrate / 8];
int bytesRead;//**I GET THE ABOVE ERROR HERE.**
do
{
bytesRead = wav.InputStream.Read(buffer, 0, buffer.Length);
flac.Write(buffer, 0, bytesRead);
} while (bytesRead > 0);
flac.Dispose();
flac = null;
}
}
関数に与えている入力 wav ファイルに問題があるようです。私が作成したストリーム変数は、整数ではなく浮動小数点であると言っていると思います。しかし、私は何をすべきですか?私はWAVファイルを台無しにしませんでした。ただのWAVファイルです。WAV ファイルを浮動小数点から整数に変更するにはどうすればよいですか?? これを修正する方法がわかりません。