NAudio 记录和保存麦克风输入和扬声器输出
Posted
技术标签:
【中文标题】NAudio 记录和保存麦克风输入和扬声器输出【英文标题】:NAudio record and save microphone input and speaker output 【发布时间】:2019-06-06 12:38:01 【问题描述】:我想通过 Skype 或类似应用程序记录对话(这些记录将在保存后进行处理)。我试图通过 NAudio 来实现这一点。
到目前为止,我设法使用 WasapiLoopbackCapture 录制扬声器音频并将其保存到 WAV 文件中,我还设法使用 WaveIn 录制和保存麦克风音频。主要问题是我不能将这两个文件混合成一个文件,如下链接所述:https://github.com/naudio/NAudio/blob/master/Docs/MixTwoAudioFilesToWav.md
我开始录制的函数如下所示:
waveSourceSpeakers = new WasapiLoopbackCapture();
string outputFilePath = @"xxxx\xxx\xxx";
waveFileSpeakers = new WaveFileWriter(outputFilePath, waveSourceSpeakers.WaveFormat);
waveSourceSpeakers.DataAvailable += (s, a) =>
waveFileSpeakers.Write(a.Buffer, 0, a.BytesRecorded);
;
waveSourceSpeakers.RecordingStopped += (s, a) =>
waveFileSpeakers.Dispose();
waveFileSpeakers = null;
waveSourceSpeakers.Dispose();
;
waveSourceSpeakers.StartRecording();
waveSourceMic = new WaveIn();
waveSourceMic.WaveFormat = new WaveFormat(44100, 1);
waveSourceMic.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
waveSourceMic.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);
waveFileMic = new WaveFileWriter(@"xxxx\xxx\xxx", waveSourceMic.WaveFormat);
waveSourceMic.StartRecording();
我尝试混合我的 2 个 wav 文件的函数如下所示:
using (var reader1 = new AudioFileReader(@"xxx\xxx\file1.wav"))
using (var reader2 = new AudioFileReader(@"xxx\xxx\file2.wav"))
var mixer = new MixingSampleProvider(new[] reader1, reader2 );
WaveFileWriter.CreateWaveFile16(@"xxxx\xxx\mixed.wav", mixer);
我得到这个异常:System.ArgumentException: '所有混音器输入必须具有相同的 WaveFormat',同时尝试创建 MixingSampleProvider。
我想知道我是否使用了正确的方式来录制这两种音频?另外,如果有办法将两个音频录制在一个文件中,那就太好了,但我不确定这是否可能。
【问题讨论】:
最简单的方法是打开您刚刚创建的两个文件,然后使用您发送的 Naudio 文档中的指南将它们混合。 @Fons 我的错,我不够清楚。我已经编辑了我的问题,所以你可以看到我的问题在哪里。 你试过了吗:waveSourceMic.WaveFormat = waveSourceSpeakers.WaveFormat;
?
@Fildor 谢谢,这正是我所需要的,就像一个魅力。
【参考方案1】:
所有混音器输入必须具有相同的 WaveFormat
提示你的没有。
换行
waveSourceMic.WaveFormat = new WaveFormat(44100, 1);
到
waveSourceMic.WaveFormat = waveSourceSpeakers.WaveFormat;
所以,现在您将为麦克风和扬声器使用相同的格式,并且混音器应该没问题。
【讨论】:
以上是关于NAudio 记录和保存麦克风输入和扬声器输出的主要内容,如果未能解决你的问题,请参考以下文章
如果扬声器远离麦克风,Google Speech/NAudio 会有很大的延迟