- File atomic.c
Not all atomic operations are (or even can be) implemented for all platforms.
Developing concurrent algorithms, choosing the correct memory barrier, and to a certain extent every piece of code that needs atomic operations is difficult and bugs will be extremely difficult to trace. So avoid them unless absolutely necessary.
- File cwr_lex.c
Assimilation rules (should) work in sentence mode (vitpass, vitalign), but are very sensistive in recognition mode.
If the FULL_DEBUG flag is set during compilation (-DFULL_DEBUG), some extra debug messages and consistency tests are added. These messages and tests result in a serious overhead.
If then DAVINCIHOME environment is set, the debug information will also contain lexicon-networks in the Davinci format.
- File cwr_lm_ext.c
The LM is not normalized when using 'extensions'. This has no tangible effect on the recognition, but perplexities calculated with the given LM will be incorrect.
When stacking multi-class LM's, only the base LM may have extensions.
If the FULL_DEBUG flag is set during compilation (-DFULL_DEBUG), some extra debug mesages and tests are added. These tests result in a serious overhead.
- Revision History: File cwr_lm_fsg.c The implementation is not optimal is some circumstances, e.g. when reaching a sure end of a sub-model: the current implementation stays in the sub-model. Closing the sub-model will reduce the number of open LM-contexts and hence will allow for more recombination in the search. File cwr_lm_std.c The LM is not normalized when using 'extensions'. This has no tangible effect on the recognition, but perplexities calculated with the given LM will be incorrect. If the FULL_DEBUG flag is set during compilation (-DFULL_DEBUG), some extra debug mesages and tests are added. These tests result in a serious overhead. File cwr_search.c If the FULL_DEBUG flag is set during compilation (-DFULL_DEBUG), some extra debug mesages and tests are added. These tests result in a serious overhead. Revision History: File dynmem.c The spr_dynmem_cfg() routine should never be called (is called automatically from the spraak_ini() or spraak_ini_prog() routine). File ghthr.c ghthr() assumes the mu's are ranked from small to large. The iterative procedure used in ghthr() is not waterproof. It assumes that the cross-over point between two distributions lies between [mu1 - sigma1 , mu2 + sigma2]. Intersections beyond this range (though very rare) are not found. Revision History: File msg.c The message system assumes that names are static strings. See the examples on how to assure this. Changing the filters (spr_msg_modif_in()) or triggers (spr_msg_modif_from()) while there are multiple threads running may result in some transitional abnormalities (no crashes, just too many or too less messages). The amount of concurrency the msg-system can handle is limited. Typically 16 threads can send simultanious messages in a non blocking fashion if the destination stream can keep up. Unamed threads may result in undefined behaviour in combination with nested messages. File path_parse.c These routines cannot yet handle the more advanced file name conventions File rm_gauss.c All gaussians may be removed (indicating a very odd observation). The method does not combine information over the different axes, so an odd value in one direction will remove the gaussian, despite perfect matches in all other directions. The average probability is detemined based on the gaussians solely, requiring good estimated gaussians (enough traindata and a decent training). File sphere.c Only uncompressed data and shorten decompression is supported. File spr_bmix.c Currently, the program only works for floats. Kris Demuynck 22/01/1998 Global spr_ct_to_prob (SprHmmHmm *hmm, float mincount, float varmin, const char *pool, float logminno, float logminsp, int rel_eps, float logmintr, float smoothing) Flooring value logminno doesn't work if the value given with logminsp is larger: first the minimal output probability is set to the value given with logminsp for all states, then it is reset to the value given with logminno for all silence states. Renormalization is only done for silence states. Global spr_frog_rmg_select_ (const SprHmmRmgInfo *info, const float *x, const SprHmmUchar *sel_in, SprHmmUchar *restrict sel_out) If info is NULL, sel_in is simply returned, so a non-NULL sel_out is not filled in. File spr_oo.c Type-checking on the first argument (the object) when calling methods in a class is sometimes dissabled. The compiler warnings given on invalid method calls may be obscure. The object machinery in SPRAAK relies heavy on the parser to do most of the magic, and hence cannot be readily used in other projects. Class SprStreamBZip Backward seeks are extremely slow. A stream cannot be opened for both reading and writing. Class SprStreamCoder Backward seeks are extremely slow. A stream cannot be opened for both reading and writing. Only shorten decoding is supported right now. Class SprStreamGZip Backward seeks are extremely slow. A stream cannot be opened for both reading and writing. File sspmod_agc.c Currrently no support for stereo recordings! File str_parse.c Most routines assume (extended) ASCII or UTF8 encoding. Special characters such as 'bell' or 'form-feed' are treated as spaces. File stream.c The routines are not async-safe: signals should be handled in a separate thread (e.g. the main thread). The routines are not MT-safe: multi-thread applications normally contain enough locking provisions to avoid race conditions on files, so the extra overhead is useless for most files. Reading and writing floating point numbers in decimal format is subject to small rounding errors (least significant bit), i.e. the value is not always the decimal number with a given precision the closest to the real binary/decimal number. Reading and writing long doubles in decimal format is no more precise than reading and writing doubles (no long); however the extra range of the exponent is still available. No support for wide-characters (UTF-16, UTF-32); UTF-8 is supported. Both stdin and stdout must be opened explicitely using the desired mode (buffering, etc.) with a call to spr_stream_open(). They must be closed before the program is ended as well. Both of them can be opened and closed several times (the unamed pipes are only closed at the very end of the program). stderr behaves the same, except that a default pointer (spr_stderr) is provided at the beginning of the program. File utf8.c Only the spr_utf8_check() routine checks for correctly encoded utf-8 data, all other routines only detect badly encoded utf-8 data if this poses a real problem (or if this can be done with very little overhead). File wav.c Complex wav-files (multiple data chunks, compression, ...) are not supported. Revision History: