[arm-allstar] developing voice packs for ASL/HamVoIP

Patrick Perdue borrisinabox at gmail.com
Wed Oct 23 11:30:54 EDT 2019


Hi all:


I'm a new allstar/hamvoip user, but I am not new to Asterisk itself.

I just put a node together a couple of days ago using a Raspberry Pi 3, 
URI-X, and a Motorola Radius SM50 VHF radio.

I managed a few Asterisk PBXs several years ago, and one of the first 
things I did on a new install was replace the Allison Smith voice 
prompts. I just don't like them. They're too slow and emphasized.

So, I came up with the idea  of lazy building voice packs using TTS 
engines on Mac OS, since this can be scripted  using the "say" command.

Thus, I wrote a bash script that creates an empty directory tree with 
rpt, wx, letters, phonetic, and digits, using a variable for a base 
directory.

The script then reads a | (vertical bar) delimited text file with a list 
of prompts and filenames in a while loop, using the number of lines in 
the text file as the number of times to run the loop.

The text format looks like this:

This is a prompt to be spoken.|/rpt/something-to-say|

It's too hot in here.|/wx/not-cold-enough|

Column 1 is the prompt, and column 2 is the path minus the base 
directory, or file extension.

These columns are then passed as arguments to "say" in the appropriate 
places, with output to $BASEDIR/$IO2, where $IO2 is the rest of the path 
as specified by column 2 of the current line read from the text file.

As say only outputs in aiff or m4a, I call SoX to convert *.aiff 
recursively to 8 khz ulaw, trimming silence at the ends of files 
generated by the TTS engine, dropping the volume to 70%, with high pass 
at 300hz and low pass at 3600hz.

This all works great. I have some additional voices plus the ones that 
come with Mac OS, and, since I'm using bash, it would be easy enough to 
adapt this for use with command line TTS options in Linux, but, let's 
face it, there really aren't many good ones there, unless you like 
eSpeak or Festival.

The most tedious part is writing out a list of all the possible things 
that ASL/hamvoip will say. There are a ton of files from the original 
pack that I'm sure will never be used (business development comes to mind.)

So, my questions are thus:

1. Is there a definitive list somewhere of only the files specifically 
used by rpt and scripts from hamvoip? If I don't have to write out every 
single prompt from the original sound pack just to make sure nothing 
breaks, that would be great, and save a lot of space as well. It would 
still be faster than recording them all myself in my project studio, I 
guess...

2. I am using ulaw rather than GSM, because I don't really care about 
disk space, and it sounds sooooooo much better than GSM, even over the 
radio. Of course, this means that any of the hard-coded scripts in 
/usr/local/sbin should be wholesale find/replaced ulaw=gsm. While I'm 
fine doing this for my own use, I assume this will break pretty hard 
when there are updates. I want to generate a few packs with different 
voices, and make them generally available for anyone who, like me, wants 
an Allison replacement. For ease-of-use, should I just go against 
everything I hold dear as an audio engineer, and generate GSM files, or 
should I also offer ulaw with the warning that more work is required to 
implement them?

3. Would there be any interest in voice packs by anyone on this list 
besides me? My biggest reason, other than I just don't like Allison's 
voice, for creating these in the first place, is that the original pack 
is just so slow. I've cut the time by more than half with a test pack 
using acapella Wil, without really losing anything. I think I'll slow it 
down a little more, but the difference is amazing. It cuts back on TX 
time, especially good with simplex nodes, gets the info across more 
concisely, etc.


73

de

KE4DYI

Node 50368



More information about the ARM-allstar mailing list