| 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 |