当前位置: 首页 > news >正文

南海今天最新军事新闻最新消息/seo品牌

南海今天最新军事新闻最新消息,seo品牌,怎样创建网站image目录文件,做学校网站素材图片大全在网络聊天系统中,采集麦克风的声音并将其播放出来,是最基础的模块之一。本文我们就介绍如何快速地实现这个基础模块。 一. 基础知识 有几个与声音采集和播放相关的专业术语必须要先了解一下,否则,后面的介绍将无法展开。语音采集…

  在网络聊天系统中,采集麦克风的声音并将其播放出来,是最基础的模块之一。本文我们就介绍如何快速地实现这个基础模块。

一. 基础知识

  有几个与声音采集和播放相关的专业术语必须要先了解一下,否则,后面的介绍将无法展开。语音采集指的是从麦克风采集音频数据,即声音样本转换成数字信号。其涉及到几个重要的参数:采样率、采样位数、声道数。

  简单的来说:

       采样率:即采样频率,就是在1秒内进行采集动作的次数。

       采样位数:又叫采样深度,就是每次采集动作得到的数据长度,即使用多少个bit来记录一个样本。

       声道数:一般是单声道或双声道(立体声)。普通的麦克风采集几乎都是单声道的。

  这样,1秒钟采集得到的声音数据的大小为(单位byte):(采样频率×采样位数×声道数×时间)/8。

  音频帧:通常一个音频帧的时长为10ms,即每10ms的数据构成一个音频帧。假设:采样率16k、采样位数16bit、声道数1,那么一个10ms的音频帧的大小为:(16000*16*1*0.01)/8 = 320 字节。计算式中的0.01为秒,即10ms

二. 如何采集、播放?

  如果直接基于底层的DirectX来进行麦克风的采集与播放,那将是十分繁琐的。好在我们有现成的组件来完成这个工作,MCapture用于采集硬件设备(如麦克风、摄像头、声卡、屏幕等),MPlayer用于播放采集到的数据。

1.采集麦克风

  MCapture提供了IMicrophoneCapturer,用于采集麦克风输入的声音。其每隔20ms触发一次AudioCaptured事件,通过事件的参数byte[]暴露这20ms采集得到的数据。

  IMicrophoneCapturer 相关采集参数的值是这样的:

       采样频率:16000,采样位数:16bit,声道数:1。

       所以,按照上面的公式进行计算,我们可以得到AudioCaptured事件的参数byte[]的长度为640。

2. 播放声音数据

  MPlayer提供了IAudioPlayer,用于播放声音数据。在创建IAudioPlayer实例时,要正确的设置采样频率、采样位数、声道数这些参数的值,如果它们与即将要播放的声音数据的特征不一致,播放将出现错误。

  我们在拿到MCapture采集的声音数据后,将其提交给IAudioPlayer的Play方法进行播放即可。

