Open JordanBrits opened 8 months ago
It seems that WaveFormatConversionStream is just parsing the input and converting to a pcm stream (but not writing the header as a WAVE file) + having WaveFormat property which can be used to create the header.
In this case, I suggest that either
In this case 2 should be preferred as it doesn't make sense to create a write some stream just for WaveParser to understand your format when you can provide directly the frames as you know the format.
I got the same error when I tried to parse an mp3, try this to convert mp3 to wav and parse
if (Path.GetExtension(name).Equals(".mp3", StringComparison.OrdinalIgnoreCase))
{
using var mp3FileReader = new Mp3FileReader(SelectedTranscribeAudio);
// Create a WaveFormatConversionStream to convert MP3 to WAV
var pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3FileReader);
// Resample the PCM stream to 16kHz
var resampler = new WdlResamplingSampleProvider(pcmStream.ToSampleProvider(), 16000);
// Write the resampled WAV data to a memory stream
WaveFileWriter.WriteWavFileToStream(stream, resampler.ToWaveProvider16());
stream.Seek(0, SeekOrigin.Begin);
}
var results = TranscribeProcessor?.ProcessAsync(stream);
await foreach (var result in results)
{
stringBuilder.Append($"{segment.Start} ==> {segment.End} : {segment.Text}" + Environment.NewLine);
}
I got the same error when I tried to parse an mp3, try this to convert mp3 to wav and parse
if (Path.GetExtension(name).Equals(".mp3", StringComparison.OrdinalIgnoreCase)) { using var mp3FileReader = new Mp3FileReader(SelectedTranscribeAudio); // Create a WaveFormatConversionStream to convert MP3 to WAV var pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3FileReader); // Resample the PCM stream to 16kHz var resampler = new WdlResamplingSampleProvider(pcmStream.ToSampleProvider(), 16000); // Write the resampled WAV data to a memory stream WaveFileWriter.WriteWavFileToStream(stream, resampler.ToWaveProvider16()); stream.Seek(0, SeekOrigin.Begin); } var results = TranscribeProcessor?.ProcessAsync(stream); await foreach (var result in results) { stringBuilder.Append($"{segment.Start} ==> {segment.End} : {segment.Text}" + Environment.NewLine); }
How do you declarate "stream" in WaveFileWriter.WriteWavFileToStream(stream, resampler.ToWaveProvider16());
I got the same error when I tried to parse an mp3, try this to convert mp3 to wav and parse
if (Path.GetExtension(name).Equals(".mp3", StringComparison.OrdinalIgnoreCase)) { using var mp3FileReader = new Mp3FileReader(SelectedTranscribeAudio); // Create a WaveFormatConversionStream to convert MP3 to WAV var pcmStream = WaveFormatConversionStream.CreatePcmStream(mp3FileReader); // Resample the PCM stream to 16kHz var resampler = new WdlResamplingSampleProvider(pcmStream.ToSampleProvider(), 16000); // Write the resampled WAV data to a memory stream WaveFileWriter.WriteWavFileToStream(stream, resampler.ToWaveProvider16()); stream.Seek(0, SeekOrigin.Begin); } var results = TranscribeProcessor?.ProcessAsync(stream); await foreach (var result in results) { stringBuilder.Append($"{segment.Start} ==> {segment.End} : {segment.Text}" + Environment.NewLine); }
How do you declarate "stream" in WaveFileWriter.WriteWavFileToStream(stream, resampler.ToWaveProvider16());
using var stream= new MemoryStream();
I am currently developing a blazor web app that uploads a audio file and gets processed and converted to 16 bit using NAudio, however i am running into the same exception each time.