C# 中调用笔记本麦克风录音并播放

录音机

首先需要调用NAudio程序包;

安装完成后,新建一个类,并写入以下代码:

 internal class NAudioRecorder
 {

     //public WaveIn waveSource = null;
     public WaveInEvent waveSource = null;
     public WaveFileWriter waveFile = null;
     private string fileName = string.Empty;

     /// <summary>
     /// 第一步:设置录音结束后保存的文件路径
     /// </summary>
     /// <param name="fileName">保存wav文件的路径名</param>
     public void SetFileName(string fileName)
     {
         this.fileName = fileName;
     }

     /// <summary>
     /// 开始录音回调函数
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private void waveSource_DataAvailable(object sender, WaveInEventArgs e)
     {
         if (waveFile != null)
         {
             waveFile.Write(e.Buffer, 0, e.BytesRecorded);
             waveFile.Flush();
         }
     }

     /// <summary>
     /// 录音结束回调函数
     /// </summary>
     /// <param name="sender"></param>
     /// <param name="e"></param>
     private void waveSource_RecordingStopped(object sender, StoppedEventArgs e)
     {
         if (waveSource != null)
         {
             waveSource.Dispose();
             waveSource = null;
         }

         if (waveFile != null)
         {
             waveFile.Dispose();
             waveFile = null;
         }
     }
     /// <summary>
     /// 第二步:开始录音
     /// </summary>
     public void StartRec()
     {
         try
         {
             waveSource = new WaveInEvent();//保证电脑有麦克接入否则报错。
             //waveSource.DeviceNumber = 0;//选择麦克风
             waveSource.WaveFormat = new WaveFormat(16000, 16, 1); // 16KHz,16bit,单声道的录音格式

             waveSource.DataAvailable += new EventHandler<WaveInEventArgs>(waveSource_DataAvailable);
             //waveSource.RecordingStopped += new EventHandler<StoppedEventArgs>(waveSource_RecordingStopped);

             waveFile = new WaveFileWriter(fileName, waveSource.WaveFormat);

             waveSource.StartRecording();
         }
         catch (Exception e)
         {
             throw new Exception(e.Message);
         }

     }
     /// <summary>
     /// 第三步:停止录音
     /// </summary>
     public void StopRec()
     {
         waveSource.StopRecording();

         // Close Wave(Not needed under synchronous situation)
         if (waveSource != null)
         {
             waveSource.Dispose();
             waveSource = null;
         }

         if (waveFile != null)
         {
             waveFile.Dispose();
             waveFile = null;
         }
     }

 }

引用一个类:

NAudioRecorder nAudio = new NAudioRecorder();

编程调用:

 nAudio.SetFileName(@"E:\rec1.wav");//录音保存的音源路径

nAudio.StartRec();//开始录音

nAudio.StopRec();//停止录音

播放刚才录取的音源文件:

 path = @"E:\rec1.wav";

System.Media.SoundPlayer player = new System.Media.SoundPlayer(path);
player.Play();

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值