| ñ En^e | ñ En^e | ||||
| p pe | p pe | ||||
| q ku | q ku | ||||
| r ERR2e | |||||
| r ERR2e | |||||
| s Ese | s Ese | ||||
| t te | t te | ||||
| u u | u u | ||||
| v ,be||b'aIksa | |||||
| v ,be||b'aSa | |||||
| w ,be||d'Ople | w ,be||d'Ople | ||||
| x Se | x Se | ||||
| z Teta | z Teta | ||||
| _8C gwitoTj'Entos | _8C gwitoTj'Entos | ||||
| _9C nowTj'Entos | _9C nowTj'Entos | ||||
| _0M1 m'il | _0M1 m'il | ||||
| _0M2 mil^'ones | |||||
| _0M2 mil^'ons | |||||
| _1M2 un||mil^'on | |||||
| _0M4 bil^'ons | |||||
| _1M4 un||bil^'on | |||||
| _0and i | _0and i | ||||
| _dpt kon | _dpt kon | ||||
| // unstressed words | // unstressed words | ||||
| lo $u | lo $u | ||||
| la $u | |||||
| los $u | |||||
| las $u | |||||
| ne $u | |||||
| nes $u | |||||
| me $u | |||||
| te $u | |||||
| se $u | |||||
| le $u | |||||
| les $u |
| _#th T | _#th T | ||||
| _ord T // default ending | _ord T // default ending | ||||
| _1o f'3: | _1o f'3: | ||||
| ?5 _1o f'IR | |||||
| _2o s'Ek | _2o s'Ek | ||||
| _3o T'3: | _3o T'3: | ||||
| ?5 _3o T'IR | |||||
| _5o f'If | _5o f'If | ||||
| _20o tw'Enti@ | _20o tw'Enti@ | ||||
| _30o T'3:ti@ | _30o T'3:ti@ | ||||
| ?3 _30o T'IRti@ | |||||
| _40o f'o@ti@ | _40o f'o@ti@ | ||||
| _50o f'Ifti@ | _50o f'Ifti@ | ||||
| _60o s'Iksti@ | _60o s'Iksti@ | ||||
| apprentice a#prEnt2Is | apprentice a#prEnt2Is | ||||
| approximate a#pr0ksIm@t $only | approximate a#pr0ksIm@t $only | ||||
| approximate a#pr0ksImeIt $verb | approximate a#pr0ksImeIt $verb | ||||
| aqueduct akwI#dVkt | |||||
| arab ar@b | arab ar@b | ||||
| arabic $1 | arabic $1 | ||||
| arable ara#b@L | arable ara#b@L | ||||
| bunion bVnI2@n | bunion bVnI2@n | ||||
| bureaucracy bjU@'0kr@si | bureaucracy bjU@'0kr@si | ||||
| bursar b3:s3 | bursar b3:s3 | ||||
| ?5 bursar bVRs3 | |||||
| bus bVs | bus bVs | ||||
| buses bVsI#z | buses bVsI#z | ||||
| busily bIzI2lI $verbf | busily bIzI2lI $verbf | ||||
| coincide koUIns'aId | coincide koUIns'aId | ||||
| cojones k@hoUneIs | cojones k@hoUneIs | ||||
| coliseum k0l@s'i:@m | coliseum k0l@s'i:@m | ||||
| collage k0l'A:Z | |||||
| college k0lI2dZ | college k0lI2dZ | ||||
| collegiate k@li:dZI@t | collegiate k@li:dZI@t | ||||
| colloquial k@loUkwI@L | colloquial k@loUkwI@L | ||||
| comely kVmlI // comeliness | comely kVmlI // comeliness | ||||
| comer kVm3 | comer kVm3 | ||||
| comet k0mI2t | comet k0mI2t | ||||
| commandant $alt1 | |||||
| commence k@mEns | commence k@mEns | ||||
| commend k@mEnd | commend k@mEnd | ||||
| comment k0mEnt | comment k0mEnt | ||||
| conduct $verb | conduct $verb | ||||
| cone koUn | cone koUn | ||||
| conical $1 | conical $1 | ||||
| confidant $alt1 | |||||
| conflict $1 $onlys | conflict $1 $onlys | ||||
| conflict $verb | conflict $verb | ||||
| conger k0Ng3 | conger k0Ng3 | ||||
| depot dEpoU | depot dEpoU | ||||
| ?3 depot di:poU | ?3 depot di:poU | ||||
| derange dI2reIndZ | derange dI2reIndZ | ||||
| descant dEskant | |||||
| descry dI2skreI | descry dI2skreI | ||||
| desert dI2z3:t | desert dI2z3:t | ||||
| desert dEs3t $only | desert dEs3t $only | ||||
| galaxy gala#ksi | galaxy gala#ksi | ||||
| galileo galI2l'eIoU | galileo galI2l'eIoU | ||||
| galore $alt3 | galore $alt3 | ||||
| gallivant $alt1 | |||||
| ?3 garage ga#rA:Z | ?3 garage ga#rA:Z | ||||
| garish ge@rIS | garish ge@rIS | ||||
| garote ga#r0t | |||||
| garotte ga#r0t | |||||
| garrot ga#r0t | |||||
| gases gasI#z | gases gasI#z | ||||
| gauche goUS | gauche goUS | ||||
| gauge geIdZ | gauge geIdZ | ||||
| predicate prEdI2keIt | predicate prEdI2keIt | ||||
| preface prEf@s | preface prEf@s | ||||
| preferably prEf@-r@blI $verbf | preferably prEf@-r@blI $verbf | ||||
| prelate prEl@t | |||||
| prelude prElju:d | prelude prElju:d | ||||
| ?3 prelude preIlu:d | ?3 prelude preIlu:d | ||||
| premier prEmI3 | premier prEmI3 | ||||
| punative pju:n@tIv | punative pju:n@tIv | ||||
| puny pju:ni | puny pju:ni | ||||
| purist pju:r-Ist | purist pju:r-Ist | ||||
| purport p3:p'o@t | |||||
| purportedly p3p'o@tI2dlI | |||||
| purport $2 | |||||
| purportedly $2 | |||||
| pyjama p@dZA:m@ | pyjama p@dZA:m@ | ||||
| pyrites paIr'aIti:z | pyrites paIr'aIti:z | ||||
| pythagoras paIT'ag@r@s | pythagoras paIT'ag@r@s | ||||
| saucepan sO:sp@n | saucepan sO:sp@n | ||||
| saudi saUdi | saudi saUdi | ||||
| saute sO:teI | saute sO:teI | ||||
| ?3 savant sa#vA:nt | |||||
| says sEz | says sEz | ||||
| scaly skeIlI | scaly skeIlI | ||||
| salmon sam@n | salmon sam@n | ||||
| sciatica saI'atIk@ | sciatica saI'atIk@ | ||||
| sclera skli@r | sclera skli@r | ||||
| scourge sk3:dZ | scourge sk3:dZ | ||||
| ?5 scourge skVRdZ | |||||
| scrotum skroUt@m | scrotum skroUt@m | ||||
| seabed si:bEd | seabed si:bEd | ||||
| sealion si:laI@n | sealion si:laI@n | ||||
| sofa soUf@ | sofa soUf@ | ||||
| soiree swA:reI | soiree swA:reI | ||||
| sojourn soUdZ3:n | sojourn soUdZ3:n | ||||
| ?5 sojourn soUdZVRn | |||||
| solder s0ld3 | solder s0ld3 | ||||
| ?3 solder sA:d3 | ?3 solder sA:d3 | ||||
| soldier soUldZ3 | soldier soUldZ3 | ||||
| subside s@bsaId | subside s@bsaId | ||||
| subtly sVt@lI $verbf | subtly sVt@lI $verbf | ||||
| suede sweId | suede sweId | ||||
| suerte swe@rteI | |||||
| suet su:I2t | suet su:I2t | ||||
| suffice s@faIs | suffice s@faIs | ||||
| suffuse $2 | suffuse $2 | ||||
| suppose $2 | suppose $2 | ||||
| suprise $2 // misspell | suprise $2 // misspell | ||||
| surest SU@@st | surest SU@@st | ||||
| surplus s3:pl@s | |||||
| surrogate sVr@geIt | surrogate sVr@geIt | ||||
| ?3 surrogate s3:@g@t | ?3 surrogate s3:@g@t | ||||
| survey s3:veI $onlys | survey s3:veI $onlys | ||||
| thousand TaUz@nd | thousand TaUz@nd | ||||
| throughout $2 | throughout $2 | ||||
| thursday T3:zdeI | thursday T3:zdeI | ||||
| ?5 thursday TVRzdeI | |||||
| tidal taId@L | tidal taId@L | ||||
| tidy taIdi | tidy taIdi | ||||
| tierra tI'e@r@ | tierra tI'e@r@ | ||||
| truest tru:@st | truest tru:@st | ||||
| tryst trIst | tryst trIst | ||||
| tudor tju:d3 | tudor tju:d3 | ||||
| turntable t3:nt2eIb@L | |||||
| turntable $alt1 | |||||
| tulip tju:lIp | tulip tju:lIp | ||||
| turnkey t3:nki: | turnkey t3:nki: | ||||
| ?5 turnkey tVRnki: | ?5 turnkey tVRnki: | ||||
| wordprocessor $2 | wordprocessor $2 | ||||
| wordprocess $2 | wordprocess $2 | ||||
| workshy w3:kSaI | workshy w3:kSaI | ||||
| ?5 workshy wVRkSaI | |||||
| workstation w'3:kst,eIS@n | workstation w'3:kst,eIS@n | ||||
| ?5 workstation w'VRkst,eIS@n | ?5 workstation w'VRkst,eIS@n | ||||
| worktable $alt1 | worktable $alt1 | ||||
| Leipzig laIpsIg | Leipzig laIpsIg | ||||
| Leone li:'oUn | Leone li:'oUn | ||||
| Lesotho l@s'u:tu: | Lesotho l@s'u:tu: | ||||
| Levant l@vant | |||||
| Liberia laIb'i@ri:@ | Liberia laIb'i@ri:@ | ||||
| Lima li:ma# | Lima li:ma# | ||||
| Ljubljana lju:blj'A:n@ | Ljubljana lju:blj'A:n@ | ||||
| Tikal tI2kA:l | Tikal tI2kA:l | ||||
| Timor ti:mo@ | Timor ti:mo@ | ||||
| Tokyo toUkIoU | Tokyo toUkIoU | ||||
| Topeka toUp'i:k@ | |||||
| Toronto t@r0ntoU | Toronto t@r0ntoU | ||||
| Toulouse tu:l'u:z | Toulouse tu:l'u:z | ||||
| ?3 Tunisia tu:n'i:Z@ | ?3 Tunisia tu:n'i:Z@ | ||||
| Bambi bambi: | Bambi bambi: | ||||
| Barack ba#rA:k | Barack ba#rA:k | ||||
| Barbara bA@b@r@ | Barbara bA@b@r@ | ||||
| Bartholomew bA@T'0l@mju: | |||||
| Benjamin bEndZ@mI#n | Benjamin bEndZ@mI#n | ||||
| Benoit bEnw'A: | Benoit bEnw'A: | ||||
| Bernard b3:n@d | Bernard b3:n@d | ||||
| Conrad $1 | Conrad $1 | ||||
| Crichton kraIt@n | Crichton kraIt@n | ||||
| Curtis k3:tI#s | Curtis k3:tI#s | ||||
| ?5 Curtis kVRtI#s | |||||
| Dana deIn@ | Dana deIn@ | ||||
| Daphne dafni | Daphne dafni | ||||
| Darryl dar@L | Darryl dar@L | ||||
| Ramirez ra#mi@3rEz | Ramirez ra#mi@3rEz | ||||
| Reagan reIg@n | Reagan reIg@n | ||||
| Reid ri:d | Reid ri:d | ||||
| Remi r@ni: | |||||
| Remi r@mi: | |||||
| Reuter rOIt3 | Reuter rOIt3 | ||||
| Rivera rI2ve@r@ | Rivera rI2ve@r@ | ||||
| Rizzoli rI2zoUli | Rizzoli rI2zoUli |
| hum) an (_ @n | hum) an (_ @n | ||||
| &) an (ty_ @n | &) an (ty_ @n | ||||
| &) an (t_ @n | &) an (t_ @n | ||||
| &) an (t_$w_alt an | |||||
| ?8 &) an (t_ a#n | ?8 &) an (t_ a#n | ||||
| _f) an (at a#n | _f) an (at a#n | ||||
| pl) an (t_ an | pl) an (t_ an | ||||
| de (rog dI2 | de (rog dI2 | ||||
| de (rACatio dE | de (rACatio dE | ||||
| _) des (@ dI2s | _) des (@ dI2s | ||||
| des (ca dE | |||||
| des (ec dEs | des (ec dEs | ||||
| des (eg d%i:s | des (eg d%i:s | ||||
| dese (l d,i:sI2 | dese (l d,i:sI2 | ||||
| ch) eese i:z | ch) eese i:z | ||||
| eeze (@ i:z | eeze (@ i:z | ||||
| d) e (fault i: | d) e (fault i: | ||||
| _) e (ffac %I | |||||
| e (ffec %I | e (ffec %I | ||||
| e (ffic %I | e (ffic %I | ||||
| efier (_ I2faI3 | efier (_ I2faI3 | ||||
| &ph) es (_S1 z | &ph) es (_S1 z | ||||
| neri) es (_S2i z | neri) es (_S2i z | ||||
| &s) es (_S1 I#z | &s) es (_S1 I#z | ||||
| &us) es (_S2e I#z | |||||
| us) es (_S2e I#z | |||||
| lus) es (_S2 I#z | |||||
| &rus) es (_S2 I#z | &rus) es (_S2 I#z | ||||
| &tus) es (_S2 I#z | &tus) es (_S2 I#z | ||||
| &ss) es (_S2 I#z | &ss) es (_S2 I#z | ||||
| for (see f%O@ | for (see f%O@ | ||||
| for (ward f'o@ // straightforward | for (ward f'o@ // straightforward | ||||
| ft (en f | ft (en f | ||||
| &) ful (_S3 f@L | |||||
| &) fully (_S5 f@li | |||||
| &) fulness (_S7 f@Ln@s | |||||
| .group g | .group g | ||||
| g g | g g | ||||
| gh (an g | gh (an g | ||||
| gm (_ m | gm (_ m | ||||
| gn (_ n | gn (_ n | ||||
| _poi) gn nj | |||||
| _) gnu g@nu: | _) gnu g@nu: | ||||
| hun) g g | hun) g g | ||||
| g (ear g | g (ear g | ||||
| gei (st_ gaI | |||||
| %A) g (er g | %A) g (er g | ||||
| g (et g | g (et g | ||||
| g (ette_ dZ | g (ette_ dZ | ||||
| er) g (et dZ | er) g (et dZ | ||||
| for) ge (t gE | for) ge (t gE | ||||
| bo) g (Ey g | bo) g (Ey g | ||||
| _) gia (@@ dZa# | |||||
| _) g (iant dZ | |||||
| &) gia (_ dZ@ | &) gia (_ dZ@ | ||||
| &) gia (C_ dZ@ | &) gia (C_ dZ@ | ||||
| go) g (ic_ g | go) g (ic_ g | ||||
| l) im Im | l) im Im | ||||
| _pr) im (a aIm | _pr) im (a aIm | ||||
| sh) im (a_ 'i:m | sh) im (a_ 'i:m | ||||
| image ImI2dZ | |||||
| imag (e ImI2dZ | |||||
| l) ime aIm | l) ime aIm | ||||
| d) ime (ns aImE | d) ime (ns aImE | ||||
| im (ent+ Im | im (ent+ Im | ||||
| c) is (_ Is | c) is (_ Is | ||||
| @@m) is (_ Is | @@m) is (_ Is | ||||
| am) is (_S1 z | am) is (_S1 z | ||||
| v) is (_ Is | |||||
| @Cs) is (_ =Is | @Cs) is (_ =Is | ||||
| &) is (abl aIz | &) is (abl aIz | ||||
| isa (tion aIzeI | isa (tion aIzeI | ||||
| oi (c oUI2 | oi (c oUI2 | ||||
| oi (ce OI | oi (ce OI | ||||
| oi (ck OI | oi (ck OI | ||||
| oi (zA oUaI | |||||
| c) o (inci %oU | c) o (inci %oU | ||||
| o (ing oU | o (ing oU | ||||
| d) o (ing u: | d) o (ing u: | ||||
| pl) or o@ | pl) or o@ | ||||
| m) or (al 0r | m) or (al 0r | ||||
| w) or (K 3: | w) or (K 3: | ||||
| ?5 w) or VR | |||||
| ?5 w) or (K VR | |||||
| w) or (m 3: | w) or (m 3: | ||||
| ?5 w) or (m VR | ?5 w) or (m VR | ||||
| w) or (se 3: | w) or (se 3: | ||||
| _) pre (C@ pr%I | _) pre (C@ pr%I | ||||
| _) pre (C% prE | _) pre (C% prE | ||||
| _) prea (ch pri: | _) prea (ch pri: | ||||
| _) pre (ad pr%i: | |||||
| _) pre (am pri: | _) pre (am pri: | ||||
| _) pre (cinc pri: | _) pre (cinc pri: | ||||
| pre (cio prE | pre (cio prE | ||||
| _) pre (coP3 pr,i: | _) pre (coP3 pr,i: | ||||
| preda (to prEd@ | preda (to prEd@ | ||||
| prede (ces pri:dI | prede (ces pri:dI | ||||
| _) pre (diP3 pr%i | |||||
| _) pre (diP3 pr%i: | |||||
| _) pre (dic pr%I | _) pre (dic pr%I | ||||
| _) pre (em pr%i: | _) pre (em pr%i: | ||||
| _) pre (fec pri: | _) pre (fec pri: | ||||
| _) tera tEr@ | _) tera tEr@ | ||||
| te (rrest t2@ | te (rrest t2@ | ||||
| r) tga (g gI | r) tga (g gI | ||||
| &) tia (_ S@ | |||||
| &s) tia (_ tS@ | |||||
| @) t (ia S | @) t (ia S | ||||
| pi) t (ia t | |||||
| is) t (ian+ t | |||||
| &) tian (_ =S@n | |||||
| _) tian tjan | |||||
| &) tial S@L | |||||
| &s) tial tj@L | |||||
| &) ti (ali SI | |||||
| i) tia (liL06 S@ | |||||
| &) tien S@n | |||||
| &) tience S@ns | |||||
| t (ime_ t2 | |||||
| &) tion S=@n | |||||
| &s) tion tS@n | |||||
| ?8 &) tion S=Vn | |||||
| ?8 &s) tion tSVn | |||||
| tion (al S=@-n | |||||
| &) tious S=@s | |||||
| AC) tive (_ =tIv | |||||
| s) t (l ? | s) t (l ? | ||||
| to (morr t@ | to (morr t@ | ||||
| _) to (nn tV | _) to (nn tV | ||||
| _) two tu: | _) two tu: | ||||
| ttu (r t@ | ttu (r t@ | ||||
| @) tu (al tSu: | @) tu (al tSu: | ||||
| @) tu (at tSu: | |||||
| _sta) tu tSu: | _sta) tu tSu: | ||||
| ?3 _sta) tu (to tS@ | ?3 _sta) tu (to tS@ | ||||
| c) tu (al_ =tSu: | c) tu (al_ =tSu: | ||||
| @) tu (lat =tSU | @) tu (lat =tSU | ||||
| ?3 tu (Ant tSu: | ?3 tu (Ant tSu: | ||||
| ?3 tu (Ancy tSu: | ?3 tu (Ancy tSu: | ||||
| tu (ous tSu: | tu (ous tSu: | ||||
| @) tur (A tS@r | @) tur (A tS@r | ||||
| @) tur (al_ tS=@r | @) tur (al_ tS=@r | ||||
| _) them D%Em | _) them D%Em | ||||
| _) the (mA Ti: | _) the (mA Ti: | ||||
| .group ti | |||||
| &) tia (_ S@ | |||||
| &s) tia (_ tS@ | |||||
| propi) ti (a tI | |||||
| ti (ac tI | |||||
| &) tian (_ =S@n | |||||
| &s) tian (_ tS@n | |||||
| _) tian tjan | |||||
| &) tial S@L | |||||
| &s) tial tj@L | |||||
| &) ti (ali SI | |||||
| i) tia (liL06 S@ | |||||
| &) tien S@n | |||||
| &) tience S@ns | |||||
| ti (me_ t2aI | |||||
| &) tion S=@n | |||||
| &s) tion tS@n | |||||
| ?8 &) tion S=Vn | |||||
| ?8 &s) tion tSVn | |||||
| tion (al S=@-n | |||||
| &) tious S=@s | |||||
| AC) tive (_ =tIv | |||||
| .group u | .group u | ||||
| u V | u V | ||||
| man) u ju: | man) u ju: | ||||
| _) z (wY z | _) z (wY z | ||||
| @) zales (_ z'A:l@s | @) zales (_ z'A:l@s | ||||
| zei zaI | |||||
| zes (_ zI2z | zes (_ zI2z | ||||
| zh Z | zh Z | ||||
| zu (_ =zu: | zu (_ =zu: |
| _) اصغر (آL09L09P4@ asq1aR | _) اصغر (آL09L09P4@ asq1aR | ||||
| _) ابو (L04L09L09P3@ abu | _) ابو (L04L09L09P3@ abu | ||||
| _) ابو (آL09L09P3@ abu | _) ابو (آL09L09P3@ abu | ||||
| _) ابوال (L04L09L09P5@ abol' | |||||
| _) ابوال (آL09L09P5@ abol' | |||||
| // Suffixes ا | // Suffixes ا | ||||
| L09L04) الله (_Sm4 ollAh | L09L04) الله (_Sm4 ollAh | ||||
| L09L04) انداز (_Sm5 andAz | L09L04) انداز (_Sm5 andAz | ||||
| L09L04) انگیز (_Sm5 angiz | L09L04) انگیز (_Sm5 angiz | ||||
| L09L04) اباد (_Sm4 AbAd | L09L04) اباد (_Sm4 AbAd | ||||
| L09L09) امیر (_Sm4 amiR | |||||
| L09L09) اکبر (_Sm4 akbaR | |||||
| L09L09) اصغر (_Sm4 asq1aR | |||||
| // Special passive pronouns eg. خوابانده | // Special passive pronouns eg. خوابانده | ||||
| l09l09l03) انده (_Sm4 Ande: | l09l09l03) انده (_Sm4 Ande: | ||||
| l09l09l03) اندۀ (_Sm4 Andeje | l09l09l03) اندۀ (_Sm4 Andeje | ||||
| _) چار (آL09L09P3@ 'tSAR | _) چار (آL09L09P3@ 'tSAR | ||||
| _) چهار (L04L09L09P4@ 'tSAhAR | _) چهار (L04L09L09P4@ 'tSAhAR | ||||
| _) چهار (آL09L09P4@ 'tSAhAR | _) چهار (آL09L09P4@ 'tSAhAR | ||||
| _) چند (L04L09L09P3@ 'tSAand | |||||
| _) چند (آL09L09P3@ 'tSAand | |||||
| _) چند (L04L09L09P3@ 'tSand | |||||
| _) چند (آL09L09P3@ 'tSand | |||||
| // Suffixes چ | // Suffixes چ | ||||
| L09L09L09) چی (_Sm2 tSi | L09L09L09) چی (_Sm2 tSi | ||||
| _) خویش (آL09L09P4@ xiS | _) خویش (آL09L09P4@ xiS | ||||
| _) خان (L04L09L09P3@ xAn | _) خان (L04L09L09P3@ xAn | ||||
| _) خان (آL09L09P3@ xAn | _) خان (آL09L09P3@ xAn | ||||
| _) خواهش (L04L09L09P5@ xAheS | |||||
| _) خواهش (آL09L09P5@ xAheS | |||||
| _) خواهد (L04L09L09P5@ xAhad | |||||
| _) خواهد (آL09L09P5@ xAhad | |||||
| _) خواهید (L04L09L09P6@ xAhid | |||||
| _) خواهید (آL09L09P6@ xAhid | |||||
| // suffixes خ | // suffixes خ | ||||
| L09L09) خر (_Sm2 xaR | L09L09) خر (_Sm2 xaR | ||||
| L09L09) خوش (_Sm3 xoS | L09L09) خوش (_Sm3 xoS | ||||
| L09L09) خیز (_Sm3 xiz | L09L09) خیز (_Sm3 xiz | ||||
| L09L09) خواست (_Sm5 xAst | L09L09) خواست (_Sm5 xAst | ||||
| L09L09) خواب (_Sm4 xAb | |||||
| // arabic form of words (Babs) خ | // arabic form of words (Babs) خ | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| L09L09) دست (_Sm3 dast | L09L09) دست (_Sm3 dast | ||||
| L09L09) درد (_Sm3 daRd | L09L09) درد (_Sm3 daRd | ||||
| L09L09) دوش (_Sm3 duS | L09L09) دوش (_Sm3 duS | ||||
| L09L09) دهی (_Sm3 dehi | |||||
| // arabic form of words (Babs) د | // arabic form of words (Babs) د | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| L09L09) زده (_+Sm3 zade: | L09L09) زده (_+Sm3 zade: | ||||
| L09L09) زدۀ (_+Sm3 zadeje | L09L09) زدۀ (_+Sm3 zadeje | ||||
| L09L09) زدن (_Sm3 zadan | L09L09) زدن (_Sm3 zadan | ||||
| L09L09) زدا (_Sm3 zodA | |||||
| // arabic form of words (Babs) ز | // arabic form of words (Babs) ز | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| L09L09L09L09) ص (L03L09L09L09_ sa | L09L09L09L09) ص (L03L09L09L09_ sa | ||||
| // Prefixes ص | // Prefixes ص | ||||
| _) صاحب (L04L09L09P4@ saheb | |||||
| _) صاحب (آL09L09P4@ saheb | |||||
| _) صاحب (L04L09L09P4@ sAheb | |||||
| _) صاحب (آL09L09P4@ sAheb | |||||
| _) صدر (L04L09L09P5@ sadr | _) صدر (L04L09L09P5@ sadr | ||||
| _) صدر (آL09L09P5@ sadr | _) صدر (آL09L09P5@ sadr | ||||
| // Suffixes ط | // Suffixes ط | ||||
| L09L09) طلب (_Sm3 talab | L09L09) طلب (_Sm3 talab | ||||
| L09L09) طلبان (_Sm5 talabAn | |||||
| // arabic form of words (Babs) ط | // arabic form of words (Babs) ط | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| // Prefixes ع | // Prefixes ع | ||||
| _) عبد (L04L09L09P3@ 'a:bd | _) عبد (L04L09L09P3@ 'a:bd | ||||
| _) عبد (آL09L09P3@ 'a:bd | _) عبد (آL09L09P3@ 'a:bd | ||||
| _) عبدال (L04L09L09P5@ abdol' | |||||
| _) عبدال (آL09L09P5@ abdol' | |||||
| _) علی (L04L09L09P3@ a:li | _) علی (L04L09L09P3@ a:li | ||||
| _) علی (آL09L09P3@ a:li | _) علی (آL09L09P3@ a:li | ||||
| L09L09) کنان (_Sm4 konAn | L09L09) کنان (_Sm4 konAn | ||||
| L09L09) کننده (_Sm5 konande: | L09L09) کننده (_Sm5 konande: | ||||
| L09L09) کنندۀ (_Sm5 konandeje | L09L09) کنندۀ (_Sm5 konandeje | ||||
| L09L09) کنندگان (_Sm7 konandegAn | |||||
| L09L09) کوچک (_Sm4 kutSak | L09L09) کوچک (_Sm4 kutSak | ||||
| // arabic form of words (Babs) ک | // arabic form of words (Babs) ک | ||||
| L09L09) گرفت (_Sm4 geReft | L09L09) گرفت (_Sm4 geReft | ||||
| L09L09) گشا (_Sm3 goSA | L09L09) گشا (_Sm3 goSA | ||||
| L09L09) گریز (_Sm4 goRiz | L09L09) گریز (_Sm4 goRiz | ||||
| L09L09) گسار (_Sm4 gosAR | |||||
| // arabic form of words (Babs) گ | // arabic form of words (Babs) گ | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| // Prefixes ل | // Prefixes ل | ||||
| // Suffixes ل | // Suffixes ل | ||||
| L09L09) لوژ (_Sm3 lotZ | |||||
| L09L09) لوژیک (_Sm5 lotZik | |||||
| L09L09) لوژ (_Sm3 loZ | |||||
| L09L09) لوژیک (_Sm5 loZik | |||||
| L09L09) لوگ (_Sm3 log | L09L09) لوگ (_Sm3 log | ||||
| // arabic form of words (Babs) ل | // arabic form of words (Babs) ل | ||||
| L09L09L03) ند (_NSm2 and | L09L09L03) ند (_NSm2 and | ||||
| L09L09) نوشت (_Sm4 neveSt | L09L09) نوشت (_Sm4 neveSt | ||||
| L09L09) نشین (_Sm4 neSin | L09L09) نشین (_Sm4 neSin | ||||
| L09L09) نکردن (_Sm5 nakaRdan | |||||
| L09L09L09) نشدن (_Sm4 naSodan | |||||
| // arabic form of words (Babs) ن | // arabic form of words (Babs) ن | ||||
| //فواعل eg. جوامع | //فواعل eg. جوامع | ||||
| _) هم (آL09P2@ ham | _) هم (آL09P2@ ham | ||||
| // suffixes ه | // suffixes ه | ||||
| L09L03) ه (_++NSm1 e: | |||||
| L09L01و) ه (_++NSm1 e: | |||||
| L09) هٔ (_Sm2 eje | |||||
| L09L03) ه (_++Sm1 e: | |||||
| L09L01و) ه (_++Sm1 e: | |||||
| L09L09) ها (_NSm2 hA | L09L09) ها (_NSm2 hA | ||||
| // Plural pronoun ها | // Plural pronoun ها | ||||
| L09L09) های (_NSm3 h'Aje | L09L09) های (_NSm3 h'Aje | ||||
| // Suffixes یی | // Suffixes یی | ||||
| L09L01) یی (_Sm2 i: | L09L01) یی (_Sm2 i: | ||||
| L09L03) یی (_Sm2 ii | |||||
| L09L03) یی (_Sm1 i | |||||
| L09L01) ییم (_NSm3 i:m | L09L01) ییم (_NSm3 i:m | ||||
| L09L03) ییم (_NSm3 iim | L09L03) ییم (_NSm3 iim | ||||
| L09L09L01) یید (_NSm3 i:d | L09L09L01) یید (_NSm3 i:d | ||||
| L09و) ی (L01 j | L09و) ی (L01 j | ||||
| L09ا) ی (L03 j | L09ا) ی (L03 j | ||||
| L09ا) ی (L01 j | L09ا) ی (L01 j | ||||
| L03) ی (وL03 j | |||||
| L03) ی (وL03 ij | |||||
| //otherwise | //otherwise | ||||
| L02) ی (_ j | L02) ی (_ j | ||||
| _ع) ی (L03_ j | _ع) ی (L03_ j | ||||
| L09L01) ی (_Sm1 j | L09L01) ی (_Sm1 j | ||||
| L09L09آ) ی (_Sm1 je | L09L09آ) ی (_Sm1 je | ||||
| L09L09ا) ی (_NSm1 je | L09L09ا) ی (_NSm1 je | ||||
| L09L09ی) ی (_Sm1 je | |||||
| L09L01و) ی (_Sm1 i | L09L01و) ی (_Sm1 i | ||||
| L09L03و) ی (_Sm1 je | L09L03و) ی (_Sm1 je | ||||
| L09L01) یند (_Sm3 jand | L09L01) یند (_Sm3 jand | ||||
| .group ء | .group ء | ||||
| ء ? | ء ? | ||||
| // suffixes ء | |||||
| L09L09L04) ء (_Sm1 ? | |||||
| L09L09ا) ء (_Sm1 | |||||
| L09L09آ) ء (_Sm1 | |||||
| //this character "ٔ" is defrent of "ء" and "ۀ" for example "دانشنامهٔ " | //this character "ٔ" is defrent of "ء" and "ۀ" for example "دانشنامهٔ " | ||||
| ٔ | ٔ | ||||
| // suffixes ٔ | // suffixes ٔ | ||||
| L09L09) ٔ (_Sm1 | |||||
| L09L03) ٔ (_NSm1 je | |||||
| .group ّ | .group ّ |
| alicerce $alt | alicerce $alt | ||||
| amanheça $alt2 | amanheça $alt2 | ||||
| amanheço $alt2 | amanheço $alt2 | ||||
| amanhecesse $alt2 | |||||
| amarelo $alt | amarelo $alt | ||||
| ameba $alt | ameba $alt | ||||
| amores $alt2 | amores $alt2 | ||||
| anoitecesse $alt2 | |||||
| anoiteça $alt2 | anoiteça $alt2 | ||||
| anoiteço $alt2 | anoiteço $alt2 | ||||
| apego $alt2 $noun | apego $alt2 $noun | ||||
| rock $alt | rock $alt | ||||
| rogas $alt | rogas $alt | ||||
| rolo $alt2 $noun | rolo $alt2 $noun | ||||
| rosna $alt | |||||
| rumores $alt2 | rumores $alt2 | ||||
| saleta $alt2 | saleta $alt2 | ||||
| sarjeta $alt | sarjeta $alt |
| .L04 a am e em o ue uem | .L04 a am e em o ue uem | ||||
| .L05 r ra ram re rem rdes | .L05 r ra ram re rem rdes | ||||
| .L06 ra ram ste re rem | .L06 ra ram ste re rem | ||||
| .L07 se sem te | |||||
| .L07 sse ssem ste | |||||
| .group a | .group a | ||||
| sf) e (ra_ E // esfera, biosfera | sf) e (ra_ E // esfera, biosfera | ||||
| //sort | //sort | ||||
| qu) e (brL04_ E | |||||
| _hosp) e (dL03_ E | |||||
| _estr) ei (L03_ EI | |||||
| _inv) e (jL04_ E | |||||
| _dec) e (pL04_ E | |||||
| _g) e (rL04_ E | |||||
| _op) e (rL04_ E | |||||
| _qu) e (rL04_ E | |||||
| _alt) e (rL04_ E | |||||
| _inv) e (rtL03_ e | |||||
| _f) e (rvL03_ e | |||||
| _p) e (scL03_ E | |||||
| _m) e (sclL04_ E | |||||
| _m) e (tL03_ e | |||||
| _com) e (tL03_ e | |||||
| _rem) e (tL03_ e | |||||
| _derr) e (tL03_ e | |||||
| _prom) e (tL03_ e | |||||
| _subm) e (tL03_ e | |||||
| _fiz) e (L05_ E | |||||
| _exag) e (L05_ E | |||||
| _houv) e (L05_ E | |||||
| _perd) e (L05_ e | |||||
| _soub) e (L05_ E | |||||
| _rend) e (L06_ e | |||||
| _vend) e (L06_ e | |||||
| _atend) e (L06_ e | |||||
| _compreend) e (L06_ e | |||||
| _entend) e (L06_ e | |||||
| _estend) e (L06_ e | |||||
| respond) e (L06_ e // cor- | |||||
| com) e (L07_ e | |||||
| _bat) e (L07_ e | |||||
| _beb) e (L07_ e | |||||
| _tem) e (L07_ e | |||||
| _viv) e (L07_ e | |||||
| colh) e (L07_ e // & es- | |||||
| _corr) e (L07_ e | |||||
| _eleg) e (L07_ e | |||||
| _morr) e (L07_ e | |||||
| _perd) e (L07_ e | |||||
| _sofr) e (L07_ e | |||||
| _torc) e (L07_ e | |||||
| _venc) e (L07_ e | |||||
| _adoec) e (L07_ e | |||||
| _aperd) e (L07_ e | |||||
| _merec) e (L07_ e | |||||
| conhec) e (L07_ e // & re- | |||||
| entend) e (L07_ e | |||||
| preend) e (L07_ e // sur- com- | |||||
| respond) e (L07_ e // cor- | |||||
| _convenc) e (L07_ e | |||||
| _entristec) e (L07_ e | |||||
| _envaidec) e (L07_ e | |||||
| _escond) e (L07_ e | |||||
| _obedec) e (L07_ e | |||||
| interromp) e (L07_ e | |||||
| intromet) e (L07_ e | |||||
| qu) e (brL04_ E | |||||
| _hosp) e (dL03_ E | |||||
| _estr) ei (L03_ EI | |||||
| _inv) e (jL04_ E | |||||
| _dec) e (pL04_ E | |||||
| _p) e (quL02_ E | |||||
| _s) e (quL02_ E | |||||
| l) e (que_ E | |||||
| _imp) e (rL03_ E | |||||
| _reit) e (rL03_ E | |||||
| _g) e (rL04_ E | |||||
| _op) e (rL04_ E | |||||
| _qu) e (rL04_ E | |||||
| _alt) e (rL04_ E | |||||
| _sup) e (rL04_ E | |||||
| _tol) e (rL04_ E | |||||
| _coop) e (rL04_ E | |||||
| _temp) e (rL04_ E | |||||
| _) e (rguL02_ E | |||||
| _alb) e (rguL02_ E | |||||
| _enx) e (rguL02_ E | |||||
| _inv) e (rtL03_ e | |||||
| _f) e (rvL03_ e | |||||
| _p) e (scL03_ E | |||||
| _m) e (sclL04 E | |||||
| _l) e (ssL02_ e | |||||
| _esp) e (ssL03_ e | |||||
| _m) e (tL03_ e | |||||
| _com) e (tL03_ e | |||||
| _rem) e (tL03_ e | |||||
| _derr) e (tL03_ e | |||||
| _prom) e (tL03_ e | |||||
| _subm) e (tL03_ e | |||||
| _comprom) e (tL03_ e | _comprom) e (tL03_ e | ||||
| _sol) e (trL03_ E | |||||
| _atr) e (vL03_ e | |||||
| scr) e (vL03_ e // e- in- pre- ree- | |||||
| _descr) e (vL03_ e | |||||
| _embel) e (zL04_ E | |||||
| _pr) e (zL04_ E | |||||
| _acont) e (çL01_ e | |||||
| _ado) e (çL03_ e | |||||
| _aqu) e (çL03_ e | |||||
| _car) e (çL03_ e | |||||
| _mer) e (çL03_ e | |||||
| _pad) e (çL03_ e | |||||
| _per) e (çL03_ e | |||||
| _esqu) e (çL03_ e | |||||
| _obed) e (çL03_ e | |||||
| _ofer) e (çL03_ e | |||||
| _aborr) e (çL03_ e | |||||
| _sol) e (trL03_ E | |||||
| _pen) e (trL04_ E | |||||
| scr) e (vL03_ e // e- in- pre- ree- | |||||
| _atr) e (vL03_ e | |||||
| _descr) e (vL03_ e | |||||
| _pr) e (zL04_ E | |||||
| _embel) e (zL04_ E | |||||
| par) e (çL01_ e // pareça, apareça | |||||
| _acont) e (çL01_ e | |||||
| _arref) e (çL01_ e | |||||
| _ado) e (çL03_ e | |||||
| _aqu) e (çL03_ e | |||||
| _car) e (çL03_ e | |||||
| _mer) e (çL03_ e | |||||
| _pad) e (çL03_ e | |||||
| _per) e (çL03_ e | |||||
| _esqu) e (çL03_ e | |||||
| _obed) e (çL03_ e | |||||
| _ofer) e (çL03_ e | |||||
| _aborr) e (çL03_ e | |||||
| _compar) e (çL03_ e | _compar) e (çL03_ e | ||||
| _desapar) e (çL03_ e | _desapar) e (çL03_ e | ||||
| _enfraqu) e (çL03_ e | _enfraqu) e (çL03_ e | ||||
| _enriqu) e (çL03_ e | _enriqu) e (çL03_ e | ||||
| _envaid) e (çL03_ e | _envaid) e (çL03_ e | ||||
| _esclar) e (çL03_ e | |||||
| _esclar) e (çL03_ e | |||||
| _reapar) e (çL03_ e | _reapar) e (çL03_ e | ||||
| _reconh) e (çL03_ e | _reconh) e (çL03_ e | ||||
| _coop) e (rL04_ E | |||||
| _sup) e (rL04_ E | |||||
| _imp) e (rL03_ E | |||||
| _temp) e (rL04_ E | |||||
| _tol) e (rL04_ E | |||||
| _esp) e (ssL03_ e | |||||
| _l) e (ssL02_ e | |||||
| _perd) e (L05_ e | |||||
| _rend) e (L06_ e | |||||
| _atend) e (L06_ e | |||||
| _pen) e (trL04_ E | |||||
| _reit) e (rL03_ E | |||||
| par) e (çL01_ e // pareça, apareça | |||||
| _arref) e (çL01_ e | |||||
| _beb) e (ssL02_ e | |||||
| com) e (ssL02_ e | |||||
| _corr) e (ssL02_ e | |||||
| _morr) e (sL07_ e | |||||
| _adoec) e (sL07_ e | |||||
| _torc) e (sL07_ e | |||||
| _viv) e (sL07_ e | |||||
| _eleg) e (sL07_ e | |||||
| respond) e (sL07_ e // & corres- | |||||
| entend) e (sL07_ e | |||||
| compreend) e (sL07_ e | |||||
| interromp) e (sL07_ e | |||||
| intromet) e (sL07_ e | |||||
| _escond) e (sL07_ e | |||||
| _bat) e (sL07_ e | |||||
| _sofr) e (sL07_ e | |||||
| l) e (que_ E | |||||
| _p) e (quL02_ E | |||||
| _s) e (quL02_ E | |||||
| _) e (rguL02_ E | |||||
| _enx) e (rguL02_ E | |||||
| _alb) e (rguL02_ E | |||||
| //endsort | //endsort | ||||
| _exag) e (L05_ E | |||||
| _fiz) e (L05_ E | |||||
| _houv) e (L05_ E | |||||
| _soub) e (L05_ E | |||||
| _compreend) e (L06_ e | |||||
| _correspond) e (L06_ e | |||||
| _entend) e (L06_ e | |||||
| _estend) e (L06_ e | |||||
| _respond)e (L06_ e | |||||
| _vend) e (L06_ e | |||||
| .group é | .group é | ||||
| é ''E | é ''E | ||||
| //sort | //sort | ||||
| _engl) o (bL01_ O | _engl) o (bL01_ O | ||||
| _esn) o (bL04_ O | |||||
| _deb) o (chL04_ O | |||||
| _desabr) o (chL04_ O | |||||
| _r) o (gL04_ O | _r) o (gL04_ O | ||||
| _adv) o (gL04_ O | _adv) o (gL04_ O | ||||
| _ref) o (gL04_ O | _ref) o (gL04_ O | ||||
| _ap) oi (L01_ OI | _ap) oi (L01_ OI | ||||
| _esc) o (lhL02_ O | |||||
| _m) o (lhL04_ O | _m) o (lhL04_ O | ||||
| _abs) o (lvL02_ O | _abs) o (lvL02_ O | ||||
| _env) o (lvL02_ O | _env) o (lvL02_ O | ||||
| c) o (rrL01_ o // escorra, incorra, corra, recorra | |||||
| _m) o (rrL01_ o | |||||
| p) ostos (_ Ost=Us# // dispostos etc. | |||||
| _esn) o (bL04_ O | |||||
| _esc) o (lhL02_ O | |||||
| _rev) o (lvL02_ O | _rev) o (lvL02_ O | ||||
| _desenv) o (lvL02_ O | _desenv) o (lvL02_ O | ||||
| _ent) o (pL02_ O | _ent) o (pL02_ O | ||||
| c) o (rrL01_ o // escorra, incorra, corra, recorra | |||||
| _m) o (rrL01_ o | |||||
| _r) o (snL01_ O | |||||
| _c) o (spL02_ O | _c) o (spL02_ O | ||||
| p) ostos (_ Ost=Us# // dispostos etc. | |||||
| //endsort | //endsort | ||||
| .group ô | .group ô |
| CALL I | CALL I | ||||
| endphoneme | endphoneme | ||||
| phoneme I# | |||||
| vowel starttype #@ endtype #@ | |||||
| ChangePhoneme(I2) | |||||
| endphoneme | |||||
| phoneme i // optional variant of [I] for end of words | phoneme i // optional variant of [I] for end of words | ||||
| vowel starttype #i endtype #e | vowel starttype #i endtype #e | ||||
| phoneme 3: | phoneme 3: | ||||
| vowel starttype #e endtype #@ | vowel starttype #e endtype #@ | ||||
| length 210 | |||||
| length 230 | |||||
| ChangeIfNotStressed(VR) // also need "replace 02 3: VR" in voice file | ChangeIfNotStressed(VR) // also need "replace 02 3: VR" in voice file | ||||
| ipa e | ipa e | ||||
| AppendPhoneme(r) | |||||
| FMT(vdiph2/e@) | |||||
| FMT(vowelr/e_r) | |||||
| endphoneme | endphoneme | ||||
| length 230 | length 230 | ||||
| ipa o | ipa o | ||||
| AppendPhoneme(r) | AppendPhoneme(r) | ||||
| FMT(vowelr/o_r) | |||||
| FMT(vowelr/oo_r) | |||||
| endphoneme | endphoneme | ||||
| phoneme i@3 | phoneme i@3 | ||||
| vowel starttype #i endtype #@ | vowel starttype #i endtype #@ | ||||
| ipa ɪ | ipa ɪ | ||||
| length 220 | |||||
| length 240 | |||||
| AppendPhoneme(r) | AppendPhoneme(r) | ||||
| FMT(vowelr/i_r) | FMT(vowelr/i_r) | ||||
| endphoneme | endphoneme |
| //==================================================== | |||||
| // Nepali (inherits from Hindi) | |||||
| //==================================================== | |||||
| phoneme V | |||||
| vowel starttype #@ endtype #@ | |||||
| length 160 | |||||
| ChangeIfNotStressed(@) | |||||
| IF nextPh(H) THEN | |||||
| FMT(vowel/@_low) | |||||
| ENDIF | |||||
| FMT(vowel/@_bck) | |||||
| endphoneme | |||||
| phoneme @3 // use a more front [@] after palatal consonants | |||||
| vowel starttype #@ endtype #@ | |||||
| length 140 | |||||
| FMT(vowel/@_3) | |||||
| endphoneme | |||||
| phoneme @/ | |||||
| vowel starttype #@ endtype #@ | |||||
| length 130 | |||||
| IF nextPh(H) THEN | |||||
| FMT(vowel/@_low) | |||||
| ENDIF | |||||
| FMT(vowel/@_bck) | |||||
| endphoneme | |||||
| phoneme i | |||||
| vowel starttype #i endtype #i | |||||
| length 160 | |||||
| IfNextVowelAppend(;) | |||||
| FMT(vowel/i) | |||||
| endphoneme | |||||
| phoneme e | |||||
| vowel starttype #e endtype #e | |||||
| length 180 | |||||
| FMT(vowel/e) | |||||
| endphoneme | |||||
| phoneme a | |||||
| vowel long starttype #a endtype #a | |||||
| length 230 | |||||
| FMT(vowel/aa_9) | |||||
| endphoneme | |||||
| phoneme o | |||||
| vowel starttype #o endtype #o | |||||
| length 180 | |||||
| FMT(vowel/o_mid) | |||||
| endphoneme | |||||
| phoneme u | |||||
| vowel starttype #u endtype #u | |||||
| length 160 | |||||
| FMT(vowel/u_bck) | |||||
| endphoneme | |||||
| // Diphthongs | |||||
| //=========== | |||||
| phoneme aI | |||||
| vowel long starttype #a endtype #i | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/aai) | |||||
| endphoneme | |||||
| phoneme aU | |||||
| vowel long starttype #a endtype #u | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/aau_3) | |||||
| endphoneme | |||||
| phoneme eI | |||||
| vowel long starttype #e endtype #i | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/eei) | |||||
| endphoneme | |||||
| phoneme eU | |||||
| vowel long starttype #e endtype #u | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/eu) | |||||
| endphoneme | |||||
| phoneme VI | |||||
| vowel long starttype #@ endtype #i | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/Vi) | |||||
| endphoneme | |||||
| phoneme VU | |||||
| vowel long starttype #@ endtype #u | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/Vu) | |||||
| endphoneme | |||||
| phoneme oI | |||||
| vowel long starttype #o endtype #i | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/oi) | |||||
| endphoneme | |||||
| phoneme oU | |||||
| vowel long starttype #o endtype #u | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/ou) | |||||
| endphoneme | |||||
| phoneme uI | |||||
| vowel long starttype #u endtype #i | |||||
| length 240 | |||||
| long | |||||
| FMT(vdiph/ui) | |||||
| endphoneme | |||||
| static FILE *f_phcontents; | static FILE *f_phcontents; | ||||
| static FILE *f_errors = stderr; | static FILE *f_errors = stderr; | ||||
| static FILE *f_prog_log = NULL; | static FILE *f_prog_log = NULL; | ||||
| static FILE *f_report; | |||||
| static FILE *f_in; | static FILE *f_in; | ||||
| static int duplicate_references = 0; | static int duplicate_references = 0; | ||||
| static int count_frames = 0; | static int count_frames = 0; | ||||
| static int error_count = 0; | static int error_count = 0; | ||||
| static int resample_count = 0; | |||||
| static int then_count = 0; | static int then_count = 0; | ||||
| static int after_if = 0; | static int after_if = 0; | ||||
| int n; | int n; | ||||
| REF_HASH_TAB *p; | REF_HASH_TAB *p; | ||||
| REF_HASH_TAB **list; | REF_HASH_TAB **list; | ||||
| FILE *f_report; | |||||
| const char *data_path; | const char *data_path; | ||||
| int prev_table; | int prev_table; | ||||
| int prev_mnemonic; | int prev_mnemonic; | ||||
| char fname[sizeof(path_source)+20]; | char fname[sizeof(path_source)+20]; | ||||
| if(f_report == NULL) | |||||
| return; | |||||
| // make a list of all the references and sort it | // make a list of all the references and sort it | ||||
| list = (REF_HASH_TAB **)malloc((count_references)* sizeof(REF_HASH_TAB *)); | list = (REF_HASH_TAB **)malloc((count_references)* sizeof(REF_HASH_TAB *)); | ||||
| if(list == NULL) | if(list == NULL) | ||||
| return; | return; | ||||
| sprintf(fname,"%scompile_report",path_source); | |||||
| f_report = fopen(fname,"w"); | |||||
| if(f_report == NULL) | |||||
| { | |||||
| free(list); | |||||
| return; | |||||
| } | |||||
| fprintf(f_report,"%d phoneme tables\n",n_phoneme_tabs); | |||||
| fprintf(f_report," new total\n"); | |||||
| fprintf(f_report,"\n%d phoneme tables\n",n_phoneme_tabs); | |||||
| fprintf(f_report," new total\n"); | |||||
| for(ix=0; ix<n_phoneme_tabs; ix++) | for(ix=0; ix<n_phoneme_tabs; ix++) | ||||
| { | { | ||||
| fprintf(f_report,"%8s %3d %4d\n",phoneme_tab_list2[ix].name, phoneme_tab_list2[ix].n_phonemes, n_phcodes_list[ix]+1); | fprintf(f_report,"%8s %3d %4d\n",phoneme_tab_list2[ix].name, phoneme_tab_list2[ix].n_phonemes, n_phcodes_list[ix]+1); | ||||
| if((fd_temp = mkstemp(fname_temp)) >= 0) | if((fd_temp = mkstemp(fname_temp)) >= 0) | ||||
| { | { | ||||
| close(fd_temp); | close(fd_temp); | ||||
| sprintf(command,"sox \"%s%s.wav\" -r %d -c 1 -w %s polyphase\n",path_source,fname,samplerate_native,fname_temp); | |||||
| sprintf(command,"sox \"%s%s.wav\" -c1 -t wav %s rate -h %d\n",path_source,fname,fname_temp,samplerate_native); | |||||
| if(system(command) < 0) | if(system(command) < 0) | ||||
| { | { | ||||
| error("Failed to resample: %s",command); | error("Failed to resample: %s",command); | ||||
| remove(fname_temp); | |||||
| return(0); | return(0); | ||||
| } | } | ||||
| } | } | ||||
| if(GetFileLength(fname_temp) <= 0) | |||||
| { | |||||
| error("Failed to resample: %s",command); | |||||
| remove(fname_temp); | |||||
| return(0); | |||||
| } | |||||
| f = fopen(fname_temp,"rb"); | f = fopen(fname_temp,"rb"); | ||||
| if(f == NULL) | if(f == NULL) | ||||
| { | { | ||||
| error("Can't read temp file: %s",fname_temp); | error("Can't read temp file: %s",fname_temp); | ||||
| return(0); | return(0); | ||||
| } | } | ||||
| if(f_report != NULL) | |||||
| fprintf(f_report, "resampled %s\n", fname); | |||||
| resample_count++; | |||||
| resample_wav = 1; | resample_wav = 1; | ||||
| fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length" | fseek(f,40,SEEK_SET); // skip past the WAV header, up to before "data length" | ||||
| } | } | ||||
| wxString report; | wxString report; | ||||
| wxString report_dict; | wxString report_dict; | ||||
| #ifdef MAKE_ENVELOPES | |||||
| make_envs(); | |||||
| #endif | |||||
| n_envelopes = 0; | n_envelopes = 0; | ||||
| error_count = 0; | error_count = 0; | ||||
| memset(markers_used,0,sizeof(markers_used)); | |||||
| memset(markers_used,0,sizeof(markers_used)); | |||||
| f_errors = stderr; | f_errors = stderr; | ||||
| if((f_errors = fopen_log(f_errors,fname,"w")) == NULL) | if((f_errors = fopen_log(f_errors,fname,"w")) == NULL) | ||||
| f_errors = stderr; | f_errors = stderr; | ||||
| sprintf(fname,"%s%s",path_source,"compile_report"); | |||||
| f_report = fopen_log(f_errors, fname,"w"); | |||||
| sprintf(fname,"%s/%s",path_home,"phondata-manifest"); | sprintf(fname,"%s/%s",path_home,"phondata-manifest"); | ||||
| if((f_phcontents = fopen_log(f_phcontents,fname,"w")) == NULL) | if((f_phcontents = fopen_log(f_phcontents,fname,"w")) == NULL) | ||||
| f_phcontents = stderr; | f_phcontents = stderr; | ||||
| fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references); | fprintf(f_errors,"\nRefs %d, Reused %d\n",count_references,duplicate_references); | ||||
| fclose(f_in); | fclose(f_in); | ||||
| fclose(f_phdata); | fclose(f_phdata); | ||||
| if(f_errors != stderr) | |||||
| fclose(f_errors); | |||||
| if(f_prog_log != NULL) | if(f_prog_log != NULL) | ||||
| fclose(f_prog_log); | fclose(f_prog_log); | ||||
| fclose(f_phindex); | fclose(f_phindex); | ||||
| LoadPhData(); | LoadPhData(); | ||||
| LoadVoice(voice_name2,0); | LoadVoice(voice_name2,0); | ||||
| CompileReport(); | CompileReport(); | ||||
| report_dict = CompileAllDictionaries(); | report_dict = CompileAllDictionaries(); | ||||
| //#ifdef deleted | |||||
| DrawEnvelopes(); | DrawEnvelopes(); | ||||
| //#endif | |||||
| if(gui_flag) | if(gui_flag) | ||||
| { | { | ||||
| delete progress; | delete progress; | ||||
| } | } | ||||
| report.Printf(_T("Compiled phonemes: %d errors."),error_count); | |||||
| if(resample_count > 0) | |||||
| { | |||||
| fprintf(f_errors, "\n%d WAV files resampled to %d Hz\n", resample_count, samplerate_native); | |||||
| report.Printf(_T("Compiled phonemes: %d errors, %d files resampled to %d Hz. "),error_count, resample_count, samplerate_native); | |||||
| } | |||||
| else | |||||
| { | |||||
| report.Printf(_T("Compiled phonemes: %d errors."),error_count); | |||||
| } | |||||
| if(f_errors != stderr) | |||||
| fclose(f_errors); | |||||
| if(error_count > 0) | if(error_count > 0) | ||||
| { | { | ||||
| report += _T(" See file: 'phsource/error_log'."); | report += _T(" See file: 'phsource/error_log'."); | ||||
| char buf[sizeof(path_source)+120]; | char buf[sizeof(path_source)+120]; | ||||
| error_count = 0; | error_count = 0; | ||||
| resample_count = 0; | |||||
| sprintf(fname_errors,"%s%s",path_source,"error_intonation"); | sprintf(fname_errors,"%s%s",path_source,"error_intonation"); | ||||
| if((f_errors = fopen(fname_errors,"w")) == NULL) | if((f_errors = fopen(fname_errors,"w")) == NULL) | ||||
| fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out); | fwrite(tune_data, n_tune_names, sizeof(TUNE), f_out); | ||||
| fclose(f_in); | fclose(f_in); | ||||
| fclose(f_out); | fclose(f_out); | ||||
| fclose(f_errors); | |||||
| report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tune_names, error_count); | report.Printf(_T("Compiled %d intonation tunes: %d errors."),n_tune_names, error_count); | ||||
| wxLogStatus(report); | wxLogStatus(report); |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| MNEM_TAB mnem_rules[] = { | MNEM_TAB mnem_rules[] = { | ||||
| {"unpr", 0x01}, | {"unpr", 0x01}, | ||||
| {"w_alt1", 0x11}, | |||||
| {"w_alt2", 0x12}, | {"w_alt2", 0x12}, | ||||
| {"w_alt3", 0x13}, | {"w_alt3", 0x13}, | ||||
| // {"w_alt4", 0x14}, | |||||
| {"w_alt", 0x11}, // note: put longer names before their sub-strings | {"w_alt", 0x11}, // note: put longer names before their sub-strings | ||||
| {"p_alt1", 0x21}, | |||||
| {"p_alt2", 0x22}, | {"p_alt2", 0x22}, | ||||
| {"p_alt3", 0x23}, | {"p_alt3", 0x23}, | ||||
| // {"p_alt4", 0x24}, | |||||
| {"p_alt", 0x21}, | {"p_alt", 0x21}, | ||||
| {NULL, -1} }; | {NULL, -1} }; | ||||
| items[n_items] = p_start = p; | items[n_items] = p_start = p; | ||||
| while((*p & 0xff) > ' ') | while((*p & 0xff) > ' ') | ||||
| { | { | ||||
| if (*p == '_') *p = ' '; // allow '_' for word break | |||||
| if (*p == '_') *p = ' '; // allow '_' for word break | |||||
| p++; | p++; | ||||
| } | } | ||||
| *p++ = 0; | *p++ = 0; |
| // set up indices into data_dictrules | // set up indices into data_dictrules | ||||
| InitGroups(tr); | InitGroups(tr); | ||||
| if(tr->groups1[0] == NULL) | |||||
| { | |||||
| fprintf(stderr,"Error in %s_rules, no default rule group\n",name); | |||||
| } | |||||
| // set up hash table for data_dictlist | // set up hash table for data_dictlist | ||||
| p = &(tr->data_dictlist[8]); | p = &(tr->data_dictlist[8]); | ||||
| if(word_flags & FLAG_UNPRON_TEST) | if(word_flags & FLAG_UNPRON_TEST) | ||||
| return(match1.end_type | 1); | return(match1.end_type | 1); | ||||
| #ifdef deleted | |||||
| // ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST | |||||
| if((match1.end_type & SUFX_UNPRON) && !(word_flags & FLAG_SUFFIX_REMOVED)) | |||||
| return(match1.end_type); | |||||
| #endif | |||||
| if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0)) | if((match1.phonemes[0] == phonSWITCH) && ((word_flags & FLAG_DONT_SWITCH_TRANSLATOR)==0)) | ||||
| { | { | ||||
| // an instruction to switch language, return immediately so we can re-translate | // an instruction to switch language, return immediately so we can re-translate |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2006 to 2007 by Jonathan Duddington * | |||||
| * Copyright (C) 2006 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| fclose(f_text); | fclose(f_text); | ||||
| } | } | ||||
| espeak_Synchronize(); | |||||
| if(espeak_Synchronize() != EE_OK) | |||||
| { | |||||
| fprintf(stderr, "espeak_Synchronize() failed, maybe error when opening output device\n"); | |||||
| exit(4); | |||||
| } | |||||
| if(f_phonemes_out != stdout) | if(f_phonemes_out != stdout) | ||||
| fclose(f_phonemes_out); // needed for WinCE | fclose(f_phonemes_out); // needed for WinCE |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2010 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| if(len > 0) | if(len > 0) | ||||
| { | { | ||||
| if(len > 1500) | if(len > 1500) | ||||
| len = 1500; // restrict length to pppppevent crash in wxLogMessage() | |||||
| len = 1500; // restrict length to prevent crash in wxLogMessage() | |||||
| msg = (char *)malloc(len+1); | msg = (char *)malloc(len+1); | ||||
| if(msg != NULL) | if(msg != NULL) | ||||
| { | { |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2007 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| } | } | ||||
| y1 = p->pitch1; | y1 = p->pitch1; | ||||
| y2 = p->pitch2; | y2 = p->pitch2; | ||||
| sprintf(buf,"Stress %s%d Amp %2d LenMod %2d Pitch %3d %3d %s PhFlags %.2x ", | |||||
| emphasized,p->stresslevel&0x7,p->amp,p->length,y1,y2,name,p->ph->phflags); | |||||
| sprintf(buf,"Stress %s%d Amp %2d StdLength %2d LengthMod %2d Pitch %3d %3d %s PhFlags %.2x ", | |||||
| emphasized,p->stresslevel&0x7,p->amp,p->std_length*2, p->length,y1,y2,name,p->ph->phflags); | |||||
| wxLogStatus(wxString(buf,wxConvLocal)); | wxLogStatus(wxString(buf,wxConvLocal)); | ||||
| } | } | ||||
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| static int synchronous_mode = 1; | static int synchronous_mode = 1; | ||||
| static int out_samplerate = 0; | static int out_samplerate = 0; | ||||
| static int voice_samplerate = 22050; | static int voice_samplerate = 22050; | ||||
| static espeak_ERROR err = EE_OK; | |||||
| t_espeak_callback* synth_callback = NULL; | t_espeak_callback* synth_callback = NULL; | ||||
| int (* uri_callback)(int, const char *, const char *) = NULL; | int (* uri_callback)(int, const char *, const char *) = NULL; | ||||
| sleep(1); | sleep(1); | ||||
| } | } | ||||
| out_samplerate = voice_samplerate; | out_samplerate = voice_samplerate; | ||||
| wave_init(voice_samplerate); | |||||
| if(!wave_init(voice_samplerate)) | |||||
| { | |||||
| err = EE_INTERNAL_ERROR; | |||||
| return(-1); | |||||
| } | |||||
| wave_set_callback_is_output_enabled( fifo_is_command_enabled); | wave_set_callback_is_output_enabled( fifo_is_command_enabled); | ||||
| my_audio = wave_open("alsa"); | my_audio = wave_open("alsa"); | ||||
| event_init(); | event_init(); | ||||
| } | } | ||||
| SHOW_TIME("LEAVE dispatch_audio\n"); | SHOW_TIME("LEAVE dispatch_audio\n"); | ||||
| return (a_wave_can_be_played==0); // 1 = stop synthesis | |||||
| return (a_wave_can_be_played==0); // 1 = stop synthesis, -1 = error | |||||
| } | } | ||||
| int param; | int param; | ||||
| int result; | int result; | ||||
| err = EE_OK; | |||||
| LoadConfig(); | LoadConfig(); | ||||
| WavegenInit(22050,0); // 22050 | WavegenInit(22050,0); // 22050 | ||||
| if((result = LoadPhData()) != 1) | if((result = LoadPhData()) != 1) | ||||
| { | { | ||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| finished = create_events((short *)outbuf, length, event_list, a_write_pos); | finished = create_events((short *)outbuf, length, event_list, a_write_pos); | ||||
| if(finished < 0) | |||||
| return EE_INTERNAL_ERROR; | |||||
| length = 0; // the wave data are played once. | length = 0; // the wave data are played once. | ||||
| #endif | #endif | ||||
| } | } | ||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| if (my_mode==AUDIO_OUTPUT_PLAYBACK) | if (my_mode==AUDIO_OUTPUT_PLAYBACK) | ||||
| { | { | ||||
| dispatch_audio(NULL, 0, NULL); // TBD: test case | |||||
| if(dispatch_audio(NULL, 0, NULL) < 0) // TBD: test case | |||||
| return err = EE_INTERNAL_ERROR; | |||||
| } | } | ||||
| else | else | ||||
| { | { | ||||
| ESPEAK_API espeak_ERROR espeak_Synchronize(void) | ESPEAK_API espeak_ERROR espeak_Synchronize(void) | ||||
| {//============================================= | {//============================================= | ||||
| espeak_ERROR berr = err; | |||||
| #ifdef USE_ASYNC | #ifdef USE_ASYNC | ||||
| SHOW_TIME("espeak_Synchronize > ENTER"); | SHOW_TIME("espeak_Synchronize > ENTER"); | ||||
| while (espeak_IsPlaying()) | while (espeak_IsPlaying()) | ||||
| usleep(20000); | usleep(20000); | ||||
| } | } | ||||
| #endif | #endif | ||||
| err = EE_OK; | |||||
| SHOW_TIME("espeak_Synchronize > LEAVE"); | SHOW_TIME("espeak_Synchronize > LEAVE"); | ||||
| return EE_OK; | |||||
| return berr; | |||||
| } // end of espeak_Synchronize | } // end of espeak_Synchronize | ||||
| #include "translate.h" | #include "translate.h" | ||||
| #include "wave.h" | #include "wave.h" | ||||
| const char *version_string = "1.46.34 12.Feb.13"; | |||||
| const char *version_string = "1.46.35 14.Feb.13"; | |||||
| const int version_phdata = 0x014631; | const int version_phdata = 0x014631; | ||||
| int option_device_number = -1; | int option_device_number = -1; | ||||
| memcpy(&worddata->prev_vowel, &plist[0], sizeof(PHONEME_LIST)); | memcpy(&worddata->prev_vowel, &plist[0], sizeof(PHONEME_LIST)); | ||||
| } | } | ||||
| plist->std_length = phdata->pd_param[i_SET_LENGTH]; | |||||
| } // end of InterpretPhoneme | } // end of InterpretPhoneme | ||||
| unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence | unsigned char newword; // bit 0=start of word, bit 1=end of clause, bit 2=start of sentence | ||||
| unsigned char pitch1; | unsigned char pitch1; | ||||
| unsigned char pitch2; | unsigned char pitch2; | ||||
| unsigned char std_length; | |||||
| } PHONEME_LIST; | } PHONEME_LIST; | ||||
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * | ||||
| return(0); | return(0); | ||||
| } | } | ||||
| #ifdef deleted | |||||
| // ?? allow $unpr while translating rules, not just on initial FLAG_UNPRON_TEST | |||||
| if(end_type & SUFX_UNPRON) | |||||
| { | |||||
| phonemes[0] = 0; // discard and retranslate as individual letters | |||||
| SpeakIndividualLetters(tr, wordx, phonemes, 0); | |||||
| strcpy(word_phonemes, phonemes); | |||||
| return(0); | |||||
| } | |||||
| #endif | |||||
| if((phonemes[0] == 0) && (end_phonemes[0] == 0)) | if((phonemes[0] == 0) && (end_phonemes[0] == 0)) | ||||
| { | { | ||||
| int wc; | int wc; |
| /*************************************************************************** | /*************************************************************************** | ||||
| * Copyright (C) 2005 to 2011 by Jonathan Duddington * | |||||
| * Copyright (C) 2005 to 2013 by Jonathan Duddington * | |||||
| * email: [email protected] * | * email: [email protected] * | ||||
| * * | * * | ||||
| * This program is free software; you can redistribute it and/or modify * | * This program is free software; you can redistribute it and/or modify * |
| static int pulse_running; | static int pulse_running; | ||||
| // wave.cpp (this file) | // wave.cpp (this file) | ||||
| void wave_port_init(int); | |||||
| int wave_port_init(int); | |||||
| void* wave_port_open(const char* the_api); | void* wave_port_open(const char* the_api); | ||||
| size_t wave_port_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); | size_t wave_port_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); | ||||
| int wave_port_close(void* theHandler); | int wave_port_close(void* theHandler); | ||||
| // wave_pulse.cpp | // wave_pulse.cpp | ||||
| int is_pulse_running(); | int is_pulse_running(); | ||||
| void wave_pulse_init(int); | |||||
| int wave_pulse_init(int); | |||||
| void* wave_pulse_open(const char* the_api); | void* wave_pulse_open(const char* the_api); | ||||
| size_t wave_pulse_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); | size_t wave_pulse_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize); | ||||
| int wave_pulse_close(void* theHandler); | int wave_pulse_close(void* theHandler); | ||||
| int wave_pulse_get_remaining_time(uint32_t sample, uint32_t* time); | int wave_pulse_get_remaining_time(uint32_t sample, uint32_t* time); | ||||
| // wrappers | // wrappers | ||||
| void wave_init(int srate) { | |||||
| int wave_init(int srate) { | |||||
| pulse_running = is_pulse_running(); | pulse_running = is_pulse_running(); | ||||
| if (pulse_running) | if (pulse_running) | ||||
| wave_pulse_init(srate); | |||||
| return wave_pulse_init(srate); | |||||
| else | else | ||||
| wave_port_init(srate); | |||||
| return wave_port_init(srate); | |||||
| } | } | ||||
| void* wave_open(const char* the_api) { | void* wave_open(const char* the_api) { | ||||
| //<wave_init | //<wave_init | ||||
| // TBD: the arg could be "alsa", "oss",... | // TBD: the arg could be "alsa", "oss",... | ||||
| void wave_init(int srate) | |||||
| int wave_init(int srate) | |||||
| { | { | ||||
| ENTER("wave_init"); | ENTER("wave_init"); | ||||
| PaError err; | PaError err; | ||||
| { | { | ||||
| SHOW_TIME("wave_init > Failed to initialise the PortAudio sound"); | SHOW_TIME("wave_init > Failed to initialise the PortAudio sound"); | ||||
| } | } | ||||
| return err == paNoError; | |||||
| } | } | ||||
| //> | //> | ||||
| // notdef USE_PORTAUDIO | // notdef USE_PORTAUDIO | ||||
| void wave_init(int srate) {} | |||||
| int wave_init(int srate) {} | |||||
| void* wave_open(const char* the_api) {return (void *)1;} | void* wave_open(const char* the_api) {return (void *)1;} | ||||
| size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | ||||
| int wave_close(void* theHandler) {return 0;} | int wave_close(void* theHandler) {return 0;} |
| extern int option_device_number; | extern int option_device_number; | ||||
| extern void wave_init(int samplerate); | |||||
| extern int wave_init(int samplerate); | |||||
| // TBD: the arg could be "alsa", "oss",... | // TBD: the arg could be "alsa", "oss",... | ||||
| extern void* wave_open(const char* the_api); | extern void* wave_open(const char* the_api); | ||||
| //> | //> | ||||
| //<wave_init | //<wave_init | ||||
| void wave_init(int srate) | |||||
| int wave_init(int srate) | |||||
| { | { | ||||
| ENTER("wave_init"); | ENTER("wave_init"); | ||||
| stream = NULL; | stream = NULL; | ||||
| wave_samplerate = srate; | wave_samplerate = srate; | ||||
| pulse_open(); | |||||
| return pulse_open() == PULSE_OK; | |||||
| } | } | ||||
| //> | //> | ||||
| // notdef USE_PULSEAUDIO | // notdef USE_PULSEAUDIO | ||||
| void wave_init() {} | |||||
| int wave_init() {} | |||||
| void* wave_open(const char* the_api) {return (void *)1;} | void* wave_open(const char* the_api) {return (void *)1;} | ||||
| size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | ||||
| int wave_close(void* theHandler) {return 0;} | int wave_close(void* theHandler) {return 0;} |
| // | // | ||||
| //<wave_init | //<wave_init | ||||
| void wave_init(int srate) { | |||||
| int wave_init(int srate) { | |||||
| ENTER("wave_init"); | ENTER("wave_init"); | ||||
| audio_info_t ainfo; | audio_info_t ainfo; | ||||
| SHOW("wave_init() sun_audio_fd: %d\n", sun_audio_fd); | SHOW("wave_init() sun_audio_fd: %d\n", sun_audio_fd); | ||||
| if (sun_audio_fd < 0) { | if (sun_audio_fd < 0) { | ||||
| return; | |||||
| return(0); | |||||
| } | } | ||||
| ioctl(sun_audio_fd, AUDIO_GETINFO, &ainfo); | ioctl(sun_audio_fd, AUDIO_GETINFO, &ainfo); | ||||
| if (ioctl(sun_audio_fd, AUDIO_SETINFO, &ainfo) == -1) { | if (ioctl(sun_audio_fd, AUDIO_SETINFO, &ainfo) == -1) { | ||||
| SHOW("wave_init() failed to set audio params: %s\n", strerror(errno)); | SHOW("wave_init() failed to set audio params: %s\n", strerror(errno)); | ||||
| close(sun_audio_fd); | close(sun_audio_fd); | ||||
| return; | |||||
| return(0); | |||||
| } | } | ||||
| return(1); | |||||
| } | } | ||||
| //> | //> |