From 73b389da6c341ac8d033ce2c3d54efc2cad7310c Mon Sep 17 00:00:00 2001 From: Mark Spencer Date: Mon, 3 May 2004 00:54:16 +0000 Subject: [PATCH] Add SayPhonetic and SayAlpha applications (bug #793) git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2864 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- Makefile | 18 ++ apps/app_agi.c | 27 +++ asterisk.c | 1 - configs/logger.conf.sample | 5 + include/asterisk/say.h | 4 + pbx.c | 26 +++ say.c | 314 +++++++++++++++++++++++++- sounds.txt | 134 +++++++++++ sounds/letters/a.gsm | Bin 0 -> 825 bytes sounds/letters/at.gsm | Bin 0 -> 858 bytes sounds/letters/b.gsm | Bin 0 -> 990 bytes sounds/letters/c.gsm | Bin 0 -> 1023 bytes sounds/letters/d.gsm | Bin 0 -> 1122 bytes sounds/letters/dash.gsm | Bin 0 -> 1221 bytes sounds/letters/dollar.gsm | Bin 0 -> 1122 bytes sounds/letters/dot.gsm | Bin 0 -> 990 bytes sounds/letters/e.gsm | Bin 0 -> 990 bytes sounds/letters/equals.gsm | Bin 0 -> 1386 bytes sounds/letters/exclaimation-point.gsm | Bin 0 -> 2442 bytes sounds/letters/f.gsm | Bin 0 -> 957 bytes sounds/letters/g.gsm | Bin 0 -> 1155 bytes sounds/letters/h.gsm | Bin 0 -> 1122 bytes sounds/letters/i.gsm | Bin 0 -> 990 bytes sounds/letters/j.gsm | Bin 0 -> 1155 bytes sounds/letters/k.gsm | Bin 0 -> 1056 bytes sounds/letters/l.gsm | Bin 0 -> 924 bytes sounds/letters/m.gsm | Bin 0 -> 825 bytes sounds/letters/n.gsm | Bin 0 -> 792 bytes sounds/letters/o.gsm | Bin 0 -> 891 bytes sounds/letters/p.gsm | Bin 0 -> 891 bytes sounds/letters/plus.gsm | Bin 0 -> 957 bytes sounds/letters/q.gsm | Bin 0 -> 957 bytes sounds/letters/r.gsm | Bin 0 -> 924 bytes sounds/letters/s.gsm | Bin 0 -> 825 bytes sounds/letters/slash.gsm | Bin 0 -> 1353 bytes sounds/letters/space.gsm | Bin 0 -> 1320 bytes sounds/letters/t.gsm | Bin 0 -> 792 bytes sounds/letters/u.gsm | Bin 0 -> 1023 bytes sounds/letters/v.gsm | Bin 0 -> 1089 bytes sounds/letters/w.gsm | Bin 0 -> 1419 bytes sounds/letters/x.gsm | Bin 0 -> 924 bytes sounds/letters/y.gsm | Bin 0 -> 1155 bytes sounds/letters/z.gsm | Bin 0 -> 1023 bytes sounds/letters/zed.gsm | Bin 0 -> 1056 bytes sounds/phonetic/9_p.gsm | Bin 0 -> 1155 bytes sounds/phonetic/a_p.gsm | Bin 0 -> 1089 bytes sounds/phonetic/b_p.gsm | Bin 0 -> 1188 bytes sounds/phonetic/c_p.gsm | Bin 0 -> 1089 bytes sounds/phonetic/d_p.gsm | Bin 0 -> 1254 bytes sounds/phonetic/e_p.gsm | Bin 0 -> 1056 bytes sounds/phonetic/f_p.gsm | Bin 0 -> 1320 bytes sounds/phonetic/g_p.gsm | Bin 0 -> 990 bytes sounds/phonetic/h_p.gsm | Bin 0 -> 1287 bytes sounds/phonetic/i_p.gsm | Bin 0 -> 1089 bytes sounds/phonetic/j_p.gsm | Bin 0 -> 1353 bytes sounds/phonetic/k_p.gsm | Bin 0 -> 1056 bytes sounds/phonetic/l_p.gsm | Bin 0 -> 1122 bytes sounds/phonetic/m_p.gsm | Bin 0 -> 858 bytes sounds/phonetic/n_p.gsm | Bin 0 -> 1254 bytes sounds/phonetic/o_p.gsm | 2 + sounds/phonetic/p_p.gsm | Bin 0 -> 924 bytes sounds/phonetic/q_p.gsm | Bin 0 -> 1122 bytes sounds/phonetic/r_p.gsm | Bin 0 -> 1188 bytes sounds/phonetic/s_p.gsm | Bin 0 -> 1221 bytes sounds/phonetic/t_p.gsm | Bin 0 -> 1155 bytes sounds/phonetic/u_p.gsm | Bin 0 -> 1452 bytes sounds/phonetic/v_p.gsm | Bin 0 -> 1122 bytes sounds/phonetic/w_p.gsm | Bin 0 -> 1089 bytes sounds/phonetic/x_p.gsm | Bin 0 -> 1089 bytes sounds/phonetic/y_p.gsm | Bin 0 -> 1188 bytes sounds/phonetic/z_p.gsm | Bin 0 -> 1188 bytes 71 files changed, 527 insertions(+), 4 deletions(-) create mode 100755 sounds/letters/a.gsm create mode 100755 sounds/letters/at.gsm create mode 100755 sounds/letters/b.gsm create mode 100755 sounds/letters/c.gsm create mode 100755 sounds/letters/d.gsm create mode 100755 sounds/letters/dash.gsm create mode 100755 sounds/letters/dollar.gsm create mode 100755 sounds/letters/dot.gsm create mode 100755 sounds/letters/e.gsm create mode 100755 sounds/letters/equals.gsm create mode 100755 sounds/letters/exclaimation-point.gsm create mode 100755 sounds/letters/f.gsm create mode 100755 sounds/letters/g.gsm create mode 100755 sounds/letters/h.gsm create mode 100755 sounds/letters/i.gsm create mode 100755 sounds/letters/j.gsm create mode 100755 sounds/letters/k.gsm create mode 100755 sounds/letters/l.gsm create mode 100755 sounds/letters/m.gsm create mode 100755 sounds/letters/n.gsm create mode 100755 sounds/letters/o.gsm create mode 100755 sounds/letters/p.gsm create mode 100755 sounds/letters/plus.gsm create mode 100755 sounds/letters/q.gsm create mode 100755 sounds/letters/r.gsm create mode 100755 sounds/letters/s.gsm create mode 100755 sounds/letters/slash.gsm create mode 100755 sounds/letters/space.gsm create mode 100755 sounds/letters/t.gsm create mode 100755 sounds/letters/u.gsm create mode 100755 sounds/letters/v.gsm create mode 100755 sounds/letters/w.gsm create mode 100755 sounds/letters/x.gsm create mode 100755 sounds/letters/y.gsm create mode 100755 sounds/letters/z.gsm create mode 100755 sounds/letters/zed.gsm create mode 100755 sounds/phonetic/9_p.gsm create mode 100755 sounds/phonetic/a_p.gsm create mode 100755 sounds/phonetic/b_p.gsm create mode 100755 sounds/phonetic/c_p.gsm create mode 100755 sounds/phonetic/d_p.gsm create mode 100755 sounds/phonetic/e_p.gsm create mode 100755 sounds/phonetic/f_p.gsm create mode 100755 sounds/phonetic/g_p.gsm create mode 100755 sounds/phonetic/h_p.gsm create mode 100755 sounds/phonetic/i_p.gsm create mode 100755 sounds/phonetic/j_p.gsm create mode 100755 sounds/phonetic/k_p.gsm create mode 100755 sounds/phonetic/l_p.gsm create mode 100755 sounds/phonetic/m_p.gsm create mode 100755 sounds/phonetic/n_p.gsm create mode 100755 sounds/phonetic/o_p.gsm create mode 100755 sounds/phonetic/p_p.gsm create mode 100755 sounds/phonetic/q_p.gsm create mode 100755 sounds/phonetic/r_p.gsm create mode 100755 sounds/phonetic/s_p.gsm create mode 100755 sounds/phonetic/t_p.gsm create mode 100755 sounds/phonetic/u_p.gsm create mode 100755 sounds/phonetic/v_p.gsm create mode 100755 sounds/phonetic/w_p.gsm create mode 100755 sounds/phonetic/x_p.gsm create mode 100755 sounds/phonetic/y_p.gsm create mode 100755 sounds/phonetic/z_p.gsm diff --git a/Makefile b/Makefile index d5003c27eb..ba3c1c3556 100755 --- a/Makefile +++ b/Makefile @@ -273,6 +273,24 @@ datafiles: all exit 1; \ fi; \ done + mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters + for x in sounds/letters/*.gsm; do \ + if grep -q "^%`basename $$x`%" sounds.txt; then \ + install -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/letters ; \ + else \ + echo "No description for $$x"; \ + exit 1; \ + fi; \ + done + mkdir -p $(DESTDIR)$(ASTVARLIBDIR)/sounds/phonetic + for x in sounds/phonetic/*.gsm; do \ + if grep -q "^%`basename $$x`%" sounds.txt; then \ + install -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds/phonetic ; \ + else \ + echo "No description for $$x"; \ + exit 1; \ + fi; \ + done for x in sounds/vm-* sounds/transfer* sounds/pbx-* sounds/ss-* sounds/beep* sounds/dir-* sounds/conf-* sounds/agent-* sounds/invalid* sounds/tt-* sounds/auth-* sounds/privacy-* sounds/queue-*; do \ if grep -q "^%`basename $$x`%" sounds.txt; then \ install -m 644 $$x $(DESTDIR)$(ASTVARLIBDIR)/sounds ; \ diff --git a/apps/app_agi.c b/apps/app_agi.c index 98021fecfe..14fa27e49f 100755 --- a/apps/app_agi.c +++ b/apps/app_agi.c @@ -385,10 +385,12 @@ static int handle_saydigits(struct ast_channel *chan, AGI *agi, int argc, char * { int res; int num; + if (argc != 4) return RESULT_SHOWUSAGE; if (sscanf(argv[2], "%i", &num) != 1) return RESULT_SHOWUSAGE; + res = ast_say_digit_str_full(chan, argv[2], argv[3], chan->language, agi->audio, agi->ctrl); if (res == 1) /* New command */ return RESULT_SUCCESS; @@ -417,6 +419,23 @@ static int handle_saytime(struct ast_channel *chan, AGI *agi, int argc, char *ar return RESULT_FAILURE; } +static int handle_sayphonetic(struct ast_channel *chan, AGI *agi, int argc, char *argv[]) +{ + int res; + + if (argc != 4) + return RESULT_SHOWUSAGE; + + res = ast_say_phonetic_str_full(chan, argv[2], argv[3], chan->language, agi->audio, agi->ctrl); + if (res == 1) /* New command */ + return RESULT_SUCCESS; + fdprintf(agi->fd, "200 result=%d\n", res); + if (res >= 0) + return RESULT_SUCCESS; + else + return RESULT_FAILURE; +} + static int handle_getdata(struct ast_channel *chan, AGI *agi, int argc, char *argv[]) { int res; @@ -1031,6 +1050,13 @@ static char usage_saytime[] = " completes without a digit being pressed, or the ASCII numerical value of the\n" " digit if one was pressed or -1 on error/hangup.\n"; +static char usage_sayphonetic[] = +" Usage: SAY PHONETIC \n" +" Say a given character string with phonetics, returning early if any of the given DTMF digits\n" +" are received on the channel. Returns 0 if playback completes without a digit\n" +" being pressed, or the ASCII numerical value of the digit if one was pressed or\n" +" -1 on error/hangup.\n"; + static char usage_getdata[] = " Usage: GET DATA [timeout] [max digits]\n" " Stream the given file, and recieve DTMF data. Returns the digits recieved\n" @@ -1080,6 +1106,7 @@ static agi_command commands[] = { { { "send", "image", NULL }, handle_sendimage, "Sends images to channels supporting it", usage_sendimage }, { { "say", "digits", NULL }, handle_saydigits, "Says a given digit string", usage_saydigits }, { { "say", "number", NULL }, handle_saynumber, "Says a given number", usage_saynumber }, + { { "say", "phonetic", NULL }, handle_sayphonetic, "Says a given character string with phonetics", usage_sayphonetic }, { { "say", "time", NULL }, handle_saytime, "Says a given time", usage_saytime }, { { "get", "data", NULL }, handle_getdata, "Gets data on a channel", usage_getdata }, { { "set", "context", NULL }, handle_setcontext, "Sets channel context", usage_setcontext }, diff --git a/asterisk.c b/asterisk.c index f7abea0700..d1b0dad3cc 100755 --- a/asterisk.c +++ b/asterisk.c @@ -896,7 +896,6 @@ static char *cli_prompt(EditLine *el) int i; struct timeval tv; struct tm tm; - time_t curtime; FILE *LOADAVG; int fgcolor = COLOR_WHITE, bgcolor = COLOR_BLACK; diff --git a/configs/logger.conf.sample b/configs/logger.conf.sample index dd3a5bd9e3..66f0613ac4 100755 --- a/configs/logger.conf.sample +++ b/configs/logger.conf.sample @@ -29,6 +29,11 @@ console => notice,warning,error ;console => notice,warning,error,debug messages => notice,warning,error ;full => notice,warning,error,debug,verbose +; +; Uncomment the following line (with *no* events) if you want the +; queue log to automatically rotate. +; +;queue_log => ;syslog keyword : This special keyword logs to syslog facility ; diff --git a/include/asterisk/say.h b/include/asterisk/say.h index 019d7cc76a..cc691bd5eb 100755 --- a/include/asterisk/say.h +++ b/include/asterisk/say.h @@ -61,6 +61,10 @@ int ast_say_digits_full(struct ast_channel *chan, int num, char *ints, char *lan */ int ast_say_digit_str(struct ast_channel *chan, char *num, char *ints, char *lang); int ast_say_digit_str_full(struct ast_channel *chan, char *num, char *ints, char *lang, int audiofd, int ctrlfd); +int ast_say_character_str(struct ast_channel *chan, char *num, char *ints, char *lang); +int ast_say_character_str_full(struct ast_channel *chan, char *num, char *ints, char *lang, int audiofd, int ctrlfd); +int ast_say_phonetic_str(struct ast_channel *chan, char *num, char *ints, char *lang); +int ast_say_phonetic_str_full(struct ast_channel *chan, char *num, char *ints, char *lang, int audiofd, int ctrlfd); int ast_say_datetime(struct ast_channel *chan, time_t t, char *ints, char *lang); diff --git a/pbx.c b/pbx.c index 85e5e0103f..4a5fd82d6b 100755 --- a/pbx.c +++ b/pbx.c @@ -169,6 +169,8 @@ static int pbx_builtin_gotoif(struct ast_channel *, void *); static int pbx_builtin_gotoiftime(struct ast_channel *, void *); static int pbx_builtin_saynumber(struct ast_channel *, void *); static int pbx_builtin_saydigits(struct ast_channel *, void *); +static int pbx_builtin_saycharacters(struct ast_channel *, void *); +static int pbx_builtin_sayphonetic(struct ast_channel *, void *); int pbx_builtin_setvar(struct ast_channel *, void *); void pbx_builtin_setvar_helper(struct ast_channel *chan, char *name, char *value); char *pbx_builtin_getvar_helper(struct ast_channel *chan, char *name); @@ -293,6 +295,14 @@ static struct pbx_builtin { "Say Digits", " SayDigits(digits): Says the passed digits\n" }, + { "SayAlpha", pbx_builtin_saycharacters, +"Say Alpha", +" SayAlpha(string): Spells the passed string\n" }, + + { "SayPhonetic", pbx_builtin_sayphonetic, +"Say Phonetic", +" SayPhonetic(string): Spells the passed string with phonetic alphabet\n" }, + { "SetAccount", pbx_builtin_setaccount, "Sets account code", " SetAccount([account]): Set the channel account code for billing\n" @@ -4601,6 +4611,22 @@ static int pbx_builtin_saydigits(struct ast_channel *chan, void *data) return res; } +static int pbx_builtin_saycharacters(struct ast_channel *chan, void *data) +{ + int res = 0; + if (data) + res = ast_say_character_str(chan, (char *)data, "", chan->language); + return res; +} + +static int pbx_builtin_sayphonetic(struct ast_channel *chan, void *data) +{ + int res = 0; + if (data) + res = ast_say_phonetic_str(chan, (char *)data, "", chan->language); + return res; +} + int load_pbx(void) { int x; diff --git a/say.c b/say.c index 0107346278..5a318e8c01 100755 --- a/say.c +++ b/say.c @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -45,15 +46,187 @@ int ast_say_digit_str(struct ast_channel *chan, char *fn2, char *ints, char *lan snprintf(fn, sizeof(fn), "digits/pound"); break; default: - if((fn2[num] >= '0') && (fn2[num] <= '9')){ /* Must be in {0-9} */ + if((fn2[num] >= '0') && (fn2[num] <= '9')){ /* Must be in {0-9} */ snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); } - } + } + if(strlen(fn)){ /* if length == 0, then skip this digit as it is invalid */ + res = ast_streamfile(chan, fn, lang); + if (!res) + res = ast_waitstream(chan, ints); + ast_stopstream(chan); + } + num++; + } + return res; +} + +int ast_say_character_str(struct ast_channel *chan, char *fn2, char *ints, char *lang) +{ + /* XXX Merge with full version? XXX */ + char fn[256] = ""; + char ltr; + int num = 0; + int res = 0; + while(fn2[num] && !res) { + fn[0] = '\0'; + switch (fn2[num]) { + case ('*'): + snprintf(fn, sizeof(fn), "digits/star"); + break; + case ('#'): + snprintf(fn, sizeof(fn), "digits/pound"); + break; + case ('0'): + case ('1'): + case ('2'): + case ('3'): + case ('4'): + case ('5'): + case ('6'): + case ('7'): + case ('8'): + case ('9'): + snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + break; + case ('!'): + strncpy(fn, "letters/exclaimation-point", sizeof(fn)); + break; + case ('@'): + strncpy(fn, "letters/at", sizeof(fn)); + break; + case ('$'): + strncpy(fn, "letters/dollar", sizeof(fn)); + break; + case ('-'): + strncpy(fn, "letters/dash", sizeof(fn)); + break; + case ('.'): + strncpy(fn, "letters/dot", sizeof(fn)); + break; + case ('='): + strncpy(fn, "letters/equals", sizeof(fn)); + break; + case ('+'): + strncpy(fn, "letters/plus", sizeof(fn)); + break; + case ('/'): + strncpy(fn, "letters/slash", sizeof(fn)); + break; + case (' '): + strncpy(fn, "letters/space", sizeof(fn)); + break; + default: + ltr = fn2[num]; + if ('A' <= ltr && ltr <= 'Z') ltr += 'a' - 'A'; /* file names are all lower-case */ + snprintf(fn, sizeof(fn), "letters/%c", ltr); + } if(strlen(fn)){ /* if length == 0, then skip this digit as it is invalid */ res = ast_streamfile(chan, fn, lang); if (!res) res = ast_waitstream(chan, ints); - ast_stopstream(chan); + } ast_stopstream(chan); + num++; + } + return res; +} + +int ast_say_phonetic_str(struct ast_channel *chan, char *fn2, char *ints, char *lang) +{ + /* XXX Merge with full version? XXX */ + char fn[256] = ""; + char ltr; + int num = 0; + int res = 0; + int temp; + int play; + char hex[3]; +/* while(fn2[num] && !res) { */ + while(fn2[num]) { + play=1; + switch (fn2[num]) { + case ('*'): + snprintf(fn, sizeof(fn), "digits/star"); + break; + case ('#'): + snprintf(fn, sizeof(fn), "digits/pound"); + break; + case ('0'): + case ('1'): + case ('2'): + case ('3'): + case ('4'): + case ('5'): + case ('6'): + case ('7'): + case ('8'): + snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + break; + case ('!'): + strncpy(fn, "exclaimation-point", sizeof(fn)); + break; + case ('@'): + strncpy(fn, "at", sizeof(fn)); + break; + case ('$'): + strncpy(fn, "dollar", sizeof(fn)); + break; + case ('-'): + strncpy(fn, "dash", sizeof(fn)); + break; + case ('.'): + strncpy(fn, "dot", sizeof(fn)); + break; + case ('='): + strncpy(fn, "equals", sizeof(fn)); + break; + case ('+'): + strncpy(fn, "plus", sizeof(fn)); + break; + case ('/'): + strncpy(fn, "slash", sizeof(fn)); + break; + case (' '): + strncpy(fn, "space", sizeof(fn)); + break; + case ('%'): + play=0; + /* check if we have 2 chars after the % */ + if (strlen(fn2)>num+2) + { + hex[0]=fn2[num+1]; + hex[1]=fn2[num+2]; + hex[2]='\0'; + if (sscanf(hex,"%x", &temp)) + { /* Hex to char convertion successfull */ + fn2[num+2]=temp; + num++; + if (temp==37) + { /* If it is a percent, play it now */ + strncpy(fn, "percent", sizeof(fn)); + num++; + play=1; + } + /* check for invalid characters */ + if ((temp<32) || (temp>126)) + { + num++; + } + } + } + else + num++; + break; + default: /* '9' falls through to here, too */ + ltr = tolower(fn2[num]); + snprintf(fn, sizeof(fn), "phonetic/%c_p", ltr); + } + if (play) + { + res = ast_streamfile(chan, fn, lang); + if (!res) + res = ast_waitstream(chan, ints); + ast_stopstream(chan); } num++; } @@ -76,6 +249,141 @@ int ast_say_digit_str_full(struct ast_channel *chan, char *fn2, char *ints, char return res; } +int ast_say_character_str_full(struct ast_channel *chan, char *fn2, char *ints, char *lang, int audiofd, int ctrlfd) +{ + char fn[256] = ""; + char ltr; + int num = 0; + int res = 0; + while(fn2[num] && !res) { + switch (fn2[num]) { + case ('*'): + snprintf(fn, sizeof(fn), "digits/star"); + break; + case ('#'): + snprintf(fn, sizeof(fn), "digits/pound"); + break; + case ('0'): + case ('1'): + case ('2'): + case ('3'): + case ('4'): + case ('5'): + case ('6'): + case ('7'): + case ('8'): + case ('9'): + snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + break; + case ('!'): + strncpy(fn, "exclaimation-point", sizeof(fn)); + break; + case ('@'): + strncpy(fn, "at", sizeof(fn)); + break; + case ('$'): + strncpy(fn, "dollar", sizeof(fn)); + break; + case ('-'): + strncpy(fn, "dash", sizeof(fn)); + break; + case ('.'): + strncpy(fn, "dot", sizeof(fn)); + break; + case ('='): + strncpy(fn, "equals", sizeof(fn)); + break; + case ('+'): + strncpy(fn, "plus", sizeof(fn)); + break; + case ('/'): + strncpy(fn, "slash", sizeof(fn)); + break; + case (' '): + strncpy(fn, "space", sizeof(fn)); + break; + default: + ltr = fn2[num]; + if ('A' <= ltr && ltr <= 'Z') ltr += 'a' - 'A'; /* file names are all lower-case */ + snprintf(fn, sizeof(fn), "letters/%c", ltr); + } + /* snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); */ + res = ast_streamfile(chan, fn, lang); + if (!res) + res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); + ast_stopstream(chan); + num++; + } + return res; +} + +int ast_say_phonetic_str_full(struct ast_channel *chan, char *fn2, char *ints, char *lang, int audiofd, int ctrlfd) +{ + char fn[256] = ""; + char ltr; + int num = 0; + int res = 0; + while(fn2[num] && !res) { + switch (fn2[num]) { + case ('*'): + snprintf(fn, sizeof(fn), "digits/star"); + break; + case ('#'): + snprintf(fn, sizeof(fn), "digits/pound"); + break; + case ('0'): + case ('1'): + case ('2'): + case ('3'): + case ('4'): + case ('5'): + case ('6'): + case ('7'): + case ('8'): + snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); + break; + case ('!'): + strncpy(fn, "exclaimation-point", sizeof(fn)); + break; + case ('@'): + strncpy(fn, "at", sizeof(fn)); + break; + case ('$'): + strncpy(fn, "dollar", sizeof(fn)); + break; + case ('-'): + strncpy(fn, "dash", sizeof(fn)); + break; + case ('.'): + strncpy(fn, "dot", sizeof(fn)); + break; + case ('='): + strncpy(fn, "equals", sizeof(fn)); + break; + case ('+'): + strncpy(fn, "plus", sizeof(fn)); + break; + case ('/'): + strncpy(fn, "slash", sizeof(fn)); + break; + case (' '): + strncpy(fn, "space", sizeof(fn)); + break; + default: /* '9' falls here... */ + ltr = fn2[num]; + if ('A' <= ltr && ltr <= 'Z') ltr += 'a' - 'A'; /* file names are all lower-case */ + snprintf(fn, sizeof(fn), "phonetic/%c", ltr); + } + /* snprintf(fn, sizeof(fn), "digits/%c", fn2[num]); */ + res = ast_streamfile(chan, fn, lang); + if (!res) + res = ast_waitstream_full(chan, ints, audiofd, ctrlfd); + ast_stopstream(chan); + num++; + } + return res; +} + int ast_say_digits(struct ast_channel *chan, int num, char *ints, char *lang) { /* XXX Should I be merged with say_digits_full XXX */ diff --git a/sounds.txt b/sounds.txt index cd7b0f7bcf..419497c71a 100755 --- a/sounds.txt +++ b/sounds.txt @@ -478,3 +478,137 @@ %vm-reachoper.gsm%press 0 to reach an operator %vm-tooshort.gsm%your message is too short + +%9_p.gsm%niner + +%a.gsm%a + +%b.gsm%b + +%c.gsm%c + +%d.gsm%d + +%e.gsm%e + +%f.gsm%f + +%g.gsm%g + +%h.gsm%h + +%i.gsm%i + +%j.gsm%j + +%k.gsm%k + +%l.gsm%l + +%m.gsm%m + +%n.gsm%n + +%o.gsm%o + +%p.gsm%p + +%q.gsm%q + +%r.gsm%r + +%s.gsm%s + +%t.gsm%t + +%u.gsm%u + +%v.gsm%v + +%w.gsm%w + +%x.gsm%x + +%y.gsm%y + +%z.gsm%z + +%zed.gsm%zed + +%a_p.gsm%alpha + +%b_p.gsm%bravo + +%c_p.gsm%charlie + +%d_p.gsm%delta + +%e_p.gsm%echo + +%f_p.gsm%foxtrot + +%g_p.gsm%golf + +%h_p.gsm%hotel + +%i_p.gsm%india + +%j_p.gsm%juliet + +%k_p.gsm%kilo + +%l_p.gsm%lima + +%m_p.gsm%mike + +%n_p.gsm%november + +%o_p.gsm%oscar + +%p_p.gsm%papa + +%q_p.gsm%quebec + +%r_p.gsm%romeo + +%s_p.gsm%sierra + +%t_p.gsm%tango + +%u_p.gsm%uniform + +%v_p.gsm%victor + +%w_p.gsm%wiskey + +%x_p.gsm%xray + +%y_p.gsm%yankee + +%z_p.gsm%zulu + +%niner.gsm%niner + +; Misc + +%percent.gsm%percent [%] + +%plus.gsm%plus [+] + +%exclaimation-point.gsm%exclaimation-point [!] + +%at.gsm%at [@] + +%dollar.gsm%dollar [$] + +%dash.gsm%dash [-] + +%dot.gsm%dot [.] + +%slash.gsm%slash [/] + +%space.gsm%space [ ] + +%plus.gsm%plus [+] + +%equals.gsm%equals [=] diff --git a/sounds/letters/a.gsm b/sounds/letters/a.gsm new file mode 100755 index 0000000000000000000000000000000000000000..88171a2d8fd2fe32f45956d352e3f6181e1b6b95 GIT binary patch literal 825 zcmV-91IGN>Wjrq%P*2GuleipJ^2sYfxw3uJM#;)Xy@OOnDs{}-)*w}~6o8J3cWcy) z!pvT$K}P1pjV~cir`N+RM8!)>EY_bz>CA)74AQZqJCwZF*55s%4bdr!jIY$ii)u4%(NSX2Xx(jWSkH}WOA-~eUDlsH zY0i!1z|)yPSh;>e

e!=>mlxL`H7bmc3ku_zwoQ>rUUp4|n%PQa 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 literal 0 HcmV?d00001 diff --git a/sounds/letters/d.gsm b/sounds/letters/d.gsm new file mode 100755 index 0000000000000000000000000000000000000000..9d26a00ee5ee507eb3653b4aaad41129e53a9569 GIT binary patch literal 1122 zcmV-o1fBcV-g6M4P#`%QZMPe0pg9|HxZ7wTINY(x9JGK*9g#O9(J7;FQv?RvKx!n!JI#YiY>DVxe@^wU*mtfj4wc z%GuDW%dP6jpthsCB_+!Mwxg1_JI;WqY-Ot(YM|btvM8I-=gX<$(7?9j(ir2^fWnhe zxwLGcTO>%t)7XG*AW39#G}7Xr7p!i^+u5>e z<_Lqtw%SQKzh0yNVkDBBgX+m-jvg6vu1Q+P)jZhc5nI({u2jM*Tcl9xH4*Rf&7{o4 zncL>g-7R*ImvoiaUJI|(n=JBDb7Ph0i_$}T)gI`pBm|or^yx~bB(=9)*BTTv%$q$Ahe1h&-UNm^^UAl{j#XVo=UteM1aV8nH6^nnFbAHAvds@ zW=A2FXdvYS`!G!Rn&k%BBOYr6*BJ&k3Y$dC5YObC>4&!L?lD{IM>J1fChVOh#6_Dl z^w${esgi5u1!FS-I#XSN`hO&L`r(!@S< zm8m2~SsG5#R7+0 zl33Gc0p+jJU3$~kfAS5X@XL+k%e<7xsRGO=n!M1PKB#PD*F7iu%VYW=$!jy!e z%VKG$8?K^zr3wSO<1Xu%RC;ji!u(fv}FYHEe`|WgCtLQm(;$rdn4l z)>bBR%j%)&0x3x|ZlNiCjmdL}fRaMdTJL`qfSXA*uXmMkvQaPz)2i-NhHR=xg?Ru>eiq` z+67^3&idP_Msks?4+t=;lUL`KwLW;cV6P+eS>G#ZyJYdxr;T+ND^cync8pKZv>N6i%NEIiy0?J}Qj)o7}_RMhCT4Mpz^Ds&PnbD)h_+XFeA?5)=v2Q4h? zY*z3Yy4=*Tw22d&FIN;2y4+E1HrUQeZ2*wgH`tA)o6r~i&IJ1*%sWZrwJH~t}7a2 zVbv?NO^dB)_he~|v{}f=af&m|v1!GXawH$ID32F!zLnJOyp0N2ii>Yf$s)ICldh23 zIlE~FN4=`*VQ5sE2isNEES!-M!sz8vRkj(`ZH!hz>jajR z)b{*%r0Ah2wHJ8eV2LMKx`l_U(OQ zbdeb5>DDHDj>34POD$Iz#CLTh~*-7q}cnmHq+NBX~#n9gf`@Ezbj!P z7Njk@6Y8U{B!tqVa>8mIk@scTsCxoY@gg$>YPW;%gGKAfxZQ?RFPfB&eb1A$#hjI;OX~Q{PEw+Iu7&+VQ2HTW0Dc6JeB_Y=}zejcaV&1Xl06 z&TZ%h`y_H{Q`+>cmK)C_s{zT(HOEIp{He(sgy%`*p zl!{j?+5i%Sk2eyUAQsbZhQ!ubGKyhRAST<9%G{zLIP11bfC&cHbvZbsbK jVq#dR>cBSRZZ_n$AUNA?w%bquHrs8s+g1QJ+ikYn2ZDb} literal 0 HcmV?d00001 diff --git a/sounds/letters/dollar.gsm b/sounds/letters/dollar.gsm new file mode 100755 index 0000000000000000000000000000000000000000..1d515d16683a664d3babf69d024fdd1c639dffcb GIT binary patch literal 1122 zcmV-o1fBcP?8BvEPyjTEPVKEyz&6jeJ9=NhrrSDKBx9hrB5emN(5ut!;>Up3oOGts zWdPjDvNoe-V8iWhy3u7|xRR5$?a-^tG2&$)xTB53bn3v(Bqg+w%V6B2mNy$`AVmee zn)J|gtgZ>pfJmE7XH(FiLfdjlRM4PAol3;)*nl}C&ATMnrA!gU>*2J}1ew24rCVf? z#^`yAs-%u(gIY;B3ZH6>)f;Ue+f@rRk+N?!Sq&zF^3yF-?1dg}H}g|Wm@L9e>eXL! z+gzou8I>8w98*jrfU((prBJxoeK{;sF~=h}3!K#EtCI;+ZMunBbd{pc%F+w!(xnaA zV@dboQ%y$UX!YXMu#%dIr7phBvWiD97&B|)V6Y>5Tytx z>S>YYqe*96jg0j1OL1bAn(^-pbnA_?E7bOLWyqgQDqRB! zMb?BpRcz-*)Q37bYv)C>AFrPb)b&Jdft!c6`jE(;=SQL5ipL_E#de%oNTcOP3o~-Y z%hYsQt&!(Qdn;Nhi07oHm3VU+n+WBbmBi4UCEXOd8bQ;pf+3mhC?3?VD24AOp3jw> z38N@Xo6)wARR{T5(Z-O{u5w}ORV7v9dCJ|Wq`Yg7$rh}li7Li^6U%B0>Xlnez{kh!KFng zno2BPXeydx$l}v%GwzXKsA(f*h3mM-#jBC16TqbPUD0&QzR0uNt=DVQC}SqkWrQ4r zy<9qGs63isTVrUbWn9TNN6e;tY*|js)FW%3OK8cp4{p08)~Mv-f-4+vXvZ6n)FtG` z%%bgXmDZa@4;pZ%6o>1nmDecAV68VX-lj^c^(O@11dmdtm6<%WoQcID+r zRVz*hMdXBTxtZBzhNmXbzq~cqBs~&?uEtE94G0B#qTS1`Ov~)Vm4fnQuIhsenTW8S z*61WsgR&%f7Lrzy?qsHKdOIHG+!my%n`{I70J2Q|n*?@xeJDNEq*DL~&qJF}NjcrKse8J|cv??5s!7lC7 zsU~{iREkN_4z^c`5sZ7@DBT1U(003d` z+O~keXDdRZ9AKbXD~?$)h~Q_Ut-9maCpui<(J8y_*;k+|mhMovf)7y`Y(yP9-g00HoFJ ztC7&I%q}9oK**A}7V}>q(6V>Xt;?(qWVuPhEp_J-K9DUs(ub$bI(ZSt!>NDz4+yv4R?iSxCCuOm{0= zX!jds7pJ(ZLu8SpPqitZ434 zQP&2MrOrtsZ)1#8HuXZ)a%!T1-GXr24>U!5=C zz?7w(3$3z<>=jVceiWR;%d^7tYF5o z62+R>0617}R$S^JWMeKSpXeY;qi-eK)}nlwN#0;tWNFmW?!ZS2RZJ|-;0>g)%VmJT zL%nUt8r2(Xn3%GFLQ_gaqpn~j6tTNowjfDst?1iQz*?hn#~j!yebvN}pjjQ3-6dZj zUAFb9WKcl1+es9Gz2~;uZN5|3sGe2JP^h(ERoq)xq`C*p1vGG^ll6*P-P}WYvc5|s z*)p4slTiX_(>dtJz~VY;7%%~8Lj=ieLS%5G2{ukVmDsPL(;Z-ejN`TR`oe;DJHy8t zcA?mgpFy|0qEhFwMReEhY2wlB0VfP>w*q{@w@YcJo9H11<4H)>&Oobej{23=q-$mo zTp;Tl)+bxGphv8A>l?x#Sr)EWBk%w^+-bJk)+IpMq1FI4n~gae>_9l|k;x=b07)Zq MNhDAJNhFdOC)kRBUZpj+;O=a+2aJR9K9f0B$8Pr zRX|4MZMNc-=D6H)PZ(p5qNcJ~(AXRW?psie7rT-+6O7ATqP8Ivl*#2CgoyXv$*Al^ zMSj+q4l-1kMs=7Dzl-BW3tFmNis1(-WTLmro1@msF+3hTpaZZvV6QDq@w?X0q$17;T+QtazQBrvuJ_w4cH> z(rQE>62H(EMgH#a#y7K+h!``t%WU|P(v$O z1g$J(2<_9EZ{8DIf_aotS8lcB2;+^*FSR1y8+vBZU4nL`YBt=`o1fjwyFvk_m0a4p zA|$5rw&cHJKtg*?ieX`1sYJ7w(%O&Rlfyyf)^Wzs#UcB)ib-L|LL_wdmg~!6v{Qar z6VsS)<&(=oIbDf}GHW7OBeJB-)d6! zku>b8z~v-n^;6Z>E;@>dVMilQX%vM)J05i;tcHOl4Yk81j==RBjxiI~7%g_x+MzG3 zl3k=&fi{vzCZ>+S*tOHA9FG9I3uemH*qQ|@lZ3$9^Ncj%w!tK)w#RCcqDLeaNQ6=# z?ajYO<<%8Ma*K*UqSFZ3tkhuHWmV?gj)0chR$SDQz|7jQw4>Hm9jeNaAhg|$xuTCi zF7r{;q?sVgqOr!;j-Un1OgwMdUjy$OR-mmO*GS`hpr%_%>1Byv{M=2HKHyfG&IU24>6PBPj+CWDmvR2*HSV~x% zT3|+`ZOGGv05;rh$0OjNINYvDBwPSVBXPML))#@L8Qvf`+m1BjUI04eZMNH<05;og Mw%fu0Hr$cPB)YipssI20 literal 0 HcmV?d00001 diff --git a/sounds/letters/equals.gsm b/sounds/letters/equals.gsm new file mode 100755 index 0000000000000000000000000000000000000000..4822469cef1eb3e6c2b41ec8096c631f5c378bd8 GIT binary patch literal 1386 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 INaT`9B<_UvoB#j- literal 0 HcmV?d00001 diff --git a/sounds/letters/f.gsm b/sounds/letters/f.gsm new file mode 100755 index 0000000000000000000000000000000000000000..27fba45077d895b9998e119dc85dde760f05c22d GIT binary patch literal 957 zcmV;u148`P++kSJPyjaDak$%JU^e5DHtT#KNaJnCBcwn#9Bww;*I543~xuq$TsPhliWKCrRT?#21W4R(<2+ZqAiKW2@pCgf`4_K#L#g;nL)g@&eOk?GS zZINXyWe2ALj!bOKs5x4QEbY+89aQO5Th-)bUBTSO`(lLaWu4SUGy(v@*Hn zEY>TN4atVWwwh|E&FaEM<kUa* z;cS5*>M^+^+Mvp9Rk<(OEqjQ<)`1x2ZaEr)!4$HQs3f4_NF`R;V~oLO?0#0=*(`)n zlT_fTlP$3ce8D8z4MeNaB3c}l$t-SxFJ{VVD%mit8G^v!rj%)hq3XeCRBb^dTETT> zdD|nR;Z@>>G||~}t(H_!p|om|Os4H3I^~*KZ(QM3wbd$4$l)apPB>KAaHU#PUcoyA zWTg{Y;W;a@`0A>`R+Onx3DsdJsg21y*>atp6IQ`(y}tX6SfM{!mozGPp?s`*w5!&^ zHB3~rY1r%jk;vg03#ZZ#^j6uI~=ms+|}S>3|YWHIGmD5#)HrsMZB)lL<+;O=i)F3$Ha!DN3Tw&Oe ftbj)3amM6Y07)Bh#~gM5Hsfu^+fV>EBa%rZe5c<& literal 0 HcmV?d00001 diff --git a/sounds/letters/g.gsm b/sounds/letters/g.gsm new file mode 100755 index 0000000000000000000000000000000000000000..42b9e60b98b05ba3bc577f7b0c0422ecdd2f0d26 GIT binary patch literal 1155 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 MIOKEyNhFd-B%77y%>V!Z literal 0 HcmV?d00001 diff --git a/sounds/letters/j.gsm b/sounds/letters/j.gsm new file mode 100755 index 0000000000000000000000000000000000000000..45057ea96a696d6889374731d345c3e9d62926a4 GIT binary patch literal 1155 zcmV-}1bq9|7;0ssP(UW!l35#CU^d&1IU{%=NZW14B+8&j>Un^++>==( zW?(kjx;az4AXg)8H!RE`H6)F;+R&!lrYhV3Cv1($8`vO5+j7?A+JHFYZMfu&AV(an zw%gF-)M@0_z&7oT$mDjwHrsAVT-ty+BaODxasW#!k~bsQ-4d4EgQ2+Gl20mDp;#nw zM;vlM$y;V88`vPnW3IOp+HjKz3EP00DvDXNf#KB>DZ{93qS+*JsZWbU%X8LeSlTY6 zUki4m_Um$|WPu2{>MRyqX-ufwkJOKK3Mj(*CnMVOgGJMrro$QmNmSg3MUo40$7O2w zVvm^8Q0ymd)>Q)6pDLT2WeYIXy2R05swVEW;gaylv1Fxfn^Q^yCzLnw)n7J0gHWsz zGrG$gT#EvH)=Qb42qJ6gYv7^G7u`);64c&KJ3~SO2}wiGO0BC($inwH<*Uj{%U!5zRckp#7OP#=9%ZTnRV+6nWp^W2 zrP18NX{lGqH0w?}B&{e@ERdjj)gE1@M6W7Zv#qu*tqBurwMf{nX4BLB=K-&VmDYmF zrPg9C?gU#319|Cc<5x>S2h(I&d5Qs-jP1}0ajxiZ-T z=vZv4#Mj*v^5Wdcc@2^xT-zjNDV@hA-NcO?XDB3dB1uzFkh<7k4DOocBV#$%N~7ro zD!ZCG+jk>Y*krdn?7};GxyTUNVFfc%eImhZmOV~?dd!%i&OWG#`>l28gD))VBbb$gkTTp`* zhe65T&P5Y{A(>Ef?2g&w1S;E!0p`MPl!1og%PYQG1TM;Up!nWt zyBymABPFfqbT21Jt;K02NZAUEFp#tI4kibd1lv4_pfB?*mnP literal 0 HcmV?d00001 diff --git a/sounds/letters/k.gsm b/sounds/letters/k.gsm new file mode 100755 index 0000000000000000000000000000000000000000..104dae10ea4cbe29c9ddda9fcda725ba2db58bc7 GIT binary patch literal 1056 zcmV+*1mFAGuYBeLP;N%#k;vd#j(X&6=_6RLzNi-1OJ1#8dr_MS+O2!xQlidn(F-`~ zRF3OR4%o%LO#0DSS9y5MFzJHW>)NqwUDAMzD0qHal~&A2998&L+|8!ip*RX$u9qA2 zH+9-@QVElkt-Jh^$XiuU*xi)~-JeagxA58%RZxo~>o%a-CkmFER{1gzERHV$L>O_4wlMth6fXXJVIZ(B?|Xh1MQb zodn{}Ftv8Q3zqE%Y_e#gn9PpllGK=&3aq46*kIORUEM{OO4TIJHc#P8saBRYDw#<< zbFQ&OnF>nmt)XkyB3>MX;|<9qk}+eO$|{?Ui{zcmHri14TAfVST##2>)u3(}MWIVs zU4&-tQ!1+*s4A9IY)M>9NoJ=?4o;0rOxxER9eR<-soj;5BqYkl2`uGG z$je4UIn37-%%~{JZ_1_FBn0x((5JO)Yyv#chj!kwRTynViu}`ABH2br(;4Z{*r5e7 zlWyhXWJm)uY@}M}t=OsD#0I>vYh>eN7SYD>VA$XVD%5pidmWV|0^;Lab6d$Jc|+7) z8A)8}LwO@sIT+dI11F5^p}qXe`5EryHj@%;+V0}nDs41~prhHodPywVUa%(rg7b*`ov}6Yjx7w~;1FfPx@n(#73;!buv8qNjsF zXLa4_6WQnj=M#rPwxizTEPEn8)J>#Qg27LO?nvQWP;%{5~(}u z*tB-VbDM}<8`>)@E|E1ZO0n!ASmQ= zNh4YyNSl$TBhwdBlv>6>Hsp>;Bya#Z9CAw|il8}UjmaFe065%nw;a?MIZ+#Y06655 aNhDAJNhFd$u^ zWz{w;k~t%Kk)l0~>zkV~p{0&VB-E#snGEQZAuMu99G=Y%Tdr8^?#&FF&dBTVtuc+Y zSme}YjnGw7Y6VlvJmRG(Li=%b)TL`gx|T^}sVSr%8p&(a;dLN{R|w)u?fg4esm3Aq zR%KUew3w2-ZLJDZN@Zm_)gn~ng0GA8lukLFS8OWcY^UW{r`$Q2P7zm#2I%%Br-)?({VbI z%I@OEn|;XD=%E_ou}GZZAt&N-$tu#pHVk*f+|#l_-PowXMO&!0M1`Sy8hRf}c%ZUk zS6bkD;X2zw zl_xsxp!VX^HyV7v$YirP<9@(ST}aTv)HpI3kc8mrqmD@0g5b8JZe?@WfVnHIwv2+n zt1QjB?9@0iA;^N@CW1;fzjUE39IeEoaKN`7j>#R~Aja8kw(ZmRDP558pt)p>#++V& z7W}haH0IzGn@?FDe1ONJji{W{vsqObZh*NPk?ADy01(@DDS3dPWa*KllX{>>T^h-m z)HR9GV6dQMqA;`NcOW}vy2)AO090bGSo3_qDyC{Cn$(ZMP)uFx?jb literal 0 HcmV?d00001 diff --git a/sounds/letters/m.gsm b/sounds/letters/m.gsm new file mode 100755 index 0000000000000000000000000000000000000000..97643d131ba116dfd9aa24345f5b5b8fe4813d1d GIT binary patch literal 825 zcmV-91IGN=AA!`-P(V1_ZMfT7AU7I~w%c?dHr#Ev+mZlAnyxm*ZP{e#jYdXt zS*+HfMV*72=(aQQNXnbY!n(A?lby_|+>N&6>8PpW(a74>;61?-Tm9~fK%t@WGrU#$vI-_nx_|;=Y z*+cC~J!Fl-IG-r}C27KV?#o>4iLiU`Nb2NnB74*2eAx@3D$8V!G&Au@OoCqbTc^azcmHWn?J}Rcg%Sjj~@*%(aylJ7z*?7wMKeuMV}R0 zXelF*wtUlSYAuAfM0zx8BG9!cc;!wu5%fOEXnnz=3F_PD0;gp(gASCkxJjOX_Y` z+R*B|ZX(YiGV7futj>W((oILA#Nk~Pi6W!W!FLs|tdh}bn6HCqZQbQ|CaqshPE0(kY7S zB6lFS8+T@8LTnv>HZG!69Z(o10#N zW~xc4V%4uwY0!5eMJ11g!|uUGW>?4CiU6#nrL^17AT0a&N5|GOdhOuYKxZp)Dxc(l zGLUi~6m|eGP*K?$t{^t#vfFmmVR;oI$^cESwn-e=05@BWxf_%qM%<1^B)kAgB$3G^ Ds{yQj literal 0 HcmV?d00001 diff --git a/sounds/letters/n.gsm b/sounds/letters/n.gsm new file mode 100755 index 0000000000000000000000000000000000000000..92d853406f8f576be42f397a340621dde54965f5 GIT binary patch literal 792 zcmV+z1LyqNuUTIUP+&bvr39Z#eI;_Y2%PO$?2)#}?QB@%akmidY{=uS z#}L(?MQH<{3HdCQrjhTer=pFxr%_8cY^lb@p=vv%jl_r5;5{h=@oOt&jkJbSN(-y4 zwnU@Kiz13h+))j9<&rlN)u25o1E8&UEOt22qiNTpc1GBxNp&@HHw>qSd@E|DBh=k( zVMJ32QPk1NBd295)v?;=sRe?$vRPZJNU@|StP{8w9-q*V`hTvnoTA>+GAF|O|+8HXN&Ec+5!Pw^7|Ul zf=JwocC5aEw&al^-O|AaTS=(d(I>O+8fw7V{5PoN)}dB|uGXe*z?EA>wXE8p=C5(K zi_qw_ZW-Lbr>&}Ls&8P(ol40}-r!Q}Wd?`gU{jQ*N~6%~oUV)EAV%5k^mbst)naUw zE#n|^ylvMpbwD=!xY-=hC$r{LcOc0lg{ZCSz?meDDAenKP|va$s_NiI(MDVO(I&iQ z;_RSZ6lp?H??5{qOG{($z_%K0NptR?9i5TH+tDVRGE#dW8(g&33B4*=QZ<{w6Y~kJ^2E$+0B|#a?%))ym zm_!Qd0wo-d`Bip-WsD`brGlZGS5COw*6TtcN{pdHD|tT5wxF4%%*2V1-~(*OrqYt& z%U*7{1BCq4G)(1MP(Vo}l1U>~;5Qp>#@lFsStO0gB$4YmByu^!)U>Hv(or#^-EvCX zYEX{sk~rI%(G6u%NgC*`3vE_N(9`gdmfM?a#Z`_XU*@gj9g(D0nM{`?t)~0sEGb=y zr2Nw`k)GR`NosRV6~*NyPHQ-$#pKA>qiC+I=S95SWxnjv@tGeS=BU2gK=ovsMaZ2? zisk2H=DQ|0GwB41oK8n4((-{KqOGnJv$|zBvTlYOJ40nB^a4mU(&R3 zCnN1dDH&ZyC81(0gXgtnp`pp&E#i}-L#o2G8t5xBqX4g_&(euipB(TCyyDXxzw<6TOO)AV;A;sCg@^ZR@r7Vv7 zS<*40Vl%-a(5$jKtG>e{5JuS>VV5Jq9QA0Al;f->Y~X3Ce^DX z=F34Yl|$u{&p~9{sUtelZ>k-v&tX<}d5Fo;L5Jq4*=uPb7{ey#!`EQSVWK} zOBT|3V6NhF$lKBFn$j$Mp;V)CXB+UKzm_JYigJLw>@IriQsA=GGG`LfF?tfD@PNB) ziPoWeKvi8+SlxW!SQ1S=)_~w;^=QPR(k!Y?ERui)Zunzwet^hZayH|PpxEqMvee{& zHd)QseAD!RP~3{3OzB{!3xPm6k=1y;dY~2~FxOC$z*8EYHzCxr(p4JdKtiilrxm1t zU0(LbY?R9dsDmH;^;Z8sILz%>%hHsXc=H0y23_9lWB$7!a RPyk6Jl1U^`07)d0NhDR^!a)E4 literal 0 HcmV?d00001 diff --git a/sounds/letters/p.gsm b/sounds/letters/p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..d0851e768c372ac7f7dae4b78be953d2c3734077 GIT binary patch literal 891 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 literal 0 HcmV?d00001 diff --git a/sounds/letters/r.gsm b/sounds/letters/r.gsm new file mode 100755 index 0000000000000000000000000000000000000000..6ac4db989798845d71bbe1afbd02c392e6408ecb GIT binary patch literal 924 zcmV;N17rNyAaR)5Pyk6Bj!7g?ph)DA$s=^YHrtLlB)*_YBayou)c1pPp;4-~+>;KK zS#Xafu4>tt5sKuB$s(Ij^(1b|VAOV-GOAH-mt?WVh@CJsW0hFgQBI8N>bQ%a%ey4v zByZHTqb@4#OdTeXwg;We3fyr?P3tTTC9+0EoonkYl^~+jw6f|U>q=>Ek)X5dh$V`_ zNqy@JN1l>EbDay>C2_DZ)ODJv+3g3(Ep36^?M7i)RH;nuXVuMh4z=%TNsWvutkgA< zrJ12e%bkoKrJ*QQl#L~a@khs8ks*hrNJ*89l^4`9iXl)_$eA0B$K_Qf8Y+ySyr(Ew z+l@4rsVMbbam0(%G-_dxR|K8Zj>5sKV|U~_Hdw1BKBbE}Bddd8VwH1N)H71)fvZH2 zd$u_0tprjReaBo`#WLSEGmlv&xe8rqh z)R47?p5{(DD_tg(dv(g=yC#SmvPUG;>xvTsUqsV_56Q&8 zXSY;IKBi$tNtQJ--@gS6`mwsP)ufz;%4KJ+=2pdpVF(BjnD}#JNLLg}TDr?=#_N$p z`qpBO3QE~%+$3^C3(ZFe?UOpP&c>Pmmu&0L2vuZ}LOa#xg$l@RMPZFOiW6?guN_iH zQ`Dul$WuL5+~v7ONrko7>TO2ahNw=QZr2&%$vC;Wy54m}3Bn-DU6{u$8m+Ve*J)l7 zk>sa?+U@Bb>V~-DOgoNUl=os+kjV`V=B-d?J&YFWGNpi>wqnAUL%#SBReMGe6 zQ-_OxCRHR>D8|<8T-KPB<Cl7aU9#3d@g|{cvB=}sa7@migCi-) zp(~E$qW5DltFDft=ourm>U5*tW^J;f*K$k}Ab#Td^=_Ej%H!JNMHA(n0v}JSN2-FN zq?npqqSvxaLJP_Q*Bw$Y(SqT!wug z*l8+e%5sW literal 0 HcmV?d00001 diff --git a/sounds/letters/s.gsm b/sounds/letters/s.gsm new file mode 100755 index 0000000000000000000000000000000000000000..6f9cdc367a9f95db3a29a04f7d2914dd4145a5a3 GIT binary patch literal 825 zcmV-91IGN>w6j{RP#{Spl1;W%!0ol$TP;w4+ikY%ZNu!jBada|*=}27i(7UyEwW1^ zY&0Qcl1Uqs)Qc36xa8#23fz&%FXe>$$_iY zOxvwVIQx<-B3b4{?G~e&)nZhsL|Ey@kXg>2u_;5MFnBar==!529c{AdNt~pyHPvKX zp+d80$sLih!nY`SY;LB~T_~aCa!DJzN<_y~CnVM2bRI)s=(buOS(U`dRVi%?S7l{M z%}*6bx`u70$5Xi0WPD;m(JDmi@z&#LsXWp_yJUFB2^#3OUD&4|A8mIv)+U4^!EZ&z z%04R=ZpJAU)v|!oZ3{3;jHaR5P?*}B7-R; zZCC-S@++TX;-Tl(wb-QC?3GoCvckn14YWqq2)P{w2*sZ1XKvHgxKtr7E@Tk9H}f+ex3qL3(v_lY{2D= zuTdmp;h^l5=Ox*!jS^dQp*ts!Yi+SX`CZB*8;YT{o=i6*rop1}NF3bRt87(^R>2x4 za4TbKz_uMVl$Pw_H%6A-E$SgR>h^my*=?OxQ-0vyv_^>zpoqNHsNLAW z)m+?vA=vDr36;*k*Hl@k(wv}@+b1Ye@j^!;a>^D^;ol~9%cR&fdxYg$;VmjjRGP9t z$l7h3Vy-|6GgjyEITz$+t-$kNV0Cftrk8&DugB$7zv D^eLvA literal 0 HcmV?d00001 diff --git a/sounds/letters/slash.gsm b/sounds/letters/slash.gsm new file mode 100755 index 0000000000000000000000000000000000000000..51138a4a6f584db1481601797020c4b8eb726909 GIT binary patch literal 1353 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 WDx{6c98ds9Byve4&OkXMj!7d83Wvu4 literal 0 HcmV?d00001 diff --git a/sounds/letters/u.gsm b/sounds/letters/u.gsm new file mode 100755 index 0000000000000000000000000000000000000000..9fdc9a851eab0a2dd69b9452aeea6d63cd53e0bf GIT binary patch literal 1023 zcmVX4+=b zW1&^M25RbILN>;gsjOci#8P6)-q9z;WolgkeS>hrtzQ8*Bq=nFy#edJ0cqQF zR|(P{o+%{1LAPIR`72)`f{}8@{9mCy*||p>!Qs^6Zf$7N*;W1wU!qGTa|Ur=0s8@! z*o$AH?CO$8pk0CE=206?)mbGwinqd`u5>MO4ghO zcga(vW~yteCQ(E!ibC7cpGG?oVqHt^XiCvGdehk?1MAYA%U2*xZL3vmMu4mM-d9b? zh|l(&n<`4kPxo8dr~@P0n`}fGzc%FMEYt#@rmdH(I4YGjB;%_=U972N*=7r)*_o_9 z^=d|wm+rS5tv4T)iiFmwO2(B6&)YT9Dc0RRYuVpQZ!QTq72ygGrAWGDmkAu@Kx6*l zD(74y8|>8@ZXel~NyeKI%Osa(NXXXFCgUhbnAO7OnT7VSOvPE#V2xwZ=SPsB@w*nA z29~q&wX{5sw){$u%q=SSrnyoUYB$k{$O5@TnyXRr61H{RP&0|@@Hw9x| zD_cX?Afg?uw?#!&P6*}FFsiERUn18QR1jUd!)cbiz!JS<_hfrm*k3|aG1|42(k-gy zYr!IH|0Ld9hv$;Nipq0%g~A~a^gB(?b4tw#d;HIW>DLphVQOUi#B*VAdL5z-3G=HfrjCX&QA{RDOUZ6OFfBY=CENa<^O6YqC|_ zrhrK+t=OjCz)Ku*ZCtc~G}%qa-GZP=9IiI&(%gy_BDz2%T5Y!-?m$T!lE~cfAV}kq tIUBa%Nh58@+t!|v(1Na@IOC2tBTxWIB$7!aPyk6Jl1U^`07)d0NhE(v2txn> literal 0 HcmV?d00001 diff --git a/sounds/letters/v.gsm b/sounds/letters/v.gsm new file mode 100755 index 0000000000000000000000000000000000000000..e7ded5bd09e9eed61596cb0d371be1b257738875 GIT binary patch literal 1089 zcmV-H1it&&;eps1P(Vo=ZaCXmAU51>w&a{3IU{n&<6=NbBaOEl(;#%umBZsnB#pEz zTjI(ld6_McoZDQu+jkiU`Lqi_1Nc*+K$Qx3*B+{H+ zp5tc1De=n8@vL#FXq^o6b&^P!oeP&VvdEa&9R&K>>u5iYdo*C1 zOiM&owyfuDS|QQ3B$-NDtF<9k*BcHtQsrjT&ZP+PK7oH>= zyVsl!Hw>A@*Cb*GZJFp>BoHZGn}zz@$t3jYgL*2)0{+$+C$fT_!vnYZ2Ab<9r6cmh z-0cS@qwhA`?FBZP=f>>R*JtsGpM|L9ZPVgWg9PfS&MfgoM20%&BBKRrSf^a;)L4J5 z(^cfN3mrFBsR!#)0Xbw>CTSB1N35?!O(H;=w$xZ}<=a;XCnb_3BeQ0-tkO2exg%)| zpL)_^;@E1}xKPvAXYmxlBq1Y-$n3_%!U1*pBF3dTY)H2k&ZAz%zQRb=mp?IG(L~qP ziQQpp#DJSI+nsGe_fxDwX4xU$?bbtJ)Yncj6>Y+}6J8Xha)P8vjR$VuBO>Mbw5IDp zS>7vsk<}JHHjC*2i7TPIeBPr8KCKmNe1ZzRh1;Ug!lK*?*UQzGHah|4!R72onBZ`t zck61)D#(IR(kb}qdZF(liPaI-m<~3QdjY!VG1udOp)ms?uJD4vPi%0a*@EFYzAo*X z)z>99lYaoL)n%K0eL)o_m8jr=;WYf!t98`D=Ho0Duhy6>_S1nu#vHLIaB literal 0 HcmV?d00001 diff --git a/sounds/letters/w.gsm b/sounds/letters/w.gsm new file mode 100755 index 0000000000000000000000000000000000000000..6b0df91697b51ad88ad94af56810283b4060c9df GIT binary patch literal 1419 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 literal 0 HcmV?d00001 diff --git a/sounds/letters/zed.gsm b/sounds/letters/zed.gsm new file mode 100755 index 0000000000000000000000000000000000000000..39782f73415c3a1c9be69a57e137fbf454f6a7be GIT binary patch literal 1056 zcmV+*1mFABAVXW+Pyk6IjyWSzphqK)NaWkV$s3MKW>e)h$kx{6(&9{WQCnlkiO0m{ zS3^eQW1YpZB3g26C$(E5*B@ztCDG%3a|lqwS6uEgAhv@26h9^mx1-49F4080V@Fl6 z_~Ox`eQT1xBMRHDMx?r;>eQ)2eZ+wcH7MqV#bJ8WhZOG89(5}d$3i;qWyI-aA+*Fg zSCz@3Wm^p7&1B(QYb?W-(wtPQ9Ll0w8_~f_&B3=@iN#o8!KRyU&Lq&{*l5P9Ceqww zq9k6yg_n#pVvxhxtCiGfaYEGVyt`It;*5+^TV2zgOJ z+lwgR$iq0kuEX5Zo7tjdyAx-}8`UB{vJ00kXqp|k-#Q`FZc4dslRtX8A4p55mS7$1(UT$@fovvx}3=PuFeb;|12Bt6{(o9QOgG(^jr zDjz#_!cpfc52SL!;hRrZ>#{h|)gxWl!=2{|RS~5XoXtyIl{AIzEX!PRw#HE_S(K4B z57gv!+=5YS=UtVuM^o)e-EK!0QwoLRkycPsN!^o@x(U_eRV9L@YOQj5T0m9l=_t~s z-BZerRc*%lRVj&Pu1c}gr`50N8|^(0OIc`ApzBEE)g)D1 zjIzo{Nh8@Cw2_I^=OetfLI4xf&%Os9Mpw(nu6@$GhdmVB|6JtsttejZg!|4l_ zE2`qhDkocx2W{2jMB&27syM5XB+zGwnx!4OrO!!WROcsS&d9{lLEj_QUqmWP&nCBB zZK@f>rQ_qDO9f{rK)qcqq-g|TW-aW;)L=|@!)n9Ts%ru+!o;jKcj2LLLnAt&&d%OK zCcy|z>e63)F3IX5Dco^LV(>vZFV07y*a1qDWheFIK-R0S7L?H@wJFkqpvg7qwPf%h zQp89-W@LaNEU~u;?4Tw*cDr8DX0$0cXqzl{92^LD7

e#GuUW|&tI@@Y!)8GKa*iMvA7Iv@(dn1sFGoLI+Ban*Z?@U)5kczDF ziKiTsK?T(=Q{mC0=8GPW94Dn}ES89l>{EznUotpiQwiBDaxy#AY-8b)rwHilk|cPi zswSe5xo}fRT^*{x8l>yp9InC^)2Mu%N~deu<&LzUQ^zhMF*zSqM~`H&$N{A$==8Ex zK-HjJox@Y;SL1TG0#k<$$Ev8(Q-+G-vNxMkM;*SB%8}OGJz@llkkVH)*B%6` z!>LFpN$y6jRmBGOnl^2zCF0wQmz1ihSsZ1t>d|S;Vd=c?8-s$D}EHFhs0VMQ7mvzGeQ+&!N~yXPrM zBeNx5ru`&Q73*WlCt`6l-@7E_;oU}{)m<%LN?_-|C3iPb!AP>_cB>R(s5a4Wxh2JC zmBPX7ZPlS9o|=*8->Dm6DWxL)kKO2$|O7h2_o0-`e9C!b`nc z)nzN)VcNsVGc2TraYISf(Md+(ggG1L$1-f>a++-&U)CrSp;++4H(Q(r4BrB^WekS+ffYGVj-#Gkj&-Ra|DW# zqT!Zj^Vu)vqQuZ@KIMEM_K+*Bf{4O1>asfB*L4#L(sY5y90@69RG`llQW~bJfZ=Ls z=A~I-SF5qcQrC0>k*mi*?`?~@OT8f?T*^r_Qh?t?{#k!nk7z<}FTNTmhWbOG4pwBX$Bt|ZcI;Ma7OMpb5jBCM{JiOk># zov%Xh*Z4}A8PdQ<4UWfSn1DH~RyQNAKuL3rO6**qOJ$N;W VB$7!a>Hs$zamOT307)d0NhJL$LKFZ1 literal 0 HcmV?d00001 diff --git a/sounds/phonetic/a_p.gsm b/sounds/phonetic/a_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..fa6edfe8f5b3c81116c6d93ef84610ed3aad7b41 GIT binary patch literal 1089 zcmV-H1it&#tc|71Pyk6JamgHMAW0jIxg&hwNZgIbBa5_0B#{cG)vtvfOKkJIV?wKB zj}ZGC6#|V3faQgMf2(W8e zS(t?>S0s|cI>jg~)yyh$)OJNAl7mGnpmbwv!lrZ+Iz1}G1TJHenGb;lsWPq!RMa(M zC7FRF^UM{yp20;Hn~$v-gG8Kdc2LfP1Bsq+Ga}RUfn6HIL%QIDE2PCkq(_&>A;lx5 zZ1~tx#R9K3Rg!JfG*O|WgCc2S!nT~mqB_!)X&lC)F(e+T8OcIdEm6iY(yfZd+{q!^ z&6K+r$3Zb_hRWf}f!KvM+SSbgmD72<1=FK+$=-<~!_<*P(~H9P<5fu9RbtGJEjQj+ zLA6^AE9BMTQ;porqQw(xPcpWms1&PtGT|a2RlQ1^grWwOR#REot9_nQ=|Z^^f|{aY zq&a()*s6xZPUS_{YsSI|h0Mjy*)4@3fxyBO8p*2p=ApxENMKUlqR7H%B~yIELYr~R z-EO=BUe*Un)QY@ywJnmm_Yp=kD0?F88?brA~QVbuamr3rk2ApmMJ zn{dJ07pqq*USW3RdB|MZt#w(7a{@UIRoa4DqFc+5YTsbNyY)!TW{{$(Q;G!B(`tJj zVe3OB8|9T8cS26|jkcYcN!cT1KJ{emIG8?77SwS>Er^ROR-qnP-k7XLkn>dQnP|d? zvlnAgNhrmV#PZazL@|)13dqpv+ND(}zQY~NWK^oVN+U~?S1C&zNOx=0a8s=bSx8vi zMva|YM~7u?Ahfi}W-N|0gS4jasg_(=)bKo|iC@Pq-Bvi&T_~o;a@6a>ht`ury&TA< zXxd64-PLhJA&JQ&^JsyzW6el;GgV0sx}T<(&hv6^Tj2U?@u%#O)h z)bnJeKzid;)3duH?BU4+0tbHT!R3;8cr1Y;D(dI7$O(Ikb;<<+4ob`G+ZtK zWWkn4PjRcRqEw23w;iUUXW>kkoW$ZD>&ZqV)U{6WD-8+KslHd;ljCjkep>#UmBFh(VL<1r%N0_n=+lQZ$?G4cAvrM4{EGRYv2TEV^%QFngVC()4kI<(=%} zs;;4(pDtHjQKj0}D0Rl#?TlGZQNiQw&RD!{jNDPoirSdWtWhnwDv%DP)o87Yk)KXE zW2lKQ?@mb_p@{WSPB|Qnimg*GD_w|=wbd}2mx57EITVQu-J?vo6p5bYQEMvQWeTsM zEJK`;F;&#`dum9diCWxlx9wAFw&YNbwWBFkrfPvTrN||tjmgv0^MdXXQ-<`ZmI^Ra z=+~pCIv-PNT(h<$GN)_kvz9g?)bxt(L8mIsQ+3wJRZ3kWb~uo!seKJf#M-IFUd}T$ z6V$VcW`U^;3hatk8>cBjq|P|wrwXV#vbkNU$T8GvOx)A6appo(NER(z*4(FOnL2R0 z4W~sEcRfX`RmD?>T~#8|?U~M_sYFNuc=a!)rk5gP4B@_ocfw&mq-dl&<83nC)Ercq z)1-vD=Z_+Y#)Yq6idJD}gQZjQ%G<=FMZ>grGu7Qo&Kl0cwBV6NWxAw!I&y^qR^uHt znmGbxV@fPjLsisZTot6}1SlyozjI*ZNn3O`7Py9H?UA;SRR(pcUc|)HENSkOTZ}2q zPG;j+hmf^h%Ura{Fdt6E-Cc<#66(2D)bKKK%3mtSVofh2Ukb+^ZKT({=SnQCv{b_g zpDL-g>eKB~E<(nqmS65Rf%lN6N&Jxg2bzS35W)U1Gy_v&+1x z)GK)2+UDhn8|lcbbfl>pkf$$}f{#t7R9Wi73g(hZ-P5gkqKWR~#-lb5TxgF83eL7fU_J< zIULpi#~zWC+U`JQt(mv;j=&^MOUUffY?09-sGw+*jzo!qpjWGMYMk1jGaHUbtlXeX z)J{b#(`>R#n&6-|>(V&gc)%$flDU(NASWX!$lGiHNgQ#u<%KoPyk0Hl1U_C C{$Dl# literal 0 HcmV?d00001 diff --git a/sounds/phonetic/c_p.gsm b/sounds/phonetic/c_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..2c168ec5586f25c5fab1b019b01f9b4dbe82a2e1 GIT binary patch literal 1089 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 a$dc@UM%!{X8)P6!9Fj)lPyk6Jl1U`(P7yHx literal 0 HcmV?d00001 diff --git a/sounds/phonetic/f_p.gsm b/sounds/phonetic/f_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..6b4f30dca99e2444fb3913037907d9babc28d313 GIT binary patch literal 1320 zcmV+@1=sr2Hd5vaP(Vv8ZOJ8B;YSv1x~Eiu31o3P?Tw5`<44(J)OUj}iEVGhPj*Qn zjZKm~(n(yB&Y`7|$l{d^A(oCt1{_Uj!7U zM_APNgK|)zNcSanM^K|m_bhTb0a1p5B~~RQQDyh-a#q3A_j@t{p=9^%RrLY!Ci^UI zNYe2p`6X605us?gB$39@)b@Jn0P!XHqgABXp{RFTQZ*D&WclNjM9HBBzch|F8r3#S zDgdJ<`*cyc5~D)j^f=gIr3AeCt;HIpXNe_^#~jqLQX)d9L_wCWDBGywqo>tXjjo~r z9+uT4vZ0dVk?Ql*?m3cLw1LG#l`8GNpyRM~jj$+MIgDpPsf?{#1mn*Oo}E&O}nJWH6GZ!zvihGNjsUbS6pg;>y-5q{+~MJ3|Ga zK~~}j3{ft2Ucyf2TE8#ZDTJmIa)KL`rc&r!0cINt5}Vdxxh#@h{oLhAWU@|L+OxE7 zqfxB4BXvN;f$Z3f5gB8_372ouJ9N4U%Vv(TS=u+YsmtifD3?`;uH{MIOc$zNSgmNH zY)9(ZOrcuNIP}=BjD*r=&A5A#DHNipTJugb1-Q*P;%S8}RIPU_Eh7}vt4m7KQj32* zai>MLX6mhR69euh`EtHS6R?L1t)u4&)NL%)+F2DZXiDx|3OOr{wtCcWWYQR4DO7uwGKyaY z>&mgbBE3l|-Eqe1!pOE9%eCCqE0u~7W#>gBsQUh9$gG{l5=YMHPXecAAg8*!aQCev0GT7(0Uag=L z-l*%Fb$F@+Ce`Ys4-t;TS(FHeUTZ_Onz_ZG{bUML3cqIbk~xf7;A7h_3DUDzTv z+LLI=)}CAkl2Cz=-nVNcTwrRt@mA{602<*|zTE0SQ(#cJ8`Pt5jo6aFO6yU@D$qbk zT4}cI(!e(zbtfF`Ku2Si$yC$cikTp+fLkn5w;OEWMC47l>x<&b-3Hu zXpJ8lv!b^fZMnr##D?3ky(?gX1uAaoEr7vGZ1(pf*X@#01MWby8f6mQu3)8Faybjw zz{aC?En8l|6JjJdlGdbh1q#f7IOKUNv${YpBeNvkWFSW4kuu_{Kt}9J*(25BVVThG eAWGe>#^cB!IOK9S9DD#a+ikYnPyjaDZMNI<@}JNE literal 0 HcmV?d00001 diff --git a/sounds/phonetic/g_p.gsm b/sounds/phonetic/g_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..38aae4fdb9213dcb77931be4103a2d33ec150c11 GIT binary patch literal 990 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 Lq;>#EWa0-@WwwBb>Agy#7bIs zsV&%BJ8BM)gdbB;#~Q?g(M@VcBYh*a8+5@9qes~yM3;Bf7%#EZRVnz2Y02}F$hj(} z`b&`L%BjAD<813D-RZcR*INd1WV0-`_i@yWiwrlrawKAks&1T#2Cvaar)ohf>(^Tb zI;7EP%F<5xCDBO4A)Bcq(S(DBZ0y^Mg?Su~#~jw$1^U#BL;BM34wh*tz1#RP=U97@){eY_i78@dpZIn&nW`*>9d>QE9m>l17kG zD06FeR*_MIciwKrVo^m!y4F~N(_Nn%n4?9(^YylqqlBnosiNmog83_!D(q7PAsp^l z;?m@OE7GY$qO0=XDpv!bWtO?DuR|csGDmb#sa-`K7?#uHWTy&bj8>ay`72vV+Z#;3 zBwZ`1T5+_yUh2m?PP7x$A$+1rUFEeKaI z!(&INs)iNw)X1r2N)SoK2>Dx%(qx*TQWYnu;INN(8 zw_A-!FVt&kX4!_KM3C{^g?PfKOTAj9cEUN_h|mpqqIoK@$z9WKN~+3!qZtE_MvWI&!Hhe&IHuXX!B0Z)s-BnxVYim89T+;jctpj#qw zsFKW}Hk?+;B-C@c(3+rNI_gyDqwru^q_IZ}lpr$WQn=KffJWP`I~>#Ny3(TJAWK@3 a*B$IYHyn;h8&CjAB$7!aPyk6Jl1U_pM<~w# literal 0 HcmV?d00001 diff --git a/sounds/phonetic/l_p.gsm b/sounds/phonetic/l_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..0775e96e33b69770c8efcb71bdfaad3cf91cd68c GIT binary patch literal 1122 zcmV-o1fBcS+K!s?P(aqeKln&TUE6*e@}ip+^d2s!JlFWD0zS z%USURVFq|tt5ZY@b)wA})ZAU?5~F6CY`3Uk=P8s%x!U`oh>WMfO5l@9k2faS2-lz# z@5+@8n(uAK%998k{OYt5l*xSctr1k-sd;sYlGWKE1gjI^$=fWAhOeC|IHQf0=j#Zl zn~j!d?#M|bNHcubn-y+UqXn-mP`va}Bet(efuHdts;6!U*YQNAuQ3%b*BTCX!|_Ep zh79f`%G(;bDTjFslcI8I9vl_|8mGC32L$f?AU$E@f_l8(yT z;?VKS(&FeQAVr2tqwGT{y)9i>?BZVfL06gXBeRcM&VWzJwUl^q!(%tDh z+fyM1s_{GXRUwKbmB*ye^0R6psX_`IUA1jhVkDGZH8rUr=VP)g6mLnj0cRe@-RG|YFaBi7_3kx;Mq+an~KW`wD3h3Na4MH|%XLs5y~!?wdZ+hpRw z>f{82Oywi`vsp-)a)dWpnRe^c?n4$q;bTWriU}6x!S=Opg3#on)jF}qRMdmSn+Lm_ z)a*+Zic-Q?DtW}nmc!HYk<8ND0+eihyrYid2Bg+Ftkmyf-GG>(n)=ztCh(*-P+DBv zUP41*k86mS!V=fINhH-SLZu0Aqbk!-zV5oAj=Z%t;*z1J*;;#C@T5m0O{BZka5^E8 zSVHu&iYHQl!!;m^&h6yFY-kN7t#*NYW(?%0)b2YONZi57n|Ada=pe;uKxLVMVI0+w zu#xQG%Jwq3S=8(*VMuO(w98UE9@Ib|A#{{ndZ0UOW~pTEKt-E!$z0UyIGIR}pjD!d zxl-()BGZmUn_eI`+Hy$St{_D#ZM$RCooY~_*Z?-!;=y4w(#J-g zT>(c_PxJ(TYa@Hts+L#lelEjEX$?qRbkfALi3(g0$Wrj z4&+xNT^mLZ6jh+E@=eVw)91Pw+E>X)<7p6{Rmy#2jTGKh5XmHxGJ99jHx(^Kxz#bM zBH33`_|`T;&Q}hp@#;v(SB?dek=Wc-PYktoM;g^|n&Q!`iQr@M9wb*y0nM@5B&$rY zYqm>dS4%PmTdO10Fms|pttm!8>QGGTkG`YQMlH#EQ{&UyxLohQB{q(8`bB8+5%n6*gH=dVqZ%p&ErPvy(rWfhnph2 z%39hbfxg!xOd5i}C`a8fsOZ5csVV6=Vqt4FL5G9z5nkV|cNLuW%OGd9?3)}#>;R{ejF`+=p*JhjClgfRH*A``)zukY#o|_=hJ=sJ6kMRE8;R*7@ZmPo zYMCVHp!Vx-G}_c0gVAZA07)%Gw<7F7QzVs{E#$yvT9F&?9-W?nw07I9irff`Q%CN;O#M0y!KlzT0fUrk#FACbpqhAoa2= k+4WlzmBgVY9?i8PiU5}ka#-7zK*?>=%_8U^H!4Rb9RJ6)UH||9 literal 0 HcmV?d00001 diff --git a/sounds/phonetic/n_p.gsm b/sounds/phonetic/n_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..f399f3702b41cbd0cfbe9104a07bad786fa7a21e GIT binary patch literal 1254 zcmV0u%eKHJ?Y>vB+QVMPomDYJlux%5RZ>LTZ?zoP9aPTZQ?2P6v9NN!J>=V@4{Q=Tn=)RF+(4V@TsM)`Zidhg@+yqhlhddz@M2U*trT%al|cu<5NuN}zpCXRAzlopDAbR|*NDs#d_O3Q>DS!LgQTlUL$3)O6PsRYIpniP>qCo%MDe9|1Pl;v8>Z<{#DsC$mu7MLZjhN}Ofo9dxLZH-JOwv_fLOSmH*2q|b zgsu098(^X)q&Lf3)2B3)mo8n@=}eDGUX8a~jiz5wPS)&=w7OMlIJ{1jxv0s?*R9kD z)TTvGTB|1?sJBbhu*kk8JGk;%i3YB5%Okq!Af(PaVbmr?PmEs$?3+b$%*BsR}^mz2*W^4n#}Qfngi>}jV4yo2Q{&QDy`C?#GR z(uE|Kk;z-xBy{pjzUy+LIUUHt1K$FU?nXx5)apFln&#y);(b=#bfVbnWyFZ=gLkTW zNbB&U!s<`W6xQjb8WXHfW#)+Yq;WWA^Bd6rdihS6djp+A{);( z=Oue$$eSsBrFkQZBgv?%e!`V3=Cv``Ga8K|e~)7GsMh7)o@vl5N_Vv@ku z=nN>%Zh*w=&P?j?z_u-_!#mgQJOOd!pwBKqz@vDfNX*IOWPHHW4RT2*dIS`qD1]řh㎣V[}/͹q&_iG24bqJײ͒ae6">1A 2A6ao,@|=.l@m@HfBբQٸ J܉bZQ% I3<@7cn&سmqƒ}4hIr#$𤌢שbE'Br.dykzĴ ]Yj")$P62H[E! hsԢUYIxc-d]dmB]'qT.9+Ea(8ucHFL& )ƨ[œEȇbNgzǦomh)"(KkdFSkńlG"o'Mfmo2ժ:el LmG52IDpcs\Į۩4P4axq"#hrcm*5bnS,D+yCXJwB6vx3zHk:vؒM cTQ$D:v ί֫B!ª۾Ckz(4bw2N&-x؈Y k6q3MFӉD~T|%7m4״Ki'^؁5%rWn(Q:ؠZԸBR׵sP@r#`ePl @$+ v@' \ No newline at end of file diff --git a/sounds/phonetic/p_p.gsm b/sounds/phonetic/p_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..bb5ce86312a2e8fd41af786b03f00f6093d31a2f GIT binary patch literal 924 zcmV;N17rNvVx(2vP(V1`l1U_rpgA0lM&pmn$?|SER9s011%ox5)$P<(+N_L5>UDJ; zZwV|^i@6xTOOq1oT-si(64blvS=H~FjT2O=fXAEE+TzM0&F|HcRV>pRUAoU#2!Tnn zX{gn2f)&cB%TZB>Z0xToH&j(GPgco_%uL7cs_IhWj3sB)Et1jDRVvFUtu&WcElU(p zMqgD;K4nfc-cc+`+=?iY)iQdb2vf=ovaQIlRVvA2u0+sNNH^TZjKrlVy(T?2;MFr~ z<;Yb_KD(|t8d9q_-;%bPr3w=I?bzH^XM^3*vOK zi}$+QS7#=K??|%LE@7q$t7t~sRyxJm6t|RoNoT5vv0dHH|N6W@RJ(RLm($g%F-NLjW5m4$#ZOR~|lX*uSR={>ET32Jd zz<&#C*s9YhiXqanz+G%`=A4LtHMFiNA*`S_?UFX);2dGk~Je# z;5y{i*B#7&D5REJ(pZ2*+Y(D5)g+9Ko6)W~_@&C4YH3>Kk&;5&&)IX4CKXWaoY!r_ z9n2TK~%_Dn5;w+eMtWudEI3MXT+!w1BOD}(XoP-81DVe@1TFqS6-RWt%-H}MggsIt> zvAW!RsJ74@>ebaWlB)sKXE`IiSV4nF4)%4oEPqBPQ-ua>prk^;tz9G4a+0FSg9Rqf zec0WFqm55;1qp=&hq3Y6t$$=kpuPI$)o+rXh_uB|BvQCgfTR`APG#BH<{}NVw;E96 z-tlYLfYozzrjV6Hv&^Y^Jb7c-@=ylu&SK4vl2-Pbgu2^JCuh|&gRaQ$BUsEXRn2_D z`_z^8f{7yqKfRd-!os%&728VHF`F8|u;R5;Qpwi3<3$mT-zs{dNULQLBfOy;?svGT z)wE)w!Q{aP-IL>^&cRlq7L{Yzp;s(0s~yh4DBhM;+|{*%D#@^5(`2>BZRTLsoK7HwshZWfc?z!cN<+a1+xvK|Mo=?sy&eVM4r%$6p7nF%W8g|_jYzoF@z1o8~i^41HCbC`8#+Ss$F}rjW~M?b52M z%cJb5Hkuh|Wum2J3mr~Xv;^0XNvoW=BwOJ~q@~d7)8*^3BVD|4G+ewvxSjB`8n9vA z1@f6oV8EKyvc90wAAI7aw&229`t|6jfw&!QOJca7_zs7q$K9hk)G4hv)n{Ut%xQ+% zX2L-TS?x(AaS`o_&bKvfrQ4eg)cj2~;?^Wecrt5E(+fnRBmJtBv(OWQ|v*qqeor4@p+Cmr)PXCbvrGxT*z z+g&K4!t%J~y39tC4_Q>yD8`T1<5gCH>gD+? zRl6gOqD3Sn(X;M?*8ytPbYg;KO}Y6M*l1G9Q`kX3(sIWf>;YEwQKua40J(3@=CszJ z#_659q|{%8*vQ}@qEt#m64`itYhBZ<#aofm@CU~8_wg}m^bQ+0NCL(|-q?&dihX!TRpXP_T6V&x8RD^w7viFYJwPR9L zh=XF@yuoGc101vlDwLk1xC?MKVqn7*;|1u+*)d8|ql)5K%Usttf+4J=>Rz>8!QE}L zX&>kyon&danb@j2Qj(wm#=$wln`l51b!Ir(tUx6LPDYdD09PV)*Co|n3Lz4TKwT`2 z*&JAaM=Nfo+gRX4+HJ`jjsQ0tZMN*yo;jsi>Hs+%wmBnUphqNaH)F1VINXiNB(5Mw o9CkSz)gU>jnOeX*B#qYGQUEt3l1C&^07&GLNhHhwNgR?#Bx0X04FCWD literal 0 HcmV?d00001 diff --git a/sounds/phonetic/r_p.gsm b/sounds/phonetic/r_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..47d554651da63ff21f9938fe22ce8052826ffcc2 GIT binary patch literal 1188 zcmV;V1Y7&kYoa0RP+&!(W|>5V^ZNFUVbOc zS3x$Q+2(Gy!Pd(|SzBI$KI=uK_0cP{-RfMUNPCT@+FxO6)SjlrUqO?taLX6P0+`a; zHs8`?lpW(!Mb{e%dtze+t5t$Bv%Mtv)~AI5y+~)_l2r)Ot6ZYxUnk+4=Gmxh$*`QA z%X?PHk_>)R?pJKIn(C=7)apbJc2&&QnpMuFRZU`=r-vn1EM_D~^&(fzY9)<0+}0?3 z1FcujNTrMg=2x&t)y^?wSuO2jec&2dj!~1YHtN=6e1oL1FF1R4Q(9SUPV93@8?h>b ztI5A4u?*BiZpUoZpM=BPu`5bMaaA?1E0*1Fq@%AZ#G}G^;#o@g^7&EaL8{S<>jMQ)8_tWvh3%(pSU?RLd$%RYntsb?YLl zMwQK~+auC#nvD?UGHmkWuI04Lg4a9IE|cD)uESg^iM-3L zLXVV^S>dlE6C^DQ#sYzB`+IW>_tE&YjseIdlG2( zD4y(p8bwKAt11WdX(Jui8U?OXuShlYi6pFBXkjdgBHyz{?@M*25?RLwCUIRH)|m!& zi(5pMtC3$~wI!&mWko!<1qP$7HrBbNFkGET;RLSIWvB>@ zVaf*B~3Gi)AV29E`;KV`R*AQzQ<@OD>geH(JRF z$f4}kZ$F%N*69QnjNr*!l_sjBp)%*5 zN~40|MH;3hrPDMp-dcX(7==+hW&&TN(rCZ1!zg1# z2NKzEyw*|dq)?MeHss|*R;Fj!-R5NP+G|Q;q@_pE3?&-a>~mI%;mWAgQ7Io##{>rM z*BW|563r^y@T#aV({699)Z9#GRq;zglAr9-gol9^jmuisY0050SjW(fr)zH5!`59C zvy77p&D&BorIQS3q>YTNk;oeBXC9J~2Su6)e~Z{)1hdQ8DOQM5_hgZY7R*myTiJ*< zAzS$ylcs578QB%sUj;Ko+rzRBa$D(>1pDMRv>e+7-%^(#*4<|&rKB~r)>=1mOx+2q zBxp4ymj~;b0==G>$X43###)uc*qM1i*3}zd@(ka_G?L0r?#<7IcYXo#ZJoNs0f<3wltWslUE zB&V`P4_xPD-9be7>E|Qgfk5Fa)!r^Lg_)#TD#KQs<;X^!UZ&-lh2(C#2;7;2i`IB5 z;np5Ks)XZdw#JJoTjQxj#&$I;<>;|$?nK<1%Qf4QM5EUsOy)wF=nox&#~GQciF}4w zl$-2X<4JJlz3lL4JcyyT6D<)21R4UrZ)?*&=Y zoI=;}M8{N+Ec?^ybkdlkMI74X9+p!j6WYxom!%}(o5@hRrvrMt%@QxuYGjhpsb@i? zaWiYFL-2cQsII8TIaRVYkgEmvTsB7I)2m$%8CM4j9d5}ZS4AOB%F5)iBNT&^xt&`i zRKeAAEz{{$O4(f`HxXjoWnTwJ9Brl5U!&pSuuD^N(ywTk^p%`@gZz)p=QM<)bZk| zdj}~w$w=hz$EuuEpC;95tk4EEbr0a7~jMs|eK8~&>|v)Yo?78#!KAf)SY&d*nF+*J>)N2n znpQoN)pAnafYhLnldEdG)S$LnHo0HMz{$;J#N}Lotk!Z@V%2n8Ey!AcAY72=e&hgK z4vynw?4UVTc_!M_03_QemebWNlAX}J;3*r9OB~!lWi4^JBjg}Q8;z#Z*nmjnlF1~~ jU4j^i?jT8ImPX^qU`HcPHyhrdM%->V+k8Mcr0x0Pzx1b?-vDN2S)&Pwv*0Bd&x?&X5K|=ocNTP*y>shi?oJ8?AcP+ zTS(*yacvqkQ%zdsP8$bOsJ)rt zF#*0VK1)Hcj zBdMoHn<~d!Y+B{kpEX&q|KjJi8?ArJ3Tm8Aee@w*j=;_SD-w;f0?mxfB{W-SCB(0Dj)r@THoB8eLAJ z#khkKO_$NAyV^6T#y<)H85X94`=W(%;HITl8j5!+rDDkHfp+rIYpY^%r9$gu5N9M) z;i%lMS6HQi^=fiQDpSFzVo|Q7(JZ54Yg1w!TWzlHQz3)gNu}mfA~Up!L1m>vF>Q## z?a?i|;p zjZWNOs4mNyDD%_jbKi?$Nhw=l=11V-#*yJG2O zM&xY9G;X3#MX|jV=VFLd)|%qfErJ&i=)}nrZ9;o|g7%kjX6kmNLl@4cYwqMo>rpA) z)2)gc(z3y*`;`aFc>=Z+k2h?3g4)}PBs|=rc;$82?9%Xo*IItTrUlbSYJi~W%(8HZ ze<0%Bc8Z&Q0XU;VNg~s7XmzQ;?psKO&gk^5Tw~jBznNR8;wM5exNN@j%=KQ;3`w`sJGK_kqo2cAZJra z7ptbgOYM`y%4EPYt%_Nq-rzf8N;c!u>A8^ObYMvAZdn@WKqlRl$yDgTNnCEU-KKyz z(yYAS(w_uNZXA`B(xw# V5;_U6ab6tV9&Kfr4(jAUzY+WH#k_dZK zy8=lXj3+i%LZxmoQiNY2z8$&=0@9jpHC$goDYLKKNx#8}=+?^CVZgJFvr$Q5Ldj8r zsZ`S0U47NK!yPq&kuAStM5UJ$SG|I%X=1B5Uc-quraf%aS!Qk&yCbF>(>r}zW5yV2 z*{xxl^`5H+n4WB3bi$#>Lou_*XZXW09$V?k`S2WceJ!e^&Xyqb-%W{`U*D!)h4C5x> z2_5I#js7kft&%so$B} zr7>%B>PXRQ#U0_?h6N?xR-4?SzAsG{)Y^jfZ*+n@g!DI%exnmrWVs9dsEz^sUH;brbwj49K`y> zlBlFxTwZ(_uH;QLdi)R6WJ*$&xdVyMdYz161PC$bOB7<{i9@1C9*m`2V-cm4*lA;h z5~)Qiug(NuWQ63r?-<~SKH$fR9sG}LY z49XCwgUk4XgyTs-ktR z$~%*+!P}^jM0Bj;cJl3{oKT_^9FVgT*(#kG!q9=B8(Fv#qT*F-*8c8kLeK4$tDTc$ zCZuX8*wg2%h1AIbwuFN-6rW?pn{G(CsUv2hPJ3Hir=-F9<2%x@d6(2u=MoN+E3~Ae z4oh`JudKwSlY^$zTVq%wX!z*T@rhH@wWEI9k*0lJWE)+PwijT;xgGJi&|riU>W=!| z(yX!zBg01|Uv4XtVuvXcN%rH$#%A4R7dmAlS8}dlAkyoq5-Vn<&mD6&Bg+Idi2U;V zXG5&iL&+P>WLaabCXdskw1TP3!%2?r%K*<~A?@cY)@J6mnO#{N)dj^PN}y0jDykzn)n#;p8S7)EYI-Dt+eN44t<_{}XtvuH zI~#7N$mDUf$JMH1!y<$v-N$)t6X4_&6t+zz=7mbzX`x%@!`HjHDFxN1RD&Dm;=z%S zS{!!6Hq1#L-*&={l#-^??81vYncC&mX*)+-@S?WcMEff2z}p_wLu2ft3Vcqg+)4ceu4v^syiO+qPbF$F|?XOHQSOjqtj?g6>EUORBGTLn~fzVe1I&Px;D|# zp>*Z@e&97LlJwesfXg9LMB;RyNPBYWNM^uU6K?4e(qCkjdxYR^Q!7Cgc;H6$b-ycu zfHc}k!`yJ7!zGcmBhsK$61sq(Hq+A6n%n?**^Vgfcz{`?dDlzqpl2F(ODocyTowD4 zz*yTYNR(QDH(k<4T!w%q+ilpSo`5-8b+p^mWMaxoh`=`M*4-RoAmG_?+Z>93V_Hb2 zmWsf=B$3Ax)$dVGNa~a^lrCCAog*$ca7Hy2e|V$vUcm!Y*|DA70Y$6qB(*RN ztIS)e#|mx9H(&3_n67&CSx?4*_VlGzuttINRPEDZhj#{|&^QG*TO#JEC<9mRV4A6f ze40&CqZJx3So?^)rzOs|N zAy!hlw2jo;e(Kc10K}4WYh}m)>147=EVux=<82h9P~c@_s!HnCpd2q!u)xW6vCAap zpf_}Fn8cYNh*?QE>gM1|;*afP*)Nn%RBz#1G-O~o zX@^wWZEN2P@Sq~pjVb<7VOzid?X^?NNiR7w16WJ-3zahM+Uo<8 zTxufv{g13A%!ak1>Ll>&$vJFvunko$OPh@`F4Ws@s}fTTUnP-%3{b0gEsYc0qKag- zjU>A6%Eb0^G%3^_W~$LyC{AC>K_jZj9aG)9k+muw^fx%1T&R?!%1a)>BjlBp!-rFi2l1@-RZ9^{=ikLbpsY_!iOLrrguq z5}{_n#g?z7TGw_e5aQaQQub1}opb==iz!CpOf~AlE%^IKth{R7mLz>Xk04CYkVL% oWU^S>)nQ58lj;CQ+io=+%m6ssa!BM*07oQ}NhGWQNh6X;B!d<{vH$=8 literal 0 HcmV?d00001 diff --git a/sounds/phonetic/w_p.gsm b/sounds/phonetic/w_p.gsm new file mode 100755 index 0000000000000000000000000000000000000000..9d2199c102046072eb47dd6c4c525eafe5deb1ae GIT binary patch literal 1089 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 CF>0d# literal 0 HcmV?d00001