将 wav 文件转换为单声道



我正在尝试使用 NAudio 将立体声.wav文件转换为单声道。一个要求是我不能使用任何本机调用,因为我需要在 Azure 上运行此代码。这是我带来的:

using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var toMono = new StereoToMonoProvider16(waveFileReader);
WaveFileWriter.CreateWaveFile(destFileName, toMono);
}

我的代码工作没有错误,但输出是一个包含纯静音的文件。

还有其他方法可以将文件转换为单声道吗?

这段代码对我有用。

public static void StereoToMono(string sourceFile, string outputFile)
{
using (var waveFileReader = new WaveFileReader(sourceFile))
{
var outFormat = new WaveFormat(waveFileReader.WaveFormat.SampleRate, 1);
using (var resampler = new MediaFoundationResampler(waveFileReader, outFormat))
{
WaveFileWriter.CreateWaveFile(outputFile, resampler);
}
}
}

请注意,channels参数1传递给outFomat

您需要为StereoToMonoProvider16LeftVolumeRightVolume属性提供值。例如,将它们都设置为 0.5f 以混合通道,或将左设置为 1.0,将右设置为 0.0 以丢弃右通道

这段代码对我有用,即使在 Azure 上也是如此:

private void ConvertToMono(string sourceFileName, string destFileName) {
var monoFormat = new WaveFormat(44100, 1);
using (var waveFileReader = new WaveFileReader(sourceFileName))
{
var floatTo16Provider = new WaveFloatTo16Provider(waveFileReader);
using (var provider = new WaveFormatConversionProvider(monoFormat, floatTo16Provider))
{
WaveFileWriter.CreateWaveFile(destFileName, provider);
}
}
}

请注意,我使用的是额外的转换器(WaveFloatTo16Provider(,因为源是浮点格式。

最新更新