Summary:ASTERISK-05070: [patch] SayAlpha does not read special characteres such as "," and "/"
Reporter:Leo Burd (leoburd)Labels:
Date Opened:2005-09-13 06:41:07Date Closed:2007-11-20 17:26:38.000-0600
Versions:Frequency of
Environment:Attachments:( 0) 5208.txt
( 1) chars.tar
Description:SayAlpha does not read common special characteres that are associated with email addresses and URLs.  It would be great if it could read characteres such as ":" ";" "_" "/" ","


Comments:By: Russell Bryant (russell) 2005-09-16 20:10:14

... Gastman?  Please be careful when filling out your bug report.  :)

By: Clod Patry (junky) 2005-09-16 21:29:55

if you have the latest say.c version,
" ", "/" is currently supported.

I just patch say.c
to add these characters:    _|\:;,

But for some, you'll have to add a \ before for the pbx_config to ignore these chars in the parsing (only the ,;\ )

exten => 5208,1,SayAlpha(_:/\\ab\;|w..co\,m/);
will gives you:
   -- Executing SayAlpha("SIP/10-c795", "_:/\ab;|w..co,m/") in new stack
   -- Playing 'letters/underscore' (language 'en')
   -- Playing 'letters/colon' (language 'en')
   -- Playing 'letters/slash' (language 'en')
   -- Playing 'letters/backslash' (language 'en')
   -- Playing 'letters/a' (language 'en')
   -- Playing 'letters/b' (language 'en')
   -- Playing 'letters/semicolon' (language 'en')
   -- Playing 'letters/pipe' (language 'en')
   -- Playing 'letters/w' (language 'en')
   -- Playing 'letters/dot' (language 'en')
   -- Playing 'letters/dot' (language 'en')
   -- Playing 'letters/c' (language 'en')
   -- Playing 'letters/o' (language 'en')
   -- Playing 'letters/comma' (language 'en')
   -- Playing 'letters/m' (language 'en')
   -- Playing 'letters/slash' (language 'en')

just untar chars.tar in sounds dir and report how it works.

Dont laught on my sexy voice and thanks to Ariel for that brief english lesson :)

By: Clod Patry (junky) 2005-09-17 12:34:16

Patch build on say.c Revision: 1.69
CVS-HEAD 2005-09-16 05:14:37 UTC

Disclaimer on file.

By: Clod Patry (junky) 2005-09-22 05:58:26

leoburd: could you confirm, it works fine for you?

By: Leo Burd (leoburd) 2005-09-23 09:46:58

Thanks so much for the patch.  It seems to be working just fine!

BTW, I think it would be good to apply the same patch to SayPhonetic.  Moreover, it's weird that SayDigits only reads symbols such as "*" and "-".  It should also read "/" and "+"...

All the best,


By: Clod Patry (junky) 2005-09-23 10:57:28

we'll need Allison for these prompts now:
- colon
- semicolon
- underscore
- comma
- pipe
- backslash

Is it possible to get all these prompts recorded?

By: Michael Jerris (mikej) 2005-12-01 13:51:39.000-0600

Can we please get an updated patch for this for current svn trunk and the additional prompts that will be needed.  Thanks.

By: Jason Parker (jparker) 2006-01-05 12:49:47.000-0600

If we're going to add these, would anybody be against adding a few more?

I'm thinking `~%^&()[]{}'"?<> and perhaps anything else that isn't on my US-centric keyboard.

Does anybody with some disposable cash have any extreme need for these?  I think that's all this issue is waiting on.  By my count, the attached patch and my proposed additional chars, are 42 "words".  Then again, I could be wrong...

By: Clod Patry (junky) 2006-01-06 10:27:32.000-0600

So far, we just need Allison to record prompts and i think that's it for the first step.

By: Matt O'Gorman (mogorman) 2006-01-10 16:28:18.000-0600

I will take care of the prompts, can some one please list all of the words that need to be done.

By: Clod Patry (junky) 2006-01-10 16:40:15.000-0600

see my note 0033842:
- colon
- semicolon
- underscore
- comma
- pipe
- backslash

By: Matt O'Gorman (mogorman) 2006-01-10 17:00:25.000-0600

i thought people also wanted this  `~%^&()[]{}'"?<> as well

By: Jason Parker (jparker) 2006-01-10 17:05:15.000-0600

That was more of a "well...while we're at it..." thing.

By: Clod Patry (junky) 2006-01-10 18:58:25.000-0600

just to make sure my english is okay here:
~ = tildard
% = percent
& = and
( = left braket
) = right braket

whats the other ones?

By: Jason Parker (jparker) 2006-01-10 21:30:13.000-0600

Of the ones I posted, you've got...(in order)


backtick, tilde, percent, caret, ampersand, left parenthesis (or open parenthesis), right parenthesis (or close parenthesis), left square brace, right square brace, left curly brace, right curly brace, apostrophe, quotation, question mark, left angle bracket (or less than), right angle bracket (or greater than)

Something like that anyhow...  I was also thinking about the pound character (not #)...Is there another name that could be used for that?

By: Clod Patry (junky) 2006-01-12 00:25:30.000-0600

Not that I know, I'll provide a patch soon, for SayAlpha, with your last note north.

Now the question is more: do we want it in SayPhonetic and SayDigits too?
By consequent, SayNumber should be done too.

By: Jason Parker (jparker) 2006-01-12 00:33:12.000-0600

I don't think saydigits needs it.  sayphonetics probably does though.

By: Matt O'Gorman (mogorman) 2006-01-12 09:30:27.000-0600

id have to say SayPhonetic  is best so if i am not mistaken the words we want are
colon                  :
semicolon              ;
underscore             _
dash                   -
comma                  ,
pipe                   |
backslash              \
back tick              `
tilde                  ~
percent                %
carrot                 ^
ampersand              &
open paranthese        (
closed paranthese      )
open bracket           [
closed bracket         ]
open curly brace       {
closed curly brace     }
single quote           '
double quote           "
question mark          ?
less than              <
greater than           >
slash                  /
at                     @
pound                  #
cash                   $
exclamation point      !

hmm thats all the symbols on my keyboard.... anyone else want to add any before i submit for prompts

By: Leo Burd (leoburd) 2006-01-12 14:58:15.000-0600

How do you think SayAlpha (and related commands) should read common foreign combinations such as ç, ã, õ, ñ, à, á, é, í, ü, ö and the like?  Should it just read like the letter associated with the special symbol, i.e. 'ã' should be read as 'a' and, 'ç' should be read as 'c'?

By: Clod Patry (junky) 2006-01-15 13:52:32.000-0600

I think if its an 'é', or an 'à', these should be stream like:
(in french)
e accent aigu
a accent grave, etc.

But these char only exists in french, spanish (and other languages), so maybe we could put a lot of these chars in that function or simply switch ast_say_character_str_full() to ast_say_character_str_full_fr(), ast_say_character_str_full_en(), etc, to be consistent with other functions in say.c.

By: Clod Patry (junky) 2006-02-13 23:16:50.000-0600

mogorman: Any news here?
Did you get any record yet?

That issue will be really easy to fix, the moment we'll get the record.

By: Matt O'Gorman (mogorman) 2006-02-22 13:15:46.000-0600

i have the recordings i just need to splice them, please follow through with the rest of the code junk-y

By: Clod Patry (junky) 2006-05-05 18:57:16

mogorman: feel free to place the prompts in the trunk, i'll update this patch when  i'll have final prompt.

By: Serge Vecher (serge-v) 2006-06-07 15:59:49


By: Serge Vecher (serge-v) 2006-07-07 15:38:24


By: zedders (zedders) 2006-07-09 10:17:41

As an extra, if you are able to organise recordings, could you get # recorded as 'hash' too for us British folk? :-)

By: Serge Vecher (serge-v) 2006-09-01 14:10:21


By: jmls (jmls) 2006-10-31 12:48:24.000-0600

guys, we've been pinging this since June ...

By: jmls (jmls) 2007-01-07 03:05:57.000-0600

