本文采用简单的方式,如需使用其他功能,请访问Naudio相关功能

1.using NAudio.Wave;从麦克风输入到声卡输出,并操作数据

 //创建输出对象
WaveOut waveOut = new WaveOut();
//创建输入对象
WaveIn waveIn = new WaveIn();
//创建缓冲区
BufferedWaveProvider bufferedWaveProvider = new BufferedWaveProvider(new WaveFormat(16000, 16, 1));
public void PlaySound() {//输入音频参数设置 16k/16位/通道1waveIn.WaveFormat = new WaveFormat(16000, 16, 1);//为wavein的回调函数添加事件,用于操作数据waveIn.DataAvailable += new EventHandler<WaveInEventArgs>(waveIn_DataAvailable);//播放waveOut.Init(bufferedWaveProvider);waveOut.Play();
}
/// <summary>
/// 回调函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{//e.Buffer为用于操作的数组,类型为bytebufferedWaveProvider.AddSamples(e.Buffer,0,e.BytesRecorded);byte[] WaveIn_Data = e.Buffer;
}

2.利用Naudio录音,如对wav文件的头不了解请访问wav头文件格式

//新建文件操作对象,System.Windows.Forms.Application.StartupPath为程序bin目录 wave为文件夹名称 格式为wav
WaveFileWriter waveFileWriter = new WaveFileWriter(System.Windows.Forms.Application.StartupPath + "\\wave\\.wav", new WaveFormat(16000, 16, 1));
private void waveIn_DataAvailable(object sender, WaveInEventArgs e)
{//e.Buffer为用于操作的数组,类型为bytebufferedWaveProvider.AddSamples(e.Buffer, 0, e.BytesRecorded);byte[] WaveIn_Data = e.Buffer;waveFileWriter.Write(WaveIn_Data, 0, WaveIn_Data.Length);
}
//先写入头文件,如对wav文件的头不了解请访问
public void CreateWav() {byte[] bxt = new byte[44] { 82, 73, 70, 70, 36, 124, 7, 0, 87, 65, 86, 69, 102, 109, 116, 32, 16, 0, 0, 0, 1, 0, 1, 0, 64, 31, 0, 0, 128, 62, 0, 0, 2, 0, 16, 0, 100, 97, 116, 97, 0, 124, 7, 0 };waveFileWriter.Write(bxt, 0, bxt.Length);
}
//停止录音
private void stopMsg_Click(object sender, EventArgs e)
{waveFileWriter.Close();
}

3.播放文件

//播放
private void PlayWav_Click(object sender, EventArgs e)
{//文件打开对象OpenFileDialog dialog = new OpenFileDialog();//设置格式dialog.Filter = "Wave File (*.wav)|*.wav;";//默认路径dialog.InitialDirectory = System.Windows.Forms.Application.StartupPath + "\\wave\\";//是否选取文件if (dialog.ShowDialog() == DialogResult.OK){//文件访问对象AudioFileReader waveReader = new AudioFileReader(dialog.FileName);WaveOut waveOutPlay=new WaveOut();waveOutPlay.Init(waveReader);// 设置音量 0~1waveOutPlay.Volume = 1f;   waveOutPlay.Play();}
}

如需要获取播放状态,我认为可以新建线程或定时器监听状态

if (waveOutPlay.PlaybackState != PlaybackState.Playing) { }

如有什么错误的地方,望各位提出改进意见,让博主能够更快提升自己,谢谢

