asterisk/say.conf

Fri, 15 Oct 2010 18:46:25 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Fri, 15 Oct 2010 18:46:25 +0200
changeset 261
4f973c756446
permissions
-rw-r--r--

Update copyright, file server URL, modify doc and link logic.
Now documentation is installed by default to the correct path,
and QtCreator links against Qt shared libraries instead of Qt
static libraries. This unfortunate change supports Nokia's
unfortunate decision to poorly support static linking in Qt.

     1 ; say.conf
     2 ; 
     3 ; language configuration
     4 ;
     5 ; The new language routines produce strings of the form
     6 ;	prefix:[format:]data
     7 ; that are matched against the rules in this file to produce
     8 ; an output.
     9 ;
    10 ; The data is generally the string to be spelled (either a number,
    11 ; an ascii string or a date/time in the format specified below).
    12 ; It is available, in the right hand side of a rule, as variable ${SAY}.
    13 ;
    14 ; The format is optional and normally used only for date/time.
    15 ; The prefix is used to select the pronunciation - standard
    16 ; prefixes are
    17 ;	num		used for numbers
    18 ;	enum		used for enumerations
    19 ;	date 		for dates
    20 ;	time 		for times
    21 ;	datetime	for dates and times
    22 ;	char		for character strings
    23 ;	phonetic	for phonetic strings
    24 ;	digit		for digit strings
    25 ;
    26 ; but others can be used at will.
    27 ;
    28 ; Processing occurs as follows:
    29 ; If the format is empty, or there is no format, the entire
    30 ; string is matched against one of the pattern on the left hand side.
    31 ; On the first match, the various comma-separated components on the right
    32 ; hand side are pronounced, as follows:
    33 ; + a component starting with a prefix: (i.e. with a ':' in it)
    34 ;   is re-processed according to these rules;
    35 ; + a component without a ':' in it is considered a filename and
    36 ;   the corresponding file is played.
    37 ;
    38 ; If the format is non-empty, the format is split into its components
    39 ; (individual characters, or filenames in single quotes), and then
    40 ; filenames are played, whereas single characters are used to
    41 ; generate a new string format:pat:data to be processed.
    42 ;
    43 ; DATES/AND TIMES assume that the date info is available in
    44 ; the form	 YYYYMMDDHHmm.ss-dow-doy
    45 ; with 4 digits for the year, 2 for month, day, hour, minutes, seconds,
    46 ; one digit for the day-of-week, and 3 digits for the day-of-year.
    47 ;
    48 ; Example:
    49 ;     datetime::200604172030.00-4-102
    50 ; (typical format for a date) is first matched against the line
    51 ;	datetime::. => date:AdBY 'digits/at' IMp:${SAY}
    52 ; which is normally present with the default format for dates.
    53 ; In turn, the format string "AdBY 'digits/at' IMp" results in
    54 ; the sequence
    55 ;	date:A:200604172030.00-4-102
    56 ;	date:d:200604172030.00-4-102
    57 ;	date:B:200604172030.00-4-102
    58 ;	date:Y:200604172030.00-4-102
    59 ;	digits/at
    60 ;	date:I:200604172030.00-4-102
    61 ;	date:M:200604172030.00-4-102
    62 ;	date:p:200604172030.00-4-102
    63 ;
    64 ; 
    65 ; Remember, normally X Z N are special, and the search is
    66 ; case insensitive, so you must use [X] [N] [Z] .. if you
    67 ; want exact match.
    69 ; We start with the basic rules that might be more-or-less
    70 ; language-independent
    72 [digit-base](!)		; base rule for digit strings
    73 			; XXX incomplete yet
    74     _digit:[0-9] => digits/${SAY}
    75     _digit:[-] => letters/dash
    76     _digit:[*] => letters/star
    77     _digit:[@] => letters/at
    78     _digit:[0-9]. => digit:${SAY:0:1}, digit:${SAY:1}
    80 [date-base](!)		; base rules for dates and times
    81     ; the 'SAY' variable contains YYYYMMDDHHmm.ss-dow-doy
    82     ; these rule map the strftime attributes.
    83     _date:Y:. => num:${SAY:0:4}	; year, 19xx
    84     _date:[Bb]:. => digits/mon-$[${SAY:4:2}-1]	; month name, 0..11
    85     _date:[Aa]:. => digits/day-${SAY:16:1}	; day of week
    86     _date:[de]:. => num:${SAY:6:2}		; day of month
    87     _date:[hH]:. => num:${SAY:8:2}		; hour
    88     _date:[I]:. => num:$[${SAY:8:2} % 12]	; hour 0-12
    89     _date:[M]:. => num:${SAY:10:2}		; minute
    90     ; XXX too bad the '?' function does not remove the quotes
    91     ; _date:[pP]:. => digits/$[ ${SAY:10:2} > 12 ? "p-m" :: "a-m"]	; am pm
    92     _date:[pP]:. => digits/p-m	; am pm
    93     _date:[S]:. => num:${SAY:13:2}		; seconds
    95 [en-base](!)
    96     _[n]um:0. => num:${SAY:1}
    97     _[n]um:X => digits/${SAY}
    98     _[n]um:1X => digits/${SAY}
    99     _[n]um:[2-9]0 =>  digits/${SAY}
   100     _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}
   101     _[n]um:XXX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
   103     _[n]um:XXXX => num:${SAY:0:1}, digits/thousand, num:${SAY:1}
   104     _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
   105     _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousand, num:${SAY:3}
   107     _[n]um:XXXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
   108     _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/million, num:${SAY:2}
   109     _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/million, num:${SAY:3}
   111     _[n]um:XXXXXXXXXX => num:${SAY:0:1}, digits/billion, num:${SAY:1}
   112     _[n]um:XXXXXXXXXXX => num:${SAY:0:2}, digits/billion, num:${SAY:2}
   113     _[n]um:XXXXXXXXXXXX => num:${SAY:0:3}, digits/billion, num:${SAY:3}
   115     ; enumeration
   116     _e[n]um:X => digits/h-${SAY}
   117     _e[n]um:1X => digits/h-${SAY}
   118     _e[n]um:[2-9]0 => digits/h-${SAY}
   119     _e[n]um:[2-9][1-9] => num:${SAY:0:1}0, digits/h-${SAY:1}
   120     _e[n]um:[1-9]XX => num:${SAY:0:1}, digits/hundred, enum:${SAY:1}
   122 [it](digit-base,date-base)
   123     _[n]um:0. => num:${SAY:1}
   124     _[n]um:X => digits/${SAY}
   125     _[n]um:1X => digits/${SAY}
   126     _[n]um:[2-9]0 =>  digits/${SAY}
   127     _[n]um:[2-9][1-9] =>  digits/${SAY:0:1}0, num:${SAY:1}
   128     _[n]um:1XX => digits/hundred, num:${SAY:1}
   129     _[n]um:[2-9]XX => num:${SAY:0:1}, digits/hundred, num:${SAY:1}
   131     _[n]um:1XXX => digits/thousand, num:${SAY:1}
   132     _[n]um:[2-9]XXX => num:${SAY:0:1}, digits/thousands, num:${SAY:1}
   133     _[n]um:XXXXX => num:${SAY:0:2}, digits/thousands, num:${SAY:2}
   134     _[n]um:XXXXXX => num:${SAY:0:3}, digits/thousands, num:${SAY:3}
   136     _[n]um:1XXXXXX => num:${SAY:0:1}, digits/million, num:${SAY:1}
   137     _[n]um:[2-9]XXXXXX => num:${SAY:0:1}, digits/millions, num:${SAY:1}
   138     _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
   139     _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
   141     _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
   142     _date::. => date:AdBY:${SAY}
   143     _time::. => date:IMp:${SAY}
   145 [en](en-base,date-base,digit-base)
   146     _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
   147     _date::. => date:AdBY:${SAY}
   148     _time::. => date:IMp:${SAY}
   150 [de](date-base,digit-base)
   151     _[n]um:0. => num:${SAY:1}
   152     _[n]um:X => digits/${SAY}
   153     _[n]um:1X => digits/${SAY}
   154     _[n]um:[2-9]0 => digits/${SAY}
   155     _[n]um:[2-9][1-9] => digits/${SAY:1}-and, digits/${SAY:0:1}0
   156     _[n]um:1XX => digits/ein, digits/hundred, num:${SAY:1}
   157     _[n]um:[2-9]XX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}
   158     _[n]um:1XXX => digits/ein, digits/thousand, num:${SAY:1}
   159     _[n]um:[2-9]XXX => digits/${SAY:0:1}, digits/thousand, num:${SAY:1}
   160     _[n]um:XXXXX => num:${SAY:0:2}, digits/thousand, num:${SAY:2}
   161     _[n]um:X00XXX => digits/${SAY:0:1}, digits/hundred, digits/thousand, num:${SAY:3}
   162     _[n]um:XXXXXX => digits/${SAY:0:1}, digits/hundred, num:${SAY:1}
   163     _[n]um:1XXXXXX => digits/eine, digits/million, num:${SAY:1}
   164     _[n]um:[2-9]XXXXXX => digits/${SAY:0:1}, digits/millions, num:${SAY:1}
   165     _[n]um:XXXXXXXX => num:${SAY:0:2}, digits/millions, num:${SAY:2}
   166     _[n]um:XXXXXXXXX => num:${SAY:0:3}, digits/millions, num:${SAY:3}
   168     _datetime::. => date:AdBY 'digits/at' IMp:${SAY}
   169     _date::. => date:AdBY:${SAY}
   170     _time::. => date:IMp:${SAY}

mercurial