eGuideDog
free software for the blind
|
|
How to setup eSpeak TTS server for WebSpeech(updated on May 2, 2013) Step 1: Download and install eSpeakPlease get eSpeak from http://espeak.sourceforge.net/download.html. (You may need to access the page with a proxy or VPN if you are in China.)Step 2: Install lameHere is the website of lame. However, I didn't build lame from source. It can be installed with `apt-get` on Debian or Ubuntu, `yum` on Fedora, `zypper` on OpenSUSE or `port` on Mac.Step 3: Write a Web script to handle requestsTake PHP for example:
<?php
// change following setting to a cache folder could increase performance
$base_dir = '/tmp';
// get input parameters
$text = $_GET['text'];
if (isset($_GET['voice'])) {
$voice = $_GET['voice'];
} else {
$voice = 'en';
}
if (isset($_GET['speedDelta'])) {
$speed_delta = $_GET['speedDelta'];
} else {
$speed_delta = 0;
}
$speed = (int)(175 + 175 * $speed_delta / 100);
if (isset($_GET['pitchDelta'])) {
$pitch_delta = $_GET['pitchDelta'];
} else {
$pitch_delta = 0;
}
$pitch = (int)(50 + $pitch_delta / 2);
if (isset($_GET['volumeDelta'])) {
$volume_delta = $_GET['volumeDelta'];
} else {
$volume_delta = 0;
}
$volume = (int)(100 + $volume_delta);
$filename = md5($text) . '.mp3';
$filepath = $base_dir . '/v' . $voice . 's' . $speed . 'p' . $pitch .
'a' . $volume . 't' . $filename;
$text = escapeshellarg($text);
if (!file_exists($filepath)) {
$cmd = "espeak -s $speed -p $pitch -a $volume --stdout $text |\
lame --preset voice -q 9 --vbr-new - $filepath";
exec($cmd);
}
header('Content-Type: audio/mpeg');
header('Content-Length: ' . filesize($filepath));
readfile($filepath);
?>
Tips: if you fail to execute system command in PHP code above, check whether espeak and lame are in PATH of web server. Or make a symbol link to /usr/bin |
|