What's new in Julius-4.6
Julius-4.6 is a minor release with new features and fixes, including GPU integration and grammar handling updates.
GPU-based DNN-HMM computation
(Take a look at v4.6 performance comparison on YouTube!)
Now Julius can compute DNN-HMM with GPU. Total decoding will be four times faster than CPU-based computation on Julius-4.5.
Requires CUDA version 8, 9 or 10.2 and NVIDIA card. You should build Julius with
nvcc to enable it. See INSTALL.txt for details.
Tested on Linux only.
New 1-pass grammar recognition
Added a function to apply full grammar on the 1-pass, thus outputs more reliable (grammar-constrained) result at the 1st pass. See the issue post for details and how to use it.
Now in 3-Clause (Modified) BSD License
Julius's software license has been moved to 3-Clause BSD License (a.k.a "Modified BSD License") since May 2019. We still "recommends" users to mention the usage of Julius and making a proper reference or citation on their published work. See the License and Citation section in README.
- Support non-log10nized state priors in DNN model
- Added feature normalization pattern: use input mean, static variance (
- Visual Studio 2017 support, can build all tool binaries (msvc/Julius.sln)
See Release.txt for full list of changes.
What's new in Julius-4.5
A WebRTC-based voice activity detection (VAD) was introduced to improve voice detection:
Now Julius has two VAD modules: old module (input level and zero-cross based) and the new module (libfvad = model based). Both of them runs concurrently in parallel for an audio input. When the new module is enabled, Julius will detect speech trigger only if both of them detect speech trigger.
DNN-HMM CPU multi-threading
DNN-HMM computation now supports CPU multi-threading. Multi-threading may speed up DNN-HMM computation to some extent. The number of threads can be specified by
num_threads in dnnconf. This feature is enabled by default, and the default number of threads is 2.
XML special character escape on module mode output
Notice for module-mode users: in order to make module output XML-compliant, the XML special characters are now escaped, ex. '>' to '>'. A backward-compat option
-noxmlescape is available to inhibit the new escaping feature and go back to the same behavior as previous versions.
Moving to UTF-8
We have moved to UTF-8. The codes and documents in master branch has been unified to UTF-8 encoding.
For backward compatibility and make log tracking easy, the recent release codes with old encoding is kept at branch "master-4.5-legacy". If you want to see the code before the release of 4.5 (2019/1/2) in old encoding, please checkout the kept branch.
We are moving from text file to markdown for easier update. Currently available ones are:
Others will come soon.
Julius now has its DOI. Please use it for academic reference:
Release 4.4.2 is a bug fix release.
- Fix builds for ARM and on VisualStudio
- Fix segfault on old Intel machines that do not support AVX.
- Better code organization to treat SIMD instruction sets of different architectures
- Improved end-of-search detection when used with DNN
- Fix incorrect path handling in dnnconf. Now the paths in dnnconf are handled as relative to the dnnconf file.
All users of 4.4 and 4.4.1 are recommended to upgrade to this version.
Many fixes and SIMD enhancement since 4.4. Everyone using 4.4 should replace it with this version.
- support more SIMD instruction set: FMA, SSE and ARM NEON for DNN
- choose SSE/AVX/FMA function automatically at run time by CPUID.
- "INSTALL.txt" now has build information (required packages etc.) for several OS, all tested.
- PortAudio and zlib sources are included for easy VisualStudio build
- bugs fixed:
- incorrect binhmmlist reading
- work-around for SDL library for adintool-gui
- pkg-config support
- other minor fixes for stability
Now Julius-4.4 has built-in DNN computation! It can perform a simple, on-the-fly DNN-HMM based speech recognition alone. See 00readme-DNN.txt for its current implementation, limitation and more descriptions. The next version of our dictation kit, which will come within several weeks, will demonstrate its performance.
Other features include:
- New tools
- adintool-gui: GUI version of adintool
- binlm2arpa: reverse convert binary N-gram to ARPA format
- "mkbingram" now support direct charset conversion of binary LM
- Now does not exit at connection lost in module mode
- Bug fixes
See "Release.txt" for full list of updates, run "configure --help=recursive" to see all configure options, and
run compiled Julius with "-help" to see the full list of available options.
Version 4.3 includes several new features to support on-line DNN-HMM
decoding: decoding with state output probability vectors ("outprob
vectors") as input, network-based feature / outprob vector input,
improved cepstral variance normalization (CVN) for real-time
recognition, FBANK/MELSPEC feature support and so on. Also the tool
"adintool" is now capable of extracting and sending feature vectors in
real-time via network.
Version 4.3.1 is a bug fix release.
- [-input vecnet] read feature / outprob vectors from network
- [-input outprob] read outprob vectors from HTK parameter file
- [-outprobout [file]] save computed outprob vectors to HTK file (for debug)
A short test of network-based feature transmission:
% julius -C file.jconf -input vecnet
[client with microphone]
% adintool -in mic -out vecnet -paramtype MFCC_E_D_N_Z -veclen 25 -C file.jconf
You should set appropriate feature vector's type and length to
adintool with "-paramtype TYPE", "-veclen length". You should also
set feature extraction parameters as the same as Julius. Since
adintool uses JuliusLib for the extraction, it accepts Jconf file and
setting options as same as Julis. So the easier way is to apply the
same Jconf file to adintool with "-C" option as shown above.
- Compilation error on OS X.
- Unnecessary debug messages in adintool.
- Several bugs around reading / applying "-cmnload".
- FBANK and MELSPEC support.
- Network-based feature vector and outprob vector input.
- Static mean/variance for cepstral mean/variance normalization.
- State output probability (i.e. outprob) vector input for DNN-HMM decoding.
- State ID "" extension of hmmdefs for DNN-HMM decoding.
- Real-time feature extraction and network transmittion by 'adintool'.
- "mkbinhmm" now keeps the state order and id of the original hmmdefs.
- For portaudio, pause / resume operation synced between engine and audio I/O
- Load / save cepstral mean/variance of CMN/CVN in HTK text format.
[-input vecnet] read feature / outprob vectors from network
[-input outprob] read outprob vectors from HTK parameter file
[-outprobout [file]] save computed outprob vectors to HTK file (for debug)