测试时声音一般都延迟2秒,而且有回音,该怎么解决。
另外怎么跳过acm‘声音选定’的窗口

解决方案 »

  1.   

    控件,ACMWaveIn1,ACMWaveOut1,IdUDPClient1,IdUDPServer1, 
    type 
      TGSM610 = packed record 
        wFormatTag: Word;      { format type } 
        nChannels: Word;        { number of channels (i.e. mono, stereo, etc.) } 
        nSamplesPerSec: DWORD;  { sample rate } 
        nAvgBytesPerSec: DWORD; { for buffer estimation } 
        nBlockAlign: Word;      { block size of data } 
        wBitsPerSample: Word;  { number of bits per sample of mono data } 
        cbSize: Word;          { the count in bytes of the size of } 
        wSamplesPerBlock:word; 
      end; var 
        gsm610: TGSM610; 
        format: Pointer; 
        i    : integer; 
    begin 
      with gsm610 do 
      begin 
        wFormatTag:=$31; 
        nChannels:=1; 
        wBitsPerSample:=0; 
        nSamplesPerSec:=8000; 
        nBlockAlign:=65; 
        nAvgBytesPerSec:=1625; 
        cbSize:=2; 
        wSamplesPerBlock:=$140; 
      end; 
      format:=@gsm610; 
      ACMWaveOut1.Open(format); //这个就可以跳过声音选定对话框
      ACMWaveIn1.Open(format); 
      IdUDPClient1.Active := true; 
      IdUDPServer1.Active := true; procedure TSysDetectFrm.ACMWaveIn1Data(data: Pointer; size: Integer); 
    var 
      mdata:array[1..10000] of char; 
      k:integer; 
    begin 
      for k:=1 to size do 
        mdata[k]:=pchar(dword(data)+dword(k-1))^; 
      IdUDPClient1.SendBuffer(mData,Size); 
    end; procedure TSysDetectFrm.IdUDPServer1UDPRead(Sender: TObject; 
      AData: TStream; ABinding: TIdSocketHandle); 
    var 
      mdata:array[1..10000] of char; 
      data:Pchar; 
      Tmp : integer; 
    begin 
        Adata.ReadBuffer(mdata,Adata.Size); 
        data:=pchar(dword(@mdata)); 
        ACMWaveOut1.PlayBack(data,Adata.Size); //产生回音
    end; 
    //上面代码类似于QQ,MSN,系统检测中的硬件检测效果(当然没有加强度显示功能),也许对你有帮助!
      

  2.   

      ACMWaveOut1.PlayBack(data,Adata.Size); //产生回音 我本来就是这么写的。。还是有回音
      

  3.   

    你不要回音干嘛还要 playback 呢?
      

  4.   

    playback是回放,不要这个哪来的声音啊