/iris

Demo WebApp using Kaldi DNN engine to convert speech to text

Primary LanguageJavaScript

project logo

iris

Demo WebApp using kaldi DNN STT.

This is a demo webapp that uses a server based kaldi deep neural network speech-to-text engine to convert speech to text.

Rapid, but not Quick, Setup

Setting up iris

  1. Install node.js or io.js

  2. Install useful command-line tools globally:

    $ npm install -g bower karma
    

    To fetch dependent packages, enter the iris folder and run

    $ npm install
    

    To bind the git pre-commit code style check, run command:

    $ gulp githooks
    

    Now you are all set. The above instructions only need to be executed once.

  3. If you are edit code, run command:

    $ gulp test
    

    To automaticly monitor and trigger all test when you change the code.

Setting up Kaldi

In this section we will explain how to start up a kaldi deep neural network server.

The kaldi server is based off of the Amazon AMI kaldi-dnn. This image employs the kaldi DNN engine and a model trained off of the TED-LIUM Corpus.

The arcitecture of the kaldi server calls for a single master node and one, or more, worker nodes. A worker node may be on the same physical hardware as the master, or can be located on another physical node. As we want to keep things simple in this demo, we will have a master node and four worker nodes all on the same physical hardware. Simplifing setup, the the Amazon AMI kaldi-dnn is configured to have the master node and four worker nodes start on boot. Thus, all you need do is start an instance using the Amazon AMI kaldi-dnn.

So, to start a kaldi server, one starts an EC2 instance based on the AMI kaldi-dnn. This instance should have an NVIDIA GPU, as the deep neural network employs CUDA. Furthermore, this instance should be accessable via port 8888, which can be accomplished through configuration of its security group. A reasonable instance type to choose is g2.2xlarge.

General Info

Key Technologies

  • Bower - For library and app dependency management.
  • npm - For build-time dependency management.
  • gulp - For building, packaging, and workflow.
  • Babel - So we can leverage es6 modules and classes today.
  • CssNext - So we can leverage new CSS specs today.

What kind of web apps does iris support?

  • static hosting web app
  • dynamic web app with node.js/express backend
  • packaged web app for Firefox Marketplace or Chrome Store
  • cordova/phonegap for multiple platform native app

To build the deployable web app, run command:

$ npm run static|dynamic|pack|cordova|github

Choose one of the above npm command based on your needs.

Tools Used:

Package Management

  • npm Node Package manager
  • bower Libraries manager

Build

Test

  • Karma test runner
  • Mocha test framework
    • Chai assertion library
    • Sinon test spies, stubs and mocks

Server

Client side libraries

License

The MIT License

Credit

Developers and designers from node.js, bower, express, gulp, Firefox OS, and people who involved in improving Web technologies.