Home My Page Projects MPTK: The Matching Pursuit ToolKit
Summary Activity Forums Tracker Lists Docs News SCM Files

Forum: help

Monitor Forum | Start New Thread Start New Thread
RE: Feedback [ Reply ]
By: Benjamin Roy on 2007-04-20 08:38
[forum:3147]
Before MPTK was released, the fastest available implementation of Matching Pursuit was at best able to analyze signals
of a few times 100'000 samples (a few seconds at CD quality) because of the large memory footprint. Moreover, it took
several minutes or even hours to get a decent reconstruction quality.

When developing MPTK, the first effort was to enable the analysis of larger signals by decreasing significantly the memory footprint.
It is now possible to process much larger signals such as 10'000'000 samples (I am not talking about
Kb here) such as an hour long audio signal, and the amount of RAM, with today's standards, is not crucial for the performance.

However, in the early stage of the development of MPTK, a day or two of computation where necessary to get a decent quality of reconstruction of a one hour long signal. Today's advanced implementation is much faster since, if the dictionary is reasonably redundant, this can be performed in about an hour of computation.

Of course, all these figures about computation time depend on the computing environment, the size of the analyzed signal and that of the dictionary used for the analysis. In particular we are aware that for shorter audio signals, the computation time can be relatively higher compared to the duration of the signal. This is so because the first step of Matching Pursuit is much more costly than the next ones: for the analysis of a long signal, many iterations are necessary so the cost of the first step is somehow negligible, but for shorter ones, the first step and the initialization of the software may cost an important overhead.
This is something we will try to improve, when we find the time to work on it!

RE: Feedback [ Reply ]
By: Benjamin Roy on 2007-04-20 08:36
[forum:3146]
"Ko" is the french shorthand for "Kilo-octet" which means ... "Kilobyte", so it is equal to "Kb".

RE: Feedback [ Reply ]
By: Ji Haiyan on 2007-04-10 11:40
[forum:3081]
Hello,
I forgot that maybe my mail is not available universally,So I registered a new mail xiaoyanzi_789789@hotmail.com.This time may be ok!!
Thanks again!!
Have a good day !!

RE: Feedback [ Reply ]
By: Ji Haiyan on 2007-04-06 10:06
[forum:3063]
Hello,
Is it necessary that the memory is 1GB ?I run the same command line in three different computer configurations(Pentium IV at 2.4GHz with 1GB memory , Pentium IV at 1.60GHz with 512MB memory, Pentium IV at 2.4GHz with 512MB memory) ,but the iteration times are seperately127s, 206s,150s .You can see from the numbers that the difference between them is small.I wonder that the size of the memory has little relation with the iteration time.Is it right?
Have a good day !! Thanks again!!
Best wishes,

RE: Feedback [ Reply ]
By: Ji Haiyan on 2007-04-06 10:06
[forum:3062]
Hello,
I found that the binary file created in the progress of decomposition was very large,for example ,the binary file may be 25.3MB ,whereas the origial wave file I used to decompose is just 777KB.I read the source codes and found there was no ways to deal the binary files such as zip them to realize audio compression or transfer audio files from long distance.On your website i find you and your team are working on upcoming version. I do hope you could consider to add this function in the new version?And I am eager to know the new chacteristics in the next version, when it will occur?
Have a good day !! Thanks again!!

RE: Feedback [ Reply ]
By: Ji Haiyan on 2007-04-06 10:01
[forum:3061]
Hello,
I used a signal which will be broadcast about 24s with the following characteristics:777KB size , 16KHZ sample rate,PCM format ,16bit ,256Kbps。Using the xml dictionary you used ,I decomposed the signal on my computer(Pentium IV at 2.4GHz with 1GB memory) ,the iteration time was about 127s ,which is much longer than expection time 6s (0.25*real time with respect to the original audio signal ) . This time I do not know why so long time it takes?
By the way ,could you mail me the original signals you used to abtain the wonderfull results for me to have another try,and try my best to find whether it is other reasons or not . My email address is xiaoyanzi_789789@126.com.
Looking forward to your response !!
Best regards!!

Feedback [ Reply ]
By: Ji Haiyan on 2007-04-06 10:00
[forum:3060]
Hello,
Thanks for yours immediate reponse. I tried again and it worked in a sense,at least the iteration time was shorter than before !!But I also have other confusions.
In your reply letter you gave me two examples,a short signal and a long signal .The parameters you list are 16kHz, about 320Ko and 16kHz, about 1.83Mo respectively. What do the uints Ko and Mo mean? Are they the uint of signal size ?
Best regards!!

RE: Feedback Also:anywave dictionary [ Reply ]
By: Benjamin Roy on 2007-04-05 13:39
[forum:3042]
BY: Ji Haiyan (petrel)
DATE: 2007-04-04 07:18
SUBJECT: Feedback Also


hello,
I read the information created during the decomposion process,and find the following errors(using the XML files copied from" the The Matching Pursuit Tool Kit User Manual and Developer’s Notes"downloaded from this website):
mptk WARNING -- MP_Mpd_Core_c::step() - Iteration [330] increases the energy of the residual !
mptk INFO -- mpd - (In the following, spurious output of dictionary pieces would be a symptom of parsing errors.)
锘?</window>mptk ERROR -- MP_Anywave_Server_c::add - Can't open the file /udd/toto/table.bin - Returning index maxNumTables (= max + 1).
mptk ERROR -- MP_Anywave_Block_c::init_parameters(...) - The anywave table can't be added to the anywave server. The anywave table remain NULLmptk ERROR -- MP_Anywave_Block_c::init() - Failed to initialize some block parameters in the new Anywave block.
mptk WARNING -- MP_Dict_c::add_blocks(fid) - Failed to instantiate and add the 15-th block to the dictionary. Proceeding with the remaining blocks.
This makes me think that the problem is with the XML files i used .But i am not sure where am i going wrong ?
Looking forward to your help and thanks again!!
Best regards!

Hello,

In this case you try to use an anywave dictionary, this type of dictionary includes an “anywave table data file” which is binary, and built as follows: all the waveforms are written in double type, one after the other, and for each, one channel after the other. The waveforms need have been loaded before using anywave atoms. That’s the difference between parametric atoms, such as Dirac, Gabor, ... and anywave atoms. Therefore, a different syntax has to be employed. In the dictionary file, the anywave block points to a “anywave table definition file” (the path “/udd/toto/table.bin” is given as an example on a Linux Operating System in this case). This file has a XML syntax, to give all the parameters of the waveforms, and points to a binary “anywave table data file”, that gives the data (the path “/udd/toto/table_data.bin” in this case). You could fine more explanations in the mptk-0.5.3-userman.pdf page 11.

Regards.

RE: Feedback [ Reply ]
By: Benjamin Roy on 2007-04-05 13:20
[forum:3041]
Hello,

Sorry for your difficulties to subscribe to this help forums, The Metiss team doesn't manage directly the registration and sometimes there is some problems.

Here is some responses to your main questions.
I hope that it will help.

Best regards.

Have a nice day

time duration of a decomposition [ Reply ]
By: Benjamin Roy on 2007-04-05 13:15
[forum:3039]
The time of computation for a decomposition with a fixed number of iterations is commensurate with this parameters:
-the sample rate and the number of samples, in other worlds the size of the analyzed signal.
-your hardware architecture.
In the example given on the web site, the audio signal has a 16kHz sample rate, yours has a 44kHz sample rate.
Note that if you run a decomposition using a SNR as stopping condition, the time of computation is also influenced by the number of iterations done to reach this fixed SNR.

quality of a signal reconstructed [ Reply ]
By: Benjamin Roy on 2007-04-05 12:45
[forum:3038]
The quality of a signal reconstructed from a book with mpr command line increases with the number of atoms contained in this book.
At each iteration of decomposition of the analyzed signal, the best atom is extracted from the dictionary and put into the book in binary format. The dictionary from which atoms are extracted is a mathematical object used in MPTK, it is defined by a XML file but not contained in this file.

The number of extracted atoms contained in the book is the number of iterations of the decomposition. The more iterations, the better the quality of the reconstructed signal. This number of iterations defines the Signal Noise Ratio, if you want to reach a particular SNR (Signal Noise Ratio), you should specify it in the command line by using -s <SNR> or --snr=<SNR> option instead of using a number of iterations with option -n <N>, --num-iter=<N>|--num-atoms=<N> to stop the decomposition.

The XML file called dictionary merely describes the “type” of atoms that will be contained in the dictionary. The size of dictionary (that is to say the number of atom available for the decomposition of the signal) is determined when the mpd command is run. It depends on the structure of the dictionary, described in the XML file, and on the number of samples of the analyzed signal.
You can know the number of atoms available in the dictionary and the number of atoms extracted in the book by looking at the console output of the mpd command. For example, this two decomposition based on the same dictionary containing only Gabor atoms:

-With a short signal (16kHz, about 320 Ko)
mptk INFO -- mpd - -------------------------
mptk INFO -- mpd - Starting Matching Pursuit on signal [Z:\MPTK\used_file\s1-short.wav] with dictionary [Z:\MPTK\used_file\Gabor_dict_structure.xml].
mptk INFO -- mpd - -------------------------
mptk INFO -- Conditions - This run will iterate until the SNR goes above [80], using [998397] atoms.
mptk INFO -- Conditions - The resulting book will be written to book file [Z:\MPTK\used_file\booktest.bin].
mptk INFO -- Conditions - The residual will not be saved.
mptk INFO -- Conditions - The energy decay will not be saved.
mptk INFO -- mpd - The initial signal energy is : 226.272
mptk INFO -- mpd - STARTING TO ITERATE
mptk INFO -- Current state - The current SNR [80.0002] reached or passed the target SNR [80] in [213391] iterations.
mptk INFO -- mpd - ------------------------
mptk INFO -- mpd - MATCHING PURSUIT RESULTS:
mptk INFO -- mpd - ------------------------
mptk INFO -- mpd - Duration of initialisation [0.624988] s:
mptk INFO -- mpd - Duration of iterations [24.905771] s:
mptk INFO -- Result - [213391] iterations have been performed.
mptk INFO -- Result - ([213391] atoms have been selected out of the [998397] atoms of the dictionary.)
mptk INFO -- Result - The initial signal energy was [226.272].
mptk INFO -- Result - The residual energy is now [2.26263e-006].
mptk INFO -- Result - The SNR is now [80].

