VoiceOver
VoiceOver stems from my increasing use of CMU Flite (http://www.festvox.org/flite/) as a system and application tool. As I incorporated flite into various utilities, I found no easy way to ensure that the generated speech from one tool would not "speak over" the speech from another tool. Additionally, when I wanted more than one tool to speak with the same voice parameters, I would have to manually duplicate those parameters into the code or configuration files.
I wrote the VoiceOver daemon (voxd) to eliminate the need to incorporate the Flite libraries in my utility code and to give consistant voices to each tool by way of an abstraction layer. I modeled VoiceOver on the concept of a radio play, with actors (each one representing a single unique voice) playing roles. As a single actor can play many roles, a VoiceOver Actor will read the lines for one or more Roles.
VoiceOver uses a Unix (AF_UNIX) Datagram (SOCK_DGRAM) socket as it's public interface. Datagrams written to this socket will name the "role", and provide the "line" for the VoiceOver actor to read. I use a Unix socket rather than some other form of IPC in order to permit it's implementation on a wide variety of systems. I also chose this interface in order to ensure that the speech data source resided on the local system. Should you require a remote source of speech text, you can write a bridging utility like the supplied mqtt2vox tool.
This Package
This package contains source code for the VoiceOver daemon (voxd), a configuration file validation tool (voxcheckconfig), a commandline tool to feed text to the VoiceOver daemon (voxreadline), and a bridging daemon that feeds text to the VoiceOver daemon from mqtt topics (mqtt2vox).
The VoiceOver daemon (voxd) provides a single, consistant external interface to an english-voice audio output facility. This allows many disparate processes to issue text that VoiceOver will read asynchronously. This utility depends on
- lex
- Lexical Analyser Generator
- yacc
- Parser Generator
- gcc
- GNU Compiler Collection C Compiler
- glibc
- GNU C function library
- libm
- C math library
- ly
- yacc support library
- flite-2.0.0-release
- CMU "Festival Lite", consisting of:
- libflite 2.0
- CMU "Festival lite" library
- libflite_cmu_us_rms
- the "RMS" voice library
- libflite_usenglish
- the "US English transition rules library
- libflite_cmulex
- Advanced Linux Sound Architecture (ALSA) (Voiceover v1.0.1)
-
- libasound
- ALSA API, or
- libalsatoss
- ALSA API binding for OSS
- PulseAudio (Voiceover v1.0.5)
-
- libpulse-simple
- Simple API to PulseAudio
- libpulse
- PulseAudio API
The configuration validation tool (voxcheckconfig) will validate, and optionally rewrite, any given voxd configuration file. This tool does not depend on any external libraries other than the standard C runtime, along with whatever libraries are required to support Yacc-generated code.
The voxreadline commandline tool accepts text input from stdin or commandline, along with the name of a VoiceOver "role" or "actor", and feeds that role and line input to voxd for externalization. This tool does not depend on any external libraries other than the standard C runtime.
Finally, the MQTT to vox bridge daemon (mqtt2vox) feeds text input received from user-selected MQTT topics to voxd for externalization. While I supply this program as an example of a "bridge" tool, you can use it to feed VoiceOver with text issued by aggregator programs that feed MQTT topics. This tool depends on libmosquitto (Mosquitto MQTT library, broker and utilities v1.4.14).
Building the package
This release supports only the crudest of build processes: make.
- make all
- will compile and link the four programs, and compress the corresponding manual files.
- make test
- will run a short test of voxcheckconfig, voxd, and voxreadline.
Installing the package
- sudo make install
- will install the package into the /usr/local hierarchy. Specifically, it will
- install all programs into /usr/local/bin,
- install all manuals into the relevant /usr/local/man subdirectories,
- install the documentation in /usr/local/doc/VoiceOver, and
- install an example configuration file (voiceover.conf.new) into /etc
Please rename /etc/voiceover.conf.new to /etc/voiceover.conf, and edit it for your required setup. The voiceover.conf(5) manpage describes the format and contents of this config file.
VoiceOver licence
The VoiceOver source code is Copyright © 2017, 2019, 2020 by Lew Pitcher
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Attachment | Size |
---|---|
VoiceOver-1.0.1.tar.bz2 | 23.08 KB |
VoiceOver-1.0.5.tar.bz2 | 28.26 KB |