Resampler.NET will upsample/downsample audio streams for you. So you could be going from 44100Hz CD-Audio quality to 8000Hz use it for the many codecs provided by SpeechEncoder.NET.
using System;
using StreamCoders.Wave;
namespace ResamplerTest
{
class Program
{
static void Main(string[] args)
{
// Open default wavein
WaveInput win = new WaveInput();
win.BitsPerSample = 16;
win.Channels = 1;
win.SampleRate = 16000;
win.OpenDevice(null);
win.Start();
// Open default waveout
WaveOutput wout = new WaveOutput();
wout.Channels = 1;
wout.SampleRate = 8000;
wout.BitsPerSample = 16;
wout.Init();
wout.OpenDevice(null);
// Create sampler using frequencies from input and output
Resampler resamp = new Resampler();
resamp.Input.SampleRate = win.SampleRate;
resamp.Output.SampleRate = wout.SampleRate;
resamp.Init();
win.ClearBuffers();
while(true)
{
if (win.SamplesAvailable == true)
{
// get all queued data from device
byte[] samples = win.GetAllData();
// resample from win.rate -> wout->rate
byte[] newsamples = resamp.Resample(samples);
// show pride
Console.WriteLine("{0} -> {1}", samples.Length, newsamples.Length);
// feed back to device
wout.Enqueue(newsamples);
}
}
}
}
}