diff options
author | B. Watson <yalhcru@gmail.com> | 2018-06-17 22:23:45 +0100 |
---|---|---|
committer | David Spencer <idlemoor@slackbuilds.org> | 2018-06-17 22:23:45 +0100 |
commit | 25a8eead0087db861e96806c9dfec4b39d0fb220 (patch) | |
tree | f6482b1d2daa911375714253fbbeeeff7ae6d0bc | |
parent | 5bc5e45e780a49bea80ab9216f4cf8b8dd8771bc (diff) | |
download | slackbuilds-25a8eead0087db861e96806c9dfec4b39d0fb220.tar.gz |
accessibility/svox: Added (small footprint text-to-speech engine).
Signed-off-by: David Spencer <idlemoor@slackbuilds.org>
-rw-r--r-- | accessibility/svox/README | 10 | ||||
-rw-r--r-- | accessibility/svox/dont_try_to_free_argv.diff | 12 | ||||
-rw-r--r-- | accessibility/svox/pico2audio | 61 | ||||
-rw-r--r-- | accessibility/svox/pico2wave.1 | 61 | ||||
-rw-r--r-- | accessibility/svox/slack-desc | 19 | ||||
-rw-r--r-- | accessibility/svox/svox.SlackBuild | 132 | ||||
-rw-r--r-- | accessibility/svox/svox.info | 12 |
7 files changed, 307 insertions, 0 deletions
diff --git a/accessibility/svox/README b/accessibility/svox/README new file mode 100644 index 0000000000..e632b22fb7 --- /dev/null +++ b/accessibility/svox/README @@ -0,0 +1,10 @@ +svox (small footprint text-to-speech engine) + +The SVOX Pico engine is a software speech synthesizer for German, English +(GB and US), Spanish, French and Italian. SVOX produces a clear and +distinct speech output made possible by the use of Hidden Markov Model +(HMM) algorithms. + +The package includes the pico2wave utility, and everything else from +the Debian packages libttspico-data, libttspico-dev, libttspico-utils, +and libttspico0. diff --git a/accessibility/svox/dont_try_to_free_argv.diff b/accessibility/svox/dont_try_to_free_argv.diff new file mode 100644 index 0000000000..04da6f9a52 --- /dev/null +++ b/accessibility/svox/dont_try_to_free_argv.diff @@ -0,0 +1,12 @@ +diff -Naur svox-1.0+git20130326/pico/bin/pico2wave.c svox-1.0+git20130326.patched/pico/bin/pico2wave.c +--- svox-1.0+git20130326/pico/bin/pico2wave.c 2018-06-17 02:50:56.203338391 -0400 ++++ svox-1.0+git20130326.patched/pico/bin/pico2wave.c 2018-06-17 03:00:01.026324549 -0400 +@@ -371,8 +371,6 @@ + pico_terminate(&picoSystem); + picoSystem = NULL; + } +- if (text) +- free(text); + exit(ret); + } + diff --git a/accessibility/svox/pico2audio b/accessibility/svox/pico2audio new file mode 100644 index 0000000000..4f09c8805b --- /dev/null +++ b/accessibility/svox/pico2audio @@ -0,0 +1,61 @@ +#!/bin/sh + +usage() { + SELF="$( basename $0 )" + INDT="$( echo $SELF | sed 's,., ,g' )" + cat <<EOF +$SELF - wrapper for pico2wave, renders text to speech and +$INDT plays it using the 'play' command. + +Written by B. Watson <yalhcru@gmail.com>, for the SlackBuilds.org project. +Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +If a -l <language> option is given, it will be passed to pico2wave. + +Exit status of $SELF is that of pico2wave. + +Examples: + + $SELF 'Hello world.' + Speaks "Hello world" in the default language (en-US) + + $SELF -l en-GB 'Hello world.' + As above, in a British accent. + + fortune -s | $SELF + Reads from standard input. + + $SELF < /etc/motd + Speak a text file. Don't forget the < or it says the filename instead. +EOF +} + +# main() + +case "$1" in + '-?'|-h|-help|--help) + usage + exit 0 + ;; + -l) LOPT="$1 $2" + shift + shift + ;; + -l?*) LOPT="$1" + shift + ;; +esac + +DIR=$( mktemp -t -d pico2audio.XXXXXX ) +if [ ! -d "$DIR" ]; then + exit 1 # mktemp already printed an error message +fi + +which pico2wave >/dev/null || exit 1 +which play >/dev/null || exit 1 + +pico2wave $LOPT -w $DIR/tmp.wav "$@" +E="$?" +play -q $DIR/tmp.wav 2>/dev/null +rm -rf $DIR +exit "$E" diff --git a/accessibility/svox/pico2wave.1 b/accessibility/svox/pico2wave.1 new file mode 100644 index 0000000000..13da7e31f5 --- /dev/null +++ b/accessibility/svox/pico2wave.1 @@ -0,0 +1,61 @@ +.\" This file modified from the Debian version by B. Watson <yalhcru@gmail.com> +.TH PICO2WAVE "1" "June 2018" "pico2wave" "SlackBuilds.org" +.SH NAME +pico2wave \- Small Footprint TTS +.SH SYNOPSIS +.B pico2wave +\fB-w\fR +\fI<filename.wav>\fR +[ \fB-l\fR \fI<language>\fR ] +[ \fI<words>\fR ] +.SH DESCRIPTION +.B pico2wave +is a small footprint Text to Speech utility, using the SVOX Pico +engine \fB[*]\fR. It converts +text given on the command line (or standard input, if no +\fI<words>\fR on command line) to audible speech, and writes +to a RIFF .wav file. +.PP +The generated wav files are PCM, 16-bit mono, 16KHz sampling rate. +.PP +\fB[*]\fR The SVOX Pico engine is a software speech synthesizer for German, English +(GB and US), Spanish, French and Italian. SVOX produces a clear and +distinct speech output made possible by the use of Hidden Markov Model +(HMM) algorithms. +.SH OPTIONS +.TP +\fB\-w\fR, \fB\-\-wave\fR=\fIfilename\fR.wav +Write output to this WAV file (extension SHOULD +be .wav). This option is required: \fBpico2wave\fR +cannot write to standard output (not even if you +use \fB-w /dev/stdout\fR, sorry). If the file +already exists, it will be \fBoverwritten\fR with no +confirmation or warning. +.TP +\fB\-l\fR, \fB\-\-lang\fR=\fIlang\fR +Language (default: \fBen\-US\fR). The languages supported are +currently \fBde\-DE\fR, \fBen\-GB\fR, \fBen\-US\fR, +\fBes\-ES\fR, \fBfr\-FR\fR, \fBit\-IT\fR. +.SS "Help options:" +.TP +\-?, \fB\-\-help\fR +Show help message +.TP +\fB\-\-usage\fR +Display brief usage message +.SH EXAMPLES +.TP +.B +pico2wav -w test.wav 'Hello, world.' +.PP +Creates a file \fBtest.wav\fR containing the words "Hello, world." +.TP +.B +echo 'Hello, world.' | pico2wav -w test.wav +.PP +Same as above, reading from standard input. +.TP +.B +pico2wav -w test.wav < gettysburg_address.txt +.PP +Convert an entire text file to speech. diff --git a/accessibility/svox/slack-desc b/accessibility/svox/slack-desc new file mode 100644 index 0000000000..fe3117dd9e --- /dev/null +++ b/accessibility/svox/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. +# Line up the first '|' above the ':' following the base package name, and +# the '|' on the right side marks the last column you can put a character in. +# You must make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':' except on otherwise blank lines. + + |-----handy-ruler------------------------------------------------------| +svox: svox (small footprint text-to-speech engine) +svox: +svox: The SVOX Pico engine is a software speech synthesizer for German, +svox: English (GB and US), Spanish, French and Italian. SVOX produces a +svox: clear and distinct speech output made possible by the use of Hidden +svox: Markov Model (HMM) algorithms. +svox: +svox: +svox: +svox: +svox: diff --git a/accessibility/svox/svox.SlackBuild b/accessibility/svox/svox.SlackBuild new file mode 100644 index 0000000000..cdbfdbf40d --- /dev/null +++ b/accessibility/svox/svox.SlackBuild @@ -0,0 +1,132 @@ +#!/bin/sh + +# Slackware build script for svox + +# Written by B. Watson (yalhcru@gmail.com) + +# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details. + +# This is heavily based on Debian's packaging, see: +# https://packages.debian.org/source/sid/svox + +# It's in the Debian non-free repo on a technicality: svox is free +# software released under the Apache-2.0 license, but the sources +# for the compiled voices (/usr/share/pico/lang/*.bin) are missing, +# so it doesn't quite comply with the its own license. + +# Notes to self: + +# - The _8 in the version number is the Debian build number, keep it +# in sync with future Debian updates. +# - "Upstream" here is Debian, not Android. Debian has svox's homepage +# listed as "www.android.com", it seems more useful to set HOMEPAGE +# to the Debian page for svox. + +PRGNAM=svox +VERSION=${VERSION:-1.0+git20130326_8} +BUILD=${BUILD:-1} +TAG=${TAG:-_SBo} + +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) ARCH=i586 ;; + arm*) ARCH=arm ;; + *) ARCH=$( uname -m ) ;; + esac +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp/SBo} +PKG=$TMP/package-$PRGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +set -e + +# Split up and recombine Debian's version number, we can't have a - in +# a Slackware version number. And using the -8 for BUILD is a bad idea +# (thanks for pointing that out, idlemoor). +DEBVER="$( echo $VERSION | cut -d_ -f1 )" +DEBBLD="$( echo $VERSION | cut -d_ -f2 )" +PRGVER=${PRGNAM}_$DEBVER + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PRGNAM-$DEBVER +tar xvf $CWD/$PRGVER.orig.tar.gz +cd $PRGNAM-$DEBVER +tar xvf $CWD/$PRGVER-$DEBBLD.debian.tar.xz +chown -R root:root . +find -L . \ + \( -perm 777 -o -perm 775 -o -perm 750 -o -perm 711 -o -perm 555 \ + -o -perm 511 \) -exec chmod 755 {} \+ -o \ + \( -perm 666 -o -perm 664 -o -perm 640 -o -perm 600 -o -perm 444 \ + -o -perm 440 -o -perm 400 \) -exec chmod 644 {} \+ + +# Apply all of Debian's patches. Many thanks to the Debian maintainers +# for all the work that went into these patches. +for i in $( cat debian/patches/series ); do + # use -e here to skip commented-out patches in 'series'. + [ -e debian/patches/$i ] && patch --verbose -p1 < debian/patches/$i +done + +# Stop pico2wave from segfaulting on exit, when given words on the +# command line. The code presumably works on Debian, maybe because +# of differences in the popt library, or in glibc itself? +patch --verbose -p1 < $CWD/dont_try_to_free_argv.diff + +cd pico +autoreconf -if + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --enable-shared \ + --disable-static \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PRGNAM-$VERSION \ + --build=$ARCH-slackware-linux + +make +make install-strip DESTDIR=$PKG + +# We don't need this: +rm $PKG/usr/lib$LIBDIRSUFFIX/*.la + +# It drives me nuts that pico2wave can't play to my speakers, so +# I wrote a script: +install -m0755 -oroot -groot $CWD/pico2audio $PKG/usr/bin + +# The original Debian man page was generated from the --help output. I've +# expanded it to include a proper description, examples, a list of +# allowed languages for the -l option, and a few other goodies. +mkdir -p $PKG/usr/man/man1 +gzip -9c < $CWD/pico2wave.1 > $PKG/usr/man/man1/pico2wave.1.gz + +mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION +cat ../debian/copyright > $PKG/usr/doc/$PRGNAM-$VERSION/copyright +cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz} diff --git a/accessibility/svox/svox.info b/accessibility/svox/svox.info new file mode 100644 index 0000000000..64f6803b89 --- /dev/null +++ b/accessibility/svox/svox.info @@ -0,0 +1,12 @@ +PRGNAM="svox" +VERSION="1.0+git20130326_8" +HOMEPAGE="https://packages.debian.org/source/sid/svox" +DOWNLOAD="http://http.debian.net/debian/pool/non-free/s/svox/svox_1.0+git20130326.orig.tar.gz \ + http://http.debian.net/debian/pool/non-free/s/svox/svox_1.0+git20130326-8.debian.tar.xz" +MD5SUM="df4bf610ff4273b420e80ff64af93130 \ + fe78ebb55777b01fbbde150e90d23e00" +DOWNLOAD_x86_64="" +MD5SUM_x86_64="" +REQUIRES="" +MAINTAINER="B. Watson" +EMAIL="yalhcru@gmail.com" |