Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как прочитать заголовок wav файла?

01.01.2007
type
 
TWaveHeader = record
    ident1
: array[0..3] of Char;      // Must be "RIFF"
    len
: DWORD;                       // Remaining length after this header
    ident2
: array[0..3] of Char;      // Must be "WAVE"
    ident3
: array[0..3] of Char;      // Must be "fmt "
    reserv
: DWORD;                    // Reserved 4 bytes
    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
    ident4
: array[0..3] of Char;      //Must be "data"
end;

With this structure you can get all the information's about a wave file you want to.

After this header following the wave data which contains the data for playing the wave file.

Now we trying to get the information's from a wave file. To be sure it's really a wave file, we test the information's:

function GetWaveHeader(FileName: TFilename): TWaveHeader;
const
  riff
= 'RIFF';
  wave
= 'WAVE';
var
  f
: TFileStream;
  w
: TWaveHeader;
begin
 
if not FileExists(Filename) then
   
exit; //exit the function if the file does not exists
 
 
try
    f
:= TFileStream.create(Filename, fmOpenRead);
    f
.Read(w, Sizeof(w)); //Reading the file header
 
   
if w.ident1 <> riff then
   
begin //Test if it is a RIFF file, otherwise exit
     
Showmessage('This is not a RIFF File');
     
exit;
   
end;
 
   
if w.ident2 <> wave then
   
begin //Test if it is a wave file, otherwise exit
     
Showmessage('This is not a valid wave file');
     
exit;
   
end;
 
 
finally
    f
.free;
 
end;
 
 
Result := w;
end;

Взято с Delphi Knowledge Base: https://www.baltsoft.com/