emubns, a Braille 'n Speak synth emulator
Copyright (C) 2020-2024 Mateusz Viste
-- WHAT IS IT? ---------------------------------------------------------------
emubns is a program that emulates a Braille 'n Speak (BNS) synthesizer. BNS
synthesizers were commonly used by sight-deficient people in the nineties to
work in DOS. These were actually autonomous mini-computers able to take notes,
and one of their features was being able to receive vocalization instructions
from a PC over a RS-232 link. emubns is exclusively focused on this single
feature.
-- WHAT IS IT GOOD FOR? ------------------------------------------------------
I created emubns to play with ancient DOS screen readers, and to understand
the miracle behind blind people being able to work with DOS.
emubns is a Linux program that listens on a local TCP port (by default 7333),
awaiting for BNS instructions issued by a screen reader. Then it processes the
instructions and outputs voice by piping the text to a backend TTS command.
I created emubns for a specific use case: using a screen reader installed on a
DOS system inside a virtual machine.
Some hypervizors make it possible to redirect their virtualized COM ports to a
tcp port on the host, and that's where emubns kicks in. Hypervizors with such
capability include QEMU and VirtualBox (and probably more).
It is also possible to use emubns on a small computer to simulate a hardware
BNS synthesizer. See Rasp 'n Speak for an example of such usage:
http://emubns.sourceforge.net/raspnspeak
-- HOW? ----------------------------------------------------------------------
Typically, one would load emubns first, and then instruct the hypervisor to
redirect the guest's serial port to emubns. With VirtualBox it is very easy
since the setting can be set through a GUI. QEMU requires a specific command
line to be used:
qemu -hda disk.img \
-chardev socket,id=comport,host=127.0.0.1,port=7333 \
-device isa-serial,chardev=comport
Inside the VM, a screen reader should be installed (like PROVOX, JAWS, ASAP,
etc). This screen reader should be configured to send its output to a
"Braille 'n Speak" synth conected to COM1. From now on, anything typed or
displayed on the VM screen should be vocalized accordingly.
-- REQUIREMENTS --------------------------------------------------------------
emubns relies on a backend TTS command for all its voice output, hence it
requires such TTS system to be installed on the host system. by default emubns
will pipe text to an "espeak-ng" command, but this is configurable using -b.
-- BUILDING ------------------------------------------------------------------
To build emubns on Linux, simply type 'make'. This should produce an emubns
executable, assuming that your system has a C compiler (clang/gcc) and the
"make" tool.
-- USAGE ---------------------------------------------------------------------
Running emubns without parameters will make it bind to the localhost port 7333
and use espeak-ng as the TTS backend. Both these properties may be configured
via command-line options:
-p port bind to a custom tcp port (defaults to port 7333)
-b ttsbackend vocalization backend command that text will be piped to
(default: espeak-ng)
-a audiobackend audio backend, useful only if the ttsbackend does not
perform playback on its own but outputs binary sound data
[ A NOTE ABOUT PIPER ]
Piper is a neural text to speech system that sounds great. To use Piper as the
vocalization backend of emubns, you may use the command-line shown below:
emubns -b 'piper --output_raw -m voice.onnx' \
-a 'aplay -r22050 -fS16_LE -traw --buffer-size=1'
Of course you need to have Piper and aplay installed on your system, place the
onnx voice in the emubns directory.
-- DOWNLOAD ------------------------------------------------------------------
You may fetch the latest version of emubns at the address below:
http://emubns.sourceforge.net/emubns.tar.xz
I have also prepared a Qemu image containing a FreeDOS kernel with basic
tools and a pre-installed screen reader. The package can be fetched here:
http://emubns.sourceforge.net/svarog386-qemu-provox.zip
-- SOURCE CODE ---------------------------------------------------------------
emubns source code may be pulled from the project's subversion server, hosted
on sourceforge:
svn checkout svn://svn.code.sf.net/p/emubns/code/ emubns
-- LICENSE (ISC) -------------------------------------------------------------
Copyright (C) 2020-2024 Mateusz Viste
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---------------------------------------------------------------------[ EOF ]--