/// <summary> /// 开始喊话 /// </summary> private void StartCollectSound() { try { if (IsRecoding) { return; } ////初始化音频编码解码 //EvrcProtocal.InitEncoder(); //EvrcProtocal.InitDecoder(); EvrcProtocal.StartSpeech(); var rtn = 0; hRecord = IntPtr.Zero; rtn = PcmAudio.waveInOpen(out hRecord, -1, ref lpFormat, _wd, 0, 0x00030000); if (rtn == 0)//成功返回0 { //将准备好的buffer提供给音频输入设备 for (int i = 0; i < MAXRECBUFFER; i++) { //准备一个bufrer给输入设备 PcmAudio.waveInPrepareHeader(hRecord, ref globalhdr[i], (UInt32)Marshal.SizeOf(typeof(PcmAudio.WaveHdr))); //发送一个buffer给指定的输入设备,当buffer填满将会通知程序 PcmAudio.waveInAddBuffer(hRecord, ref globalhdr[i], (UInt32)Marshal.SizeOf(typeof(PcmAudio.WaveHdr))); } //开启指定的输入采集设备 rtn = PcmAudio.waveInStart(hRecord); if (rtn == 0) { IsRecoding = true; //ShowMsg("正在采集音频数据..."); } else { //ShowMsg("采集音频失败"); } } } catch (Exception ex) { //ShowMsg(ex.Message); } }