【问题标题】:Voice Recording/Saving in DelphiDelphi中的录音/保存
【发布时间】:2010-08-09 15:33:03
【问题描述】:

是否有允许以下操作的组件或代码: 录制口语单词(或单词)并将其保存到可以播放的文件中。 该文件必须能够在 XP、Vista 和 Windows 7 上播放。 该文件可以是独立的,也可以保存到数据源中。

[使用 Delphi 7 在 XP 上创建应用程序并使用绝对数据库。]

【问题讨论】:

    标签: delphi delphi-7 wav record microphone


    【解决方案1】:

    MMSystem.pas 中的函数允许您使用 Windows API 执行此操作。您可以使用MCI functionsPlaySound 等高级函数,也可以使用waveInOpenwaveInPrepareHeaderwaveInProc 等低级函数。

    如果你想要高控制,你真的应该使用低级功能。除了PlaySound,我没用过高级MCI接口。

    MCI

    这是工作代码:

    procedure TForm1.FormCreate(Sender: TObject);
    var
      op: TMCI_Open_Parms;
      rp: TMCI_Record_Parms;
      sp: TMCI_SaveParms;
    begin
    
      // Open
      op.lpstrDeviceType := 'waveaudio';
      op.lpstrElementName := '';
      if mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, cardinal(@op)) <> 0 then
        raise Exception.Create('MCI error');
    
      try
    
        // Record
        rp.dwFrom := 0;
        rp.dwTo := 5000; // 5000 ms = 5 sec
        rp.dwCallback := 0;
        if mciSendCommand(op.wDeviceID, MCI_RECORD, MCI_TO or MCI_WAIT, cardinal(@rp)) <> 0 then
          raise Exception.Create('MCI error. No microphone connected to the computer?');
    
        // Save
        sp.lpfilename := PChar(ExtractFilePath(Application.ExeName) + 'test.wav');
        if mciSendCommand(op.wDeviceID, MCI_SAVE, MCI_SAVE_FILE or MCI_WAIT, cardinal(@sp)) <> 0 then
          raise Exception.Create('MCI error');
    
      finally
        mciSendCommand(op.wDeviceID, MCI_CLOSE, 0, 0);
      end;
    
    end;
    

    【讨论】:

      猜你喜欢
      • 2012-06-09
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 2011-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多