--- freespeech-1.0m.orig/INSTALLATION +++ freespeech-1.0m/INSTALLATION @@ -24,7 +24,7 @@ What is needed: * An ANSI-C compiler -* A pronunciation dictionary. We tested with one called the Compuer +* A pronunciation dictionary. We tested with one called the Computer Usable Version of the Oxford Advanced Learner's Dictionary (CUVOALD). Because of the copyright restrictions it is not contained in this package. It is available for ftp from --- freespeech-1.0m.orig/Makefile +++ freespeech-1.0m/Makefile @@ -0,0 +1,17 @@ +# General Makefile for Debian packaging system. + +DESTDIR = + +all: + $(MAKE) -C src all + $(MAKE) -C lib all + +install: + $(MAKE) -C src install prefix=$(DESTDIR)/usr + $(MAKE) -C lib install prefix=$(DESTDIR)/usr + +clean: + $(MAKE) -C src clean + $(MAKE) -C lib clean + +.PHONY: clean install --- freespeech-1.0m.orig/README.md +++ freespeech-1.0m/README.md @@ -0,0 +1,7 @@ +This software originates from the archive found at +[http://tcts.fpms.ac.be/synthesis/mbrola/tts/English/fs.a10m.tar.gz](http://tcts.fpms.ac.be/synthesis/mbrola/tts/English/fs.a10m.tar.gz) + +It contains English text to phoneme converter and pronunciation dictionary +that being used along with +[MBROLA](http://tcts.fpms.ac.be/synthesis/mbrola.html) +can provide full TTS functionality for English language. --- freespeech-1.0m.orig/debian/changelog +++ freespeech-1.0m/debian/changelog @@ -0,0 +1,109 @@ +freespeech (1.0m-16focal1) focal; urgency=low + + * Distribution specific build. + + -- Igor B. Poretsky Sun, 18 Oct 2020 22:03:20 +0300 + +freespeech (1.0m-16) unstable; urgency=low + + * Numeric values pronunciation fix. + + -- Igor B. Poretsky Fri, 06 Mar 2015 01:41:14 +0300 + +freespeech (1.0m-15) unstable; urgency=low + + * Corrected pronunciation of numeric values. + + -- Igor B. Poretsky Thu, 05 Mar 2015 22:01:24 +0300 + +freespeech (1.0m-14) unstable; urgency=low + + * A bit more words in dictionary. + + -- Igor B. Poretsky Wed, 27 Nov 2013 06:40:26 +0400 + +freespeech (1.0m-11) unstable; urgency=low + + * More words in pronunciation dictionary. + + -- Igor B. Poretsky Thu, 04 Oct 2012 23:37:20 +0400 + +freespeech (1.0m-10) unstable; urgency=low + + * Fixed memory allocation issue in freephone when compiled in x86-64 + environment. + * Spelling fix in man page. + * Updated packaging standards compliance. + + -- Igor B. Poretsky Sun, 23 Sep 2012 16:55:17 +0400 + +freespeech (1.0m-9) unstable; urgency=low + + * Lexicon additions. + * Freephone: Fixed potential issue. Some unused stuff excluded from + the compiled executable. + + -- Igor B. Poretsky Sun, 26 Feb 2012 19:02:17 +0400 + +freespeech (1.0m-8) unstable; urgency=low + + * More words in lexicon. + + -- Igor B. Poretsky Tue, 14 Feb 2012 23:24:25 +0400 + +freespeech (1.0m-7) unstable; urgency=low + + * Further lexicon improvements. + + -- Igor B. Poretsky Wed, 01 Jun 2011 07:25:45 +0400 + +freespeech (1.0m-6) unstable; urgency=low + + * Yet more words in lexicon. + + -- Igor B. Poretsky Mon, 30 May 2011 04:12:48 +0400 + +freespeech (1.0m-5) unstable; urgency=low + + * Lexicon improvements. + + -- Igor B. Poretsky Sun, 29 May 2011 06:36:02 +0400 + +freespeech (1.0m-4) unstable; urgency=low + + * Some new words added to the lexicon. + + -- Igor B. Poretsky Sun, 09 Jan 2011 14:45:28 +0300 + +freespeech (1.0m-3) unstable; urgency=low + + * A few words added to the dictionary. + + -- Igor B. Poretsky Thu, 04 Nov 2010 18:27:46 +0300 + +freespeech (1.0m-2) unstable; urgency=low + + * Fixed segmentation fault condition in freephone. + * A few words added to the dictionary. + * Additional dictionary corrections are kept in a separate patch file + and text710.edin is treated as intermediate file, so it is removed + from the sources. + * Get rid of redundant libm dependency for the lexholder utility. + + -- Igor B. Poretsky Mon, 14 Jun 2010 23:49:19 +0400 + +freespeech (1.0m-1) unstable; urgency=low + + * Initial release. + * Use Berkeley database instead of gdbm. + * Get rid of trailing zeros in the database keys. + * Use regexp support from C library instead of the local + implementation. + * Use default database support library version instead of the explicit + one. + * Do not claim freephone output file as "probably audio" in it's usage + info as it is somewhat confusing in fact. + * New lexical database holding utility. + * Minor lexical data additions and corrections. + + -- Igor B. Poretsky Sun, 24 Jan 2010 17:21:56 +0300 --- freespeech-1.0m.orig/debian/compat +++ freespeech-1.0m/debian/compat @@ -0,0 +1 @@ +10 --- freespeech-1.0m.orig/debian/control +++ freespeech-1.0m/debian/control @@ -0,0 +1,27 @@ +Source: freespeech +Section: sound +Priority: optional +Maintainer: Igor B. Poretsky +Build-Depends: cdbs, debhelper (>= 10), libdb-dev +Standards-Version: 4.1.4 + +Package: freephone +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Recommends: enlex +Suggests: mbrola, mbrola-voice-en +Description: English Text-To-Phoneme converter + freephone converts English text to phonemes for MBROLA. + . + It can make use of an external dictionary in hash format, + such as the one provided by enlex package. + +Package: enlex +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Recommends: freephone +Description: English pronunciation dictionary + This package is aimed primarily for use together with the Freephone + phonetizer for Mbrola. When it is installed you can instruct Freephone + to use the pronunciation dictionary by the command line switch + "-h /usr/share/freespeech/enlex.db". --- freespeech-1.0m.orig/debian/copyright +++ freespeech-1.0m/debian/copyright @@ -0,0 +1,31 @@ +This package was debianized by Igor B. Poretsky +on Sat, 23 Jan 2010 11:05:07 +0300. + +It was downloaded from http://tcts.fpms.ac.be/synthesis/mbrola/tts/English/fs.a10m.tar.gz + +Upstream Author: Alistair Conkie + +Copyright (C) 1995 Stephen Isard, Alistair Conkie + + +License: + + This package 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 package 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 package; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +On Debian systems, the complete text of the GNU General +Public License can be found in `/usr/share/common-licenses/GPL'. + +The Debian packaging is (C) 2010, Igor B. Poretsky +and is licensed under the GPL, see above. --- freespeech-1.0m.orig/debian/enlex.README.Debian +++ freespeech-1.0m/debian/enlex.README.Debian @@ -0,0 +1,12 @@ +enlex for Debian +--------------------- + +This package contains English pronunciation dictionary along with the +simple lexical database holding utility lexholder-en. It is primarily +intended for use along with the Freephone phonetizer for Mbrola speech +synthesizer. For freephone to make use of the pronunciation dictionary +call it with "-h /usr/share/freespeech/enlex.db" switch in the command line. + +See freephone and lexholder-ru man pages for more details. + + -- Igor B. Poretsky Sat, 23 Jan 2010 11:05:07 +0300 --- freespeech-1.0m.orig/debian/enlex.docs +++ freespeech-1.0m/debian/enlex.docs @@ -0,0 +1,2 @@ +doc/phoncode.doc +lib/text710.doc --- freespeech-1.0m.orig/debian/enlex.install +++ freespeech-1.0m/debian/enlex.install @@ -0,0 +1,2 @@ +debian/tmp/usr/bin/lexholder-en +debian/tmp/usr/share/freespeech/enlex.db --- freespeech-1.0m.orig/debian/enlex.manpages +++ freespeech-1.0m/debian/enlex.manpages @@ -0,0 +1 @@ +debian/lexholder-en.1 --- freespeech-1.0m.orig/debian/freephone.1 +++ freespeech-1.0m/debian/freephone.1 @@ -0,0 +1,36 @@ +.\" Hey, EMACS: -*- nroff -*- +.TH FREEPHONE 1 "January 23, 2010" +.SH NAME +freephone \- English Text-To-Phoneme converter +.SH SYNOPSIS +.B freephone +.RI [-i file] [-o file] [-h dictionary] +.SH DESCRIPTION +\fBfreephone\fP converts English text to phonemes for \fBmbrola\fP +speech synthesizer. Usually this program acts like a filter eating +English text on the standard input and producing phonemes on the +standard output. In conjunction with \fBmbrola\fP it provides complete +English TTS. +.SH OPTIONS +\fBfreephone\fP understands the following command line options. +.TP +.B \-i +.br +Input text file or \fB\-\fP for standard input (default). +.TP +.B \-o +.br +Output file or \fB\-\fP for standard output (default). +.TP +.B \-h +.br +Use pronunciation dictionary in hash format (no default), such as the +one provided by enlex(1). +.SH SEE ALSO +.BR lexholder\-en (1), +.BR mbrola (1). +.SH AUTHOR +Alistair Conkie +.PP +This manual page was written by Igor B. Poretsky +especially for the Debian package. --- freespeech-1.0m.orig/debian/freephone.docs +++ freespeech-1.0m/debian/freephone.docs @@ -0,0 +1,6 @@ +README +ACKNOWLEDGEMENTS +doc/minidesc.doc +doc/OVERVIEW +doc/phoncode.doc +doc/spn_format.doc --- freespeech-1.0m.orig/debian/freephone.install +++ freespeech-1.0m/debian/freephone.install @@ -0,0 +1 @@ +debian/tmp/usr/bin/freephone --- freespeech-1.0m.orig/debian/freephone.manpages +++ freespeech-1.0m/debian/freephone.manpages @@ -0,0 +1 @@ +debian/freephone.1 --- freespeech-1.0m.orig/debian/lexholder-en.1 +++ freespeech-1.0m/debian/lexholder-en.1 @@ -0,0 +1,66 @@ +.\" Hey, EMACS: -*- nroff -*- +.TH LEXHOLDER\-EN 1 "January 23, 2010" +.SH NAME +lexholder\-en \- lexical database holding utility +.SH SYNOPSIS +.B lexholder\-ru +.RI [ options ] +.SH DESCRIPTION +\fBlexholder\-en\fP is a small utility intended for use from the +command line or shell-scripts. It allows to construct, test, manage +and query lexical database as well as extract it's content +in textual form. +.PP +This database is primarily intended for use along with the +\fBfreephone\fP phonetizer for \fBmbrola\fP to provide pronunciation +information for English words. +.PP +When filling and updating the database, +new records are read from the standard input. +When extracting data from the database, +The result is printed to the standard output. +This behaviour can be changed by the \fB\-f\fP switch. +.SH OPTIONS +When no options are specified, the program reads it's standard input +and stores it's content in the database. +.PP +All options recognized in the command line are described below. +.TP +.B \-h +.br +Print summary of options and exit. This option discards all other +command line specifications. It is the only case when the database +path is not required. +.TP +.B \-l +.br +List database content in textual form. +.TP +.B \-s +.br +Search specified word in the lexical database. If the word is found +program exits successfully and outputs it's pronunciation string, + otherwise prints nothing and exits with non-zero exit code. +.TP +.B \-d +.br +Delete record for specified word. +.TP +.B \-f +.br +Use specified file instead of standard input or output. +.TP +.B \-r +.br +Replace mode. This mode causes that the new records replace existing +ones with the same key. By default such records are ignored. +.TP +.B \-q +.br +Be more quiet than usual: don't print warnings about ignoring +duplicate records when filling the database. +.SH SEE ALSO +.BR freephone (1), +.BR mbrola (1). +.SH AUTHOR +Igor B. Poretsky --- freespeech-1.0m.orig/debian/rules +++ freespeech-1.0m/debian/rules @@ -0,0 +1,8 @@ +#!/usr/bin/make -f + +include /usr/share/cdbs/1/rules/debhelper.mk +include /usr/share/cdbs/1/class/makefile.mk + +DEB_MAKE_CLEAN_TARGET = clean +DEB_MAKE_BUILD_TARGET = all +DEB_MAKE_INSTALL_TARGET = install DESTDIR=$(CURDIR)/debian/tmp --- freespeech-1.0m.orig/debian/source/format +++ freespeech-1.0m/debian/source/format @@ -0,0 +1 @@ +1.0 --- freespeech-1.0m.orig/lib/Makefile +++ freespeech-1.0m/lib/Makefile @@ -10,45 +10,56 @@ # # ############################################################################ + +# Installation paths +prefix = /usr/local +bindir = ${prefix}/bin +datadir = ${prefix}/share/freespeech +docdir = ${prefix}/share/doc/enlex + +# Installed database filename +DBF = enlex.db + +# Installed utility name +UTILITY = lexholder-en + # Select the appropriate Makefile options for your system. then type make. ############################################################################ -# Sun users -# CC = gcc -# CFLAGS = -g -Wall -pedantic -# LIBS = -lm -############################################################################ # FreeBSD users # CC = gcc -# CFLAGS = -O2 -Wall -pedantic -DFBSD_DATABASE +# CFLAGS = -O2 -DFBSD_DATABASE +# LFLAGS = -s # LIBS = -lm +# GROUP = wheel ############################################################################ # Linux users CC = gcc -CFLAGS = -g -Wall -pedantic -LIBS = -lm -lgdbm +CFLAGS = -Wall -O2 +LFLAGS = -s +LIBS = -ldb +GROUP = root ############################################################################ -OBJ = dbm_prog.c - - -all: lexicon -lexicon: text710.edin dbm_prog - /bin/rm -i lexicon* - ./dbm_prog -o lexicon -i text710.edin - touch lexicon +all: lexicon -text710.edin: text710.dat read_ox_dict - read_ox_dict text710.dat > text710.edin +lexicon: text710.edin lexholder + ./lexholder -qf $< $@ -dbm_prog: $(OBJ) - $(CC) $(CFLAGS) -o $@ $(OBJ) $(LIBS) +text710.edin: text710.dat text710.edin.patch read_ox_dict + ./read_ox_dict $< > $@ 2>/dev/null + patch -Esup0 < text710.edin.patch + +lexholder: lexholder.c + $(CC) $(CFLAGS) $(LFLAGS) -o $@ $< $(LIBS) + +.PHONY: install +install: lexholder lexicon + install -d ${bindir} ${datadir} ${docdir} + install -g ${GROUP} -o root -m 0755 -p lexholder ${bindir}/${UTILITY} + install -g ${GROUP} -o root -m 0644 -p lexicon ${datadir}/${DBF} + install -g ${GROUP} -o root -m 0644 -p text710.doc ${docdir} +.PHONY: clean clean: - rm -f dbm_prog *.o core gmon.out lexicon - -distribution: - echo "This needs written." - -# dependencies - + rm -f lexholder *.o text710.edin lexicon --- freespeech-1.0m.orig/lib/lexholder.c +++ freespeech-1.0m/lib/lexholder.c @@ -0,0 +1,215 @@ +/* lexholder.c + * + * Lexicon database holding utility. + */ + +/* + * Copyright (C) 2010 Igor B. Poretsky + * + * 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. + */ + + +#include +#include +#include +#include +#include +#include + +#ifdef FBSD_DATABASE +#include +#else +#include +#endif + +#include + + +/* Command line error codes */ +#define CL_OK 0 +#define CS_CONFLICT 1 +#define NO_DB_FILE 2 + + +static const char *usage = + "Lexical database holding utility.\n\n" + + "This utility is designed for constructing, managing, testing and querying\n" + "lexical database providing pronunciation info for English words.\n\n" + + "Usage:\t%s [options] \n\n" + + "When filling and updating the database, new records are read\n" + "from the standard input. When extracting data from the database\n" + "the result is printed to the standardoutput.\n" + "This behaviour can be changed by the \"-f\" switch.\n\n" + + "If no options are specified, the program reads it's standard input\n" + "and stores it's content in the database.\n\n" + + "The recognized options are as follows:\n\n" + + "-h -- Print this help (the only option not requiring the database path)\n" + "-l -- List database content\n" + "-s -- Search specified word\n" + "-d -- Delete record for specified word\n" + "-f -- Use specified file instead of standard input or output\n" + "-r -- Replace mode\n" + "-q -- Don't print messages about ignoring duplicates\n\n"; + + +int main(int argc, char *argv[]) +{ + FILE *fp = NULL; + DB *db; + DBT key, value; + char line[256]; + char *f = NULL, *d = NULL, *s = NULL; + int i, n, q = 0, ret = NO_DB_FILE, mode = R_NOOVERWRITE; + + /* Parse command line */ + if(argc==1) + { + (void)fprintf(stderr, usage, argv[0]); + return EXIT_FAILURE; + } + while((n = getopt(argc,argv,"f:s:d:lqrh")) != -1) + switch(n) + { + case 'f': + if (strcmp(optarg, "-")) + f = optarg; + break; + case 'd': + if (d || s) ret = CS_CONFLICT; + else d = optarg; + break; + case 's': + if (d || s) ret = CS_CONFLICT; + else s = optarg; + break; + case 'l': + if (d || s) ret = CS_CONFLICT; + else s = line; + break; + case 'r': + mode = 0; + break; + case 'q': + q = 1; + break; + case 'h': + (void)fprintf(stderr, usage, argv[0]); + return EXIT_SUCCESS; + default: + (void)fprintf(stderr, usage, argv[0]); + return EXIT_FAILURE; + } + if (optind && argv[optind]) + ret = CL_OK; + switch (ret) + { + case CS_CONFLICT: + (void)fprintf(stderr, + "Ambiguous options in command line\n"); + return EXIT_FAILURE; + case NO_DB_FILE: + (void)fprintf(stderr, "DB file must be specified\n"); + return EXIT_FAILURE; + default: + break; + } + + /* Open file for input or output if necessary */ + if (!d) + { + if (f) + fp = fopen(f, s ? "w" : "r"); + else fp = s ? stdout : stdin; + if (!fp) + { + (void)fprintf(stderr, "Can't open file %s\n", f); + return EXIT_FAILURE; + } + } + + /* Open the database in appropriate mode */ + db = dbopen(argv[optind], s ? O_RDONLY : (O_RDWR | O_CREAT), 0644, DB_HASH, NULL); + if (!db) + { + (void)fprintf(stderr, "Cannot open the database %s\n", argv[optind]); + return EXIT_FAILURE; + } + + ret = EXIT_SUCCESS; + if (s == line) /* List database content */ + { + for (n = 0; !db->seq(db, &key, &value, R_NEXT); n++) + { + (void)strncpy(line, key.data, key.size); + (void)fprintf(fp, "%s %s\n", line, (char *)value.data); + } + (void)fprintf(stderr, "%i records extracted.\n", n); + } + else if (s) /* Lookup database for specified word */ + { + key.data = s; + key.size = strlen(s); + if (db->get(db, &key, &value, 0)) + ret = EXIT_FAILURE; + else (void)fprintf(fp, "%s\n", (char *)value.data); + } + else if (d) /* Delete record for specified word */ + { + key.data = d; + key.size = strlen(d); + ret = db->del(db, &key, 0) ? EXIT_FAILURE : EXIT_SUCCESS; + } + else /* Fill the database */ + { + for (i = 0, n = 1; fgets(line, 256, fp); n++) + { + key.data = strtok(line," "); + key.size = strlen(key.data); + value.data = strtok(NULL,"\n"); + value.size = strlen(value.data) + 1; + ret = db->put(db, &key, &value, mode); + if (ret < 0) + break; + else if (ret) + { + if (!q) + (void)fprintf(stderr, "%s:%i: warning: Duplicate entry. Ignored.\n", + f ? f : "stdin", n); + i++; + } + } + if (ret < 0) + { + (void)fprintf(stderr, "%s:%i: error: Database insertion failure. Exiting now.\n", + f ? f : "stdin", n); + ret = EXIT_FAILURE; + } + else + { + (void)fprintf(stderr, "%i words processed.\n", --n); + (void)fprintf(stderr, "%i duplicates ignored.\n", i); + (void)fprintf(stderr, "%i records put into the database.\n", n - i); + ret = EXIT_SUCCESS; + } + } + + /* All done */ + (void)db->close(db); + (void)fclose(fp); + return ret; +} --- freespeech-1.0m.orig/lib/read_ox_dict +++ freespeech-1.0m/lib/read_ox_dict @@ -1,4 +1,4 @@ -#!/usr/local/bin/perl +#!/usr/bin/perl # Copyright (c) 1995 Alistair Conkie. All rights reserved. # This program is free software; you can redistribute it and/or --- freespeech-1.0m.orig/lib/text710.edin.patch +++ freespeech-1.0m/lib/text710.edin.patch @@ -0,0 +1,1301 @@ +diff -u text710.edin.orig text710.edin +--- text710.edin.orig 2015-03-06 01:02:12.876808110 +0300 ++++ text710.edin 2015-03-06 01:03:33.672809165 +0300 +@@ -1009,7 +1009,6 @@ + Dingle d * i ng g l + Dinnington d * i n i ng t a n + Dip d * i p +-Dir d i . r * e k t a r + Dives d * ie v ee z + Djibouti j i . b * uu t i + Djiboutian j i . b * uu t eer n +@@ -1434,6 +1433,7 @@ + Gov g * u v a n a r + Governor-General g ~ u v n a - j * e n r a l + Governor-Generals g ~ u v n a - j * e n r a l z ++Graham g r * aa m + Grampian g r * aa m p eer n + Granada g r a . n * ar d a + Grangemouth g r * ai n j m a th +@@ -2596,7 +2596,6 @@ + Nicaragua n ~ i k a . r * aa g y oor + Nicaraguan n ~ i k a . r * aa g y oor n + Nicaraguans n ~ i k a . r * aa g y oor n z +-Nice n * ee s + Nicholas n * i k a l a s + Nick n * i k + Nicola n * i k a l a +@@ -4200,6 +4199,7 @@ + abstracting a b . s t r * aa k t i ng + abstraction a b . s t r * aa k sh n + abstractions a b . s t r * aa k sh n z ++abstractness a b . s t r * aa k t n a s + abstracts * aa b s t r aa k t s + abstracts a b . s t r * aa k t s + abstruse a b . s t r * uu s +@@ -6454,6 +6454,7 @@ + architectural ~ ar k i . t * e k ch a r a l + architecturally ~ ar k i . t * e k ch a r a l i + architecture * ar k i t e k ch a r ++architectures * ar k i t e k ch a z + archives * ar k ie v z + archivist * ar k i v i s t + archivists * ar k i v i s t s +@@ -6979,6 +6980,8 @@ + asymptotes * aa s i m t oa t s + asymptotic ~ aa s i m . t * o t i k + asymptotically ~ aa s i m . t * o t i k l i ++asynchronous ~ ai s * i ng k r a n a s ++asynchronously ~ ai s * i ng k r a n a s l i + at * aa t + at-home a t - h * oa m + at-homes a t - h * oa m z +@@ -7037,7 +7040,6 @@ + attaboy ~ aa t a . b * oi + attach a . t * aa ch + attache a . t * aa sh ai +-attaches a . t * aa sh ai z + attached a . t * aa ch t + attaches a . t * aa ch i z + attaching a . t * aa ch i ng +@@ -8072,6 +8074,8 @@ + baseboards b * ai s b aw d z + based b * ai s t + baseless b * ai s l i s ++baseline b * ai s l ie n ++baselines b * ai s l ie n z + basement b * ai s m a n t + basements b * ai s m a n t s + baser b * ai s a r +@@ -8086,6 +8090,7 @@ + bashing b * aa sh i ng + basic b * ai s i k + basically b * ai s i k l i ++basics b * ai s i k s + basil b * aa z l + basilica b a . z * i l i k a + basilicas b a . z * i l i k a z +@@ -8526,10 +8531,13 @@ + behaved b i . h * ai v d + behaves b i . h * ai v z + behaving b i . h * ai v i ng ++behavior b i . h * ai v eer r ++behaviors b i . h * ai v eer z + behaviour b i . h * ai v eer r + behaviourism b i . h * ai v eer r i z a m + behaviourist b i . h * ai v eer r i s t + behaviourists b i . h * ai v eer r i s t s ++behaviours b i . h * ai v eer z + behead b i . h * e d + beheaded b i . h * e d i d + beheading b i . h * e d i ng +@@ -9057,8 +9065,8 @@ + billies b * i l i z + billing b * i l i ng + billingsgate b * i l i ng z g ai t +-billion b * i l eer ng +-billions b * i l eer ng z ++billion b * i l eer n ++billions b * i l eer n z + billionth b * i l eer n th + billionths b * i l eer n th s + billow b * i l oa +@@ -9083,6 +9091,7 @@ + binders b * ie n d a z + bindery b * ie n d a r i + binding b * ie n d i ng ++bindings b * ie n d i ng z + binds b * ie n d z + bindweed b * ie n d w ee d + bine b * ie n +@@ -9605,6 +9614,7 @@ + bluest b l * uu i s t + bluestocking b l * uu s t o k i ng + bluestockings b l * uu s t o k i ng z ++bluetooth b l * uu t uu th + bluff b l * u f + bluffed b l * u f t + bluffer b l * u f a r +@@ -10690,6 +10700,9 @@ + brows b r * ou z + browse b r * ou z + browsed b r * ou z d ++browser b r * ou z a r ++browserless b r * ou z a l a s ++browsers b r * ou z a z + browses b r * ou z i z + browsing b r * ou z i ng + bruin b r * uu i n +@@ -11221,6 +11234,8 @@ + byroads b * ie r oa d z + bystander b * ie s t aa n d a r + bystanders b * ie s t aa n d a z ++byte b * ie t ++bytes b * ie t s + byway b * ie w ai + byways b * ie w ai z + byword b * ie w er d +@@ -11749,6 +11764,8 @@ + captaining k * aa p t i n i ng + captains k * aa p t i n z + caption k * aa p sh n ++captioner k * aa p sh n a r ++captioners k * aa p sh n a z + captions k * aa p sh n z + captious k * aa p sh a s + captiously k * aa p sh a s l i +@@ -12384,6 +12401,10 @@ + centennial s e n . t * e n eer l + centennially s e n . t * e n eer l i + centennials s e n . t * e n eer l z ++center s * e n t a r ++centered s * e n t a d ++centers s * e n t a z ++centering s * e n t a r i ng + centi- s * e n t i - + centigrade s * e n t i g r ai d + centime s * o n t ee m +@@ -13490,6 +13511,8 @@ + classification k l ~ aa s i f i . k * ai sh n + classifications k l ~ aa s i f i . k * ai sh n z + classified k l * aa s i f ie d ++classifier k l * aa s i f ie a r ++classifiers k l * aa s i f ie a z + classifies k l * aa s i f ie z + classify k l * aa s i f ie + classifying k l * aa s i f ie i ng +@@ -14297,7 +14320,9 @@ + colonnades k ~ o l a . n * ai d z + colons k * oa l a n z + colony k * o l a n i ++color k * u l a r + coloratura k ~ o l a r a . t * oor r a ++colors k * u l a z + colossal k a . l * o s l + colossi k a . l * o s ie + colossus k a . l * o s a s +@@ -14498,6 +14523,8 @@ + committed k a . m * i t i d + committee k a . m * i t i + committees k a . m * i t i z ++committer k a . m * i t a r ++committers k a . m * i t a z + committing k a . m * i t i ng + commode k a . m * oa d + commodes k a . m * oa d z +@@ -14673,6 +14700,7 @@ + completes k a m . p l * ee t s + completing k a m . p l * ee t i ng + completion k a m . p l * ee sh n ++completions k a m . p l * ee sh n z + complex k * o m p l e k s + complexes k * o m p l e k s i z + complexion k a m . p l * e k sh n +@@ -14680,6 +14708,7 @@ + complexities k a m . p l * e k s i t i z + complexity k a m . p l * e k s i t i + compliance k a m . p l * ie a n s ++compliancy k a m . p l * ie a n s i + compliant k a m . p l * ie a n t + complicate k * o m p l i k ai t + complicated k * o m p l i k ai t i d +@@ -14719,6 +14748,7 @@ + composes k a m . p * oa z i z + composing k a m . p * oa z i ng + composite k * o m p a z i t ++composites k * o m p a z i t s + composition k ~ o m p a . z * i sh n + compositions k ~ o m p a . z * i sh n z + compositor k a m . p * o z i t a r +@@ -14908,6 +14938,7 @@ + concurred k a n . k * er d + concurrence k a n . k * u r a n s + concurrences k a n . k * u r a n s i z ++concurrency k a n . k * u r a n s i + concurrent k a n . k * u r a n t + concurrently k a n . k * u r a n t l i + concurring k a n . k * er r i ng +@@ -15904,6 +15935,8 @@ + coped k * oa p t + copes k * oa p s + copied k * o p i d ++copier k * o p eer r ++copiers k * o p eer z + copies k * o p i z + coping k * oa p i ng + coping-stone k * oa p i ng - s t oa n +@@ -17472,8 +17505,13 @@ + custom-made k ~ u s t a m - m * ai d + customarily k * u s t a m a r a l i + customary k * u s t a m a r i ++customed k * u s t a m d + customer k * u s t a m a r + customers k * u s t a m a z ++customizable k u s t a m * ie z a b l ++customize k * u s t a m ie z ++customized k * u s t a m ie z d ++customizes k * u s t a m ie z i z + customs k * u s t a m z + cut k * u t + cut-out k * u t - ou t +@@ -17786,7 +17824,11 @@ + dastardly d * aa s t a d l i + dastards d * aa s t a d z + data d * ai t a ++database d ~ ai t a . b * ai s ++databases d ~ ai t a . b * ai s i z + datable d * ai t a b l ++dataset d ~ ai t a . s e t ++datasets d ~ ai t a . s e t s + date d * ai t + dated d * ai t i d + dateless d * ai t l a s +@@ -18177,6 +18219,12 @@ + decolonized d ~ ee . k * o l a n ie z d + decolonizes d ~ ee . k * o l a n ie z i z + decolonizing d ~ ee . k * o l a n ie z i ng ++decompile d ~ ee k a m . p * ie l ++decompiled d ~ ee k a m . p * ie l d ++decompiler d ~ ee k a m . p * ie l a r ++decompilers d ~ ee k a m . p * ie l a z ++decompiles d ~ ee k a m . p * ie l z ++decompiling d ~ ee k a m . p * ie l i ng + decompose d ~ ee k a m . p * oa z + decomposed d ~ ee k a m . p * oa z d + decomposes d ~ ee k a m . p * oa z i z +@@ -18562,6 +18610,8 @@ + delimitation d ee . l ~ i m i . t * ai sh n + delimitations d ee . l ~ i m i . t * ai sh n z + delimited d ee . l * i m i t i d ++delimiter d ee . l * i m i t a r ++delimiters d ee . l * i m i t a z + delimiting d ee . l * i m i t i ng + delimits d ee . l * i m i t s + delineate d i . l * i n i ai t +@@ -19044,6 +19094,8 @@ + descents d i . s * e n t s + describe d i . s k r * ie b + described d i . s k r * ie b d ++describer d i . s k r * ie b a r ++describers d i . s k r * ie b a z + describes d i . s k r * ie b z + describing d i . s k r * ie b i ng + descried d i . s k r * ie d +@@ -19432,6 +19484,8 @@ + dialecticians d ~ ie a l e k . t * i sh n z + dialectics d ~ ie a . l * e k t i k s + dialects d * ie a l e k t s ++dialed d * ie a l d ++dialing d * ie a l i ng + dialled d * ie a l d + dialling d * ie a l i ng + dialogue d * ie a l o g +@@ -20123,6 +20177,10 @@ + disestablishes d ~ i s i . s t * aa b l i sh i z + disestablishing d ~ i s i . s t * aa b l i sh i ng + disestablishment d ~ i s i . s t * aa b l i sh m a n t ++disfavor d ~ i s . f * ai v a r ++disfavored d ~ i s . f * ai v a d ++disfavoring d ~ i s . f * ai v a r i ng ++disfavors d ~ i s . f * ai v a z + disfavour d ~ i s . f * ai v a r + disfavoured d ~ i s . f * ai v a d + disfavouring d ~ i s . f * ai v a r i ng +@@ -21755,6 +21813,9 @@ + duping d y * uu p i ng + dupl d y * uu p l i k a t + duplex d y * uu p l e k s ++duplexed d y * uu p l e k s t ++duplexes d y * uu p l e k s i z ++duplexing d y * uu p l e k s i ng + duplicate d y * uu p l i k a t + duplicate d y * uu p l i k ai t + duplicated d y * uu p l i k ai t i d +@@ -22551,6 +22612,8 @@ + embonpoint ~ o m b o n . p w * ar ng + emboss i m . b * o s + embossed i m . b * o s t ++embosser i m . b * o s a r ++embossers i m . b * o s a z + embosses i m . b * o s i z + embossing i m . b * o s i ng + embrace i m . b r * ai s +@@ -22889,6 +22952,7 @@ + enforceable i n . f * aw s a b l + enforced i n . f * aw s t + enforcement i n . f * aw s m a n t ++enforcements i n . f * aw s m a n t s + enforces i n . f * aw s i z + enforcing i n . f * aw s i ng + enfranchise i n . f r * aa n ch ie z +@@ -24200,8 +24264,6 @@ + exports * e k s p aw t s + exports i k . s p * aw t s + expos * e k s p oa z +-expose e k . s p * oa z ai +-exposes e k . s p * oa z ai z + expose i k . s p * oa z + exposed i k . s p * oa z d + exposes i k . s p * oa z i z +@@ -24486,6 +24548,7 @@ + face-saver f * ai s - s ai v a r + face-savers f * ai s - s ai v a z + face-saving f * ai s - s ai v i ng ++facebook f * ai s b oo k + faced f * ai s t + faceless f * ai s l a s + facer f * ai s a r +@@ -24517,7 +24580,7 @@ + factions f * aa k sh n z + factious f * aa k sh a s + factitious f aa k . t * i sh a s +-factor f * aa k t a r ++factoring f * aa k t a r i ng + factories f * aa k t a r i z + factorize f * aa k t a r ie z + factorized f * aa k t a r ie z d +@@ -24868,6 +24931,15 @@ + faun f * aw n + fauna f * aw n a + fauns f * aw n z ++favor f * ai v a r ++favorable f * ai v a r a b l ++favorably f * ai v a r a b l i ++favored f * ai v a d ++favoring f * ai v a r i ng ++favorite f * ai v a r i t ++favorites f * ai v a r i t s ++favoritism f * ai v r i t i z a m ++favors f * ai v a z + favour f * ai v a r + favourable f * ai v a r a b l + favourably f * ai v a r a b l i +@@ -25252,7 +25324,11 @@ + filching f * i l ch i ng + file f * ie l + filed f * ie l d ++filename f ~ ie l . n * ai m ++filenames f ~ ie l . n * ai m z + files f * ie l z ++filesystem f ~ ie l . s * i s t a m ++filesystems f ~ ie l . s * i s t a m z + filial f * i l eer l + filibuster f * i l i b u s t a r + filibustered f * i l i b u s t a d +@@ -25438,6 +25514,8 @@ + firedogs f * ie a d o g z + fireflies f * ie a f l ie z + firefly f * ie a f l ie ++firefox f * ie a f o k s ++firefoxes f * ie a f o k s i z + fireguard f * ie a g ar d + fireguards f * ie a g ar d z + firelight f * ie a l ie t +@@ -25745,6 +25823,8 @@ + flaunts f l * aw n t s + flautist f l * aw t i s t + flautists f l * aw t i s t s ++flavor f l * aa v a r ++flavors f l * aa v a z + flavour f l * ai v a r + flavoured f l * ai v a d + flavouring f l * ai v a r i ng +@@ -26214,6 +26294,9 @@ + fondly f * o n d l i + fondness f * o n d n a s + font f * o n t ++fontifies f * o n t i f ie z ++fontify f * o n t i f ie ++fontifying f * o n t i f ie i ng + fonts f * o n t s + food f * uu d + foodless f * uu d l a s +@@ -27265,6 +27348,7 @@ + fun f * u n + function f * u ng k sh n + functional f * u ng k sh a n l ++functionalities f ~ u ng k sh a n * aa l i t i z + functionalism f * u ng k sh a n a l i z a m + functionalist f * u ng k sh n a l i s t + functionalists f * u ng k sh n a l i s t s +@@ -28111,6 +28195,8 @@ + gifting g * i f t i ng + gifts g * i f t s + gig g * i g ++gigabyte g * i g a b ie t ++gigabytes g * i g a b ie t s + gigantic j ie . g * aa n t i k + giggle g * i g l + giggled g * i g l d +@@ -29688,6 +29774,7 @@ + half-yearly h ar f - y * er l i + halfback h * ar f b aa k + halfbacks h * ar f b aa k s ++halftoning h ~ ar f . t * oa n i ng + halfpennies h * ai p n i z + halfpenny h * ai p n i + halfpennyworth h * ai p n i w er th +@@ -30695,6 +30782,7 @@ + hieroglyphics h ~ ie a r a . g l * i f i k s + hieroglyphs h * ie a r a g l i f s + hies h * ie z ++hifi h ie f * ie + higgledy-piggledy h ~ i g l d i - p * i g l d i + high h * ie + high-class h * ie - k l ar s +@@ -31866,6 +31954,8 @@ + identifiably ie . d ~ e n t i . f * ie a b l i + identification ie . d ~ e n t i f i . k * ai sh n + identified ie . d * e n t i f ie d ++identifier ie . d * e n t i f ie a r ++identifiers ie . d * e n t i f ie a z + identifies ie . d * e n t i f ie z + identify ie . d * e n t i f ie + identifying ie . d * e n t i f ie i ng +@@ -33154,6 +33244,8 @@ + infirmary i n . f * er m a r i + infirmities i n . f * er m i t i z + infirmity i n . f * er m i t i ++infix * i n f i k s ++infixes * i n f i k s i z + inflame i n . f l * ai m + inflamed i n . f l * ai m d + inflames i n . f l * ai m z +@@ -33386,6 +33478,7 @@ + inlays ~ i n . l * ai z + inlet * i n l e t + inlets * i n l e t s ++inline ~ i n . l * ie n + inmate * i n m ai t + inmates * i n m ai t s + inmost * i n m oa s t +@@ -33591,6 +33684,8 @@ + installation ~ i n s t a . l * ai sh n + installations ~ i n s t a . l * ai sh n z + installed i n . s t * aw l d ++installer i n . s t * aw l a r ++installers i n . s t * aw l a z + installing i n . s t * aw l i ng + installs i n . s t * aw l z + instalment i n . s t * aw l m a n t +@@ -33711,6 +33806,7 @@ + integers * i n t i j a z + integral * i n t i g r a l + integrally * i n t i g r a l i ++integrals * i n t i g r a l z + integrate * i n t i g r ai t + integrated * i n t i g r ai t i d + integrates * i n t i g r ai t s +@@ -35065,6 +35161,9 @@ + juxtaposes j ~ u k s t a . p * oa z i z + juxtaposing j ~ u k s t a . p * oa z i ng + juxtaposition j ~ u k s t a p a . z * i sh n ++juxtapositioned j ~ u k s t a p a . z * i sh n d ++juxtapositioning j ~ u k s t a p a . z * i sh n i ng ++juxtapositions j ~ u k s t a p a . z * i sh n z + k k * ai + kummel k * oo m a l + k's k * ai z +@@ -35214,6 +35313,8 @@ + kilns k * i l n z + kilo k * ee l oa + kilo- k * i l a - ++kilobyte k * i l a b ie t ++kilobytes k * i l a b ie t s + kilocycle k * i l a s ie k l + kilocycles k * i l a s ie k l z + kilogram k * i l a g r aa m +@@ -35438,6 +35539,8 @@ + knowingly n * oa i ng l i + knowledge n * o l i j + knowledgeable n * o l i j a b l ++knowledgebase n ~ o l i j . b * ai s ++knowledgebases n ~ o l i j . b * ai s i z + known n * oa n + knows n * oa z + knuckle n * u k l +@@ -35493,6 +35596,8 @@ + laagers l * ar g a z + lab l * aa b + label l * ai b l ++labeled l * ai b l d ++labeling l * ai b a l i ng + labelled l * ai b l d + labelling l * ai b a l i ng + labels l * ai b l z +@@ -36532,6 +36637,8 @@ + lifeboats l * ie f b oa t s + lifebuoy l * ie f b oi + lifebuoys l * ie f b oi z ++lifecycle l * ie f s ie k l ++lifecycles l * ie f s ie k l z + lifeguard l * ie f g ar d + lifeguards l * ie f g ar d z + lifeless l * ie f l a s +@@ -36542,6 +36649,10 @@ + lifelong l * ie f l o ng + lifer l * ie f a r + lifers l * ie f a z ++lifespan l * ie f s p aa n ++lifespans l * ie f s p aa n z ++lifestyle l * ie f s t ie l ++lifestyles l * ie f s t ie l z + lifetime l * ie f t ie m + lifetimes l * ie f t ie m z + lift l * i f t +@@ -36748,6 +36859,8 @@ + linkboy l * i n k b oi + linkboys l * i n k b oi z + linked l * i ng k t ++linker l * i ng k a r ++linkers l * i ng k a z + linking l * i ng k i ng + linkman l * i ng k m aa n + linkmen l * i ng k m e n +@@ -36857,6 +36970,7 @@ + literates l * i t a r a t s + literati l ~ i t a . r * ar t i + literature l * i t r a ch a r ++literatures l * i t r a ch a z + lithe l * ie dh + lithograph l * i th a g r ar f + lithographed l * i th a g r ar f t +@@ -37829,6 +37943,8 @@ + maintain m ai n . t * ai n + maintainable m ai n . t * ai n a b l + maintained m ai n . t * ai n d ++maintainer m ai n . t * ai n a r ++maintainers m ai n . t * ai n a z + maintaining m ai n . t * ai n i ng + maintains m ai n . t * ai n z + maintenance m * ai n t a n a n s +@@ -37857,6 +37973,8 @@ + make-ups m * ai k - u p s + maker m * ai k a r + makers m * ai k a z ++makefile m ~ ai k . f * ie l ++makefiles m ~ ai k . f * ie l z + makes m * ai k s + makeshift m * ai k sh i f t + makeshifts m * ai k sh i f t s +@@ -38494,6 +38612,7 @@ + mathematicians m ~ aa th a m a . t * i sh n z + mathematics m ~ aa th a . m * aa t i k s + maths m * aa th s ++mathtype m ~ aa th . t * ie p + matinee m * aa t i n ai + matinees m * aa t i n ai z + mating m * ai t i ng +@@ -38667,6 +38786,8 @@ + measureless m * e zh a l a s + measurement m * e zh a m a n t + measurements m * e zh a m a n t s ++measurer m * e zh a r a r ++measurers m * e zh a r a z + measures m * e zh a z + measuring m * e zh a r i ng + meat m * ee t +@@ -38780,6 +38901,8 @@ + meeting-places m * ee t i ng - p l ai s i z + meetings m * ee t i ng z + meets m * ee t s ++megabyte m * e g a b ie t ++megabytes m * e g a b ie t s + megacycle m * e g a s ie k l + megacycles m * e g a s ie k l z + megadeath m * e g a d e th +@@ -39010,6 +39133,7 @@ + mess-ups m * e s - u p s + message m * e s i j + messages m * e s i j i z ++messaging m * e s i j i ng + messed m * e s t + messenger m * e s i n j a r + messengers m * e s i n j a z +@@ -39165,6 +39289,8 @@ + microscopical m ~ ie k r a . s k * o p i k l + microscopically m ~ ie k r a . s k * o p i k l i + microscopy m ie . k r * o s k a p i ++microsecond m * ie k r a s ~ e k a n d ++microseconds m * ie k r a s ~ e k a n d z + microwave m * ie k r oa w ai v + microwaves m * ie k r oa w ai v z + mid m * i d +@@ -39353,6 +39479,8 @@ + millionths m * i l eer n th s + millipede m * i l i p ee d + millipedes m * i l i p ee d z ++millisecond m * i l i s ~ e k a n d ++milliseconds m * i l i s ~ e k a n d z + millpond m * i l p o n d + millponds m * i l p o n d z + millrace m * i l r ai s +@@ -40662,6 +40790,7 @@ + mulls m * u l z + multi- m * u l t i - + multi-lingual m ~ u l t i - l * i ng g w a l ++multibyte m ~ u l t i . b * ie t + multifarious m ~ u l t i . f * air r eer s + multifariously m ~ u l t i . f * air r eer s l i + multiform m * u l t i f aw m +@@ -40676,6 +40805,7 @@ + multiplies m * u l t i p l ie z + multiply m * u l t i p l ie + multiplying m * u l t i p l ie i ng ++multitouch m ~ u l t i . t * u ch + multitude m * u l t i t y uu d + multitudes m * u l t i t y uu d z + multitudinous m ~ uu l t i . t y * uu d i n a s +@@ -40976,12 +41106,16 @@ + names n * ai m z + namesake n * ai m s ai k + namesakes n * ai m s ai k s ++namespace n * ai m s p ai s ++namespaces n * ai m s p ai s i z + naming n * ai m i ng + nankeen n aa n . k * ee n + nannies n * aa n i z + nanny n * aa n i + nanny-goat n * aa n i - g oa t + nanny-goats n * aa n i - g oa t s ++nanosecond n * aa n a s ~ e k a n d ++nanoseconds n * aa n a s ~ e k a n d z + nap n * aa p + napalm n * ai p ar m + nape n * ai p +@@ -41065,6 +41199,7 @@ + nations n * ai sh n z + nationwide n * ai sh n w ie d + native n * ai t i v ++natively n * ai t i v l i + natives n * ai t i v z + nativities n a . t * i v i t i z + nativity n a . t * i v i t i +@@ -41516,6 +41651,7 @@ + nightshade n * ie ch ai d + nightshirt n * ie ch er t + nightshirts n * ie ch er t s ++nighttime n * ie t ie m + nightwork n * ie t w er k + nihilism n * ie i l i z a m + nihilist n * ie i l i s t +@@ -41689,6 +41825,7 @@ + nonentities n o . n * e n t i t i z + nonentity n o . n * e n t i t i + nonesuch n * u n s u ch ++nonetheless n ~ u n dh a . l * e s + nonevent n * o n i v e n t + nonevents n * o n i v e n t s + nonfiction n o n . f * i k sh n +@@ -41846,6 +41983,8 @@ + notification n ~ oa t i f i . k * ai sh n + notifications n ~ oa t i f i . k * ai sh n z + notified n * oa t i f ie d ++notifier n * oa t i f ie a r ++notifiers n * oa t i f ie a z + notifies n * oa t i f ie z + notify n * oa t i f ie + notifying n * oa t i f ie i ng +@@ -42388,6 +42527,7 @@ + officiousness a . f * i sh a s n a s + offing * o f i ng + offish * o f i sh ++offline o f . l * ie n + offprint * o f p r i n t + offprints * o f p r i n t s + offset * o f s e t +@@ -42538,6 +42678,7 @@ + ongoing * o n g oa i ng + onion * u n eer n + onions * u n eer n z ++online o n . l * ie n + onlooker * o n l oo k a r + onlookers * o n l oo k a z + only * oa n l i +@@ -42549,6 +42690,7 @@ + onshore * o n sh aw r + onslaught * o n s l aw t + onslaughts * o n s l aw t s ++onstage o n . s t * ai j + onto * o n t a + ontologies o n . t * o l a j i z + ontology o n . t * o l a j i +@@ -42654,6 +42796,7 @@ + opposes a . p * oa z i z + opposing a . p * oa z i ng + opposite * o p a z i t ++oppositely * o p a z i t l i + opposites * o p a z i t s + opposition ~ o p a . z * i sh n + oppress a . p r * e s +@@ -42696,6 +42839,7 @@ + option * o p sh n + optional * o p sh n a l + optionally * o p sh n a l i ++optionless * o p sh n l a s + options * o p sh n z + opts * o p t s + opulence * o p y oo l a n s +@@ -43135,6 +43279,7 @@ + outpouring * ou t p aw r i ng + outpourings * ou t p aw r i ng z + output * ou t p oo t ++outputs * ou t p oo t s + outre * uu t r ai + outrage * ou t r ai j + outraged * ou t r ai j d +@@ -43481,6 +43626,10 @@ + overleapt ~ oa v a . l * e p t + overlie ~ oa v a . l * ie + overlies ~ oa v a . l * ie z ++overline ~ oa v a . l * ie n ++overlined ~ oa v a . l * ie n d ++overlines ~ oa v a . l * ie n z ++overlining ~ oa v a . l * ie n i ng + overload ~ oa v a . l * oa d + overloaded ~ oa v a . l * oa d i d + overloading ~ oa v a . l * oa d i ng +@@ -44360,6 +44509,8 @@ + pars p * ar z + parse p * ar z + parsed p * ar z d ++parser p * ar z a r ++parsers p * ar z a z + parses p * ar z i z + parsimonious p ~ ar s i . m * oa n eer s + parsimony p * ar s i m a n i +@@ -46222,6 +46373,8 @@ + pivoted p * i v a t i d + pivoting p * i v a t i ng + pivots p * i v a t s ++pixel p * i k s i l ++pixels p * i k s i l z + pixie p * i k s i + pixies p * i k s i z + pixilated p * i k s i l ai t i d +@@ -46246,6 +46399,8 @@ + placebo p l a . s * ee b oa + placebos p l a . s * ee b oa z + placed p l * ai s t ++placeholder p l * ai s + h oa l d a r ++placeholders p l * ai s + h oa l d a z + placeman p l * ai s m a n + placemen p l * ai s m a n + placement p l * ai s m a n t +@@ -47087,6 +47242,7 @@ + port p * aw t + portability p ~ aw t a . b * i l i t i + portable p * aw t a b l ++portably p * aw t a b l i + portage p * aw t i j + portages p * aw t i j i z + portal p * aw t l +@@ -47227,6 +47383,8 @@ + postern p * o s t a n + posterns p * o s t a n z + posters p * oa s t a z ++postfix p * oa s t f i k s ++postfixes p * oa s t f i k s i z + postgraduate p ~ oa s t . g r * aa j oor t + postgraduates p ~ oa s t . g r * aa j oor t s + posthumous p * o s t y oo m a s +@@ -47544,6 +47702,8 @@ + precede p r i . s * ee d + preceded p r i . s * ee d i d + precedence p r * e s i d a n s ++precedencies p r * e s i d a n s i z ++precedency p r * e s i d a n s i + precedent p r * e s i d a n t + precedented p r * e s i d a n t i d + precedents p r * e s i d a n t s +@@ -47603,6 +47763,12 @@ + precondition p r ~ ee k a n . d * i sh n + preconditioned p r ~ ee k a n . d * i sh n d + preconditions p r ~ ee k a n . d * i sh n z ++preconfiguration p r ~ ee k a n . f ~ i g a . r * ai sh n ++preconfigurations p r ~ ee k a n . f ~ i g a . r * ai sh n z ++preconfigure p r ~ ee k a n . f * i g a r ++preconfigured p r ~ ee k a n . f * i g a d ++preconfigures p r ~ ee k a n . f * i g a z ++preconfiguring p r ~ ee k a n . f * i g a r i ng + precursor p r ~ ee . k * er s a r + precursors p r ~ ee . k * er s a z + precursory p r ~ ee . k * er s a r i +@@ -47615,6 +47781,11 @@ + predeceasing p r ~ ee d i . s * ee s i ng + predecessor p r * ee d i s e s a r + predecessors p r * ee d i s e s a z ++predefinable p r ~ ee . d i . f * ie n a b l ++predefine p r ~ ee . d i . f * ie n ++predefined p r ~ ee . d i . f * ie n d ++predefines p r ~ ee . d i . f * ie n z ++predefining p r ~ ee . d i . f * ie n i ng + predestinate p r ~ ee . d * e s t i n ai t + predestinated p r ~ ee . d * e s t i n ai t i d + predestinates p r ~ ee . d * e s t i n ai t s +@@ -47862,6 +48033,8 @@ + presentation p r ~ e z n . t * ai sh n + presentations p r ~ e z n . t * ai sh n z + presented p r i . z * e n t i d ++presenter p r i . z * e n t a r ++presenters p r i . z * e n t a z + presentiment p r i . z * e n t i m a n t + presentiments p r i . z * e n t i m a n t s + presenting p r i . z * e n t i ng +@@ -49773,8 +49946,6 @@ + rechauffes r ai . sh * oa f ai z + regime r ai . zh * ee m + regimes r ai . zh * ee m z +-resume r * e z y uu m ai +-resumes r * e z y uu m ai z + rabbi r * aa b ie + rabbinical r a . b * i n i k l + rabbis r * aa b ie z +@@ -50177,6 +50348,12 @@ + rasping r * ar s p i ng + raspingly r * ar s p i ng l i + rasps r * ar s p s ++rasterize r * aa s t a r ie z ++rasterized r * aa s t a r ie z d ++rasterizer r * aa s t a r ie z a r ++rasterizers r * aa s t a r ie z a z ++rasterizes r * aa s t a r ie z i z ++rasterizing r * aa s t a r ie z i ng + rat r * aa t + rat-a-tat-tat r ~ aa t - a - t ~ aa t - t * aa t + rat-a-tat-tats r ~ aa t - a - t ~ aa t - t * aa t s +@@ -50394,6 +50571,7 @@ + readjustment r ~ ee a . j * u s t m a n t + readjustments r ~ ee a . j * u s t m a n t s + readjusts r ~ ee a . j * u s t s ++readme r * ee d . m ee + readmission r ~ ee a d . m * i sh n + readmissions r ~ ee a d . m * i sh n z + readmit r ~ ee a d . m * i t +@@ -50433,6 +50611,7 @@ + realms r * e l m z + reals r ai * ar l z + realties r * eer l t i z ++realtime r ~ eer l . t * ie m + realty r * eer l t i + ream r * ee m + reams r * ee m z +@@ -50556,7 +50735,6 @@ + rebuttals r i . b * u t a l z + rebutted r i . b * u t i d + rebutting r i . b * u t i ng +-rec r i . s * ee v d + recalcitrance r i . k * aa l s i t r a n s + recalcitrancy r i . k * aa l s i t r a n s i + recalcitrant r i . k * aa l s i t r a n t +@@ -50636,6 +50814,11 @@ + recessionals r i . s * e sh a n l z + recessions r i . s * e sh n z + recessive r i . s * e s i v ++recharge r i . ch * ar j ++rechargeable r i . ch * ar j a b l ++recharged r i . ch * ar j d ++recharges r i . ch * ar j i z ++recharging r i . ch * ar j i ng + recherche r a . sh * air sh ai + recidivism r i . s * i d i v i z a m + recidivist r i . s * i d i v i s t +@@ -50719,6 +50902,10 @@ + recompensed r * e k a m p e n s t + recompenses r * e k a m p e n s i z + recompensing r * e k a m p e n s i ng ++recompile r ~ ee k a m . p * ie l ++recompiled r ~ ee k a m . p * ie l d ++recompiles r ~ ee k a m . p * ie l z ++recompiling r ~ ee k a m . p * ie l i ng + reconcilable r ~ e k a n . s * ie l a b l + reconcile r * e k a n s ie l + reconciled r * e k a n s ie l d +@@ -50731,6 +50918,12 @@ + reconditioned r ~ ee k a n . d * i sh n d + reconditioning r ~ ee k a n . d * i sh n i ng + reconditions r ~ ee k a n . d * i sh n z ++reconfiguration r ~ ee k a n . f ~ i g a . r * ai sh n ++reconfigurations r ~ ee k a n . f ~ i g a . r * ai sh n z ++reconfigure r ~ ee k a n . f * i g a r ++reconfigured r ~ ee k a n . f * i g a d ++reconfigures r ~ ee k a n . f * i g a z ++reconfiguring r ~ ee k a n . f * i g a r i ng + reconnaissance r i . k * o n i s a n s + reconnaissances r i . k * o n i s a n s i z + reconnoitre r ~ e k a . n * oi t a r +@@ -50914,6 +51107,15 @@ + redheads r * e d h e d z + redid r ~ ee . d * i d + rediffusion r ~ ee d i . f y * uu zh n ++redirect r ~ ee d i . r * e k t ++redirected r ~ ee d i . r * e k t i d ++redirecting r ~ ee d i . r * e k t i ng ++redirection r ~ ee d i . r * e k sh n ++redirectional r ~ ee d i . r * e k sh a n l ++redirections r ~ ee d i . r * e k sh n z ++redirector r ~ ee d i . r * e k t a r ++redirectors r ~ ee d i . r * e k t a z ++redirects r ~ ee d i . r * e k t s + rediscover r ~ ee d i . s k * u v a r + rediscovered r ~ ee d i . s k * u v a d + rediscoveries r ~ ee d i . s k * u v a r i z +@@ -51003,6 +51205,8 @@ + refaced r ~ ee . f * ai s t + refaces r ~ ee . f * ai s i z + refacing r ~ ee . f * ai s i ng ++refactor r ~ ee . f * aa k t a r ++refactoring r ~ ee . f * aa k t a r i ng + refashion r ee . f * aa sh n + refashioned r ee . f * aa sh n d + refashioning r ee . f * aa sh a n i ng +@@ -51018,7 +51222,9 @@ + refereeing r ~ e f a . r * ee i ng + referees r ~ e f a . r * ee z + reference r * e f r a n s ++referenced r * e f r a n s t + references r * e f r a n s i z ++referencing r * e f r a n s i ng + referenda r ~ e f a . r * e n d a + referendum r ~ e f a . r * e n d a m + referendums r ~ e f a . r * e n d a m z +@@ -51618,6 +51824,8 @@ + rend r * e n d + render r * e n d a r + rendered r * e n d a d ++renderer r * e n d a r a r ++renderers r * e n d a r a z + rendering r * e n d a r i ng + renderings r * e n d a r i ng z + renders r * e n d a z +@@ -51684,6 +51892,11 @@ + reopened r ee * oa p a n d + reopening r ee * oa p a n i ng + reopens r ee * oa p a n z ++reorder r ee * aw d a r ++reordered r ee * * aw d a d ++reordering r ee * * aw d a r i ng ++reorderings r ee * * aw d a r i ng z ++reorders r ee * * aw d a z + reorganization r ee ~ aw g a n ie . z * ai sh n + reorganizations r ee ~ aw g a n ie . z * ai sh n z + reorganize r ee * aw g a n ie z +@@ -51995,6 +52208,8 @@ + reseeding r ee . s * ee d i ng + reseeds r ee . s * ee d z + resell r ee . s * e l ++reseller r ee . s * e l a r ++resellers r ee . s * e l a z + reselling r ee . s * e l i ng + resells r ee . s * e l z + resemblance r i . z * e m b l a n s +@@ -52429,6 +52644,10 @@ + returned r i . t * er n d + returning r i . t * er n i ng + returns r i . t * er n z ++retype r ee . t ie p ++retyped r ee . t ie p t ++retypes r ee . t ie p s ++retyping r ee . t ie p i ng + reunification r ee . y ~ uu n i f i . k * ai sh n + reunion r ~ ee . y * uu n eer n + reunions r ~ ee . y * uu n eer n z +@@ -53571,6 +53790,7 @@ + runny r * u n i + runs r * u n z + runt r * u n t ++runtime r ~ u n . t * ie m + runts r * u n t s + runway r * u n w ai + runways r * u n w ai z +@@ -54381,6 +54601,8 @@ + schedule sh * e d y uu l + scheduled sh * e d y uu l d + schedules sh * e d y uu l z ++scheduler sh * e d y uu l a r ++schedulers sh * e d y uu l a z + scheduling sh * e d y uu l i ng + schema s k * ee m a + schemas s k * ee m a z +@@ -54658,6 +54880,9 @@ + screen s k r * ee n + screened s k r * ee n d + screening s k r * ee n i ng ++screenreader s k r * ee n r ee d a r ++screenreaders s k r * ee n r ee d a z ++screenreading s k r * ee n r ee d i ng + screens s k r * ee n z + screes s k r * ee z + screw s k r * uu +@@ -54902,6 +55127,7 @@ + seamiest s * ee m i i s t + seaming s * ee m i ng + seamless s * ee m l a s ++seamlessly s * ee m l a s l i + seams s * ee m z + seamstress s * ee m s t r i s + seamstresses s * ee m s t r i s i z +@@ -55385,6 +55611,8 @@ + sensitized s * e n s i t ie z d + sensitizes s * e n s i t ie z i z + sensitizing s * e n s i t ie z i ng ++sensor s * e n s a r ++sensors s * e n s a z + sensory s * e n s a r i + sensual s * e n sh oor l + sensualism s * e n sh oor l i z a m +@@ -57055,6 +57283,7 @@ + skylights s k * ie l ie t s + skyline s k * ie l ie n + skylines s k * ie l ie n z ++skype s k * ie p + skyrocket s k * ie r o k i t + skyrocketed s k * ie r o k i t i d + skyrocketing s k * ie r o k i t i ng +@@ -58595,6 +58824,8 @@ + specificity s p ~ e s i . f * i s i t i + specifics s p a . s * i f i k s + specified s p * e s i f ie d ++specifier s p * e s i f ie a r ++specifiers s p * e s i f ie a z + specifies s p * e s i f ie z + specify s p * e s i f ie + specifying s p * e s i f ie i ng +@@ -58959,6 +59190,8 @@ + spooks s p * uu k s + spooky s p * uu k i + spool s p * uu l ++spooler s p * uu l a r ++spoolers s p * uu l a z + spools s p * uu l z + spoon s p * uu n + spooned s p * uu n d +@@ -60422,6 +60655,7 @@ + structure s t r * u k ch a r + structured s t r * u k ch a d + structures s t r * u k ch a z ++structuring s t r * u k ch a r i ng + strudel s t r * uu d l + strudels s t r * uu d l z + struggle s t r * u g l +@@ -60628,6 +60862,9 @@ + subeditor s u b * e d i t a r + subeditors s u b * e d i t a z + subedits s u b * e d i t s ++subformula s ~ u b . f * aw m y oo l a ++subformulae s ~ u b . f * aw m y oo l ee ++subformulas s ~ u b . f * aw m y oo l a z + subfusc s * u b f u s k + subgroup s * u b g r uu p + subgroups s * u b g r uu p s +@@ -60716,6 +60953,7 @@ + subpoenaed s a . p * ee n a d + subpoenaing s a . p * ee n a r i ng + subpoenas s a . p * ee n a z ++subroutine s ~ u b . r uu . t * ee n + subs s * u b z + subscribe s a b . s k r * ie b + subscribed s a b . s k r * ie b d +@@ -60729,6 +60967,8 @@ + subscripts s * u b s k r i p t s + subsection s * u b s e k sh n + subsections s * u b s e k sh n z ++subsequence s ~ a b . s * ee k w a n s ++subsequences s ~ a b . s * ee k w a n s i z + subsequent s * u b s i k w a n t + subsequently s * u b s i k w a n t l i + subserve s a b . s * er v +@@ -61850,6 +62090,8 @@ + synthesis s * i n th a s i s + synthesize s * i n th a s ie z + synthesized s * i n th a s ie z d ++synthesizer s * i n th a s ie z a r ++synthesizers s * i n th a s ie z a z + synthesizes s * i n th a s ie z i z + synthesizing s * i n th a s ie z i ng + synthetic s i n . th * e t i k +@@ -62749,6 +62991,8 @@ + tepidity t e . p * i d i t i + tepidly t * e p i d l i + tepidness t * e p i d n a s ++terabyte t * e r a b ie t ++terabytes t * e r a b ie t s + tercentenaries t ~ er s e n . t * ee n a r i z + tercentenary t ~ er s e n . t * ee n a r i + tercentennial t ~ er s e n . t * e n eer l +@@ -62772,6 +63016,8 @@ + terminating t * er m i n ai t i ng + termination t ~ er m i . n * ai sh n + terminations t ~ er m i . n * ai sh n z ++terminator t * er m i n ai t a r ++terminators t * er m i n ai t a z + terming t * er m i ng + terminological t ~ er m i n a . l * o j i k l + terminologies t ~ er m i . n * o l a j i z +@@ -63493,10 +63739,16 @@ + timeless t * ie m l a s + timelier t * ie m l eer r + timeliest t * ie m l i i s t ++timeline t * ie m l ie n ++timelines t * ie m l ie n z + timeliness t * ie m l i n a s + timely t * ie m l i ++timeout t * ie m ou t ++timeouts t * ie m ou t s + timepiece t * ie m p ee s + timepieces t * ie m p ee s i z ++timer t * ie m a r ++timers t * ie m a z + times t * ie m z + timesaving t * ie m s ai v i ng + timeserver t * ie m s er v a r +@@ -64055,6 +64307,8 @@ + touchingly t * u ch i ng l i + touchline t * u ch l ie n + touchlines t * u ch l ie n z ++touchscreen t * u ch + s k r ee n ++touchscreens t * u ch + s k r ee n z + touchstone t * u ch + s t oa n + touchstones t * u ch + s t oa n z + touchy t * u ch i +@@ -64345,6 +64599,8 @@ + transcontinental t r ~ aa n z k o n t i . n * e n t l + transcribe t r aa n . s k r * ie b + transcribed t r aa n . s k r * ie b d ++transcriber t r aa n . s k r * ie b a r ++transcribers t r aa n . s k r * ie b a z + transcribes t r aa n . s k r * ie b z + transcribing t r aa n . s k r * ie b i ng + transcript t r * aa n s k r i p t +@@ -65374,11 +65630,17 @@ + typed t * ie p t + typeface t * ie p f ai s + typefaces t * ie p f ai s i z ++typeform t * ie p f aw m ++typeforms t * ie p f aw m z + types t * ie p s + typescript t * ie p s k r i p t + typescripts t * ie p s k r i p t s ++typeset t * ie p s e t + typesetter t * ie p s e t a r + typesetters t * ie p s e t a z ++typesetting t * ie p s e t i ng ++typesettings t * ie p s e t i ng z ++typesets t * ie p s e t s + typewriter t * ie p r ie t a r + typewriters t * ie p r ie t a z + typewritten t * ie p r i t n +@@ -65514,6 +65776,8 @@ + unalterable u n * o l t a r a b l + unalterably u n * aw l t a r a b l i + unaltered u n * aw l t a d ++unambiguities ~ u n aa m b i . g y * uu i t i z ++unambiguity ~ u n aa m b i . g y * uu i t i + unambiguous ~ u n aa m . b * i g y oor s + unambiguously ~ u n aa m . b * i g y oor s l i + unamended ~ u n a . m * e n d i d +@@ -65649,6 +65913,8 @@ + unchains u n . ch * ai n z + unchallengeable u n . ch * aa l a n j a b l + unchallenged u n . ch * aa l a n j d ++unchangeable u n . ch * ai n j a b a l ++unchangeableness u n . ch * ai n j a b a l n a s + unchanged u n . ch * ai n j d + unchanging u n . ch * ai n j i ng + uncharacteristic ~ u n k aa r a k t a . r * i s t i k +@@ -65680,6 +65946,7 @@ + uncommonly u n . k * o m a n l i + uncommunicative ~ u n k a . m y * uu n i k a t i v + uncompetitive ~ u n k a m . p * e t a t i v ++uncompiled u n . k a m . p * ie l d + uncomplaining ~ u n k a m . p l * ai n i ng + uncomplainingly ~ u n k a m . p l * ai n i ng l i + uncompleted ~ u n k a m . p l * ee t i d +@@ -65770,8 +66037,11 @@ + undefeated ~ u n d i . f * ee t i d + undefended ~ u n d i . f * e n d i d + undeferential ~ u n d e f a . r * e n sh l ++undefine ~ u n d i . f * ie n + undefinable ~ u n d i . f * ie n a b l + undefined ~ u n d i . f * ie n d ++undefining ~ u n d i . f * ie n i ng ++undefines ~ u n d i . f * ie n z + undemanding ~ u n d i . m * ar n d i ng + undemocratic ~ u n d e m a . k r * aa t i k + undemocratically ~ u n d e m a . k r * aa t i k l i +@@ -66255,6 +66525,7 @@ + unhurt u n . h * er t + unhygienic ~ u n h ie . j * ee n i k + unhygienically ~ u n h ie . j * ee n i k l i ++unibyte y ~ uu n i . b * ie t + unicorn y * uu n i k aw n + unicorns y * uu n i k aw n z + unidentifiable ~ u n ie . d ~ e n t i . f * ie a b l +@@ -66296,6 +66567,14 @@ + uninspired ~ u n i n . s p * ie a d + uninspiring ~ u n i n . s p * ie a r i ng + uninsured ~ u n i n . sh * oor d ++uninstall ~ u n i n . s t * aw l ++uninstallation ~ u n i n s t a . l * ai sh n ++uninstallations ~ u n i n s t a . l * ai sh n z ++uninstalled ~ u n i n . s t * aw l d ++uninstaller ~ u n i n . s t * aw l a r ++uninstallers ~ u n i n . s t * aw l a z ++uninstalling ~ u n i n . s t * aw l i ng ++uninstalls ~ u n i n . s t * aw l z + unintelligent ~ u n i n . t * e l i j a n t + unintelligently ~ u n i n . t * e l i j a n t l i + unintelligible ~ u n i n . t * e l i j a b l +@@ -66716,6 +66995,8 @@ + unsportsmanlike u n . s p * aw t s m a n l ie k + unspotted u n . s p * o t i d + unstable u n . s t * ai b l ++unstage u n . s t * ai j ++unstaged u n . s t * ai j d + unstartling u n . s t * ar t l i ng + unstated u n . s t * ai t i d + unstatesmanlike u n . s t * ai t s m a n l ie k +@@ -66728,6 +67009,10 @@ + unstrung ~ u n . s t r * u ng + unstuck ~ u n . s t * u k + unstudied ~ u n . s t * u d i d ++unsubscribe u n . s a b . s k r * ie b ++unsubscribed u n . s a b . s k r * ie b d ++unsubscribes u n . s a b . s k r * ie b z ++unsubscribing u n . s a b . s k r * ie b i ng + unsubtle u n . s * u t l + unsuccessful ~ u n s a k . s * e s f a l + unsuccessfully ~ u n s a k . s * e s f a l i +@@ -66969,6 +67254,7 @@ + uptake * u p t ai k + uptakes * u p t ai k s + uptight ~ u p . t * ie t ++uptime ~ u p . t * ie m + uptown ~ u p . t * ou n + upturn * u p t er n + upturned * u p t er n d +@@ -69117,6 +69403,8 @@ + whitens w * ie t n z + whiter w * ie t a r + whites w * ie t s ++whitespace w * ie t s p ai s ++whitespaces w * ie t s p ai s i z + whitest w * ie t i s t + whitethorn w * ie t th aw n + whitethorns w * ie t th aw n z +@@ -69229,6 +69517,7 @@ + wielding w * ee l d i ng + wields w * ee l d z + wife w * ie f ++wifi w ie f * ie + wifelier w * ie f l eer r + wifeliest w * ie f l i i s t + wifelike w * ie f l ie k +@@ -70165,6 +70454,7 @@ + zeroed z * eer r oa d + zeroing z * eer r oa i ng + zeros z * eer r oa z ++zeroth z * eer r oa th + zest z * e s t + zestful z * e s t f a l + zestfully z * e s t f a l i --- freespeech-1.0m.orig/src/Makefile +++ freespeech-1.0m/src/Makefile @@ -10,91 +10,90 @@ # # ############################################################################ + +# Installation paths +prefix = /usr/local +bindir = ${prefix}/bin + # Select the appropriate Makefile options for your system. then type make. ############################################################################ -# Sun users -# CC = gcc -# CFLAGS = -g -Wall -pedantic -# LIBS = -lm -############################################################################ # FreeBSD users # CC = gcc -# CFLAGS = -O2 -Wall -pedantic +# CFLAGS = -O2 -DFBSD_DATABASE +# LFLAGS = -s # LIBS = -lm +# GROUP =wheel ############################################################################ # Linux users CC = gcc -CFLAGS = -g -Wall -pedantic -LIBS = -lm -lgdbm +CFLAGS = -Wall -O2 +LFLAGS = -s +LIBS = -ldb +GROUP = root ############################################################################ -SRC = go.c t2s.c space.c tags.c grammar.c \ - transcribe.c conv1.c conv2.c durpros.c prosody.c \ - syllab.c utils.c buffer.c \ - fw.c broad_cats.c durs.c load_diphs.c spnio.c \ - durations.c pitch.c audio.c \ - phon_rules.c edin2sampa.c -#coeffs.c excitation.c durations.c pitch.c audio.c ulaw.c \ - OBJS = go.o t2s.o space.o tags.o grammar.o \ transcribe.o conv1.o conv2.o durpros.o prosody.o \ syllab.o utils.o buffer.o \ - fw.o broad_cats.o durs.o load_diphs.o spnio.o \ - durations.o pitch.o audio.o \ - phon_rules.o edin2sampa.o -#coeffs.o excitation.o durations.o pitch.o audio.o ulaw.o \ - -RULE_SRC = rule_engine.c regerror.c regexp.c regsub.c read_rules.c + fw.o broad_cats.o durs.o spnio.o \ + audio.o phon_rules.o edin2sampa.o -RULE_OBJS = rule_engine.o regerror.o regexp.o regsub.o read_rules.o +OBSOLETE_OBJS = load_diphs.o durations.o pitch.o - -NRL_SRC = interface.c english.c nrl_edin.c phoneme.c saynum.c spellwor.c +RULE_OBJS = rule_engine.o read_rules.o NRL_OBJS = interface.o english.o nrl_edin.o phoneme.o saynum.o spellwor.o - -TEST_SRC = test_diphones.c - -TEST_OBJS = test_diphones.o - -MAIN_SRC = main.c - MAIN = main.o -HEADERS = regexp.h regmagic.h rule_engine.h t2s.h prototypes.h - all: freephone freephone: $(OBJS) $(NRL_OBJS) $(RULE_OBJS) $(MAIN) - $(CC) $(CFLAGS) -o $@ $(OBJS) $(NRL_OBJS) $(RULE_OBJS) $(MAIN) $(LIBS) + $(CC) $(LFLAGS) -o $@ $^ $(LIBS) -# /home/awb/src/malloc/libmalloc.a +.PHONY: install +install: freephone + install -d ${bindir} + install -g ${GROUP} -o root -m 0755 -p $^ ${bindir} +.PHONY: clean clean: - rm -f freephone lpc_synth *.o core gmon.out + rm -f freephone *.o -distribution: - /bin/rm -r ../distribution - mkdir ../distribution - mkdir ../distribution/src - mkdir ../distribution/lib - cp -r ../dist_doc ../distribution/doc - cp ../dictionaries/Makefile ../distribution/lib - cp ../dictionaries/dbm_prog.c ../distribution/lib - cp ../dictionaries/read_ox_dict ../distribution/lib - cp ../dictionaries/text710.* ../distribution/lib - # cp ../diphs_donovan/donovan.idx ../distribution/lib - # cp ../diphs_donovan/donovan.dat ../distribution/lib - cp $(SRC) $(RULE_SRC) $(NRL_SRC) $(MAIN_SRC) $(HEADERS) Makefile ../distribution/src - # cp context_rules ../distribution/src - cp ../ACKNOWLEDGEMENTS ../README ../INSTALLATION ../Copying ../distribution +%.o:%.c + $(CC) -c ${CFLAGS} -o $@ $< # dependencies - -$(OBJS) : t2s.h -$(TEST_OBJS) : t2s.h -$(MAIN) : t2s.h -$(RULE_OBJS) : regexp.h regmagic.h -rule-engine.c : rule_engine.h +audio.o: audio.c t2s.h prototypes.h +broad_cats.o: broad_cats.c t2s.h prototypes.h +buffer.o: buffer.c t2s.h prototypes.h +conv1.o: conv1.c t2s.h prototypes.h +conv2.o: conv2.c t2s.h prototypes.h +durations.o: durations.c t2s.h prototypes.h +durpros.o: durpros.c t2s.h prototypes.h +durs.o: durs.c t2s.h prototypes.h +edin2sampa.o: edin2sampa.c t2s.h prototypes.h +english.o: english.c t2s.h prototypes.h +fw.o: fw.c t2s.h prototypes.h +go.o: go.c t2s.h prototypes.h +grammar.o: grammar.c t2s.h prototypes.h +interface.o: interface.c t2s.h prototypes.h +load_diphs.o: load_diphs.c t2s.h prototypes.h +main.o: main.c t2s.h prototypes.h +nrl_edin.o: nrl_edin.c t2s.h prototypes.h +phoneme.o: phoneme.c t2s.h prototypes.h +phon_rules.o: phon_rules.c t2s.h prototypes.h +pitch.o: pitch.c t2s.h prototypes.h +prosody.o: prosody.c t2s.h prototypes.h +read_rules.o: read_rules.c t2s.h prototypes.h +rule_engine.o: rule_engine.c t2s.h prototypes.h +saynum.o: saynum.c t2s.h prototypes.h +space.o: space.c t2s.h prototypes.h +spellwor.o: spellwor.c t2s.h prototypes.h +spnio.o: spnio.c t2s.h prototypes.h +syllab.o: syllab.c t2s.h prototypes.h +t2s.o: t2s.c t2s.h prototypes.h +tags.o: tags.c t2s.h prototypes.h +transcribe.o: transcribe.c t2s.h prototypes.h +utils.o: utils.c t2s.h prototypes.h --- freespeech-1.0m.orig/src/audio.c +++ freespeech-1.0m/src/audio.c @@ -8,6 +8,7 @@ #include "t2s.h" +#ifdef FREEPHONE_OBSOLETE unsigned char hdr16k[] = { 0x2e, 0x73, 0x6e, 0x64, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x3e, 0x80, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 @@ -22,6 +23,7 @@ 0x2e, 0x73, 0x6e, 0x64, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x1f, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; +#endif export void output_open(CONFIG *config) @@ -33,6 +35,8 @@ (void)fprintf(stderr,"Cannot open output file: %s\n",config->output_file); exit(2); } + +#ifdef FREEPHONE_OBSOLETE if(!strcmp(config->prog,"high_level")) { return; } /* the formats son't matter */ @@ -47,6 +51,7 @@ } else if(!strcmp(config->format,"soundblaster8")) { ; /* nothing, as far as I know */ } +#endif } --- freespeech-1.0m.orig/src/conv1.c +++ freespeech-1.0m/src/conv1.c @@ -40,19 +40,19 @@ sil_fill(j++,"L-H]",0.7,50,sent); buffer_add_str(slist," ##"); } else if(ling_list->text[i]->word[0] == ':') { - sil_fill(j++,"L-H]",0.7,750,sent); + sil_fill(j++,"L-H]",0.7,50,sent); buffer_add_str(slist," ##"); } else if(ling_list->text[i]->word[0] == ';') { - sil_fill(j++,"L-L]",0.7,750,sent); + sil_fill(j++,"L-L]",0.7,50,sent); buffer_add_str(slist," ##"); } else if(ling_list->text[i]->word[0] == '.') { - sil_fill(j++,"L-L]",1.0,1200,sent); + sil_fill(j++,"L-L]",1.0,50,sent); buffer_add_str(slist," ##"); } else if(ling_list->text[i]->word[0] == '!') { - sil_fill(j++,"L-L]",1.0,1200,sent); + sil_fill(j++,"L-L]",1.0,50,sent); buffer_add_str(slist," ##"); } else if(ling_list->text[i]->word[0] == '?') { - sil_fill(j++,"L-H]",1.0,1200,sent); + sil_fill(j++,"L-H]",1.0,50,sent); buffer_add_str(slist," ##"); } else { sil_fill(j++,"L-H]",0.7,200,sent); @@ -88,7 +88,7 @@ } } if(buffer_last_char(slist) != '#') { - sil_fill(j++,"",0.0,1200,sent); + sil_fill(j++,"",0.0,50,sent); buffer_add_str(slist," ##"); } sent->sil_sz = j; --- freespeech-1.0m.orig/src/durations.c +++ freespeech-1.0m/src/durations.c @@ -7,16 +7,13 @@ #include "t2s.h" +float fmaxf(float, float); + static int min(int a, int b) { return((ab)?a:b); -} - export void durations(CONFIG *config, SPN *ps, ACOUSTIC *as) { int durdist; @@ -43,7 +40,7 @@ durdist = min(i-ps->pb[j-1],ps->pb[j]-i); interdist = ps->pb[j] - ps->pb[j-1]; proportion = (float)durdist/(float)interdist; - multiplier_i = fmax(0.01,4.0*proportion*(ps->scale[j-1]-1.0)+1.0); + multiplier_i = fmaxf(0.01,4.0*proportion*(ps->scale[j-1]-1.0)+1.0); as->duration[i] = config->fr_sz*multiplier_i; ps->duration[j-1] += as->duration[i]; } --- freespeech-1.0m.orig/src/go.c +++ freespeech-1.0m/src/go.c @@ -21,6 +21,7 @@ } } +#ifdef FREEPHONE_OBSOLETE export void go(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps, ACOUSTIC *as) { int c, c1; @@ -81,6 +82,7 @@ } } } +#endif export void go3(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps) { @@ -144,8 +146,9 @@ } } +#ifdef FREEPHONE_OBSOLETE export void go2(CONFIG *config, SPN *ps, ACOUSTIC *as) { process_spn_file(config, ps, as); } - +#endif --- freespeech-1.0m.orig/src/interface.c +++ freespeech-1.0m/src/interface.c @@ -216,7 +216,7 @@ for (new_char() ; isalpha(Char) || Char == '\'' ; new_char()) { buff[count++] = makeupper(Char); - if (count > MAX_LENGTH-2) + if (count >= MAX_LENGTH-2) { buff[count++] = ' '; buff[count++] = '\0'; --- freespeech-1.0m.orig/src/main.c +++ freespeech-1.0m/src/main.c @@ -20,7 +20,9 @@ SENT sent_struct; SPROSOD_LIST spl_struct; SPN ps_struct; +#ifdef FREEPHONE_OBSOLETE ACOUSTIC as_struct; +#endif CONFIG *config = &config_struct; BUFFER *buffer = &buffer_struct; @@ -28,7 +30,9 @@ SENT *sent = &sent_struct; SPROSOD_LIST *spl = &spl_struct; SPN *ps = &ps_struct; +#ifdef FREEPHONE_OBSOLETE ACOUSTIC *as = &as_struct; +#endif int c; int errflg = 0; @@ -36,16 +40,20 @@ extern char *optarg; extern int optind; +#ifdef FREEPHONE_OBSOLETE strcpy(config->prog,argv[0]); +#endif config->input_file = "-"; config->output_file = "-"; config->hash_file = "-"; +#ifdef FREEPHONE_OBSOLETE config->diphone_file = "-"; config->format = "sun8k"; strcpy(config->prog,"high_level"); config->type = _MBROLA_; +#endif - while((c = getopt(argc,argv,"i:o:h:ml")) != -1) + while((c = getopt(argc,argv,"i:o:h:")) != -1) switch(c) { case 'i': config->input_file = optarg; @@ -53,12 +61,15 @@ case 'o': config->output_file = optarg; break; +#ifdef FREEPHONE_OBSOLETE case 'd': config->diphone_file = optarg; break; +#endif case 'h': config->hash_file = optarg; break; +#ifdef FREEPHONE_OBSOLETE case 'f': config->format = optarg; break; @@ -76,13 +87,14 @@ case 't': /* ``silent Test flag'' */ strcpy(config->prog,"test_diphones"); break; +#endif default: errflg++; } if((optind!=argc) || errflg /* || (argc==1) */) { (void)fprintf(stderr, "usage: %s\n",argv[0]); (void)fprintf(stderr,"\t-i input text file or - for standard input (default)\n"); - (void)fprintf(stderr,"\t-o output (probably audio) file or - for standard output (default)\n"); + (void)fprintf(stderr,"\t-o output file or - for standard output (default)\n"); /* (void)fprintf(stderr,"\t-d diphone files (default)\n"); (void)fprintf(stderr,"\t-f output format (sun8k - default, sun10k, soundblaster8, .spn)\n"); */ (void)fprintf(stderr,"\t-h dictionary in hash format (no default)\n"); @@ -93,12 +105,17 @@ exit (2); } +#ifdef FREEPHONE_OBSOLETE init(config, buffer, ling_list, sent, spl, ps, as); if(!strcmp(config->prog,"low_level")) { go2(config, ps, as); } else if(!strcmp(config->prog,"high_level")) { +#else + init(config, buffer, ling_list, sent, spl, ps); +#endif go3(config, buffer, ling_list, sent, spl, ps); +#ifdef FREEPHONE_OBSOLETE } else if(!strcmp(config->prog,"test_diphones")) { #ifdef DEBUG test_diphones(config, sent, spl, ps, as); @@ -109,6 +126,9 @@ } terminate(config, buffer, ling_list, sent, spl, ps, as); +#else + terminate(config, buffer, ling_list, sent, spl, ps); +#endif return(0); } --- freespeech-1.0m.orig/src/nrl_edin.c +++ freespeech-1.0m/src/nrl_edin.c @@ -15,8 +15,11 @@ */ #include "t2s.h" -static char *nrl_edin[][2] = { +static PKEY nrl_edin[] = { { " ", "| ",}, + { "*", "* ",}, + { "~", "~ ",}, + { ".", ". ",}, { "IY", "ee ",}, { "EY", "ai ",}, { "AE", "aa ",}, @@ -62,7 +65,7 @@ { "w", "w ",}, { "r", "r ",}, { "JH", "j ",}, /* problem */ - { "","",}, + { "",""} }; @@ -74,12 +77,12 @@ while(*str) { i = 0; - while(nrl_edin[i][0] != '\0') { - if(!strncmp(str,nrl_edin[i][0],strlen(nrl_edin[i][0]))) + while(nrl_edin[i].keyword[0]) { + if(!strncmp(str,nrl_edin[i].keyword,strlen(nrl_edin[i].keyword))) break; i++; } - strcat(str2,nrl_edin[i][1]); - str += strlen(nrl_edin[i][0]); + strcat(str2,nrl_edin[i].keyvalue); + str += strlen(nrl_edin[i].keyword); } } --- freespeech-1.0m.orig/src/phon_rules.c +++ freespeech-1.0m/src/phon_rules.c @@ -62,24 +62,64 @@ */ } -/* replace string in situ */ -export void phon_rules_init() +export void phon_rules_free() { int i; for(i=0;ilist)); BUFFER ib; BUFFER prev; @@ -31,13 +31,13 @@ buffer_init(&prev); while (*input) { for(i=0;ilist)); --- freespeech-1.0m.orig/src/rule_engine.h +++ freespeech-1.0m/src/rule_engine.h @@ -1,10 +1,10 @@ typedef struct { char *left_context; - regexp *lc; + regex_t *lc; char *target; char *right_context; - regexp *rc; + regex_t *rc; char *output; } RULE; --- freespeech-1.0m.orig/src/saynum.c +++ freespeech-1.0m/src/saynum.c @@ -14,34 +14,34 @@ static char *Cardinals[] = { - "zIHrOW ", "wAHn ", "tUW ", "THrIY ", - "fAOr ", "fAYv ", "sIHks ", "sEHvAXn ", - "EYt ", "nAYn ", - "tEHn ", "IYlEHvAXn ", "twEHlv ", "THERtIYn ", - "fAOtIYn ", "fIHftIYn ", "sIHkstIYn ", "sEHvEHntIYn ", - "EYtIYn ", "nAYntIYn " + "z*IArOW ", "w*AHn ", "t*UW ", "THr*IY ", + "f*AOr ", "f*AYv ", "s*IHks ", "s*EHvn ", + "*EYt ", "n*AYn ", + "t*EHn ", "IY.l*EHvAXn ", "tw*EHlv ", "TH~ER.t*IYn ", + "f~AO.t*IYn ", "f~IHf.t*IYn ", "sIHk.st*IYn ", "s~EHvn.t*IYn ", + "~EY.t*IYn ", "n~AYn.t*IYn " } ; static char *Twenties[] = { - "twEHntIY ", "THERtIY ", "fAOtIY ", "fIHftIY ", - "sIHkstIY ", "sEHvEHntIY ", "EYtIY ", "nAYntIY " + "tw*EHntIY ", "TH*ERtIY ", "f*AOtIY ", "f*IHftIY ", + "s*IHkstIY ", "s*EHvntIY ", "*EYtIY ", "n*AYntIY " } ; static char *Ordinals[] = { - "zIHrOWEHTH ", "fERst ", "sEHkAHnd ", "THERd ", - "fAOTH ", "fIHfTH ", "sIHksTH ", "sEHvEHnTH ", - "EYtTH ", "nAYnTH ", - "tEHnTH ", "IYlEHvEHnTH ", "twEHlvTH ", "THERtIYnTH ", - "fAOtIYnTH ", "fIHftIYnTH ", "sIHkstIYnTH ", "sEHvEHntIYnTH ", - "EYtIYnTH ", "nAYntIYnTH " + "z*IArOWTH ", "f*ERst ", "s*EHkAHnd ", "TH*ERd ", + "f*AOTH ", "f*IHfTH ", "s*IHksTH ", "s*EHvnTH ", + "*EYtTH ", "n*AYnTH ", + "t*EHnTH ", "IY.l*EHvnTH ", "tw*EHlvTH ", "TH~ER.t*IYnTH ", + "f~AO.t*IYnTH ", "f~IHf.t*IYnTH ", "sIHk.st*IYnTH ", "s~EHvn.t*IYnTH ", + "~EY.t*IYnTH ", "n~AYn.t*IYnTH " } ; static char *Ord_twenties[] = { - "twEHntIYEHTH ","THERtIYEHTH ", "fAOtIYEHTH ", "fIHftIYEHTH ", - "sIHkstIYEHTH ","sEHvEHntIYEHTH ","EYtIYEHTH ", "nAYntIYEHTH " + "tw*EHntIATH ","TH*ERtIATH ", "f*AOtIATH ", "f*IHftIATH ", + "s*IHkstIATH ","s*EHvntIATH ","*EYtIATH ", "n*AYntIATH " } ; @@ -53,11 +53,11 @@ { if (value < 0) { - outstring("mAYnAHs "); + outstring("m*AYnAXs "); value = (-value); if (value < 0) /* Overflow! -32768 */ { - outstring("IHnfIHnIHtIY "); + outstring("IHn.f*IHnIHtIH "); return; } } @@ -65,7 +65,7 @@ if (value >= 1000000000L) /* Billions */ { say_cardinal(value/1000000000L); - outstring("bIHlIYAXn "); + outstring("b*IHlIAn "); value = value % 1000000000; if (value == 0) return; /* Even billion */ @@ -76,7 +76,7 @@ if (value >= 1000000L) /* Millions */ { say_cardinal(value/1000000L); - outstring("mIHlIYAXn "); + outstring("m*IHlIAn "); value = value % 1000000L; if (value == 0) return; /* Even million */ @@ -85,11 +85,11 @@ } /* Thousands 1000..1099 2000..99999 */ - /* 1100 to 1999 is eleven-hunderd to ninteen-hunderd */ + /* 1100 to 1999 is eleven-hundred to nineteen-hundred */ if ((value >= 1000L && value <= 1099L) || value >= 2000L) { say_cardinal(value/1000L); - outstring("THAWzAEnd "); + outstring("TH*AWznd "); value = value % 1000L; if (value == 0) return; /* Even thousand */ @@ -100,7 +100,7 @@ if (value >= 100L) { outstring(Cardinals[value/100]); - outstring("HHAHndrEHd "); + outstring("HH*AHndrAXd "); value = value % 100; if (value == 0) return; /* Even hundred */ @@ -132,7 +132,7 @@ value = (-value); if (value < 0) /* Overflow! -32768 */ { - outstring("IHnfIHnIHtIY "); + outstring("IHn.f*IHnIHtIH "); return; } } @@ -143,10 +143,10 @@ value = value % 1000000000; if (value == 0) { - outstring("bIHlIYAXnTH "); + outstring("b*IHlIAnTH "); return; /* Even billion */ } - outstring("bIHlIYAXn "); + outstring("b*IHlIAn "); if (value < 100) /* as in THREE BILLION AND FIVE */ outstring("AEnd "); } @@ -157,10 +157,10 @@ value = value % 1000000L; if (value == 0) { - outstring("mIHlIYAXnTH "); + outstring("m*IHlIAnTH "); return; /* Even million */ } - outstring("mIHlIYAXn "); + outstring("m*IHlIAn "); if (value < 100) /* as in THREE MILLION AND FIVE */ outstring("AEnd "); } @@ -173,10 +173,10 @@ value = value % 1000L; if (value == 0) { - outstring("THAWzAEndTH "); + outstring("TH*AWzndTH "); return; /* Even thousand */ } - outstring("THAWzAEnd "); + outstring("TH*AWznd "); if (value < 100) /* as in THREE THOUSAND AND FIVE */ outstring("AEnd "); } @@ -187,10 +187,10 @@ value = value % 100; if (value == 0) { - outstring("HHAHndrEHdTH "); + outstring("HH*AHndrAXdTH "); return; /* Even hundred */ } - outstring("HHAHndrEHd "); + outstring("HH*AHndrAXd "); } if (value >= 20) --- freespeech-1.0m.orig/src/space.c +++ freespeech-1.0m/src/space.c @@ -11,14 +11,16 @@ #include #include -/* FreeBSD, and Linux? */ + #ifdef FBSD_DATABASE #include #else -#include +#include #endif + #include +#ifdef FREEPHONE_OBSOLETE int ft_endian_loc = 1; /* for deciding if we need to byte-swap */ ENTRY indx[NDIPHS]; @@ -26,6 +28,9 @@ int nindex; export void init(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps, ACOUSTIC *as) +#else +export void init(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps) +#endif { /* check the various files are accessible */ @@ -41,20 +46,18 @@ +#ifdef FREEPHONE_OBSOLETE /* load the diphones including index */ load_speech(config); +#endif /* set up database if present */ if(strcmp("-",config->hash_file)) { -#ifdef FBSD_DATABASE config->db = (void *)dbopen(config->hash_file,O_RDONLY, 0000644, DB_HASH, NULL); -#else - config->db = (void *)dbm_open(config->hash_file,O_RDONLY, 0000644); -#endif /* the (void *) is so config can remain ignorant about the database */ if(config->db==NULL) { (void)fprintf(stderr,"\nDictionary file \"%s\" not found.\n",config->hash_file); @@ -88,7 +91,9 @@ /* now the synthesis stuff */ ps_malloc(DEF_PHONS,DEF_TARGS,ps); +#ifdef FREEPHONE_OBSOLETE as_malloc(DEF_FRAMES,DEF_PM,as); /* should perhaps use ps?? */ +#endif @@ -112,13 +117,7 @@ /* what follows is an example for use as a template */ load_context_rules("context_rules"); - /* this goes with the rule engine code... - for(i=0;idb != NULL) -#ifdef FBSD_DATABASE - (void)(config->db->close)(config->db); #else - dbm_close(config->db); +void terminate(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps) #endif +{ + if(config->db != NULL) + (void)(((DB *)(config->db))->close)((DB *)(config->db)); output_close(config); @@ -146,9 +144,11 @@ spl_free(spl); ps_free(ps); +#ifdef FREEPHONE_OBSOLETE as_free(as); unload_diphs(config); +#endif phon_rules_free(); /* also need to free the various other structures */ } @@ -242,8 +242,8 @@ ps->duration = (int *) malloc(sizeof(int)*(nphons+1)); ps->pb = (int *) malloc(sizeof(int)*(nphons+1)); ps->scale = (float *) malloc(sizeof(float)*(nphons+1)); - ps->phons = (char **) malloc(sizeof(int)*(nphons+1)); - ps->diphs = (char **) malloc(sizeof(int)*(nphons+1)); + ps->phons = (char **) malloc(sizeof(char *)*(nphons+1)); + ps->diphs = (char **) malloc(sizeof(char *)*(nphons+1)); for(i=0;iphons[i] = (char *)malloc(sizeof(PHON_SZ)); @@ -268,8 +268,8 @@ ps->duration = (int *) realloc(ps->duration,sizeof(int)*(nphons+1)); ps->pb = (int *) realloc(ps->pb,sizeof(int)*(nphons+1)); ps->scale = (float *) realloc(ps->scale,sizeof(float)*(nphons+1)); - ps->phons = (char **) realloc(ps->phons,sizeof(int)*(nphons+1)); - ps->diphs = (char **) realloc(ps->diphs,sizeof(int)*(nphons+1)); + ps->phons = (char **) realloc(ps->phons,sizeof(char *)*(nphons+1)); + ps->diphs = (char **) realloc(ps->diphs,sizeof(char *)*(nphons+1)); for(i=rem_p;iphons[i] = (char *)malloc(sizeof(PHON_SZ)); @@ -299,6 +299,7 @@ free(ps->diphs); } +#ifdef FREEPHONE_OBSOLETE export void as_malloc(int nframes, int npp, ACOUSTIC *as) { @@ -331,6 +332,7 @@ free(as->duration); free(as->pitch); } +#endif /* * 'SENT' operations. --- freespeech-1.0m.orig/src/spnio.c +++ freespeech-1.0m/src/spnio.c @@ -7,6 +7,7 @@ #include "t2s.h" +#ifdef FREEPHONE_OBSOLETE static void transmogrify(CONFIG *config, char *s, SPN *ps) { char *phon; @@ -40,6 +41,7 @@ if(!ps->t_sz) fprintf(stderr,"No frequency specified, using default\n"); } +#endif export void put_mbrola_data(CONFIG *config, SPN *ps) { @@ -68,6 +70,7 @@ fflush(config->ofd); } +#ifdef FREEPHONE_OBSOLETE export void put_spn_data(CONFIG *config, SPN *ps) { int i; @@ -114,4 +117,4 @@ } /* perhaps we should close the file ?? */ } - +#endif --- freespeech-1.0m.orig/src/syllab.c +++ freespeech-1.0m/src/syllab.c @@ -161,7 +161,7 @@ /* we start looking once we find a vowel */ /* we stop looking if we find an existing syllable boundary */ - if(b_cat(carrier[c_sz-1],config) == VOWEL) { + if((c_sz>0) && b_cat(carrier[c_sz-1],config) == VOWEL) { look = 1; /* don't need a marker */ } --- freespeech-1.0m.orig/src/t2s.c +++ freespeech-1.0m/src/t2s.c @@ -7,6 +7,7 @@ #include "t2s.h" +#ifdef FREEPHONE_OBSOLETE export void process_sentence(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps, ACOUSTIC *as) { high_level(config,buffer,ling_list,sent,spl,ps); @@ -15,20 +16,26 @@ fflush(config->ofd); } +#endif export void produce_spn_file(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps) { high_level(config,buffer,ling_list,sent,spl,ps); +#ifdef FREEPHONE_OBSOLETE if(config->type == _SPN_) { put_spn_data(config,ps); } else if(config->type == _MBROLA_) { +#endif put_mbrola_data(config,ps); +#ifdef FREEPHONE_OBSOLETE } +#endif fflush(config->ofd); } +#ifdef FREEPHONE_OBSOLETE export void process_spn_file(CONFIG *config, SPN *ps, ACOUSTIC *as) { get_spn_data(config,ps); @@ -37,6 +44,7 @@ fflush(config->ofd); } +#endif export void high_level(CONFIG *config, BUFFER *buffer, LING_LIST *ling_list, SENT *sent, SPROSOD_LIST *spl, SPN *ps) { @@ -55,6 +63,7 @@ prosody(spl,ps); } +#ifdef FREEPHONE_OBSOLETE export void low_level(CONFIG *config, SPN *ps, ACOUSTIC *as) { phonstoframes(ps,as); @@ -63,3 +72,4 @@ calc_pitch(config,ps,as); } +#endif --- freespeech-1.0m.orig/src/t2s.h +++ freespeech-1.0m/src/t2s.h @@ -3,8 +3,8 @@ #include #include #include -#include "regexp.h" -#include "regmagic.h" +#include +#include #define export @@ -52,26 +52,36 @@ typedef struct { char *input_file; char *output_file; +#ifdef FREEPHONE_OBSOLETE char *diphone_file; +#endif char *hash_file; +#ifdef FREEPHONE_OBSOLETE char *format; int type; /* format by any other name */ +#endif FILE *ifd; FILE *ofd; +#ifdef FREEPHONE_OBSOLETE FILE *xfd; FILE *dfd; +#endif void *db; int fw_num; int broad_cats_num; int dur0_num; int edin2sampa0_num; +#ifdef FREEPHONE_OBSOLETE char prog[40]; +#endif int sr; int fr_sz; +#ifdef FREEPHONE_OBSOLETE int fr_data; int ncoeffs; int norm; /* used for normalising output amplitude */ int ft_endian_loc; /* for telling byte order */ +#endif } CONFIG; typedef struct { @@ -138,9 +148,11 @@ int end; } ENTRY; +#ifdef FREEPHONE_OBSOLETE typedef struct { short *frame; } FRAME; +#endif typedef struct { int p_sz; @@ -159,6 +171,7 @@ char **diphs; } SPN; +#ifdef FREEPHONE_OBSOLETE typedef struct { int f_sz; int p_sz; @@ -168,14 +181,15 @@ short *duration; /* since variants may be required */ short *pitch; } ACOUSTIC; +#endif typedef struct { char *left_context; - regexp *lc; + regex_t *lc; char *target; char *right_context; - regexp *rc; + regex_t *rc; char *output; } RULE; @@ -190,6 +204,7 @@ /* now definitions of global data */ +#ifdef FREEPHONE_OBSOLETE extern ENTRY indx[NDIPHS]; extern FRAME dico[NFRAMES]; extern int nindex; @@ -205,5 +220,6 @@ #define SWAPINT(x) (((x) & 0xff) << 24 | ((x) & 0xff00) << 8 | \ ((x) & 0xff0000) >> 8 | ((x) & 0xff000000) >> 24) #define SWAPSHORT(x) (((x) & 0xff) << 8 | ((x) & 0xff00) >> 8) +#endif #include "prototypes.h" --- freespeech-1.0m.orig/src/transcribe.c +++ freespeech-1.0m/src/transcribe.c @@ -9,12 +9,13 @@ #include #include -/* FreeBSD, and Linux? */ + #ifdef FBSD_DATABASE #include #else -#include +#include #endif + #include static char *lookup_db(char *word, CONFIG *config); @@ -54,43 +55,24 @@ } } -#ifdef FBSD_DATABASE - static char *lookup_db(char *word, CONFIG *config) { DBT inKey, inVal; inKey.data = word; - inKey.size = strlen(word)+1; + inKey.size = strlen(word); inVal.data = NULL; inVal.size = 0; if(config->db != NULL) { - (config->db->get)((DB *)config->db,&inKey,&inVal,0); + (((DB *)(config->db))->get)((DB *)(config->db),&inKey,&inVal,0); return(inVal.data); } else return(NULL); } -#else - -static char *lookup_db(char *word, CONFIG *config) -{ - datum Key; - - Key.dptr = word; - Key.dsize = strlen(word)+1; - - if(config->db != NULL) - return(dbm_fetch((DBM *)config->db,Key).dptr); - else - return(NULL); -} - -#endif - static void ToLower(char *word) { while(*word) {