[Clam-devel] MFCC Loops

Xavier Amatriain xavier at amatriain.net
Mon Sep 7 14:01:13 PDT 2009


I don't think there is a simple example of this. However, if I remember 
right, there are two ways to do the loop if you want to have overlapping 
windows or frames:

1) Read the whole audio from the audio file into a CLAM::Audio and 
manage the "chunk" you send to the SpectralAnalysis Do by advancing your 
read pointer by "hopsize" (which, if overlapping, will be less than 
windowSize)

2) Use ports and let them manage this for you. This is what you can see 
if you analyze the code in SMSAnalysisCore.cxx

http://clam-project.org/doc/CLAM-doxygen/SMSAnalysisCore_8cxx-source.html

If you don't need overlap, SpectralAnalysis will take care of everything 
(windowing, etc...) as long as you configure the parameters right so you 
don't need to worry about 1 or 2.

X

paul simmons wrote:
> well, let me change the question then. is there a "code" sample for
> doing spectral analysis with overlapping windows (ie using windowsize
> and hopsize parameters)?
>
>
>
> On Mon, Sep 7, 2009 at 8:24 PM, Pau Arumí<pau.arumi at barcelonamedia.org> wrote:
>   
>> Hi Paul,
>> I didn't understand exactly where the problem is.
>> (However I think the most qualified to answer you is David Garcia who is
>> currently on holidays. He'll be back in a week or two.)
>>
>> Cheers
>> P
>>
>> El dl 07 de 09 de 2009 a les 16:54 +0200, en/na paul simmons va
>> escriure:
>>     
>>> Hi,
>>> I am trying to do MFCC extraction. As far as I get; the steps are
>>>
>>> Read an "Audio"
>>> Run "SpectralAnalysis" on output of "Audio"
>>> Run "MelFilterBank" on output of "SpectralAnalysis"
>>> Run "CepstralTransform" on output of "MelFilterBank"
>>>
>>> right?
>>>
>>> If so; I cannot understand where to do looping, for example if I do:
>>>
>>>     while(mReader.Do(audio))
>>>     {
>>>         spectralAnalysis.Do(audio, spectrum);
>>>         melFilterBank.Do(spectrum, melSpectrum);
>>>         cepstralTransform.Do(melSpectrum, melCepstrum);
>>>
>>>         CLAM::XMLStorage::Dump(audio,"Audio",a);
>>>         CLAM::XMLStorage::Dump(spectrum, "Spectrum",s);
>>>         CLAM::XMLStorage::Dump(melSpectrum, "MelSpectrum",m);
>>>         CLAM::XMLStorage::Dump(melCepstrum, "MelCepstrum",n);
>>>     }
>>>
>>> it applies mfcc to each read audio patch (mentioned by Audio.SetSize)
>>> and got one MFCC feature vector. But I cannot understand how
>>> WindowSize or HopSize is applied in this fashion. Because since Audio
>>> is read in non-overlapping windows with mReader.Do(), overlapped
>>> windows are run only for current audio part
>>>
>>> I think there must be another , more correct way to get overlapping
>>> windows continuesly in whole audio, but cannot find it. Any ideas?
>>>
>>> Thanks...
>>>
>>> _______________________________________________
>>> Clam-devel mailing list
>>> Clam-devel at llistes.projectes.lafarga.org
>>> https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel
>>>       
>> _______________________________________________
>> Clam-devel mailing list
>> Clam-devel at llistes.projectes.lafarga.org
>> https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel
>>
>>     
>
> _______________________________________________
> Clam-devel mailing list
> Clam-devel at llistes.projectes.lafarga.org
> https://llistes.projectes.lafarga.org/cgi-bin/mailman/listinfo/clam-devel
>   





More information about the clam-devel mailing list