CopiaFacts can provide spoken numeric amounts, currency values and custom phrases in a manner that can be configured for almost any language or application. At call time, a complete sentence is spoken built from the voice segments in a single indexed voice file, thus eliminating delays arising from the loading of separate voice files in turn.

An indexed voice file consists of the phrases themselves, an index containing their positions in the file, and an "algorithm" section which encodes how the individual segments are selected for speaking as a phrase. Indexed voice files from earlier releases of FaxFacts, which do not contain this algorithm section, are recognized as either FAXFACTS.DIG or FAXFACTS.AMT and the original hard-coded algorithm is used.

This technique has the benefit that you can replace an indexed voice file with one for a different language without any change to the CopiaFacts program or to control files. The algorithm specification includes a list of the phrases to be spoken, making the system self-documenting.

CopiaFacts comes with a number of predefined algorithm files for different languages. You can record the necessary voice segments in your own voice and use the FFAMOUNT program to build the segments and the compiled algorithm into a single indexed voice file. FFAMOUNT can also test your algorithm, printing out the text which will be spoken for any given input. Once the algorithm has been tested by typing in different numbers at the keyboard, the actual spoken sentence which CopiaFacts will produce is guaranteed to be correct provided that each voice segment file actually contains the words you said in the source file that it does.

The configurable phrase-speaking feature is principally intended to allow foreign-language versions of CopiaFacts to include full capability for speaking numbers and amounts. This is not just a question of translating the words. For example in German, you cannot just translate you have entered and each of the digit names, because the German language translation expects the verb to be at the end of the sentence, after the digits have been spoken. And while the English amount speaking renders 71 as seventy-one, the French needs to have soixante-et-onze (sixty and eleven), involving three spoken words instead of two. Any of these national details can now be coded in the algorithm section of the CopiaFacts amounts file. Pre-coded algorithm files are available for English (USA or UK), French, Swiss, German, Italian, Spanish and Japanese.

The configurable phrase-speaking feature can also be used to allow any composite phrase to be spoken, using the contents of any system or user variable. For example:

You have selected one image

You have selected twelve images

There are nine-hundred-and-five of that item in stock

The time is nine-oh-five a.m.

The time is midday

That document is dated the-fourth-of-July-nineteen-ninety-four

The above examples could be produced using the $play_var command in a .IIF file, with a suitably coded algorithm file. You can build an algorithm from the following:

a prefix or suffix code specified in the $play_var command

the number or amount as separate digits

the number or amount as a numeric value

the amount with decimal places (e.g. dollars and cents)

the size of the number

Numbers can be processed in separate ranges of magnitude, for example millions, thousands, hundreds and units. You can also specify recursion, so that two-thousand-two-hundred-and-two repeatedly uses the same two phrase element.

Finally, note that you can use this feature to build arbitrary sentences, not just based on amounts. For example, by specifying a simple algorithm to translate letters A to Z into 26 different words or phrases, you might be able to use $play_var on a variable containing "AQFH3" and produce the sentence you have selected red widgets, size three. The COPIAFACTS program uses the FAXFACTS.RST multiple-segment voice file to create all the messages needed for the Recording Studio using a similar method.

The remainder of this section describes in detail the creation of the algorithm files.