/kaldi.js

Primary LanguageC++OtherNOASSERTION

Kaldi.js

This is a version of Kaldi tweaked to build to WebAssembly. Check out the Zork demo. For the Kaldi speech recognition toolkit, see the official repository.

Build instructions

First, install Emscripten. Then do the following:

git clone --recursive https://github.com/adrianbg/kaldi.js.git

cd kaldi.js/tools
extras/check_dependencies.sh

# ... install anything that's missing

emmake make CXXFLAGS=-O3 LDFLAGS=-O3 openfst

cd ../CLAPACK-wa
emmake make

cd ..
wget http://mirrors.ocf.berkeley.edu/gnu/gsl/gsl-2.4.tar.gz
tar xvzf gsl-2.4.tar.gz
ln -s gsl-2.4 gsl
cd gsl
emconfigure ./configure
emmake make

cd ../src
CXXFLAGS=-O3 LDFLAGS=-O3 emconfigure ./configure --static --static-fst=no --clapack-root=../tools/CLAPACK-WA --gsl-root=../tools/gsl/
emmake make depend
emmake make

# For the Zork demo:

cd js/zork
emmake make

cd ..
wget https://github.com/nlohmann/json/releases/download/v2.1.1/json.hpp
emmake make zork
npm install

The original Kaldi README follows.

Kaldi Speech Recognition Toolkit

To build the toolkit: see ./INSTALL. These instructions are valid for UNIX systems including various flavors of Linux; Darwin; and Cygwin (has not been tested on more "exotic" varieties of UNIX). For Windows installation instructions (excluding Cygwin), see windows/INSTALL.

To run the example system builds, see egs/README.txt

If you encounter problems (and you probably will), please do not hesitate to contact the developers (see below). In addition to specific questions, please let us know if there are specific aspects of the project that you feel could be improved, that you find confusing, etc., and which missing features you most wish it had.

Kaldi information channels

For HOT news about Kaldi see the project site.

Documentation of Kaldi:

  • Info about the project, description of techniques, tutorial for C++ coding.
  • Doxygen reference of the C++ code.

Kaldi forums and mailing lists:

We have two different lists

  • User list kaldi-help
  • Developer list kaldi-developers:

To sign up to any of those mailing lists, go to http://kaldi-asr.org/forums.html:

Development pattern for contributors

  1. Create a personal fork of the main Kaldi repository in GitHub.
  2. Make your changes in a named branch different from master, e.g. you create a branch my-awesome-feature.
  3. Generate a pull request through the Web interface of GitHub.
  4. As a general rule, please follow Google C++ Style Guide. There are a few exceptions in Kaldi. You can use the Google's cpplint.py to verify that your code is free of basic mistakes.

Platform specific notes

PowerPC 64bits little-endian (ppc64le)

Android

  • Kaldi supports cross compiling for Android using Android NDK, clang++ and OpenBLAS.
  • See this blog post for details.