[CLAM] Re: Cepstral Transform

Vegard Sandvold vegard.sandvold at notam02.no
Wed Aug 3 02:11:25 PDT 2005


Hi Rhywek,

I can confirm that eAnalysis normalization in the windowing causes only
zeros in the MFCC. Better to use eNone.

Cheers!
Vegard


On Tue, July 19, 2005 16:44, Rhywek said:
> 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: 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 Ramírez Jávega <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
>>>
>>>
>>>
>>
>>
>>
>
>
>
> _______________________________________________
> CLAM mailing list
> CLAM at iua.upf.es
> http://www.iua.upf.es/mtg/clam
>


-- 
Vegard Sandvold
Systemansvarlig

NOTAM
Nedre gate 5
0551 Oslo
Telefon: (+47) 22 35 80 60
Fax: (+47) 22 35 80 61
Web: http://www.notam02.no
E-post: drift at notam02.no







More information about the clam-users mailing list