-With a longer signal (16kHz, about 1.83 Mo)
mptk INFO -- mpd - -------------------------
mptk INFO -- mpd - Starting Matching Pursuit on signal [Z:\MPTK\used_file\s1-long.wav] with dictionary [Z:\MPTK\used_file\Gabor_dict_structure.xml].
mptk INFO -- mpd - -------------------------
mptk INFO -- Conditions - This run will iterate until the SNR goes above [80], using [5811147] atoms.
mptk INFO -- Conditions - The resulting book will be written to book file [Z:\MPTK\used_file\booktest.bin].
mptk INFO -- Conditions - The residual will not be saved.
mptk INFO -- Conditions - The energy decay will not be saved.
mptk INFO -- mpd - The initial signal energy is : 2664.06
mptk INFO -- mpd - STARTING TO ITERATE
mptk INFO -- Current state - The current SNR [80] reached or passed the target SNR [80] in [2578834] iterations.
mptk INFO -- mpd - ------------------------
mptk INFO -- mpd - MATCHING PURSUIT RESULTS:
mptk INFO -- mpd - ------------------------
mptk INFO -- mpd - Duration of initialisation [1.593719] s:
mptk INFO -- mpd - Duration of iterations [199.371172] s:
mptk INFO -- Result - [2578834] iterations have been performed.
mptk INFO -- Result - ([2578834] atoms have been selected out of the [5811147] atoms of the dictionary.)
mptk INFO -- Result - The initial signal energy was [2664.06].
mptk INFO -- Result - The residual energy is now [2.66406e-005].
mptk INFO -- Result - The SNR is now [80].

The used dictionary:

<?xml version="1.0" encoding="ISO-8859-1"?>
<libVersion>0.2</libVersion>
<dict>
<block type="gabor">
<par type="windowLen">128</par>
<par type="windowShift">32</par>
<par type="fftSize">128</par>
<window type="gauss" opt="0"></window>
</block>
<block type="gabor">
<par type="windowLen">256</par>
<par type="windowShift">64</par>
<par type="fftSize">256</par>
<window type="gauss" opt="0"></window>
</block>
<block type="gabor">
<par type="windowLen">512</par>
<par type="windowShift">128</par>
<par type="fftSize">512</par>
<window type="gauss" opt="0"></window>
</block>
<block type="gabor">
<par type="windowLen">1024</par>
<par type="windowShift">256</par>
<par type="fftSize">1024</par>
<window type="gauss" opt="0"></window>
</dict>

Regards.

Feedback Also [ Reply ]
By: Ji Haiyan on 2007-04-04 07:18
[forum:3029]
hello,
I read the information created during the decomposion process,and find the following errors(using the XML files copied from" the The Matching Pursuit Tool Kit User Manual and Developer’s Notes"downloaded from this website):
mptk WARNING -- MP_Mpd_Core_c::step() - Iteration [330] increases the energy of the residual !
mptk INFO -- mpd - (In the following, spurious output of dictionary pieces would be a symptom of parsing errors.)
锘?</window>mptk ERROR -- MP_Anywave_Server_c::add - Can't open the file /udd/toto/table.bin - Returning index maxNumTables (= max + 1).
mptk ERROR -- MP_Anywave_Block_c::init_parameters(...) - The anywave table can't be added to the anywave server. The anywave table remain NULLmptk ERROR -- MP_Anywave_Block_c::init() - Failed to initialize some block parameters in the new Anywave block.
mptk WARNING -- MP_Dict_c::add_blocks(fid) - Failed to instantiate and add the 15-th block to the dictionary. Proceeding with the remaining blocks.
This makes me think that the problem is with the XML files i used .But i am not sure where am i going wrong ?
Looking forward to your help and thanks again!!
Best regards!

Feedback [ Reply ]
By: Ji Haiyan on 2007-04-04 04:08
[forum:3028]
hello,
It is not easy to register successfully for me who do not know too much french。
I downloaded the required tools and packages ,and installed them on windows operating system,following the instructions “How to build MPTK with Cmake ”. I decomposed several sounds ,but to my surprise ,the audios I decomposed did not live up to the requirements you described on the home page of this website not only the compution speed but also the qulity.For example ,one of the audios I decomposed is 2.09MB in size ,44KB sample rate,PCM audio format,the qulity is just ok when I run 100000 iterations which may take an hour .It is saied that MPTK have been widely applied to many areas such as the data compression ,feature exaction ,and model reduction,so such results made me very puzzled ,and do not konw what is wrong ?
Looking forward to your response. Have a nice day!