C# Naudio 从麦克风输入到声卡输出 录音 放音功能相关推荐

  1. 用步进正弦激励法测量计算机声卡输出输入幅值频响函数

    一. 实验目的 (1) 通过对计算机声卡系统的实测加深对频响函数的理解: (2) 对声音振动及测量有直观了解: (3) 对计算机声卡系统的频响特性有直观的认识. 二. 实验内容 (1) 用声卡发出的步 ...

  2. 如何将电脑输出声音转到麦克风输入

    用途:语音通话时播放音频文件给对方 设置:双击右下角喇叭-->选项-->属性->混音器选择"Audio Input"-->取消麦克风的选择,设置立体声混音的 ...

  3. c++采集声卡输出_舒尔 Shure RMCE-LTG Lightning-MMCX接口耳机线[线型声卡]测评报告 [Soomal]...

    舒尔RMCE-LTG Lightning-MMCX接口耳机线,RMCE是Remote+Mic缩写,LTG是Lightning Cable缩写,指支持苹果iOS设备上的Lightning接口.而MMCX ...

  4. c++采集声卡输出_其实声卡不单单只有音效,更多功能看这篇就对了

    其实声卡不仅仅是一块能够发声的卡,而是一块功能众多的多功能卡. 播放数字音乐: 这是声卡最基本的功能,这得益于数字音乐的存储方式的改进.从原始的wav到流行的mp3,在到新兴的wma等音频格式,使得数 ...

  5. 电脑麦克风输入没声音,如何解决

    文章目录 一.麦克风输入没声音的原因 二.解决办法 1.打开麦克风隐私权限 2.设置更换输入设备 3.打开麦克风设置 4.更新声卡驱动.重启电脑 5.设备损坏,更换设备 一.麦克风输入没声音的原因 麦 ...

  6. 对声卡输出进行录音的设置.

    一般正常的录音都是对Line in进行录音,但有些需要对line out进行录音,因为有些音源是没有line in的. 如即时聊天时录取对方的语音.但这些声音都要经过声卡播放,所以它们的音源就是声卡输 ...

  7. c++采集声卡输出_耳上明珠 | 魅族双 C 耳机 — EP2C

    魅族双 C 耳机 魅族 16s 取消了 3.5mm 耳机接口,使用 USB 输出数字音频信号,支持 Type-C 数字耳机或数字转接器.除了无线蓝牙耳机和一线难求的魅族 HIFI 解码耳放外,与魅族 ...

  8. 解决nohup: 忽略输入并把输出追加到“nohup.out“或者nohup: 忽略输入重定向错误到标准输出端

    解决nohup: 忽略输入并把输出追加到"nohup.out"或者nohup: 忽略输入重定向错误到标准输出端 解决方法: 执行nohup java -jar do_iptable ...

  9. 输入重定向,输出重定向,管道相关内容及实现方法

    近期,通过实现shell了解了输入重定向,输出重定向,管道- 用自己的话总结定义: 输入重定向:把<右边的文件的内容输入到<左边的命令中. 输出重定向:把运行>左边命令得出的结果输入 ...

最新文章

  1. It appears as though you do not have permission to view information ...
  2. eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法
  3. Linux下通过rm -f删除大量文件时提示-bash: /bin/rm: Argument list too long的解决方法...
  4. schema get_ddl
  5. 《 自动化测试最佳实践:来自全球的经典自动化测试案例解析》一一1.6 正确度量...
  6. 三年级学生计算机学情分析,三年级上学期学生学情分析
  7. jax-rs jax-ws_使用JAX-RS的HTTP缓存
  8. c语言中用简易暗纹来输入密码,确定夫琅和费单缝衍射明、暗纹位置的不同教学方法的讨论...
  9. python初中必背语法_一些python语法的合集
  10. 简历不会做?集设网社区带来精致的个人网站供你参考
  11. “机海战术”已死!后智能手机时代靠什么才能赢?
  12. mysql单表约束为_MySQL 表约束
  13. linux 进程内核栈
  14. 07 - 雷达发射机的主要质量指标
  15. Mixly02:米思齐(Mixly)软件安装及初体验
  16. 郑大计算机课程表,郑州大学研究生课程表.doc
  17. 计算机添加家庭成员,Win10系统添加家庭成员出错怎么解决?
  18. matlab中得到透明背景图片的方法,如何在Matlab中得到透明背景的图片?
  19. 国家标准GB7713-87
  20. 路由器指定dns解析服务器设置

热门文章

  1. 运营日记:App推广牢记的点
  2. vidaa4基于android,详细解析vidaa70v1f-s 和小米4a 70寸哪个好?测评区别大吗?亲身体验内幕曝光...
  3. 安卓(Android)扫一扫
  4. 后台运行python程序
  5. Linus Torvalds - Just for fun The Story of an Accidental Revolutionary
  6. vite打包在ios11,报错 SyntaxError: Unexpected token ‘{‘. Expected ‘(‘ to start a ‘catch‘ target.
  7. pandas 的 object 类型
  8. leanote mysql_leanote 服务器搭建
  9. 广播、组播、点播的区别
  10. android怎么升级版本5.0,安卓系统升级到Android 5.0教程【详解】