三.Demo实现

  在有了前面的介绍作为基础后,接下来实现麦克风的采集和播放就相当简单了。在接下来的demo中,不仅演示了播放从麦克风采集到的声音,而且多加了一个功能,就是直接播放wav声音文件,这些实现都是相当简单的。  

    public partial class Form1 : Form{private IAudioPlayer audioPlayer;private IMicrophoneCapturer microphoneCapturer;public Form1(){InitializeComponent();}private void button_mic_Click(object sender, EventArgs e){try{this.microphoneCapturer = CapturerFactory.CreateMicrophoneCapturer(int.Parse(this.textBox_mic.Text));this.microphoneCapturer.AudioCaptured += new ESBasic.CbGeneric<byte[]>(microphoneCapturer_AudioCaptured);this.audioPlayer = PlayerFactory.CreateAudioPlayer(int.Parse(this.textBox_speaker.Text), 16000, 1, 16, 2);this.microphoneCapturer.Start();this.label_msg.Text = "正在采集麦克风,并播放 . . .";this.label_msg.Visible = true;this.button_wav.Enabled = false;this.button_mic.Enabled = false;this.button_stop.Enabled = true;}catch (Exception ee){MessageBox.Show(ee.Message);}}void microphoneCapturer_AudioCaptured(byte[] audioData){if (this.audioPlayer != null){this.audioPlayer.Play(audioData);}}private void button_wav_Click(object sender, EventArgs e){try{string path = ESBasic.Helpers.FileHelper.GetFileToOpen2("请选择要播放的wav文件", AppDomain.CurrentDomain.BaseDirectory, ".wav");if (path == null){return;}AudioInformation info = PlayerFactory.ParseWaveFile(path);if (info.FormatTag != (int)WaveFormats.Pcm){MessageBox.Show("仅仅支持PCM编码方式的语音数据!");return;}int secs = info.GetTimeInMsecs() / 1000; //声音数据的播放时长this.audioPlayer = PlayerFactory.CreateAudioPlayer(int.Parse(this.textBox_speaker.Text), info.SampleRate, info.ChannelCount, info.BitsNumber, secs + 1);this.audioPlayer.Play(info.AudioData);this.label_msg.Text = "正在播放wav文件 . . .";this.label_msg.Visible = true;this.button_wav.Enabled = false;this.button_mic.Enabled = false;this.button_stop.Enabled = true;}catch (Exception ee){MessageBox.Show(ee.Message);}}private void Form1_FormClosing(object sender, FormClosingEventArgs e){if (this.microphoneCapturer != null){this.microphoneCapturer.Stop();this.microphoneCapturer.Dispose();this.microphoneCapturer = null;}if (this.audioPlayer != null){this.audioPlayer.Dispose();this.audioPlayer = null;}}private void button_stop_Click(object sender, EventArgs e){if (this.audioPlayer == null){return;}if (this.microphoneCapturer != null){this.microphoneCapturer.Stop();this.microphoneCapturer.Dispose();this.microphoneCapturer = null;}this.audioPlayer.Clear();this.audioPlayer.Dispose();this.audioPlayer = null;this.label_msg.Visible = false;this.button_wav.Enabled = true;this.button_mic.Enabled = true;this.button_stop.Enabled = false;}        }

  看看demo运行的效果图:

  

    麦克风采集与播放Demo源码下载

 

http://www.jmfq.cn/news/4884985.html

相关文章:

  • 建设部资质申报网站/it教育培训机构排名
  • 深圳市龙华区政府在线官网/宁波seo排名外包公司
  • 网站建设电话销售/苏州网站
  • 购物网电商网站开发毕业论文/互联网营销课程体系
  • 武汉网站建设公司厂家地址/河北高端网站建设
  • 文章收录网站/项目推广方案
  • 孝感网站的建设/b站2023推广网站
  • 软件产品/windows优化大师的功能
  • 广东佛山顺德区疫情最新消息/青岛建站seo公司
  • 常用网站架构/廊坊网站建设公司
  • wordpress文章缩略图插件/济南网络优化哪家专业
  • 社区网站如何做/网络营销方案设计
  • ppt做书模板下载网站/广告联盟平台排名
  • 音乐网站怎么做外链/外贸网站推广方式
  • 个人网站备案建设方案书/电脑培训班一般需要多少钱
  • 网站策划资料方案/5月疫情最新消息
  • 营销型网站建设公司哪家好/网站到首页排名
  • 辽宁省工程造价信息/seo修改器
  • 做风筝网站/国外免费建站网站搭建
  • 建筑工程网站模板/站长工具seo综合查询下载
  • 网站建设的总体设计/外贸网站平台哪个好
  • 做intor的网站/宁波靠谱营销型网站建设
  • 网站备案目的/网站改进建议有哪些
  • 网站建设 唐山/网络整合营销公司
  • 重庆网站供奉战犯/seo手机优化软件哪个好用
  • 网站建设微信软文/怎么开网店
  • 如何用ps做网站平面图/论坛推广平台有哪些
  • 动态网站特点/成人电脑基础培训班
  • 营销网站的设计思路/贵州seo学校
  • 向客户介绍网站建设的话术/网络营销推广方法