2010-08-09 11 views
1

Y a-t-il un composant ou un code qui permet ce qui suit: Enregistrer un ou plusieurs mots prononcés et les sauvegarder dans un fichier pouvant être lu. Le fichier doit pouvoir être lu sur XP, Vista et Windows 7. Le fichier peut être autonome ou enregistré dans une source de données.Enregistrement/enregistrement vocal en Delphi

[Utilisation de Delphi 7 pour créer des applications sur XP et l'utilisation de la base de données absolue.]

Répondre

4

Les fonctions MMSystem.pas vous permettent de le faire en utilisant l'API de Windows. Vous pouvez utiliser des fonctions de haut niveau tels que le MCI functions et PlaySound, ou des fonctions de bas niveau tels que waveInOpen, waveInPrepareHeader, waveInProc etc.

Si vous voulez un contrôle élevé, vous devez vraiment utiliser les fonctions de bas niveau. Sauf pour PlaySound, je n'ai jamais utilisé l'interface MCI de haut niveau.

MCI

C'est le code de travail:

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; 
Questions connexes