Others have paved the way, but I want a web interface for TTS.
I was recently inspired by two beautiful pieces of content.
First, content creator nSanity, best known for the Travelling Salesman animation on Youtube, produced an incredible music video capturing the creation of a 3D printed iBM PS/2 using a Raspberry Pi emulator. Narrating the process is the extremely funny and highly nostalgic text-to-speech voice of Dr. Sbaitso.
To me, the TTS robo-voice sounded unlike others I was familiar with: Sam or Festival varieties or the IBM 7094. Instead, it reminded me of the VOX from Half Life. Once I learned about Dr. Sbaitso from nSanity’s comments section, I tried to locate an existing TTS app but only found crummy AI impressions of the voice. After much searching, I stumbled upon a blogpost by Bertrand Fan where he documented how he integrated Chat-GPT with the 1990s Dr. Sbaitso speech synthesizer.
With a set of instructions in front of me, I followed EverythingEpan’s tutorial to install 86Box, load MS-DOS and SoundBlaster Utilities images, and run the READ.EXE program to emulate speech. The READ program works perfectly, so I can type ‘READ Hello world’ and then listen to Dr. Sbaitso speak “Hello world.” (Note: Bertrand uses SAY.EXE, but I must have used more recent disk images as the relevant command is READ.EXE).
After reproducing these basic steps, I decided that my next goal would be to run a Dr. Sbaitso TTS Synthesizer on the Bad at Computer site.
Creating a Host Environment for 86Box
Although I graduated more than a year ago from my college program, I’ve retained access to an Azure for Students subscription. There is a strange bug where my credits have not dropped in more than two years, even though I have a few VMs and App Services running. As of Jan 2025, it still had $100 USD. (I fully intend to renew this subscription indefinitely and get myself grandfathered into the unlimited credits plan.)
With my unlimited virtual cash, I spun up a new virtual machine with a minimal Ubuntu image. I used SSH to access the VM, then installed a GUI and xrdp so that I could use Remote Desktop Protocol (RDP) to easily download and install 86Box.
Installing 86Box and MS-DOS
Using the GUI, I installed Firefox, then I followed EverythingEpan’s tutorial to install 86Box, the ROMS, and the MS-DOS floppy disk images. I needed to install p7zip to extract the disk images from .7z files, but everything else was straightforward.
Here is a handy list of the settings I used for my 86Box emulator, after following both tutorials from EverythingEpan and Bertrand Fan:
- Machine
- Machine Type: Socket 7 [Dual Voltage]
- CPU Type: Intel Pentium MMX
- Frequency 233
- Memory: 128 MB
- Display
- Video: [PCI] S3 Trio64 (Phoenix)
- check Voodoo 1 or 2 Graphics
- Sound Card
- [ISa16] Sound Blaster 16
- Network > Network Card # 1
- Mode: SLiRP
- Adapter: [ISA16] Novell NE2000
- Storage Controllers
- HD Controller: [PCI] IDE Controller
- Hard Disks > New
- File Name: MSDOS
- Size (MB) 1023
- Say OK to warning message
- Floppy & CD-ROM Drives:
- Select the 1st Floppy > Select the ‘Type’ dropdown > 3.5″ 1.44M
- Select the 2nd Floppy > Select the ‘Type’ dropdown > None
Installing SoundBlaster Utilities
The Dr Sbaitso software was found on a ‘utilities’ floppy that shipped with the purchase of a Sound Blaster sound card. Other utilities include a virtual keyboard, an animated parrot that echoed back your microphone input, and more. To get Dr Sbaitso on DOS, I copied the contents of the SoundBlaster Utilities floppy images into a new directory (making sure to use XCOPY to copy directories).
MD C:\SB
XCOPY A:\*.* C:\SB /S
Bridging the Emulated IBM PC to the Ubuntu Host
From a list of drivers here, I grabbed the driver for the NE2000 and extracted it inside the Ubuntu VM. Next, I needed to load that into the 86Box. I used the Menu > Media > Floppy > New Image to create ‘ne2000.img’ as a blank floppy disk. Then I used some commands to mount it in Ubuntu, copy the NE2000.COM file, and unmount it.
// ** In Ubuntu **
// mount the floppy disk
mkdir /mnt/floppy
sudo mount -o loop ne2000.img /mnt/floppy
// copy the packet driver to the floppy
sudo cp ~/NE2000.COM /mnt/floppy
// unmount the floppy disk
sudo umount /mnt/floppy
//** In DOS **
XCOPY A:\*.* C:\DOS\DRIVER
Leave a Reply