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
-
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.
-
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
Build
-
gulp Javascript build system
-
Transpiler
-
Babel (ES6)
-
Cssnext (CSS)
-
Optimize
-
Code Quality & Analysis
- eslint javascript linting utility
- csslint css code style linter
- [jsonlint] (https://github.com/rogeriopvl/gulp-jsonlint) json linter
- sloc Source line of codes
- jsdoc Generate API document by running documentationjs
Test
Server
Client side libraries
-
l20n client side internationalization
-
Bootstrap mobile first front-end framework
- Bootstrap Material Design material design theme for Bootstrap
-
Browser polyfill
- localforage enhanced offline storage API
- fetch replacement of XMLHTTPRequest
-
Commincation with the Kaldi Server
- dictatemp3.js STT using the kaldi-gstreamer-server
License
Credit
Developers and designers from node.js, bower, express, gulp, Firefox OS, and people who involved in improving Web technologies.