perhaps we should close this - no response since June '06 ...

By: Clod Patry (junky) 2007-02-18 00:40:48.000-0600

I vote for this one should not be closed, but process.
This is not hard, we just have to get the prompts (mogorman said he had it).
Can we just commit that ticket, which is opened for like 1.5 years.

By: Serge Vecher (serge-v) 2007-03-07 13:10:09.000-0600

Steve, since you've done an excellent job with the sounds and, I'm guessing, have access to mogorman's stuff, would you please take this abandoned issue under your wing?

By: Steve Murphy (murf) 2007-08-24 11:26:01

Thought I'd post my research on this issue; Kevin Fleming (who would OK digium spending on this) doesn't think there is demand enough for the following chars, to justify the expense. So, we need to narrow down the list to just what would be really be minimally necessary....


Here is what I've gathered together for translation so far:

We need to have the following words recorded, so that SayAlpha will be
able to handle all the characters in the ASCII set.

Already available:
We already have these chars available in the digits/ and letters/

char (ascii code) "phrase(dir)"

(20) "space(letters)"
!(21) "exclamation point(letters)"
#(23) "pound(digits)"
$(24) "dollar(letters)"
*(2A) "star(digits)"
+(2B) "plus(letters)"
-(2D) "minus(digits)" "dash(letters)"
.(2E) "dot(letters)"
/(2F) "slash(letters)"
=(3D) "equals(letters)"
@(40) "at(digits+letters)"

Since the above are already recorded in all 3 languages, we do not need
to repeat this work! I'm showing them here to calm the worries of anyone
who thinks we are missing something!

Need to add:


"(22) "double quote"
#(23) "hash"               (this one is optional for (es,fr), as
                           is already recorded in all 3 languages.)
