==========================================================================
Users of version 0.31 and below, please note:  As of 0.32, the
default feature extractor really is Rasta-PLP, it was vanilla PLP
before.  You *have* to "rm ~/.ears/MRASTA-V/*" and train_ears again!
The old behaviour can then be gotten by configuring FEATURE PLP and 
retraining.
Sorry for the inconvenience.   ralf
==========================================================================

    ---------------------------------------------------------
                            EARS
    (something like 'Easy Automatic Recognition of Speech...)
    ---------------------------------------------------------

The EARS package is intended as a limited ready-to-use single word 
recognizer for Linux systems.  However, its design already aims at
being a host for all kinds of methods used in speech recognition (SR).

The ALPHA versions of the package consist of the following programs:

  train_ears - to speak a list of words and train the recognizer

  listen     - listens to your mic and, when a word is seen, shows
               the corresponding keyboard action

  (in beta versions, there will also be the 'ears' program itself
   which acts like 'listen' but additionally drives a shell.  As
   of now, you can get similar functionality with either Karl J. Runge's
   launch.pl or Dan Chaney's act program.  Both are in contrib/)

The code for EARS is available under the GNU General Public License.
See the file COPYING for details.

You can get source code from
          http://home.pages.de/~ears/
          ftp://sunsite.mirror/...apps/sound/speech/
          ftp://svr-ftp.eng.cam.ac.uk/pub/comp.speech/recognition

There is now also a mailinglist where you can tune in and get the
latest news about the package (thanks to Chris Blum).  Send mail to 
majordomo@phil.uni-sb.de with subscribe ears-list in the body.
To just send a mail to the list, use ears-list@phil.uni-sb.de .



What you need to run binaries
-----------------------------
First, a medium fast machine (i486/66 and up) with FPU.  Then, a soundcard
with the capability to record from a microphone.  Third, a sound driver:

1. Possibility:  a Linux system with kernel sound support.  It may be 
possible to use EARS on other machines running the Linux driver called
Voxware from Hannu Savolainen (mail hannu@voxware.pp.fi).

2. Possibility:  a Linux/Un*x system having the Open Sound System (OSS)
driver which is a nice product BTW.  Just change two lines in the Makefile.  
To get the driver, see http://www.4front-tech.com

3. Possibility:  a system having the Sun audio system.  Read README.sun
on that and change the Makefile accordingly.

4. Possibility:  another Un*x system having the AF-Tools.  Read
the file README.af on that one.  Support is incomplete since some
things changed and I don't have an AF machine to adapt the source.

What you need to compile the package
------------------------------------
You need gcc-2.7.2 and libstdc++.a from libg++-2.7.1.4 or higher, 
and for the non-commandline version libncurses.a and libpanel.a (from 
ncurses-1.9.9e).
Unfortunately, due to the flowing nature of gcc/libstdc++, I can only 
guarantee successful compiles for my own configuration which is, as of
now, gcc-2.7.2-elf together with libg++-2.7.1.4.

What you get
------------
A SR program you can play with and add your own source code to it.
Isn't that nice?  ;)

What is implemented now
-----------------------
As of this alpha release, the feature extractor is: PLP and Rasta-PLP 
from the Mrasta package (version 2.2.1).  Soon to come: Jah-Rasta.

The implemented recognizers are
- Dynamic Time Warp (DTW), thanks to Dr. Robinson's Cookbook.
- an improved version of DTW called NDTW (this is the default).
- non-recurrent neural nets on fixed-size sound patterns, like
  vanilla backpropagation (BP) and backprop with momentum term (BPMT),
  also known as conjugate gradient descent.  Unusable.

Install
-------
EARS will untar into a directory 'ears-<version>', for example
  $ tar xvfz ears-0.32.tar.gz
untars into ./ears-0.32/*

Then cd to that dir and do a 'make'.  Then, depending on your habits, 
get the usual quantity of stimulant.  

Now start train_ears, record some digits, run listen and see them
recognized.  Then change the basename to alphabet and after recording
those, start 'listen alphabet'.  In ideal situations, recognition 
can be as accurate as 95%.
New words are easily added by either editing a given .words file or 
creating a new one.  Don't forget to train_ears after you increased 
the word list.

ears creates a directory .ears in your home path, so if you want to
get rid of ears completely, you have to delete this too.

Understanding EARS
------------------
I have tried to outline the source in doc/implementation.txt.
After grokking that, it should be easier for you to read the code, 
which, unfortunately, isn't as much commented as I would like.
Also, you might read CHANGES to see how coding/designing went along.

Improving EARS
--------------
Things that I think are to do are in doc/TODO --- YMMV.
Apart from improvements of the data handling, EARS needs to have the
following things to make it useful for method comparison:

- more feature extractors
- a better endpoint detection
- more, better and faster recognizers.  I guess there are dozens of
  methods that could be implemented, for example HMMs, TDNNs, all
  kind of non-recurrent and recurrent neural nets, wavelets, zero-
  crossings, hybrid methods, etc.
- a program for cross-validation that gives error rates for specific
  feature extractor/recognizer combinations.

And, of course, we need the 'ears' program to drive a shell.  This
later has to have the ability to take back erroneous inputs, and all
things one needs to work with it, like showing of alternative
interpretations, learning while using, and so on.

Other packages
--------------
Israel Diamand & Nir Arzooni have built what appears to be a module for
sending voice commands to fvwm using EARS.  Check 
<http://tochna.technion.ac.il/projects/winter96/FvwmVoice/FvwmVoice.html>

Acknowledgements
----------------
Without the following people, EARS wouldn't be possible:

- Linus Torvalds
- all people who made Linux to what it is
- Hrynek Hermansky for his Rasta feature extraction
- Tilo Schuerer for librecog and his patience
- Tony Robinson for his cookbook and the archive in Cambridge

Thanks to all people who helped with the project:

- Tilman Enss adapted Makefile to GNU standard; fixed bugs;
  wrote usage; made German message catalog.
- Niels Thorwirth ported ears to AF platforms; fixed bugs; wrote
  documents; introduced config.sh.
- Karl J. Runge contributed a perl script to launch programs.
- Dan Chaney wrote a nice C-frontend for 'listen' that does even more.
- Michael Ward added the sun sound interface, many suggestions.

And last but not least:
- the 4front-tech people for kindly giving me a free OSS license.

Contributing
------------
Changes to the source code should be mailed as diffs to ralf@ark.franken.de
I prefer unified diffs (use diff -u) as they are well readable.
Please include the version number the diffs are made against!

Many thanks in advance for your contribution,
ralf@ark.franken.de (Ralf W. Stephan)

Security
--------
You can mail me for MD5 checksums of the distributed packages
or check yours against the one on the webpage.

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.i

mQCNAi+VM3IAAAEEALZ8yJZRxEjs5G+FjZiVxgcowEwhMzX3fhuHYc6pScpAO4LU
MxIHk7PMCQDToIe84WDcTIkhTxcL8hY4xe17LdMvmqDmY62grAvWAb975JiPP6L9
IiHACsPYsW1pZ4swcaC8taO3kQH/7XPjEatBRizX2bBxKO7k4PUDwEOnE+zpAAUR
tCVSYWxmIFcuIFN0ZXBoYW4gPHJhbGZAYXJrLmZyYW5rZW4uZGU+iQCVAwUQMf2Z
4oqLq1fZzloJAQGQOQQAuhJZkFdqY1M4zPwGgV1qff1VkZ7g605vr0uYaCGPbeDN
6llNqrV0VA8ZpAki85zzAUJW6E2Y2FQy48n2lDa3rPj8kzWkCk4WkZHbS1bK86Io
2SrGyVgmCoYGNQwZDlXL2XMWxdrGBgkX8wVxka0pNRtBQFLkhYeGcwu2nWMGPASJ
AJUDBRAx6nFeV1sXbCHzEYkBASwxA/0YLHGVKx6UwJ6LQZMauEbLMhavUO+moqez
d/NLOdDnrbb1gFwseQ8yeJoRFKAWAWQO7wjiUwjNLKVUP2Jxt64kA+M6yf+MRnh1
Zlk6hEHYzg2tkIwjjIGO/8ArdFOY8L/xXdxJ8b8h9GeVv4yrvODK65HhOa61XI0b
+qbXm4HXlIkBFQMFEDHqcR+B4sTro62M/QEBdHoH/0XdWqM+CH3Fb89qzUiRVY/B
jEzvhjsPksRYgKeSug6eFGr1Os0I8xgAQN4ZJhpZHQpHkGUFNC2khfiCJ4CD37e9
1moLxBnGq4DTqK6ItxNkdyYD1/N9TB8B7UnoE49iAD0OAXFbKGJ/1Pvc/IRcgn/R
0BBJ9n0RMmVm9uus4htXP4pcEeS0HSL7WHViQ5TUbeBYHmBy/uvS1HoPz1WoO9wg
2tI+Pkn8/e8ABEBtAwxh19HDzoKJvmqsge8vMuszjgO9gESQOY/jkHAO/2tRKlae
bsqim3BUAR1Q+sjtsLVnKZ8ceDgcMb3IAuMH3x1gwUAXM5Xiwe/ssRstEDBt4cSJ
ARUCBRAwZV4tE2cUXcjmBfUBASBKB/sFEQZj26Zpo8RUpWKFnR5B0GWZ5IvoYu4M
0aRJOPL316zU/HYs/eTtpOCjAmDgWK3vd4XVbxAhtzBRS7ANEsBcCDPqgtzcQYxX
wRVe0DiArTlXrZIiSUwEcGmB73W84SdJeh9sMi+wR1zCcDHHCyXZuMOfrAmK2oFK
t0Xi2ORxhDEnEY7vWSJr/uLULAKQqIiF0TG/QvYDIfXDrw8LCc/r+bDIoX7YLsbg
wGDsGIkkocdd83cdoJBxJtom+qmPQZFMSE2tNrXhqPiAyutJ+VqQ09mVBncih3NN
BF1U9SascEmL2/6FearZgYfHOvO3yb0l+NLaJFUdroqe1s33cbc+iQCVAgUQL5jX
d3Ef04WwKISVAQFjmgQAtb7seyGbeukwo0Hho3vTAFMz3mtyspaKu1Gwb/buH7wD
mutbmunlMvnKl/V0dER9bQHUf/Zgin6zR7KShhZFp3FKgGhIJCHK0ah2SLGEhGmW
a/qpZZRpMMK7dddQKjs6SyQZFlkl+2q3MEDjwWoBaXGl711BtOn+QaJ+Vw7kTOuJ
AJUCBRAvl36g9QPAQ6cT7OkBAVIFA/0RPnkSs3tbadKfv/NxCOWHV7VzLjKjadEM
F7lAgnl/dQoYC2KWpXcwTqwznoamOw9OBKW3cuN+/IETHnJYnxxY5vbdo2VjW/jX
w9dRczyIUSVSDEvMY480dGWUSUWyj4p4XCHUvM3YyDI48k+vVQcFaoYVf7rW3VgH
epX3HM+95A==
=q/s6
-----END PGP PUBLIC KEY BLOCK-----
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: 2.6.i

mQENAjBlPbwAAAEH/29yEXSk4RZJyVpdTGykc+9to8WHF2LtTcEHTBjjvNEZLcCi
WgNC9Mg6gXJSW7gMWINhlzYNUS22N4oBbMWM97+V7uU218BYoBz2uSIAMYBZTCrS
b1aZxovy2IhXKEO0Lny8E9JvI3AdRyEsWHjxT3oCiXo4fldJ0VyXItd4vKDtdrBD
xYMx2geNk6wlnw5bpGn9mps+61xZpzesnl7wvqPS9x8x3vmzFrWviQRD+CsCtQLH
vC9j1mvHqabUJveFcsHedOskrkdv5J4wnS9RQoT/XDbfPFzfJipnTMCavaTJgRc9
pZQht+mmS/jwdhwADZsIEmbXFMXUE2cUXcjmBfUABRG0JVJhbGYgVy4gU3RlcGhh
biA8cmFsZkBhcmsuZnJhbmtlbi5kZT6JAJQDBRAx/ZmtiourV9nOWgkBAdkxA/dW
R9yDiTFvFzXJhRn9h5ehvYGmnEZT6CwSdLfqAZawiug4lW1VM7hlOcDOnmSsToE1
38h/TdIa66lHm/2HNw118IB+JFZVZY5SJcmX5VG9KIAFlvucrqMJJJblkYkblXqE
hxZAPIxpvcnNSJCDx0fsDLEYMscSfZhyA/G2fQoAiQCVAwUQMepxnFdbF2wh8xGJ
AQHdMgP+JlX77xrYRfFfjnVMGrfX6jxrN7kvPMwlnawIDMtfnaHcQTH6AjOinD/e
0LwDHj+7tRajWL5M+oba6zfGB83NGU82Ar1qzcV9YmLDZea8Py8ZVvmPCS4YvBD9
To8q43dHh1eY+TnPel3xuWEzGVSVNY/q5+RyyB1RYwFcSqtPR5eJARUDBRAx6m/K
geLE66OtjP0BAU1dB/0WuYeBoRCokAOtC4oLTNulA/JXvWtxfUrfR7cRZircjD37
BOgSvnbtr7lOuj05MHFoVfBYxxf1bRdBRADEay1rrC2B/bMejRRod5RynoR5rfyV
QxWKdsRc325vp4Z+f9WItiNeMWxION3X6NIuVQOt2cueKiK/2ZpsD3rJaKpH0dwz
jFyAfKIoVlBtbypNUS4yJLJhzdSUpSR5MtW6HbRtZ/6Bed0uDweNMvbmNfOqcACc
MR55JcRn5ziPCLZYiY00SZRp02vXJA0pGllTAlFNQVKQtgLJ/y+0Be+V9h836QIr
qCP9CeqjThiom8GW2lSPEAqMrxZhFrNnS9jFYm4HiQEVAgUQMGVgFhNnFF3I5gX1
AQHb4gf8DF4WSC/FsF+eRPmwKi43qRsTMrFr4lwmgStF4VQj2fOmw7/BdstRhjkV
OIPhy79IYp4Ptbl1hLoEBG/Z9rL05ZBQFEBGCUDYCf8C9IGO9C9GliN+ykfAycQ1
4szeK+NgtjcmlbuJ4jo2/M5JHyNvytUe6htgRwGTy0LieHrvB8nLFn9wTT2B0hnC
EoiR1NDA5l57FiAv1VuOE/J7vUlSGn6Wwug/4W/s3gRWgS6kpT23ff7NmE5iEk5J
a+5cHB5DeS6x35NIpdnzOfgKv/19LocSguGRvSFQKGJRbZMSYjUpiU3I6/pMrSq5
KQz6+lahpkAaTNmOzzcGyMSb+MOw6IkAlQIFEDBlXfT1A8BDpxPs6QEBLRYEAKOy
3q5UpfawHObRGcqOPWdqgnzj+7HKitunEqqirhZ+w0x4aPJk/2zPFD5o5Gqtnij7
t/EJOdv/+N3gGXFobWr363GMLjijn18W8Ook4Ff9nhUUg0cxmtgj3m3/m8gQ7OZG
0GToAuFlpIrO2hA2Bo/xdYJxHZZMkjidFTrC123m
=4tcg
-----END PGP PUBLIC KEY BLOCK-----
