## What's New in Rev.3.3p4

Major changes has been made since Rev.3.3, mainly for improved stability and some extensions for acoustic model. The changes from Rev.3.3 are summarized as below:

- Add new recording option `-record`
- Many fixes in A/D-in
- Extensions for acoustic model
  - New support for context-free inter-word short pause
  - Can deal direct skip transition within a model
  - New function to add pause word to dictionary
- Other bug fixes

## New Input Recording Function by `-record`

Julius/Julian now can record all triggered inputs sequencially to each file. To enable, please specify a directory to store the recorded data.

     % julius .... -record directory_name

All the input to Julius and Julian, regardless of its source type (mic/file/network), will be recorded to the specified directory, with filename of the recorded system time. For example, if an input was occured on 14:53.24 on Feb. 22, 2004, the filename will be:

    2004.0222.145324.raw

The format is 16bit, monoral, and the sampling rate depends on the source. The file format is big endian, raw (no header) on Julius/Julian earlier than 3.4, and versions later than 3.4 uses WAV format.

## Many Fixes at A/D-in

Input delay are greatly improved, and many bugs has been fixed for the A/D-in routines from 3.3 to 3.3p4:
From 3.3 to 3.3p2:

- Fix segfaults in MFCC parameter file input on Solaris.
- Fix hangup when specifying "-module" and "-input adinnet" at the same time.

From 3.3p2 to 3.3p3:

- Input buffering algorithm altered: input delay has been improved from about 200ms to about 50ms (approximately).
- Avoid blocking when another process holds /dev/dsp.
- Support for libsndfile-1.0.x.
- Support for ALSA-0.9.x and later. Note that the configure script still prefer OSS than ALSA, so you have to specify explicitly to use ALSA API instead of OSS, by "--with-mictype=alsa".

From 3.3p3 to 3.3p4:

- Fix occasional hangup when Julius/Julian runs long time with microphone input.
- Tell client input error status when input was too long.
- Improved buffering for inputs shorter than 1000 samples.
- Improved transfer blocking with network input (adinnet)

## Extensions for Acoustic Model

### New Support for Context-Free Inter-Word Short Pause

On multi-path version of Julius/Julian, a special handling of inter-word short pause has been implemented.

Specifying option "`-iwsp`" adds a short pause HMM to all the words in dictionary to handle occasional short pause between words. The added pause HMM will be specially handled as a "Phone Context-Free" (skipped as a triphone context of surrounding phones, and the phone itself will also be unchanged by the context phones) and "Skippable" model, to capture the acoustic property of inter-word short pause, like the figure below:

The model name of the short pause to be added should be specified by option `-spmodel`. The default name is "sp".

Further, you can add an extra transition score to the transition of each short pause model, to control the insertion probability. The score can be specified by "`-iwsppenalty`". The value over zero will accelerate the insertion, and specifying value below zero will increase rendency to inhibit the insertion. The default is 0.0.

This "`-iwsp`" option can be applied to only multi-path version of Julius / Julian.

### Direct skip transition handling

On multi-path version of Julius/Julian from 3.3p4, a direct transition from initial state to final state has been allowed. This means that Julius / Julian later than this version can deal with any transition within a model which is allowed in HTK.

There are still a few limitation: you should not define a word in which all consisting phones has direct transitions from initial state to final state. It means that the word itself can be skippable, but Julius / Julian cannot deal with such kind of word-level skipping for now. Such kind of word-level skipping should be considered in language model level, in our current implementation.

This capability of dealing direct skip transition is provided by only multi-path version of Julius / Julian.

### Adding an anonymous pause word to dictionary

Specifying "`-iwspword`" in Julius will add a pause word entry to the dictionary. This option may be effective if you are using N-gram language model which does not consider the location of long silence or breath in a sentence. Specifying this option may improve the recognition accuracy.

The default word to be added is:

    <UNK> [sp] sp sp

You can also specify the entry above by "`-iwspentry`", like this:

     % julius .... -iwspword -iwspentry "<UNK> [sp] sil"

## Other Bug Fixes

These bugs that are not included in the above sections has been fixed.
From 3.3 to 3.3p1,

- the default value of LM weights and penalty which was wrongly set to 0 has been fixed (enbuged at 3.3).
- Robustness of parsing dictionary has been improved.
- Wrong output of "`-separatescore`" with monophone AM has been fixed.

From 3.3p1 to 3.3p2,

- tty output flushing improved.

## Modified Options

A list of modified and new configure options and run-time options on 3.3p4 is below:
`configure` opotions:

- Not changed.

Run-time options:

- New: `-iwsp` (mutli-path version)
- New: `-iwsppenalty value` (mutli-path version)
- New: `-iwspword` (for Julius only)
- New: `-iwspentry wordentry` (for Julius only)
- New: `-spmodel modelname`
- New: `-record directory`

$Id: WhatsNew_3.3p4.html,v 1.1 2004/04/28 08:02:13 ri Exp $