1

我目前正在做一个个人项目来创建 ac# 小程序,让我知道人们什么时候拍手大笑(我只需要知道音量峰值)?使用笔记本电脑内部麦克风或输入线(用于外部麦克风)。我不是什么专家,所以我想知道是否有人可以指导我如何使用 NAudio 来实现我的目标。

此致。

4

2 回答 2

6

请查看我为 Coding4Fun 撰写的这篇文章,了解如何使用 NAudio 创建 .NET 录音机。它包括一个音量计,源代码作为一个开源项目提供。

于 2012-05-02T08:29:58.683 回答
0

首先从 dll-files.com 下载最新版本的NAudio

然后将 NAudio 添加到您的项目参考中

然后在using组中插入下面给出的代码:

using NAudio;
using NAudio.CoreAudioApi;
using NAudio.Wave;

添加上面给出的代码后,添加这个 void "For Mono Use" 或者如果你想要立体声,请往下

private void Mono_REC(ProgressBar pb)
{
    MMDeviceEnumerator MDE = new MMDeviceEnumerator();
    MMDevice MD = MDE.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia);
    WaveIn mic = new WaveIn();
    mic.StartRecording();
    var AMI = MD.AudioMeterInformation;
    pb.Value = AMI.MasterPeakValue * 100;
}

立体声

private void Stereo_REC(ProgressBar left, ProgressBar right)
{
    MMDeviceEnumerator MDE = new MMDeviceEnumerator();
    MMDevice MD = MDE.GetDefaultAudioEndpoint(DataFlow.Capture, Role.Multimedia);
    WaveIn mic = new WaveIn();
    mic.StartRecording();
    var AMI = MD.AudioMeterInformation;
    left.Value = AMI.PeakValues[0] * 100;
    right.Value = AMI.PeakValues[1] * 100;
}

如果mic.StartRecording();在任何一个或两个空隙中都不起作用,则删除:

WaveIn mic = new WaveIn();
mic.StartRecording();

并添加:WaveIn mic = new WaveIn();在所有空隙之外并添加mic.StartRecording();以下任何一项:

private void Form1_Load(Object sender, EventArgs e) {}
private void Button1_Click(Object sender, EventArgs e) {}
于 2022-02-12T14:16:54.460 回答