aboutsummaryrefslogtreecommitdiff
path: root/accessibility/picospeaker
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2022-01-21 13:37:08 -0500
committerWilly Sudiarto Raharjo <willysr@slackbuilds.org>2022-01-25 14:44:36 +0700
commit599e1f6f578276d8eedeed8d6ed51217064d40fb (patch)
treebb1f7351e0a8b4209fb19d7cc7d0378ac459e66b /accessibility/picospeaker
parent00decef7a9244dc0278c45790f38e0dbeca96578 (diff)
accessibility/picospeaker: Added (CLI frontend to svox).
Signed-off-by: Willy Sudiarto Raharjo <willysr@slackbuilds.org>
Diffstat (limited to 'accessibility/picospeaker')
-rw-r--r--accessibility/picospeaker/36273f9d_and_d6a7a01.diff124
-rw-r--r--accessibility/picospeaker/README6
-rw-r--r--accessibility/picospeaker/picospeaker.195
-rw-r--r--accessibility/picospeaker/picospeaker.SlackBuild61
-rw-r--r--accessibility/picospeaker/picospeaker.info10
-rw-r--r--accessibility/picospeaker/picospeaker.rst84
-rw-r--r--accessibility/picospeaker/slack-desc19
7 files changed, 399 insertions, 0 deletions
diff --git a/accessibility/picospeaker/36273f9d_and_d6a7a01.diff b/accessibility/picospeaker/36273f9d_and_d6a7a01.diff
new file mode 100644
index 0000000000000..cd49730c05ddf
--- /dev/null
+++ b/accessibility/picospeaker/36273f9d_and_d6a7a01.diff
@@ -0,0 +1,124 @@
+diff --git a/README b/README
+index c540542..87bb3d8 100644
+--- a/README
++++ b/README
+@@ -1,5 +1,5 @@
+ PicoSpeaker
+-Written by Kyle
++Orginally Written by Kyle and forked by shilber01 to work with SNIPS (snips.ai)
+
+ DESCRIPTION
+
+diff --git a/pico.patch b/pico.patch
+new file mode 100644
+index 0000000..0e2680a
+--- /dev/null
++++ b/pico.patch
+@@ -0,0 +1,19 @@
++--- picospeaker.bak 2018-08-27 22:03:05.000000000 +0200
+++++ picospeaker 2018-08-27 23:49:35.289440981 +0200
++@@ -59,8 +59,16 @@
++ exit(0)
++ elif ( argv[opt] == '-l' ) or ( argv[opt] == '--language' ):
++ languages = ('en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT')
+++ lang_map = {
+++ 'en': 'en-US',
+++ 'de': 'de-DE',
+++ 'es': 'es-ES',
+++ 'fr': 'fr-FR',
+++ 'it': 'it-IT'}
++ if ( argv[opt+1] in languages ):
++ settings['language'] = argv[opt+1]
+++ elif ( argv[opt+1] in lang_map.keys() ):
+++ settings['language'] = lang_map[argv[opt+1]]
++ else:
++ stderr.write('Language ' + argv[opt+1] + ' is currently not available.\n')
++ stderr.write('Available languages are ' + ', '.join(languages[:-1]) + ' and ' + languages[-1] + '.\n')
+\ No newline at end of file
+diff --git a/picospeaker b/picospeaker
+index 6b49d34..b9f91c3 100755
+--- a/picospeaker
++++ b/picospeaker
+@@ -14,8 +14,8 @@ from time import sleep
+
+ # help and version tuples
+ version = (
+- 'PicoSpeaker 0.6.2',
+- 'Written by Kyle',
++ 'PicoSpeaker 0.6.2-1',
++ 'Written by Kyle,forked by shilbert01',
+ 'This program is free and unencumbered software released into the public domain.',
+ 'See the included UNLICENSE file for details.')
+ help = (
+@@ -59,8 +59,16 @@ def parse ():
+ exit(0)
+ elif ( argv[opt] == '-l' ) or ( argv[opt] == '--language' ):
+ languages = ('en-US', 'en-GB', 'de-DE', 'es-ES', 'fr-FR', 'it-IT')
++ lang_map = {
++ 'en': 'en-US',
++ 'de': 'de-DE',
++ 'es': 'es-ES',
++ 'fr': 'fr-FR',
++ 'it': 'it-IT'}
+ if ( argv[opt+1] in languages ):
+ settings['language'] = argv[opt+1]
++ elif ( argv[opt+1] in lang_map.keys() ):
++ settings['language'] = lang_map[argv[opt+1]]
+ else:
+ stderr.write('Language ' + argv[opt+1] + ' is currently not available.\n')
+ stderr.write('Available languages are ' + ', '.join(languages[:-1]) + ' and ' + languages[-1] + '.\n')
+@@ -117,7 +125,7 @@ def parse ():
+ continue
+ else:
+ # First, die with an error if compression and/or type are set but no output file is specified
+- if ( ( settings.has_key('compression') ) or ( settings.has_key('filetype') ) ) and not ( settings.has_key('output') ):
++ if ( ( 'compression' in settings ) or ( 'filetype' in settings ) ) and ( 'output' not in settings ):
+ stderr.write('You must specify the output file.\n')
+ exit(1)
+ # Now the text can be added to the settings object and the loop can be broken
+@@ -128,7 +136,7 @@ def parse ():
+ def tts():
+ 'convert text to speech data and store it in a temporary file using the pico2wave utility from SVox Pico'
+ command = ['pico2wave', '-w', temp]
+- if ( settings.has_key('language') ): command += ['-l', settings['language']]
++ if ( 'language' in settings ): command += ['-l', settings['language']]
+ command += ['--', settings['text']]
+ try:
+ call(command)
+@@ -139,16 +147,16 @@ def tts():
+ def speaker():
+ 'speaks the text, or saves it if an output file was specified on the command line'
+ command = ['play', '-q']
+- if ( settings.has_key('volume') ): command += ['-v', settings['volume']]
++ if ( 'volume' in settings ): command += ['-v', settings['volume']]
+ command.append(temp)
+- if ( settings.has_key('output') ):
++ if ( 'output' in settings ):
+ command[0] = 'sox'
+ del command[1]
+- if ( settings.has_key('filetype') ): command += ['-t', settings['filetype']]
+- if ( settings.has_key('compression') ): command += ['-C', settings['compression']]
++ if ( 'filetype' in settings ): command += ['-t', settings['filetype']]
++ if ( 'compression' in settings ): command += ['-C', settings['compression']]
+ command.append(settings['output'])
+- if ( settings.has_key('pitch') ): command += ['gain', '-0.15', 'pitch', str(float(settings['pitch'])*100)]
+- if ( settings.has_key('rate') ): command += ['gain', '-0.1', 'tempo', '-s', str(1+float(settings['rate'])/100)]
++ if ( 'pitch' in settings ): command += ['gain', '-0.15', 'pitch', str(float(settings['pitch'])*100)]
++ if ( 'rate' in settings ): command += ['gain', '-0.1', 'tempo', '-s', str(1+float(settings['rate'])/100)]
+ speak = Popen(command)
+ sleep(0.1) # the temp file should be open by now
+ # The temp file can be removed as soon as it is opened in case PicoSpeaker is killed while speaking
+@@ -157,11 +165,11 @@ def speaker():
+
+ try:
+ settings = parse()
+- if ( not settings.has_key('text') ):
++ if ( 'text' not in settings ):
+ settings['text'] = stdin.read()
+ tts()
+ speaker()
+ except KeyboardInterrupt:
+ stderr.write('Keyboard interrupt received. Cleaning up.\n')
+- try: remove(temp)
++ try: remove(temp) # The temp file may not have been removed yet
+ except OSError: pass # The file doesn't exist and therefore doesn't need to be removed
diff --git a/accessibility/picospeaker/README b/accessibility/picospeaker/README
new file mode 100644
index 0000000000000..00e1f502a20db
--- /dev/null
+++ b/accessibility/picospeaker/README
@@ -0,0 +1,6 @@
+picospeaker (CLI frontend to svox)
+
+PicoSpeaker is a program written in Python that speaks text on its
+command line or standard input using SVox Pico and Sox. Speech rate,
+pitch, volume and language can be specified, and output can be saved
+to any file format supported by Sox.
diff --git a/accessibility/picospeaker/picospeaker.1 b/accessibility/picospeaker/picospeaker.1
new file mode 100644
index 0000000000000..84abafe279622
--- /dev/null
+++ b/accessibility/picospeaker/picospeaker.1
@@ -0,0 +1,95 @@
+.\" Man page generated from reStructuredText.
+.
+.
+.nr rst2man-indent-level 0
+.
+.de1 rstReportMargin
+\\$1 \\n[an-margin]
+level \\n[rst2man-indent-level]
+level margin: \\n[rst2man-indent\\n[rst2man-indent-level]]
+-
+\\n[rst2man-indent0]
+\\n[rst2man-indent1]
+\\n[rst2man-indent2]
+..
+.de1 INDENT
+.\" .rstReportMargin pre:
+. RS \\$1
+. nr rst2man-indent\\n[rst2man-indent-level] \\n[an-margin]
+. nr rst2man-indent-level +1
+.\" .rstReportMargin post:
+..
+.de UNINDENT
+. RE
+.\" indent \\n[an-margin]
+.\" old: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.nr rst2man-indent-level -1
+.\" new: \\n[rst2man-indent\\n[rst2man-indent-level]]
+.in \\n[rst2man-indent\\n[rst2man-indent-level]]u
+..
+.TH "PICOSPEAKER" 1 "2022-01-21" "0.6.2" "SlackBuilds.org"
+.SH NAME
+picospeaker \- command-line interface to svox
+.\" RST source for picospeaker(1) man page. Convert with:
+.
+.\" rst2man.py picospeaker.rst > picospeaker.1
+.
+.\" rst2man.py comes from the SBo development/docutils package.
+.
+.SH SYNOPSIS
+.sp
+picospeaker [\fI\-options\fP] <\fItext\fP>
+.SH DESCRIPTION
+.sp
+PicoSpeaker is a program written in Python that speaks text on its
+command line or standard input using SVox Pico (\fBpico2wave\fP(1)) and
+\fBsox\fP(1). Speech rate, pitch, volume and language can be specified,
+and output can be saved to any file format supported by \fBsox\fP, or
+sent directly to the audio device.
+.SH OPTIONS
+.INDENT 0.0
+.TP
+.B \fB\-l\fP, \fB\-\-language\fP \fIlanguage\fP
+Language to speak (default is \fIen\-US\fP). Available languages are
+\fIen\-US\fP, \fIen\-GB\fP, \fIde\-DE\fP, \fIes\-ES\fP, \fIfr\-FR\fP and \fIit\-IT\fP\&. These may
+be abbreviated to the two\-letter code (e.g. \fIen\fP).
+.TP
+.B \fB\-v\fP, \fB\-\-volume\fP \fInumber\fP
+Output volume (default is 1.0).
+.TP
+.B \fB\-r\fP, \fB\-\-rate\fP \fInumber\fP
+Rate of speech from \-90 to 9900 (default is 0). This is a percentage, offset by 100 (so \-90 is 10% original speed, 100 is 2x).
+.TP
+.B \fB\-p\fP, \fB\-\-pitch\fP \fInumber\fP
+Voice pitch (semitones) from \-79 to 39 (default is 0).
+.TP
+.B \fB\-o\fP, \fB\-\-output\fP \fIfile\fP
+Output to the specified file (default is sound card output).
+.TP
+.B \fB\-c\fP, \fB\-\-compress\fP, \fB\-q\fP, \fB\-\-quality\fP \fInumber\fP
+Compression/quality level of output file, depends on file type. This option causes an error if no output file is specified.
+.TP
+.B \fB\-t\fP, \fB\-\-type\fP \fItype\fP
+Save output file as \fItype\fP\&. Only needed if saving with a nonstandard extension. This option causes an error if no output file is specified.
+.TP
+.B \fB\-V\fP, \fB\-\-version\fP
+Print version information.
+.TP
+.B \fB\-h\fP, \fB\-\-help\fP, \fB\-u\fP, \fB\-\-usage\fP
+Print built\-in help message.
+.UNINDENT
+.SH COPYRIGHT
+.sp
+\fBpicospeaker\fP is free and unencumbered software released into the public domain.
+See the file /usr/doc/picospeaker\-0.6.2/UNLICENSE for details.
+.SH AUTHORS
+.sp
+\fBpicospeaker\fP was written by written by Kyle and forked by shilbert01.
+.sp
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+.SH SEE ALSO
+.sp
+\fBpico2wave\fP(1), \fBsox\fP(1)
+.\" Generated by docutils manpage writer.
+.
diff --git a/accessibility/picospeaker/picospeaker.SlackBuild b/accessibility/picospeaker/picospeaker.SlackBuild
new file mode 100644
index 0000000000000..574bb6eb3a185
--- /dev/null
+++ b/accessibility/picospeaker/picospeaker.SlackBuild
@@ -0,0 +1,61 @@
+#!/bin/bash
+
+# Slackware build script for picospeaker
+
+# Written by B. Watson (yalhcru@gmail.com)
+
+# Licensed under the WTFPL. See http://www.wtfpl.net/txt/copying/ for details.
+
+cd $(dirname $0) ; CWD=$(pwd)
+
+PRGNAM=picospeaker
+VERSION=${VERSION:-0.6.2}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+PKGTYPE=${PKGTYPE:-tgz}
+
+ARCH=noarch
+
+if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
+ echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
+ exit 0
+fi
+
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+set -e
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+chmod 644 *
+chmod 755 . $PRGNAM
+
+# python3 support and short language names (de => de_DE).
+patch -p1 < $CWD/36273f9d_and_d6a7a01.diff
+
+# actually use python3. doesn't really matter, but someday python2 might
+# really go away...
+sed -i '1s,python,python3,' $PRGNAM
+
+PKGDOC=$PKG/usr/doc/$PRGNAM-$VERSION
+mkdir -p $PKG/usr/{bin,man/man1} $PKGDOC
+cp -a $PRGNAM $PKG/usr/bin
+gzip -9c < $CWD/$PRGNAM.1 > $PKG/usr/man/man1/$PRGNAM.1.gz
+
+mkdir -p $PKGDOC
+fmt -s README > $PKGDOC/README # line breaks, please.
+cp -a UNLICENSE $PKGDOC
+cat $CWD/$PRGNAM.SlackBuild > $PKGDOC/$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
diff --git a/accessibility/picospeaker/picospeaker.info b/accessibility/picospeaker/picospeaker.info
new file mode 100644
index 0000000000000..76883411c9cae
--- /dev/null
+++ b/accessibility/picospeaker/picospeaker.info
@@ -0,0 +1,10 @@
+PRGNAM="picospeaker"
+VERSION="0.6.2"
+HOMEPAGE="https://github.com/shilbert01/picospeaker/"
+DOWNLOAD="https://github.com/shilbert01/picospeaker/archive/v0.6.2/picospeaker-0.6.2.tar.gz"
+MD5SUM="888f1df39733a5d22733473fb783d34a"
+DOWNLOAD_x86_64=""
+MD5SUM_x86_64=""
+REQUIRES="svox"
+MAINTAINER="B. Watson"
+EMAIL="yalhcru@gmail.com"
diff --git a/accessibility/picospeaker/picospeaker.rst b/accessibility/picospeaker/picospeaker.rst
new file mode 100644
index 0000000000000..5029c0a439b39
--- /dev/null
+++ b/accessibility/picospeaker/picospeaker.rst
@@ -0,0 +1,84 @@
+.. RST source for picospeaker(1) man page. Convert with:
+.. rst2man.py picospeaker.rst > picospeaker.1
+.. rst2man.py comes from the SBo development/docutils package.
+
+.. |version| replace:: 0.6.2
+.. |date| date::
+
+===========
+picospeaker
+===========
+
+-----------------------------------
+command-line interface to Svox Pico
+-----------------------------------
+
+:Manual section: 1
+:Manual group: SlackBuilds.org
+:Date: |date|
+:Version: |version|
+
+SYNOPSIS
+========
+
+picospeaker [*-options*] <*text*>
+
+DESCRIPTION
+===========
+
+PicoSpeaker is a program written in Python that speaks text on its
+command line or standard input using SVox Pico (**pico2wave**\(1)) and
+**sox**\(1). Speech rate, pitch, volume and language can be specified,
+and output can be saved to any file format supported by **sox**, or
+sent directly to the audio device.
+
+OPTIONS
+=======
+
+**-l**, **--language** *language*
+ Language to speak (default is *en-US*). Available languages are
+ *en-US*, *en-GB*, *de-DE*, *es-ES*, *fr-FR* and *it-IT*. These may
+ be abbreviated to the two-letter code (e.g. *en*).
+
+**-v**, **--volume** *number*
+ Output volume (default is 1.0).
+
+**-r**, **--rate** *number*
+ Rate of speech from -90 to 9900 (default is 0). This is a percentage, offset by 100 (so -90 is 10% original speed, 100 is 2x).
+
+**-p**, **--pitch** *number*
+ Voice pitch (semitones) from -79 to 39 (default is 0).
+
+**-o**, **--output** *file*
+ Output to the specified file (default is sound card output).
+
+**-c**, **--compress**, **-q**, **--quality** *number*
+ Compression/quality level of output file, depends on file type. This option causes an error if no output file is specified.
+
+**-t**, **--type** *type*
+ Save output file as *type*. Only needed if saving with a nonstandard extension. This option causes an error if no output file is specified.
+
+**-V**, **--version**
+ Print version information.
+
+**-h**, **--help**, **-u**, **--usage**
+ Print built-in help message.
+
+COPYRIGHT
+=========
+
+**picospeaker** is free and unencumbered software released into the public domain.
+See the file /usr/doc/picospeaker-|version|/UNLICENSE for details.
+
+AUTHORS
+=======
+
+**picospeaker** was written by written by Kyle and forked by shilbert01.
+
+This man page written for the SlackBuilds.org project
+by B. Watson, and is licensed under the WTFPL.
+
+SEE ALSO
+========
+
+**pico2wave**\(1), **sox**\(1)
diff --git a/accessibility/picospeaker/slack-desc b/accessibility/picospeaker/slack-desc
new file mode 100644
index 0000000000000..49dc47a1b6260
--- /dev/null
+++ b/accessibility/picospeaker/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------------------------------------------------------|
+picospeaker: picospeaker (CLI frontend to svox)
+picospeaker:
+picospeaker: PicoSpeaker is a program written in Python that speaks text on its
+picospeaker: command line or standard input using SVox Pico and Sox. Speech rate,
+picospeaker: pitch, volume and language can be specified, and output can be saved
+picospeaker: to any file format supported by Sox.
+picospeaker:
+picospeaker:
+picospeaker:
+picospeaker:
+picospeaker: