[CLAM] Re: Cepstral Transform

Rhywek rhywek at o2.pl
Tue Jul 19 07:44:21 PDT 2005


Thank you very much for all the help! I made it work today by changing
different part. I suppose it was the fault of the normalization in
windowing. The eAnalysis normalization was making the signal extremely
weak. But the eNone or eMax work much better and now my MFCCs are not
0s, but have some values.

Thank you one more time.
Greetings,
Rhywek.

eduard wrote:

> Hi Rhywek,
>
> I had the same problem a few weeks ago. I think you must set the
> following:
> 1. number of bands in MelFilterBankConfig
> 2. number of mel coefficients (NumMelCoefficients) as well as the
> number of cepstrum coefficients in CepstralTransformConfig.
>
> A piece of code that would work is as follows:
>
> //member variables:
>
>   Frame                         _frame;
>   MelFilterBank           _melFilterBank;
>   CepstralTransform   _cepstralTransform;
>   MelCepstrum            _melCepstrum;
>   MelSpectrum            _melSpectrum;
>
>
> // member functions:
>
> void ConfigureMelCepstrumTransform()
> {
>   // Configure melfilter bank to obtain mel spectrum from spectrum:
>
>   MelFilterBankConfig melConf;
>   melConf.SetSpectrumSize( _fftSize/2 + 1);
>   melConf.SetSpectralRange( _sr/2.);
>   melConf.SetLowCutoff( 20. );
>   melConf.SetHighCutoff( _sr/2. );
>   melConf.SetNumBands( 20 );   
> <--------------------------------------------------------must set this
>   _melFilterBank.Configure(melConf);
>
>   // Configure Cepstral Transformation:
>
>   _melSpectrum.SetSpectralRange( _sr/2. );
>   _melSpectrum.SetLowCutoff( 20. );
>   _melSpectrum.SetHighCutoff( _sr/2. );
>   _melSpectrum.SetNumBands( 20 );
>   _melCepstrum.AddCoefficients();
>   _melCepstrum.UpdateData();
>   CepstralTransformConfig cepsConf;
>   cepsConf.SetNumMelCoefficients( 20 );     
> <------------------------------------------------must set this
>   cepsConf.SetNumCepstrumCoefficients( 12 );
>   _cepstralTransform.Configure( cepsConf );
> }
>
> void ComputeCepstralTransform()
> {
>   _melSpectrum.SetCenterTime( _frame.GetCenterTime() );
>   _melCepstrum.SetCenterTime( _frame.GetCenterTime() );
>   _melFilterBank.Start();
>   _melFilterBank.Do( _frame.GetSpectrum(), _melSpectrum );
>   _melFilterBank.Stop();
>   _cepstralTransform.Start();
>   _cepstralTransform.Do( _melSpectrum, _melCepstrum );
>   _cepstralTransform.Stop();
> }
>
>
>
> Eduard
>
>
> clam-request at iua.upf.es wrote:
>
>> Send CLAM mailing list submissions to
>>     clam at iua.upf.es
>>
>> To subscribe or unsubscribe via the World Wide Web, visit
>>     http://iua-mail.upf.es/mailman/listinfo/clam
>> or, via email, send a message with subject or body 'help' to
>>     clam-request at iua.upf.es
>>
>> You can reach the person managing the list at
>>     clam-admin at iua.upf.es
>>
>> When replying, please edit your Subject line so it is more specific
>> than "Re: Contents of CLAM digest..."
>>
>>
>> Today's Topics:
>>
>>   1. CepstralTransform (Rhywek)
>>   2. Re: CepstralTransform (David Garcia Garzon)
>>   3. =?iso-8859-2?Q?Re:_[CLAM]_CepstralTransform?=
>> (=?iso-8859-2?Q?Rhywek?=)
>>   4. Re: Re: [CLAM] CepstralTransform (Miguel
>> =?ISO-8859-1?Q?Ram=EDrez_J=E1vega?=)
>>
>> --__--__--
>>
>> Message: 1
>> Date: Mon, 18 Jul 2005 14:05:56 +0200
>> From: Rhywek <rhywek at o2.pl>
>> To: clam at iua.upf.es
>> Subject: [CLAM] CepstralTransform
>>
>> Hello, all.
>> I am running into a problem with MFCC extraction. Here is the
>> relevant code:
>>
>> ...
>>      CLAM::XMLStorage::Dump(melSpectrum,
>>                   "melSpectrum",
>>                   "debugmelSpectrum.xml");
>>
>>        CLAM::CepstralTransformConfig cepstralTransformConfig;
>>
>>      
>> cepstralTransformConfig.SetNumMelCoefficients(floor(3*log(fs)));//It is
>> 30 here
>>        cepstralTransformConfig.SetNumCepstrumCoefficients(13);
>>        cepstralTransformConfig.SetUseBase10(false);
>>
>>        CLAM::CepstralTransform
>> cepstralTransform(cepstralTransformConfig);
>>
>>        CLAM::MelCepstrum melCepstrum;
>>
>>        cepstralTransform.Start();
>>
>>        cepstralTransform.Do(melSpectrum,melCepstrum);
>>
>>        cepstralTransform.Stop();
>>               CLAM::XMLStorage::Dump(melCepstrum,"MFCC","MFCC.xml");
>> ...
>>
>> After execution the file "debugmelSpectrum.xml" contains one long line:
>> <melSpectrum><SpectralRange>22050</SpectralRange><CenterTime>0</CenterTime><Lo
>>
>> wCutoff>0</LowCutoff><HighCutoff>22050</HighCutoff><NumBands>30</NumBands><Coe
>>
>> fficients size="30">189.915 132.907 44.3864 34.6573 16.0021 26.2483
>> 28.6773 17
>> .0859 38.7323 15.6943 17.6948 83.4548 52.0764 41.1847 25.1965 10.6456
>> 11.1537
>> 6.51261 4.43087 4.85767 4.84433 4.58867 4.33651 4.24629 4.20944 3.9518
>> 3.70034
>> 3.66503 3.54066 3.77783</Coefficients></melSpectrum>
>>
>> I suppose it is correct data.
>> But the file "MFCC.xml" contains oneline line:
>> <MFCC><CenterTime>0</CenterTime><LowCutoff>0</LowCutoff><HighCutoff>22050</Hig
>>
>> hCutoff><Coefficients size="13">0 0 0 0 0 0 0 0 0 0 0 0
>> 0</Coefficients></MFCC>
>>
>> Now why the coefficients are all 0? I browsed the code of the Do method
>> and it should work as it is... I also wanted to debug it, but I ran into
>> different problem - I could not see the variables and objects. I use gdb
>> for debugging and if I write "p melFloor" or any other local variable,
>> it complains. So I tried to make it like this:
>> CXXFLAGS="-ggdb" make CONFIG=release -C build
>> but then I set the breakpoint like:
>> b CLAM::CepstralTransform::Do(CLAM::MelSpectrum const&,
>> CLAM::MelCepstrum&)
>> But when I run the program with "run", the debugging was hardly
>> possible. When I tried to list the code with "l" it shown something
>> like:
>> 1      <<C++-namespaces>>: No such file or directory.
>>       in <<C++-namespaces>>
>>
>> So could you please give me some hints how to debug CLAM programs in
>> gdb?
>>
>> Thanks in advance,
>> Rhywek.
>>
>>
>>
>>
>> --__--__--
>>
>> Message: 2
>> From: David Garcia Garzon <dgarcia at iua.upf.es>
>> Organization: Institut Universitari de l'Audiovisual
>> To: clam at iua.upf.es
>> Subject: Re: [CLAM] CepstralTransform
>> Date: Mon, 18 Jul 2005 14:46:11 +0200
>>
>> I also don't know exactly what is happening there but i can give you
>> some=20
>> hints on debugging CLAM. Firstly, you should compile with
>> CONFIG=3D'debug'.=
>> =20
>> CXXFLAGS options are overwritten by the CONFIG selection. We found
>> kdbg and=
>> =20
>> ddd being good graphical front ends for gdb you could use them for
>> easier=20
>> debugging. DynamicTypes, like MelCepstrum, have some limitations with=20
>> debuggers inspection, you should print them in XML as you already did.
>>
>>
>> A Dilluns 18 Juliol 2005 14:05, Rhywek va escriure:
>>  
>>
>>> Hello, all.
>>> I am running into a problem with MFCC extraction. Here is the relevant
>>> code:
>>>
>>> ...
>>>      CLAM::XMLStorage::Dump(melSpectrum,
>>>                   "melSpectrum",
>>>                   "debugmelSpectrum.xml");
>>>
>>>        CLAM::CepstralTransformConfig cepstralTransformConfig;
>>>
>>>
>>> cepstralTransformConfig.SetNumMelCoefficients(floor(3*log(fs)));//It is
>>> 30 here
>>>        cepstralTransformConfig.SetNumCepstrumCoefficients(13);
>>>        cepstralTransformConfig.SetUseBase10(false);
>>>
>>>        CLAM::CepstralTransform
>>> cepstralTransform(cepstralTransformConfig=
>>>   
>>
>> );
>>  
>>
>>>        CLAM::MelCepstrum melCepstrum;
>>>
>>>        cepstralTransform.Start();
>>>
>>>        cepstralTransform.Do(melSpectrum,melCepstrum);
>>>
>>>        cepstralTransform.Stop();
>>>
>>>        CLAM::XMLStorage::Dump(melCepstrum,"MFCC","MFCC.xml");
>>> ...
>>>
>>> After execution the file "debugmelSpectrum.xml" contains one long line:
>>> <melSpectrum><SpectralRange>22050</SpectralRange><CenterTime>0</CenterTim=
>>>
>>>   
>>
>> e>
>>  
>>
>>> <Lo
>>> wCutoff>0</LowCutoff><HighCutoff>22050</HighCutoff><NumBands>30</NumBands=
>>>
>>> <
>>> Coe fficients size=3D"30">189.915 132.907 44.3864 34.6573 16.0021
>>> 26.2483
>>> 28.6773 17
>>> .0859 38.7323 15.6943 17.6948 83.4548 52.0764 41.1847 25.1965 10.6456
>>> 11.1537
>>> 6.51261 4.43087 4.85767 4.84433 4.58867 4.33651 4.24629 4.20944 3.9518
>>> 3.70034
>>> 3.66503 3.54066 3.77783</Coefficients></melSpectrum>
>>>
>>> I suppose it is correct data.
>>> But the file "MFCC.xml" contains oneline line:
>>> <MFCC><CenterTime>0</CenterTime><LowCutoff>0</LowCutoff><HighCutoff>22050=
>>>
>>>   
>>
>> </
>>  
>>
>>> Hig hCutoff><Coefficients size=3D"13">0 0 0 0 0 0 0 0 0 0 0 0
>>> 0</Coefficients></MFCC>
>>>
>>> Now why the coefficients are all 0? I browsed the code of the Do method
>>> and it should work as it is... I also wanted to debug it, but I ran
>>> into
>>> different problem - I could not see the variables and objects. I use
>>> gdb
>>> for debugging and if I write "p melFloor" or any other local variable,
>>> it complains. So I tried to make it like this:
>>> CXXFLAGS=3D"-ggdb" make CONFIG=3Drelease -C build
>>> but then I set the breakpoint like:
>>> b CLAM::CepstralTransform::Do(CLAM::MelSpectrum const&,
>>> CLAM::MelCepstrum=
>>>   
>>
>> &)
>>  
>>
>>> But when I run the program with "run", the debugging was hardly
>>> possible. When I tried to list the code with "l" it shown something
>>> like:
>>> 1      <<C++-namespaces>>: No such file or directory.
>>>       in <<C++-namespaces>>
>>>
>>> So could you please give me some hints how to debug CLAM programs in
>>> gdb?
>>>
>>> Thanks in advance,
>>> Rhywek.
>>>
>>>
>>>
>>> _______________________________________________
>>> CLAM mailing list
>>> CLAM at iua.upf.es
>>> http://www.iua.upf.es/mtg/clam
>>>   
>>
>>
>> =2D-=20
>> David Garc=EDa Garz=F3n <david.garcia at removespam.iua.upf.es>
>> Phone: 034 93 542 21 99
>> Music Technology Group, Institut Universitari de l'Audiovisual
>> Universitat Pompeu Fabra
>>
>> =2D-=20
>> David Garc=EDa Garz=F3n <david.garcia at removespam.iua.upf.es>
>> Phone: 034 93 542 21 99
>> Music Technology Group, Institut Universitari de l'Audiovisual
>> Universitat Pompeu Fabra
>>
>>
>>
>> --__--__--
>>
>> Message: 3
>> From: =?iso-8859-2?Q?Rhywek?= <rhywek at o2.pl>
>> To: clam at iua.upf.es
>> Date: Mon, 18 Jul 2005 15:35:00 +0200
>> Subject: [CLAM] =?iso-8859-2?Q?Re:_[CLAM]_CepstralTransform?=
>>
>>  
>>
>>> I also don't know exactly what is happening there but i can give
>>>   
>>
>> you some  
>>
>>> hints on debugging CLAM. Firstly, you should compile with
>>>   
>>
>> CONFIG='debug'. I do this.
>>  
>>
>>> CXXFLAGS options are overwritten by the CONFIG selection. We found
>>>   
>>
>> kdbg and  
>>
>>> ddd being good graphical front ends for gdb you could use them for
>>>   
>>
>> easier  
>>
>>> debugging.
>>>   
>>
>> Thanks, I will check them.
>>
>>  
>>
>>> DynamicTypes, like MelCepstrum, have some limitations with debuggers
>>> inspection, you should print them in XML as you already did.
>>>   
>>
>>
>> Yes I did it and it gives absolutely no clue about what is wrong. On
>> one step it is OK, but the next one gives only zeros, so I wanted to
>> inspect what is going on in the meantime. And to do that I want to
>> inspect simple int, double, std::vector, etc. and not dynamic types,
>> but I cannot do this. Anyone has a clue how I could do that?
>>
>> And still if there is someone with CLAM experience who could take a
>> look at my code and say what is wrong, I would highly appreciate that.
>>
>>  
>>
>>> A Dilluns 18 Juliol 2005 14:05, Rhywek va escriure:
>>>   
>>>
>>>> Hello, all.
>>>> I am running into a problem with MFCC extraction. Here is the
>>>>     
>>>
>> relevant
>>  
>>
>>>> code:
>>>>
>>>> ...
>>>>      CLAM::XMLStorage::Dump(melSpectrum,
>>>>                   "melSpectrum",
>>>>                   "debugmelSpectrum.xml");
>>>>
>>>>        CLAM::CepstralTransformConfig cepstralTransformConfig;
>>>>
>>>>
>>>>
>>>>     
>>>
>> cepstralTransformConfig.SetNumMelCoefficients(floor(3*log(fs)));//It is
>>  
>>
>>>> 30 here
>>>>        cepstralTransformConfig.SetNumCepstrumCoefficients(13);
>>>>        cepstralTransformConfig.SetUseBase10(false);
>>>>
>>>>        CLAM::CepstralTransform
>>>>     
>>>
>> cepstralTransform(cepstralTransformConfig);
>>  
>>
>>>>        CLAM::MelCepstrum melCepstrum;
>>>>
>>>>        cepstralTransform.Start();
>>>>
>>>>        cepstralTransform.Do(melSpectrum,melCepstrum);
>>>>
>>>>        cepstralTransform.Stop();
>>>>
>>>>        CLAM::XMLStorage::Dump(melCepstrum,"MFCC","MFCC.xml");
>>>> ...
>>>>
>>>> After execution the file "debugmelSpectrum.xml" contains one
>>>>     
>>>
>> long line:
>>  
>>
>> <melSpectrum><SpectralRange>22050</SpectralRange><CenterTime>0</CenterTime>
>>
>>  
>>
>>>> <Lo
>>>>
>>>>     
>>>
>> wCutoff>0</LowCutoff><HighCutoff>22050</HighCutoff><NumBands>30</NumBands><
>>
>>  
>>
>>>> Coe fficients size="30">189.915 132.907 44.3864 34.6573 16.0021
>>>>     
>>>
>> 26.2483
>>  
>>
>>>> 28.6773 17
>>>> .0859 38.7323 15.6943 17.6948 83.4548 52.0764 41.1847 25.1965
>>>>     
>>>
>> 10.6456
>>  
>>
>>>> 11.1537
>>>> 6.51261 4.43087 4.85767 4.84433 4.58867 4.33651 4.24629 4.20944
>>>>     
>>>
>> 3.9518
>>  
>>
>>>> 3.70034
>>>> 3.66503 3.54066 3.77783</Coefficients></melSpectrum>
>>>>
>>>> I suppose it is correct data.
>>>> But the file "MFCC.xml" contains oneline line:
>>>>
>>>>     
>>>
>> <MFCC><CenterTime>0</CenterTime><LowCutoff>0</LowCutoff><HighCutoff>22050</
>>
>>  
>>
>>>> Hig hCutoff><Coefficients size="13">0 0 0 0 0 0 0 0 0 0 0 0
>>>> 0</Coefficients></MFCC>
>>>>
>>>> Now why the coefficients are all 0? I browsed the code of the Do
>>>>     
>>>
>> method
>>  
>>
>>>> and it should work as it is... I also wanted to debug it, but I
>>>>     
>>>
>> ran into
>>  
>>
>>>> different problem - I could not see the variables and objects. I
>>>>     
>>>
>> use gdb
>>  
>>
>>>> for debugging and if I write "p melFloor" or any other local
>>>>     
>>>
>> variable,
>>  
>>
>>>> it complains. So I tried to make it like this:
>>>> CXXFLAGS="-ggdb" make CONFIG=release -C build
>>>> but then I set the breakpoint like:
>>>> b CLAM::CepstralTransform::Do(CLAM::MelSpectrum const&,
>>>>     
>>>
>> CLAM::MelCepstrum&)
>>  
>>
>>>> But when I run the program with "run", the debugging was hardly
>>>> possible. When I tried to list the code with "l" it shown
>>>>     
>>>
>> something like:
>>  
>>
>>>> 1      <<C++-namespaces>>: No such file or directory.
>>>>       in <<C++-namespaces>>
>>>>
>>>> So could you please give me some hints how to debug CLAM
>>>>     
>>>
>> programs in gdb?
>>  
>>
>>>> Thanks in advance,
>>>> Rhywek.
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> CLAM mailing list
>>>> CLAM at iua.upf.es
>>>> http://www.iua.upf.es/mtg/clam
>>>>     
>>>
>>> -- 
>>> David García Garzón <david.garcia at removespam.iua.upf.es>
>>> Phone: 034 93 542 21 99
>>> Music Technology Group, Institut Universitari de l'Audiovisual
>>> Universitat Pompeu Fabra
>>>
>>> -- 
>>> David García Garzón <david.garcia at removespam.iua.upf.es>
>>> Phone: 034 93 542 21 99
>>> Music Technology Group, Institut Universitari de l'Audiovisual
>>> Universitat Pompeu Fabra
>>>
>>>
>>> _______________________________________________
>>> CLAM mailing list
>>> CLAM at iua.upf.es
>>> http://www.iua.upf.es/mtg/clam
>>>
>>>   
>>
>>
>>
>>
>>
>> --__--__--
>>
>> Message: 4
>> Subject: Re: [CLAM] Re: [CLAM] CepstralTransform
>> From: Miguel =?ISO-8859-1?Q?Ram=EDrez_J=E1vega?= <mramirez at iua.upf.es>
>> To: Rhywek <rhywek at o2.pl>
>> Cc: clam at iua.upf.es
>> Date: Mon, 18 Jul 2005 15:56:44 +0200
>>
>>
>>  
>>
>>> And still if there is someone with CLAM experience who could take a
>>> look at my code and say what is wrong, I would highly appreciate that.
>>>
>>>   
>>
>>
>> Just send an e-mail to the list with the code attached :)
>>
>> Miguel.
>>
>>
>>
>>
>>
>> --__--__--
>>
>> _______________________________________________
>> CLAM mailing list
>> CLAM at iua.upf.es
>> http://iua-mail.upf.es/mailman/listinfo/clam
>>
>>
>> End of CLAM Digest
>>
>>  
>>
>
>
>






More information about the clam-users mailing list