%(25) "percent"
&(26) "ampersand"
'(27) "single quote"
((28) "left parenthesis"
)(29) "right parenthesis"
*(2A) "Asterisk"
,(2C) "comma"
:(3A) "colon"
;(3B) "semicolon"
<(3C) "less-than"
>(3E) "greater-than"
?(3F) "question mark"
[(5B) "left square brace"
\(5C) "back-slash"
](5D) "right square brace"
^(5E) "caret"
_(5F) "underscore"
`(60) "back-quote"
{(7B) "left curly brace"
|(7C) "pipe"
}(7D) "right curly brace"
~(7E) "tilde"
(7F) "DEL"
     "control"  (a prefix for var. chars to give "Control A" for
                 ascii (01), etc.)
     "capital"  (a prefix before a letter, to differentiate A from a.)
     "small"    (a prefix before a letter, to differentiate a from A.)

Also, for es, fr, if there are regionally popular names for any of these
character names, as, for example, "hash", and "pound", for US/GB, you
may wish to add these multiple translations, and we can offer the

Also, if we can develop a short list of prefixes/suffixes for the
popular 8859-1 characters used in (es,fr), (for example "umlaut", if the
language were German), we can pronounce these characters also in (es,
fr), beyond the ascii 1-127 set...

The following characters will allow the rest of the 8859-1 characters to
be pronounced in English; some variations may be necessary for Spanish
and French! To hold down the cost, perhaps we can eliminate the
characters that would not be used in French or Spanish!

     "inverted"  (as in: inverted exclamation point, inverted question
     "sign"      (as in: cent sign, not sign)
     "cent"      (as in: cent sign)
     "currency"  (as in: currency sign)
     "yen"        (as in: yen sign)
     "broken bar"  
     "section"    (as in section sign)
     "copyright"  (as in copyright sign)
     "feminine"    (as in feminine ordinal indicator)
     "masculine"   (as in masculine ordinal indicator)
     "ordinal indicator"
     "left double-angle"
     "right double-angle"
     "not"          (as in: not sign)
     "soft hyphen"
     "registered"   (as in: registered sign)
     "degree"        (as in: degree sign)
     "plus-minus"    (as in: plus-minus sign)
     "superscript"   (as in: superscript two, superscript three)
     "acute accent"
     "micro"         (as in: micro sign, or the greek letter mu)
     "pilcrow"       (as in: pilcrow sign)
     "middle"        (as in: middle dot)
     "with"          (as in: Capital A with grave)
     "grave"         (as in: Capital A with grave)
     "acute"         (as in: Capital A with acute)
     "circumflex"    (as in: Capital A with circumflex)
     "ring above"    (as in: Capital A with ring above)
     "Latin Letter AE"  (as in: Capital Latin Letter AE)
     "Latin Letter Eth" (as in: Capital Latin Letter Eth)
     "multiplication" (as in: multiplication sign)
     "division"       (as in: division sign)
     "stroke"         (as in: SMALL LETTER O WITH STROKE)
     "thorn"          (as in: Latin Letter Thorn)
     "sharp"          (as in: LATIN SMALL LETTER SHARP S)

  (for reference, I provide a table of the characters in 8859-1 below)

      Oct   Dec   Hex   Char   Description

      240   160   A0           NO-BREAK SPACE
      241   161   A1     ¡     INVERTED EXCLAMATION MARK
      242   162   A2     ¢     CENT SIGN
      243   163   A3     £     POUND SIGN
      244   164   A4     ¤     CURRENCY SIGN
      245   165   A5     ¥     YEN SIGN
      246   166   A6     ¦     BROKEN BAR
      247   167   A7     §     SECTION SIGN
      250   168   A8     ¨     DIAERESIS
      251   169   A9     ©     COPYRIGHT SIGN
      252   170   AA     ª     FEMININE ORDINAL INDICATOR
      254   172   AC     ¬     NOT SIGN
      255   173   AD     ­     SOFT HYPHEN
      256   174   AE     ®     REGISTERED SIGN
      257   175   AF     ¯     MACRON
      260   176   B0     °     DEGREE SIGN
      261   177   B1     ±     PLUS-MINUS SIGN
      262   178   B2     ²     SUPERSCRIPT TWO
      263   179   B3     ³     SUPERSCRIPT THREE
      264   180   B4     ´     ACUTE ACCENT
      265   181   B5     µ     MICRO SIGN
      266   182   B6     ¶     PILCROW SIGN
      267   183   B7     ·     MIDDLE DOT
      270   184   B8     ¸     CEDILLA
      271   185   B9     ¹     SUPERSCRIPT ONE
      272   186   BA     º     MASCULINE ORDINAL INDICATOR
      274   188   BC     ¼     VULGAR FRACTION ONE QUARTER
      275   189   BD     ½     VULGAR FRACTION ONE HALF
      276   190   BE     ¾     VULGAR FRACTION THREE QUARTERS
      277   191   BF     ¿     INVERTED QUESTION MARK
      300   192   C0     À     LATIN CAPITAL LETTER A WITH GRAVE
      301   193   C1     Á     LATIN CAPITAL LETTER A WITH ACUTE
      303   195   C3     Ã     LATIN CAPITAL LETTER A WITH TILDE
      304   196   C4     Ä     LATIN CAPITAL LETTER A WITH DIAERESIS
      305   197   C5     Å     LATIN CAPITAL LETTER A WITH RING ABOVE
      306   198   C6     Æ     LATIN CAPITAL LETTER AE
      307   199   C7     Ç     LATIN CAPITAL LETTER C WITH CEDILLA
      310   200   C8     È     LATIN CAPITAL LETTER E WITH GRAVE
      311   201   C9     É     LATIN CAPITAL LETTER E WITH ACUTE
      314   204   CC     Ì     LATIN CAPITAL LETTER I WITH GRAVE
      315   205   CD     Í     LATIN CAPITAL LETTER I WITH ACUTE
      320   208   D0     Ð     LATIN CAPITAL LETTER ETH
      321   209   D1     Ñ     LATIN CAPITAL LETTER N WITH TILDE
      322   210   D2     Ò     LATIN CAPITAL LETTER O WITH GRAVE
      323   211   D3     Ó     LATIN CAPITAL LETTER O WITH ACUTE
      325   213   D5     Õ     LATIN CAPITAL LETTER O WITH TILDE
      326   214   D6     Ö     LATIN CAPITAL LETTER O WITH DIAERESIS
      327   215   D7     ×     MULTIPLICATION SIGN
      330   216   D8     Ø     LATIN CAPITAL LETTER O WITH STROKE
      331   217   D9     Ù     LATIN CAPITAL LETTER U WITH GRAVE
      332   218   DA     Ú     LATIN CAPITAL LETTER U WITH ACUTE
      335   221   DD     Ý     LATIN CAPITAL LETTER Y WITH ACUTE
      336   222   DE     Þ     LATIN CAPITAL LETTER THORN
      337   223   DF     ß     LATIN SMALL LETTER SHARP S
      340   224   E0     à     LATIN SMALL LETTER A WITH GRAVE
      341   225   E1     á     LATIN SMALL LETTER A WITH ACUTE
      342   226   E2     â     LATIN SMALL LETTER A WITH CIRCUMFLEX
      343   227   E3     ã     LATIN SMALL LETTER A WITH TILDE
      344   228   E4     ä     LATIN SMALL LETTER A WITH DIAERESIS
      345   229   E5     å     LATIN SMALL LETTER A WITH RING ABOVE
      346   230   E6     æ     LATIN SMALL LETTER AE
      347   231   E7     ç     LATIN SMALL LETTER C WITH CEDILLA
      350   232   E8     è     LATIN SMALL LETTER E WITH GRAVE
      351   233   E9     é     LATIN SMALL LETTER E WITH ACUTE
      352   234   EA     ê     LATIN SMALL LETTER E WITH CIRCUMFLEX
      353   235   EB     ë     LATIN SMALL LETTER E WITH DIAERESIS
      354   236   EC     ì     LATIN SMALL LETTER I WITH GRAVE
      355   237   ED     í     LATIN SMALL LETTER I WITH ACUTE
      356   238   EE     î     LATIN SMALL LETTER I WITH CIRCUMFLEX
      357   239   EF     ï     LATIN SMALL LETTER I WITH DIAERESIS
      360   240   F0     ð     LATIN SMALL LETTER ETH
      361   241   F1     ñ     LATIN SMALL LETTER N WITH TILDE
      362   242   F2     ò     LATIN SMALL LETTER O WITH GRAVE
      363   243   F3     ó     LATIN SMALL LETTER O WITH ACUTE
      364   244   F4     ô     LATIN SMALL LETTER O WITH CIRCUMFLEX
      365   245   F5     õ     LATIN SMALL LETTER O WITH TILDE
      366   246   F6     ö     LATIN SMALL LETTER O WITH DIAERESIS
      367   247   F7     ÷     DIVISION SIGN
      370   248   F8     ø     LATIN SMALL LETTER O WITH STROKE
      371   249   F9     ù     LATIN SMALL LETTER U WITH GRAVE
      372   250   FA     ú     LATIN SMALL LETTER U WITH ACUTE
      373   251   FB     û     LATIN SMALL LETTER U WITH CIRCUMFLEX
      374   252   FC     ü     LATIN SMALL LETTER U WITH DIAERESIS
      375   253   FD     ý     LATIN SMALL LETTER Y WITH ACUTE
      376   254   FE     þ     LATIN SMALL LETTER THORN
      377   255   FF     ÿ     LATIN SMALL LETTER Y WITH DIAERESIS

In the above table, I plan to shorten "Latin Small Letter N with Tilde"
to "N with Tilde" in English, and supply a couple of options that would
yield "small N with Tilde" or "capital N with tilde", and so on.

If/when we move to unicode, we can/will use the same pronunciations,
just provide a new encoding to pronounce them...

By: Digium Subversion (svnbot) 2007-11-20 17:26:38.000-0600

Repository: asterisk
Revision: 89467

U   trunk/main/say.c

r89467 | tilghman | 2007-11-20 17:26:37 -0600 (Tue, 20 Nov 2007) | 3 lines

Add support for new recorded character sounds
Closes issue ASTERISK-5070