Sonic is a simple algorithm for speeding up or slowing down speech.  However,
it's optimized for speed ups of over 2X, unlike previous algorithms for changing
speech rate.  The Sonic library is a very simple ANSI C library that is designed
to easily be integrated into streaming voice applications, like TTS back ends.

The primary motivation behind Sonic is to enable the blind and visually impaired
to improve their productivity with open source speech engines, like espeak.
Sonic can also be used by the sighted.  For example, Sonic can improve the
experience of listening to an audio book on an Android phone.

A native Java port of Sonic is in Sonic.java.  Main.java is a simple example of
how to use Sonic.java.  To play with it, you'll need a "talking.wav" file in the
current directory, and you'll want to change the speed, pitch or other
parameters manually in Main.java, in the main method.

Sonic is Copyright 2010, 2011, Bill Cox, all rights reserved.  It is released as
open source under the Lesser Gnu Public License version 2.1.  All files except
main.c, Main.java and all the sound samples are LGPL.  main.c Main.java and the
sound samples in the samples directory are in the public domain.  As a special
exception, you may add the source code for sonic.c or Sonic.java to your
project, rather than linking against a libsonic or adding Sonic.jar, but any
changes to these two files must be published according to the LGPL terms.

Performance test:

I sped up a 751958176 byte wav file with sonic (a 9 hour, 28 minute mono audio
file encoded at 16-bit 11.KHz), but with the output writing disabled.  The
reported time, running Ubuntu 11.04 on my HP Pavilion dm4 laptop was:

real    0m50.839s
user    0m47.370s
sys     0m0.620s

The Java version is not much slower.  It reported:

real    0m52.043s
user    0m51.190s
sys     0m0.310s

Author: Bill Cox
email: waywardgeek@gmail.com
