The RESPITE CASA Toolkit Project
Release Notes
| VERSION |
DATE |
NOTES |
| CTK v.1.3.5 |
22/4/07 |
GCC v4.x fixes |
General
- Fixed problems that were preventing compilation with GCC 4.x.
Bugs Fixed
- ctk: Fix bug causing 'Save Now' dialog to pop up every time ctk starts.
| VERSION |
DATE |
NOTES |
| CTK v.1.3.4 |
5/11/04 |
Decoder memory optimisations |
General
- Some optimisations to the multisource decoder to reduce the memory requirements.
- Logfile2 now records detailed information about all decoder settings.
Bugs Fixed
- decoder: The XML format for logfile2 is now correct.
- GroupsStartEndDetection: The minimum value for the look-ahead window size is now correctly set to 0.
| VERSION |
DATE |
NOTES |
| CTK v.1.3.3 |
19/03/04 |
Fixes a couple of decoder bugs |
General
- Fixes problems with decoder logfiles
Bugs Fixed
- decoder: Likelihoods in logfile2 are now correctly reported
- decoder: logfile2 got broken in v1.3.2. It now operates correctly again.
| VERSION |
DATE |
NOTES |
| CTK v.1.3.2 |
19/02/04 |
Several minor bug fixes |
General
- Fixes a host of small problems with the parallel model decoder and a couple of issues with the GUI.
Bugs Fixed
- decoder: All info in the logfile2 is now meaningful when using parallel models.
- decoder: Parallel models now produce correct running recognition scores.
- decoder: The parallel model 1: and 2: labels are now correct.
- decoder: Parallel model decoder no longer outputs spurious 0 length models.
- decoder: Fix a bug causing a potential crash during scoring when an input is recognised as silence.
- ctk: Fixed obscure bug causing crashes after deletion of a composite block.
- ctk: Clears undo list when after running to prevent potential problems.
| VERSION |
DATE |
NOTES |
| CTK v.1.3.1 |
14/02/04 |
Bug fixes + support for parallel model decoding, parameter validation |
General
- Some support for Multisource parallel model decoding. Has not been fully tested.
- Parameter range checking added
New Features
- msdecoder: Multisource decoder can perform parallel model decoding i.e. an HMM can be supplied to describe the noise source.
- msdecoder: NOISE_HMM_FILE and NOISE_GRAMMAR_FILE parameters added to Multisource decoder as part of parallel model decoding support.
- msdecoder: The fragment considered by the decoder to be part of the speech source are now recorded in the log file as a list of fragment labels rather than the previous cryptic notation.
- msdecoder:
- param: all parameter values are checked against a possible valid range. The GUI will refuse entry of invalid parameters. CTKScript will exit with a suitable error message if it encounters an invalid parameter value.
- ColourMask: Passes the special group '-1' directly to its output without processing it.
Bugs Fixed
- decoder: SILENCE param can now accept multiple values as a space separated list e.g. SILENCE="s S".
- file: The .au format sound file support has been fixed.
- headers: Some missing cassert headers have been added.
| VERSION |
DATE |
NOTES |
| CTK v.1.3.0 |
04/08/03 |
Greatly improved speech decoder; several new blocks and changes to existing blocks |
General
- Many improvements to the decoder, including ability to handle subword modelling.
- Several new blocks, and extensions to existing blocks. Plus internal changes to block class.
- Code will now compile with GCC 3.2 without any warnings
New Blocks
- Correlator - replaces autocorrel and extends it to handle cross-correlation as well as autocorrelation.
- Skeletonise - Narrows signal peaks - a step used in the computation of summary correlograms.
- MDisplayFrame - A block similar to MDisplay but capable of animating sequences of frames.
- Sum - Simply computes the sum of the values over a given dimension.
New Features
- decoder: Now supports beam pruning.
- decoder: Now supports sub word unit modelling (e.g. triphone modelling)
- decoder: Output labels can now be longer than a single character.
- decoder: Token passing re-written to operate more efficiently : no longer physically copies tokens along every path.
- block: several internal changes and a new way of registering new blocks.
Bugs Fixed
- general: Fixed a major problem with the data flow that was preventing the smooth flow of data in some systems in which data streams are merged.
- general: Fixed a bug in the propagation of the samplerate parameter.
| VERSION |
DATE |
NOTES |
| CTK v.1.2.4 |
11/04/03 |
Porting to GCC 3.2 |
General
- Code will now compile with GCC 3.2
- GMM probability calculations and HMM decoding are now more cleanly split.
- Introduced tool for manipulating HMMs.
- Rewriting of ctk_HMM.cpp. New class constructed for transition matrices.
New Blocks
- HMMDecoder: Performs decoding given a set of state probabilities.
New Features
- decoder: Now reports log likelihoods for each hypothesis
- CTKTransHMM: Tool for reading an HMM, transforming it and rewriting the HMM file.
- ctk_HMM_edit.cpp: Some code for manipulating HMMs - pruning transitions, applying duration constraints, manipulating gaussians mixtures
Bugs Fixed
- decoder: Previously would not read HMM files where 0 weight mixtures had been pruned.
| VERSION |
DATE |
NOTES |
| CTK v.1.2.3 |
10/04/02 |
Porting to GCC 3.0.x |
General
- This is the first version of CTK that will compile correctly with gcc 3. The code has been tested with gcc 3.0.4 running under linux. Note, it should still compile correctly with the older gcc 2.95.x.
New Features
- BinaryInputFile/NISTInputFile: A boolean parameter CHECK_VALID has been added. This is for use with floating point data. When set to true the block will check that the file does not contain any NaN's (i.e. invalid numbers). If it does then CTK will report an error and the system will halt. If CHECK_VALID is set to false then the data will not be checked. If the file contains NaNs the system may generate unexpected results. CHECK_VALID defaults to true.
Bugs Fixed
- ctk: Previously, if scripts were saved after being run from the interface, then the SAMPLE_RATE parameter would appear for every block in the script rather than just the source blocks. This strange behaviour has now been corrected.
- ctk: The filename was not appearing in the title bar if it had been loaded from the command line as in "ctk xxx.ctk".
- Makefile: The correct Qt libraries were not previously being included when compiling under linux.
- general: Several minor problems that were picked up by gcc3's stricter adherence to the C++ standard have been corrected.
| VERSION |
DATE |
NOTES |
| CTK v.1.2.2 |
26/03/02 |
Porting to Qt 3.0 and minor bug fixes |
New Features
- ctk: GUI code ported to run with Qt 3.0 (rather than Qt 2.2).
- Makefile: The makefile has been improved to make installation a little more straightforward.
New Blocks
- EqualToX: Outputs true if input is equal to the parameter X.
- NotEqualToX: Outputs true if input is not equal to the parameter X.
Bugs Fixed
- ctk: No longer crashes when 'Go' or 'Run' are used with scripts that are expecting parameter values.
- NISTInputFile: Reading of NIST files is more robust. Will not crash if fed garbage.
- HMMDecoderMultisource: Fixed the dumping of the mask backtrace.
- Documentation: The example source code ctk_NEW_BLOCK_TEMPLATE.cpp/.hh was out of date and incorrect and has now been fixed.
- linux: The code has been tested on a linux platform and a few linux-specific installation problems have been ironed out.
- tutorial: The speech recognition example has been brought up to date with the latest release and should now run correctly.
| VERSION |
DATE |
NOTES |
| CTK v.1.2.1 |
16/01/02 |
Minor bug fixes |
New Features
- ctk: `Find' - a search feature accessible via the toolbar or the Edit pulldown menu that enables the user to locate a block with a given name. This is handy as it allows the user to quickly locate the source of error messages.
- general: All generator blocks now have a WIDTH parameter. If set to 1 they produce a simple signal, if set to a larger value, say N, they produce frame data of width N - each frame is composed of the same value repeated N times.
- CTKScript: Command line parameters, e.g. $1, $2 etc can now be used as substrings within block string parameters. e.g. FILE_NAME="xxx.$1.$2_$3".
New Blocks
- Constant: A generator block that simply produces constant data.
Bugs Fixed
- ctk: The "Run with..." will crash if the script has not been previously saved. The interface now no longer allows the user to use this feature before saving.
- QFigure: No longer has colour mapping problems when displaying array data with a range of 0.
- ctk: Previously parameters edits could be lost if the user failed to press enter after making a change and then proceeded to click on a boolean parameter check box. This problem no longer occurs.
- CTKScript: In certain circumstances problems were occurring when environment variables were substituted into the script. These have been fixed.
- MDisplay no longer fails to plot when non-alphanumeric characters (including spaces) are employed in the NAME parameter.
| VERSION |
DATE |
NOTES |
| CTK v.1.2.0 |
24/10/01 |
Support for HTK 2.0 onwards |
New Features
- decoders: Decoders can now read HMM files generated by HTK versions 2.0 and onwards. For model definitions that are spread over several files, the HMM_FILE can be directed to a file containing a list of files. Backward compatibility with HMM files generated by HTK v1.5 has been maintained. CTK can automatically identify older HMM files and will interpret them correctly.
- decoders: Grammars can now be specified using HTK's Standard Lattice Format (as used by HTK 2.0 onwards). The Extended Backus-Naur Form grammars used by HTK 1.0 and previous versions of CTK are still accepted. The decoder parameter GRAMMAR_FORMAT must be set to either SLF (standard lattice format) or EBNF (extended Backus-Naur) to indicate the format of the grammar file. The grammar format defaults to EBNF to maintain backward compatibility with early versions of CTK.
- ctk: Stop button. A running script can now be interrupted using the toolbar 'stop' button.
Bugs Fixed
- HTKInputFile/HTKOutputFile: These are now working correctly. Sample output is written as an HTK waveform file. Frame output is written as a HTK feature file with the USER_DEFINED feature code in the header. (Note, only big-endian byte ordering is supported at present).
- ctk: Fixed problems with socket selection that were occurring when using blocks with 7 or more inputs or outputs.
- ctk: Menu options and toolbar buttons are greyed-outed and deactivated when they are not appropriate.
- QFigure: The 2-D plots are working again.
- Memory leaks: A minor memory leak in ctk_adaptive_noise_estimation and a *major* one in ctk_gmask have been plugged. Various other memory errors and leaks, detected with Purify, have been fixed.
| VERSION |
DATE |
NOTES |
| CTK v.1.1.4 |
22/06/01 |
Minor bug fixes |
New Features
- decoders The GRAMMAR_FILE parameter which used to specify a file containing a grammar definition, can now also be used to directly specify a grammar definition. e.g. GRAMMAR_FILE="({one|two|three})". Instances where the parameter is used to refer to a grammar file are distinguished from those in which it directly refers to a grammar definition in that grammar definitions specified directly must be enclosed in brackets "(" and ")". If the GRAMMAR_FILE parameter does not start with a "(" it will be taken to be the name of a file containing the grammar definition.
- decoders The format of the detailed log file LOG_FILE_2 has been slightly modified. It is now a proper XML format file. A corresponding DTD file ("asr_results.dtd") is supplied in the directory $CTKROOT/src.
Bugs Fixed
- general: Fixed several minor issues that were causing compilation problems on RedHat and cygwin systems. This version should now compile with out hitch on Linux, cygwin and Solaris platforms.
- general: When combining two streams of data the sample rates must be consistent - this often means they must be equal. Previously, equality was tested using the string representation of the sample rate ... this was leading to spurious errors when sample rates were numerically identical but had different string representations e.g. "100.0" and "100.000".
- decoder: Fixed broken USE_DELTA_BOUNDS switch on HMMDecoderMDSoft.
- decoder: Fixed a serious memory handling problem that was causing crashes when decoder networks were deleted (and could potentially cause errors with more complex finite state grammars). The fix means that different grammars can be used for different utterances without leading to substantial memory leaks - this in turn means the decoder can now be used for performing forced alignments.
| VERSION |
DATE |
NOTES |
| CTK v.1.1.3 |
14/6/01 |
Support for MD ASR with bounded deltas; math approximations for faster ASR; bug fixes |
General
- Changes to HMM Decoder names.
The family of HMM decoder blocks have been reorganised and given less confusing names.
Missing data decoders HMMDecoderMD and HMMDecoderMDBounds have been merged into a redesigned HMMDecoderMD block. The decoder for soft masks, HMMDecoderUDBounds, has been renamed HMMDecoderMDSoft. The multisource decoder HMMDecoderMS has been renamed HMMDecoderMultisource.
So there are now 4 decoder variants named as follows:
- HMMDecoderStandard - normal ASR.
- HMMDecoderMD - Missing data ASR (with or without bounded missing values).
- HMMDecoderMDSoft - Missing data ASR with Soft masks (was HMMDecoderUDBounds).
- HMMDecoderMultisource - Multisource decoder (was HMMDecoderMS).
Note, these name changes mean that existing scripts using the old names will have to be modified to work correctly with the new release.
New Blocks
- DeltaBounds: calculates upper and lower bounds for missing delta features . The inputs are the features, a missing data mask and a set of lower and upper bounds for the missing features. Outputs are delta features, a missing data mask for the delta features, and lower and upper bounds for the missing delta features.
- HMMDecoderMD: now accepts optional upper and lower bounds inputs. This new HMMDecoderMD bock can now be used in place of the older HMMDecoderMDBounds block. (The HMMDecoderMDBounds block has been removed from service.)
New Features
- decoders: exp() and log() have been replaced with very fast approximations. Decoder may now operate nearly twice the speed without loss in performance.
- decoders: upper and lower missing data bounds can be supplied as optional inputs to all missing data based decoders. Bounds can also be optionally applied to delta features.
- ctk: Can save preferences so that they are maintained from one ctk session to the next.
- ctk: Preference options added for customising colours employed by GUI.
- ctk: undo - various improvements to the undo feature:
- When undo is applied to recover a deleted block the block's parameter settings are also recovered - in previous versions they were reset to default values.
- Undo extended to cover changes made to parameter values, changes in the number of input or output sockets, and changes to block names. (Any change that will effect the ctk script is now covered by the undo feature.)
Bugs Fixed
- ctk: Fixed the bug whereby the profile toggle only effects the blocks in the current layout frame.
- decoders: Some platforms had problems reading HMM files which used e-notation numbers (e.g 1.0e-10). This has been fixed.
- data flow: Under some conditions the Block::flush() method, which should only be called once per block, was being called repeatedly.
- QFigure: No longer crashes when passed 0 frames of data.
- ctk: The previously incomplete undo feature was somewhat unstable, now that it is complete it should no longer cause crashes.
Blocks Removed:
- HMMDecoderMDBounds: Functionality now covered by HMMDecoderMD.
- HMMDecoderUDBounds: Renamed HMMDecoderMDSoft.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.1.2 |
23/5/01 |
/share/spandh.25/CTK |
Major rewrite of decoder code. |
New Blocks
- HMMDecoderMS: The Return of the Multisource Decoder! :)
Plus the following blocks supplied by Ljubomir Josifovski:
- AdaptiveNoiseEstimation:
- GMask: Used in conjunction with the AdaptiveNoiseEstimation block it will provide a clean signal estimate and a missing data mask
- QFigure: A Qt-based block for displaying data - in a format similar to MATLAB's `image'
( Display: The Display block has been removed. Facility for X-Y data plots have been moved to the QFigure block.)
New Features
- HMMDecoder: 2nd log file added for detailed decoder backtrace information.
- HMMDecoder: 2nd output socket added which outputs the dominant mixture per state per frame.
- HMMDecoder: STATE_PATH parameter. When set to true state level trace back information is recorded, and the state path of the token through each model is written to the 2nd log file.
- HMMDecoder: To avoid confusion, results are now reported in the order "Hits Deletions Substitutions Insertions" as used by HTK, rather than "Hits Insertions Deletions Substitutions" as used previously.
- QtAI: CTK no longer requires QtAI. The makefiles have all been simplified.
Deprecated Features
The following block parameters are no longer used:
- HMMDecoder::USE_LOG_TABLE - this is now effectively always FALSE. Log table look up was actually slower than using the log function.
- HMMDecoder::USE_ERF_TABLE - this is now effectively always TRUE. The tabulated erf significantly increases the speed and the small quantisation error has no significant impact on recognition results.
So that existing scripts are not broken, the parser will still accept these parameters, but a warning will be generated, and the parameter value will be ignored.
Bugs Fixed
- KCC: The code has been successfully compiled using the KAI C++ compiler. This compiler's warnings revealed several `potential' bugs that have all been fixed.
- HMMDecoder: A bug has been fixed in the traceback code that was effecting the calculation of model frame boundaries (since these boundaries have not previously been used in the code or output to file this bug has hopefully not caused any trouble - the correct boundaries are now output to the second log file).
- ctk_file: Major memory leak fixed in ASCIIOutputFile frame output.
- general: A few ASCII files were being incorrectly opened in binary mode.
- Tee: Fixed the bug that caused Tee to crash if a lower numbered socket was unconnected while higher numbered sockets were connected.
- NISTInputBlock: Incorrect byte order when reading NIST sample files.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.1.1 |
7/3/01 |
/share/spandh.25/CTK |
Many minor bugs fixed. A few minor improvements to GUI. |
Notes
!!! This release includes a fix to a bug in the likelihood calculation in the HMMDecoder blocks. This is a fairly serious bug and the new code will produce slightly different recognition results. Fortunately, tests on the Aurora 2.0 test set A with soft missing data masks, have shown that the impact on the results is minor. Results on clean seem to be largely unaffected, and no result has changed by more than 1%. !!!
The change to the code is at line 786 of ctk_HMM_decoder.cpp.
New Features
Bugs Fixed
- ctk_HMM_decoder: Bug fixed in likelihood calculation!
- Makefile: Only links binaries to libqt when necessary.
- Makefile: MATLAB build flags are now passed on correctly to Makefile.GUI.
- ctk: SAMPLE_RATE parameter no longer appears as editable when it is not.
- ctk: No longer expands all the environment variables when saving scripts.
- ctk: Fixed the problems which occur if a save fails.
- ctk: No longer incorrectly sets `+' when a block is clicked on without being moved.
- ctk: Fixed the problem causing the crash when using undo after a file load or revert.
- ctk: Have stopped the parameter panel rounding all floating point parameters to 3 decimal places. ctk_param.cpp slightly redesigned so that parameters maintain their string value.
- decoders: Hypothesis filter now works correctly.
- ctk_file: BYTES_PER_SAMPLE is not required for floating_point files.
- ctk_binary_ops: Fixed bug in DivideBlock.
- ctk_binary_ops: Comparator no longer has variable number of inputs.
- script: Environment variables are not so easily confused with command line parameters.
- script: Scripts no longer need to employ all the available command line parameters. e.g. if $1 and $3 are used, then $2 does not have to be used. e.g. if $2 is not used, "sine.ctk 10 20 30" , will assigned $1=10, $3=30 and the "20" will be ignored.
- CTKShell: No longer crashes when entering lines of garbage such as '+[][++' etc
- general: Some rationalisation of which output gets sent to cerr and which to cout.
- general: Have replaced all outputs of "\n\r"'s with simple "\n"'s. CTKShell corrected so that it handle this. Note however, CTKShell requires terminals to have the Newline sequence set to "Return/Line Feed" rather than "Return Only". (Ideally, the terminal should be configured automatically from within CTKShell but I haven't quite worked out how this is done yet...)
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.1.0 |
11/2/01 |
/share/spandh.25/CTK |
2nd External Release |
Notes
The previous external release was CTK v.1.0.7.
New Features
- documentation: Man pages have been written for CTKScript, CTKVerify, CTKShell and ctk. The documentation included in the ctk help system has been brought up to date with the new ctk features.
- file: Binary input/output - SWAP_BYTES parameter replaced with BYTE_ORDER parameter. This can have value BE or LE (i.e. big endian or little endian). Scripts using binary input and output are now platform independent
- decoders: The USE_OZ parameter has been replaced with HYPOTHESIS_FILTER which will use an N best list to filter out hypotheses that do not match the regular expression supplied.
- decoders: HMMs can share output labels. For details see here.
- Makefile: Can build without curses library
Bugs Fixed
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.11 |
07/2/01 |
/share/spandh.25/CTK |
More improvements to the decoders |
New Blocks
- Fix: A simple filter than replaces occurrences of NaN in the input stream with the value of the blocks parameter.
New Features
- decoders: Can now read HTK multiple model files
- decoders: State likelihoods are output
Bugs Fixed
- decoders: Tokens in HTK model files are no longer case sensitive i.e. or or etc are all equally valid
- file: getfilename() was returning a pointer to a local variable! oops.
- decoders: Fixed bug with recognition stats which was producing occasional crazy results
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.10 |
02/12/00 |
/share/spandh.25/CTK |
More bugs fixes - a few minor new features |
New Blocks
- Acos, Asin and Atan: the arc cosine, arc sine and arc tangent trigonometric functions.
- Filter: Digital filtering.
The filter is a "Direct Form II Transposed" implementation of the standard difference equation:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
- a(2)*y(n-1) - ... - a(na+1)*y(n-na)
If a(1) is not equal to 1, FILTER normalizes the filter coefficients by a(1).
The a and b coefficients can be either supplied directly as vector parameters, or stored in a file. Parameter files are ASCII and have the following format:
Na A(1) A(2) A(3) ... A(Na)
Nb B(1) B(2) B(3) ....B(Nb)
(White space is ignored).
- Option : The Option block has two inputs, input1 and input2, and input2 is optional. If input2 is unconnected the block simply passes input1 to the output; if the input2 is connected then the block passes this to the output instead.
New Features
- Makefile: The Makefiles have been tidied up and the installation procedure has been greatly simplified.
- CTK scripts: The same command line parameter can be used in more than one place in a script. i.e before there could only be one occurrence in a script of each of $1, $2 etc.
- ctk_file: File input/output blocks now have an optional FILE_EXTENSION parameter that can be used to specify a filename postfix.
- ctk_autocorrelation: Can now implement both a Short Time Autocorrelation Function, and a Modified Short Time Autocorrelation Function. (See 'Rabiner and Schafer - Digital Processing of Speech' for details).
- Delay: The implementation of Delay has been simplified. And it now has the option to delay by either padding with 0 or by repeating the first frame of data.
- decoders: Far more rigorous checking performed on HMM files. Incorrect HMM file syntax will now hopefully lead to an appropriate error message rather than a crash!
- GUI: Blocks can be `selected' by shift-clicking over them with the left mouse button. Editing commands will eventually be added that operate on all currently selected blocks.
- GUI: Blocks can be selected by shift-dragging a selection rectangle over the blocks while holding down the left mouse button.
- GUI: When selected blocks are moved they will move together as a group.
Bugs Fixed
- decoders: Will now correctly parse model files in which there are states with only 1 mixture.
- ctk_file: Binary sample files in floating point format are now read correctly.
- ctk_autocorrelate: A bug in the way the optional window shaping was applied has been fixed.
- GUI: "Intermediate block" (i.e. scripted block) input sockets will now be shown as optional (i.e. coloured differently) when they are optional.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.10 |
02/12/00 |
/share/spandh.25/CTK |
More bugs fixes - a few minor new features |
New Blocks
- Acos, Asin and Atan: the arc cosine, arc sine and arc tangent trigonometric functions.
- Filter: Digital filtering.
The filter is a "Direct Form II Transposed" implementation of the standard difference equation:
a(1)*y(n) = b(1)*x(n) + b(2)*x(n-1) + ... + b(nb+1)*x(n-nb)
- a(2)*y(n-1) - ... - a(na+1)*y(n-na)
If a(1) is not equal to 1, FILTER normalizes the filter coefficients by a(1).
The a and b coefficients can be either supplied directly as vector parameters, or stored in a file. Parameter files are ASCII and have the following format:
Na A(1) A(2) A(3) ... A(Na)
Nb B(1) B(2) B(3) ....B(Nb)
(White space is ignored).
- Option : The Option block has two inputs, input1 and input2, and input2 is optional. If input2 is unconnected the block simply passes input1 to the output; if the input2 is connected then the block passes this to the output instead.
New Features
- Makefile: The Makefiles have been tidied up and the installation procedure has been greatly simplified.
- CTK scripts: The same command line parameter can be used in more than one place in a script. i.e before there could only be one occurrence in a script of each of $1, $2 etc.
- ctk_file: File input/output blocks now have an optional FILE_EXTENSION parameter that can be used to specify a filename postfix.
- ctk_autocorrelation: Can now implement both a Short Time Autocorrelation Function, and a Modified Short Time Autocorrelation Function. (See 'Rabiner and Schafer - Digital Processing of Speech' for details).
- Delay: The implementation of Delay has been simplified. And it now has the option to delay by either padding with 0 or by repeating the first frame of data.
- decoders: Far more rigorous checking performed on HMM files. Incorrect HMM file syntax will now hopefully lead to an appropriate error message rather than a crash!
- GUI: Blocks can be `selected' by shift-clicking over them with the left mouse button. Editing commands will eventually be added that operate on all currently selected blocks.
- GUI: Blocks can be selected by shift-dragging a selection rectangle over the blocks while holding down the left mouse button.
- GUI: When selected blocks are moved they will move together as a group.
Bugs Fixed
- decoders: Will now correctly parse model files in which there are states with only 1 mixture.
- ctk_file: Binary sample files in floating point format are now read correctly.
- ctk_autocorrelate: A bug in the way the optional window shaping was applied has been fixed.
- GUI: "Intermediate block" (i.e. scripted block) input sockets will now be shown as optional (i.e. coloured differently) when they are optional.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.9 |
08/11/00 |
/share/spandh.25/CTK |
Fairly major release - more sophisticated decoders - wraps Martin's stuff into core |
NOTE:
The experimental multisource decoder - HMMDecoderMS - has been temporarily removed from circulation while being rewritten to be compatible with the more sophisticated underlying decoder design introduced in this release. It should reappear in the next minor release.
New Blocks
- Upsample: This is the counterpart to Decimator. It increases the sampling rate by an integer multiple, N, and generates the extra data by simply repeating each input frame N times. e.g for N=3, 1234 becomes 111222333444 (future versions will allow linear interpolation).
(supplied by Martin Cooke)
- AcgPitch: computes ACG-based pitch colouring
- Tracker: tracks colourings
- FilterColour: filters colouring e.g. removing short/puny groups
New Features
- GUI: can now make block parameters into command line parameters (e.g. $1, $2 etc) using the GUI. This is done by bringing up the parameter dialogue box and then clicking on the parameter name. A command-line number dialogue box should then appear.
- decoders:
- HMM topology is no longer constrained to be feed forward.
- Tied states and tied mixtures. HMMs containing tied states (~s) or tied mixtures (~m) can be handled. The syntax for representing tying is the same as used by HTK. (i.e. HTK models contain state or mixture macros will be understood by CTK).
- grammar files Whereas before the decoder built all HMMs into a simple loop grammar, it can now accept a more general finite state grammar. This grammar is defined in a grammar file and supplied to the decoder via the GRAMMAR_FILE option. The format of this file is the same as used by HTK1.5 (briefly described here). To maintain backward compatibility, if no grammar file parameter is supplied, then the HMMs will be built into a simple loop grammar as before (in this mode the FIRST_TOKEN and FINAL_TOKEN parameters may still be used).
- extra validation --1. Decoders ensure HMM labels string length matches number of HMMs in model list. -- 2. Decoders check that input frames have sufficient features per frame (if there are too many features per frame, extra features are ignored).
- ctk_gammatone_bank: augmented to provide instantaneous frequency & AM as well as instaneous envelope and basilar membrane displacement.
- ctk_file: files output blocks now pass a copy of their input data to an output socket so they don't have to act as a data sink.
Bugs Fixed
- ctk_gammatone_bank: Outputs are now labelled correctly.
- ctk_file: corrected mistake in ctk_file.hh for write_vector and write_sample declarations.
- ctk_file: fixed a serious bug in ASCIISampleOutputFile that was causing crashes when writing frame data files over a certain size.
- ctk_reducer: fixed memory leak which was occurring when reducing from frame data to sample data.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.7 |
02/10/00 |
/share/spandh.25/CTK |
1st External Release |
Notes
This was the 1st "non-alpha" external release, and was eventually superseded by CTK v.1.1.0. Later members of the 1.0.xx series were internal releases only.
Bugs Fixed
- ctk_autocorrel: Fixed bugs in the autocorrelation code. Can now produce summary autocorrelograms that look like they oughta (well, they look the same as Guy's at least).
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.8 |
04/10/00 |
/share/spandh.25/CTK |
Now have all blocks necessary for reproducing Guy's harmonicity masks |
New Blocks
- FindMax, FindMin:
Will find the maximum (or minimum) value across a frame of data, and will return both the value and the value's index. (Semantically similar to the Peak block.)
Will work on both 1-D or 2-D frames of data.
If supplied with a stream of 1-D frames, it will compute a stream of scalar max (or min) values and a stream of indices at which these values occur.
If supplied a stream of 2-D frames it can operate over either of the two dimensions and will return a stream of 1-D frames of max (or min) values and a stream of 1-D frames containing the indices at which these values occur (e.g. if given a 2-D FREQ/LAG matrix it can either return a 1-D FREQ vector containing the maximum value across LAG in each frequency channel, or a 1-D LAG vector containing the maximum value across frequency at each LAG).
New Features
- Reducer: The reducer block, which takes a N-1 dimensional slice out of N dimensional data, has had bounds checking added so that the system will halt gracefully rather than crash if the user does something stupid!
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.6 |
10/08/00 |
/share/spandh.25/CTK |
some non-backwardly compatible changes to block names |
New Features
- Makefile: $CTKROOT/src/Makefile now compiles libraries AND binaries.
- GUI: ctk now takes an optional .ctk file as a command line argument. e.g. 'ctk Sinewave.ctk' will start up the GUI and load the Sinewave.ctk script.
- CTKDisplay: CTKDisplay has been renamed as CTKVerify to better reflect its purpose.
- ctk_file: Non-existent directories in the path of an output file are now automatically constructed.
- GUI: The GUI offers the user a chance to save before quitting.
Bugs Fixed
- General: NIST input files blocks were being written to the script with an incorrect block type name.
This problem arose because block type names were messily being defined separately in the block source files and in the sys translation table. The code has now been tidies up so that each block type name is now only defined once.
Unfortunately this rationalisation has led to a few non-backwardly compatible changes in file handling block names. Basically, where block names had the word 'sample' in them, the 'sample' should be removed. e.g.
- NISTSampleInputFile --> NISTInputFile
- AUSampleInputFile --> AUInputFile
etc.
This will mean some CTK scripts will no doubt have to be changed. Sorry!
- CTKDecoders: Decoders were occasionally halting during the N-best traceback with a message saying the traceback threshold had been exceeded. Problem was traced back to occurring during the mean-likelihood marginal probability normalisation. If the observed feature was 0, then the integration range is 0 and the average is an integral of 0 divided by 0! This has been fixed by defining the mean-likelihood in this case to be the observed likelihood at 0.
- CTKShell: CTKShell was not expanding environment variables occurring in the arguments of -S options. These are now expanded correctly.
- CTKVerify: CTKVerify (i.e. the old CTKDisplay) no longer core dumps when used with no arguments - instead, like CTKScript, it prints the CTK version number and quits
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.5 |
16/07/00 |
/share/spandh.25/CTK |
a few minor but irritating bugs fixed |
Bugs Fixed
- autoconnect(): Autoconnect will no longer connect spare output sockets to optional input sockets. i.e. connections to optional inputs have to be made explicit.
- GUI: white space is trimmed from the beginning and end of string parameter values before they are set.
- GUI: you can now unset a parameter by setting it to the empty string.
- GUI: Empty arrays are no longer written to the script incorrectly e.g. you can no longer generate invalid script lines such as "Split(CUTS=)"
- ctk_CTK_writer: Environment variables occurring in INCLUDE statement paths were being expanded. This no longer happens.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.4 |
10/07/00 |
/share/spandh.25/CTK |
Optional inputs; serious bug fixed in noise estimation code |
New Blocks
- ctk_unary_ops: blocks for trig functions: sin, cos, tan, sinh, cosh and tanh.
- ctk_unary_ops: P2_UnaryOpBlock - base class of unary ops with 2 parameters added.
- ctk_unary_ops: erf and NormalPDF blocks added. (P2_UnaryOpBlocks with parameters: 'mean' and 'variance')
New Features
- ctk_sockets: max and min number of sockets can be set. e.g. tee block has at least 2 outputs and a most 8, file reading blocks have at least 1 and at most 4. etc
- ctk_sockets: input sockets can be marked as optional.
e.g. input_sockets->set_optional("in2");
Optional inputs don't have to be connected. They have a slightly different appearance in the GUI. Note, the first socket cannot be optional - i.e. if there are optional inputs there must be at least one required input too.
- ctk_unary_ops: Dynamic parameters for unary operations.
All P1 unary ops now have an optional 2nd input which is taken as the parameter value if connected - i.e. the parameter can be dynamic. The parameter value can either be a scalar, or a frame of equal width as the data input.
- GUI: toggle profile toolbar button, more tooltips and whatsthis texts added.
- GUI: Multi-tab preference panel added.
- GUI: Block widget dimensions can be set via the preference panel.
- GUI: Block widgets may display profile percentage, time or calls - settable via preference panel.
- ctk_CTK_writer: When saving a script, the path for #!/.../CTKScript line is now dependent on the type of blocks used in the script. If only core library blocks have been used then the $CTKROOT path is used, however, if user written blocks have also been used then the $CTKLOCAL path is used. i.e. the more general interpreter is used wherever possible. If the user specifically wishes to use his local interpreter then this feature can be overridden from the GUI preference panel so that $CTKLOCAL is always used (if defined).
- testing: improved ctk testing scripts. Testing now checks that testsuite scripts produce identical output when reset and rerun several times.
Bugs Fixed
- ctk_noise_estimation: SERIOUS BUG
Error in the reset method was causing a miscalculation of the noise estimates for all but the 1st utterance of a filelist. The noise estimate was not cleared, so the previous noise estimate acted like a frame of data for the current noise estimate. And then the average was messed up as the sum of the first N frames and the previous estimate were being divided by N. i.e. for the typical N=10 the noise estimate would be overestimated by 10%.
This bug has been corrected. I expect the new binaries will give different recognition results. Hopefully as long as the SNR thresholds are retuned to compensate for the 10% SNR estimate reduction the results should be no worse than previous.
- ctk_HMM_decoder: thresholds of N-best search changed so that N-best search algorithm is much less likely to get trapped trying to return very large numbers of hypotheses. (This was happening before in noisy conditions where there are many hypotheses of similar likelihood). The new thresholds have been tested and shown to work with the 0db ratemap examples that were causing problems before.
- ctk_file: Bug in binary sample output files corrupting output for all but the first example in a -S list.
- Makefile: Error in Qt library path fixed.
- GUI: Parameter panels have been made wider.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.3 |
29/06/00 |
/share/spandh.25/CTK |
System profiling; several important bug fixes |
New Features
- Makefiles: Improved makefiles for the ctk libraries.
- Automated testing: A perl script that runs a testsuite of CTK scripts and checks outputs against stored reference outputs.
- System Profiling: New feature for analysing performance of CTK systems.
To activate profiling:
- for CTKScript - add the -profile argument. e.g RecoCleaned.ctk -profile ....
- for CTKShell - Once in the shell, typing 'profile' will toggle profiling on and off
- for ctk - use Profile under Profile menu to toggle profiling. double-clicking the centre button over a block brings up its detailed profiling results. The "Display Report..." will write a report to the terminal window in which ctk was started. Statistic accumulate from one run to the next. You can use Profile/Reset to start again.
The profiling will keep track of the amount of time spent in each block's compute() method, the number of times each compute() is called. It will also report the system's 'efficiency', which is measured as the percentage of the data flow time that is spent inside compute() methods.
- Transmitted parameters are checked for consistency. This means for example, that if a block has two inputs the two SAMPLE_RATEs arriving at the input sockets should be the same.
- ctk_HMM_decoder: Some internal (invisible) changes to the HMM storage as a first (small) step towards the more sophisticated HMM decoders (tied states, tied mixtures, finite state grammar etc) that will be available in later versions of CTK.
Bugs Fixed
- ctk_block: The SAMPLE_RATE parameter now behaves appropriately. In the GUI it will only appear editable where it makes sense for it to be so (i.e. input blocks).
- There were problems in the GUI with transmitted parameters (e.g. SAMPLE_RATE) not behaving properly after the block has been run the first time. These have been largely sorted out (I hope!)
- ctk_file: Input blocks now appear by default with only one output.
- CTKShell can now accept ctk commands requiring the empty string ("") as a parameter.
- GUI: The sockets have been made easier to hit. The boundary around them has been extended to include near misses where the user hits the canvas rather than the widget.
- Frame: The Frame block now adjusts the sample rate correctly.
- ctk_block: Problems with DURATION=0 fixed. Generator blocks are no longer allowed to have a duration of 0. If they do this will be picked up at run time. (In a later version parameters will be able to have valid ranges defined. Mistakes can then be picked up earlier - i.e when values are entered in the GUI, or by a script validator).
- A bug in MultiInputBaseBlock::build_data_descriptor() has been fixed. Input data_descriptors were being passed directly to the output sockets without being copied. This bug was causing the fuzzy.ctk to crash after decoding 2 utterances.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.2 |
25/06/00 |
/share/spandh.25/CTK |
Some minor features; online parameter documentation |
New Features
- GUI: Online "WhatsThis" style documentation for parameters.
Added "void set_helptext(String text);" to public interface of Param class. If set the text is available in the GUI via the "whatsthis?" mechanism. (help texts have been added for ALL parameters of existing blocks).
- GUI: Parameter units displayed on parameter panel
Added "void set_unit(String a_unit);" to the public interface of the Param class. If a unit string is set it will be displayed after the parameter on the GUI parameter panel. (Where useful, unit labels have been added to parameters of existing blocks).
- GUI: Displays file name and path of ctk file being viewed in the window title bar.
- ctk_sockets: Simplified interface for input and output sockets.
get_vector() will now work even if the data being received has come from a Sample pipe - i.e. it will construct a vector of size 1. Likewise, if a vector of size 1 is sent with put_vector() the data will automatically go via the sample pipe rather than the vector pipe.
This means compute methods can be simplified ... see here for example.
Similar alterations have been made to the methods read_vector(), write_vector() and flush_vector() - note however, these have not been fully tested.
- MDisplay: Alternative plot styles.
New parameter called 'PLOT' which stores the command used by MATLAB to produce the plot, with the '%' symbol used to mark the position where the MATLAB variable containing the CTK data will be substituted. e.g. PLOT="plot(%, 'r-')" will produce a plot with a red line. If left unset MDisplay will default to "plot(%)" for 1-D data and "h=imagesc(%); axis xy;" for 2D data.
Bugs Fixed
- General: Serious memory leak plugged in the data_descriptor handling.
Data descriptor were not being deleted. For 2D data these can be quite large. For the basic missing data script this was amounting to roughly a 1Mb of leakage per each 40 utterances. Note, now that data descriptors are being deleted it is very important that separate descriptors are made for each socket, i.e. simply giving each socket a separate pointer to the same object will result in a crash. There was a bug of this type in GammatoneBankBlock::build_output_data_descriptors(). This has been fixed.
- ctk_file: Very serious memory leak in BinaryOutputFile - frame data was not being delete after being written to file.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.1 |
21/06/00 |
/share/spandh.25/CTK |
Some minor features and bug fixes |
New Features
-
Version number stamped into binaries. To see version:
- for CTKScript - Type 'CTKScript' with no arguments.
- for CTKShell - Once in the shell, type 'version'
- for ctk - use the About.. under the help menu
You can use this feature after rebuilding your local binaries to check that you have linked to the correct library versions.
- A DUMP_PARAMETERS option added to the CTK decoders. When DUMP_PARAMETERS is set to YES the decoder will dump the value of all its parameters to the end of the log file (or to stderr if no log file is being used).
- Much improved $CTKLOCAL/src/Makefile. This now interacts correctly with the CTK core library files and will automatically rebuild local binaries and object files when new CTK versions are released.
Bugs Fixed
- CTKScript no longer core dumps if run without parameters.
- GammatoneBanks containing only one filter will now work ok. Note, in this case the centre frequency of the filter is set to the LOWER parameter.
- ASCIIOutputFile now works correctly
- The NAME parameter bug in MDisplay has been fixed. MATLAB will still attempt to use NAME as the MATLAB variable name, if it can't form a valid variable name from NAME parameter it will use the block name instead.
- The HTML versions of the documentation are now accessible from within the GUI online help system. Note however that the QT html renderer doesn't necessarily do a very good job - tables and equations are not very readable. Best to view the documentation in Netscape.
- ctk_HMM_decoder: If HAS_DELTAS = TRUE and USE_DELTAS has not been set, then it will default to USE_DELTAS=TRUE. i.e. unless told otherwise it will use deltas if it has them. Previously it didn't use the deltas unless specifically told to - this was a bug. Caution, old decoding scripts may now behave differently. USE_DELTAS=No should be added if this is what was intended.
| VERSION |
DATE |
INSTALLED AT |
NOTES |
| CTK v.1.0.alpha |
8/06/00 |
/share/spandh.25/CTK |
The original alpha release |
Notes
This was the original alpha "bug testing" release. This remained on the download site until eventually replaced with CTK v.1.0.7. Intermediate versions were not released externally.
Last modified: Sun Apr 22 14:54:51 BST 2007