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 ]--