Reglas de say.conf en español

423 views
Skip to first unread message

José Ferney Franco Baquero

unread,
Nov 19, 2010, 10:57:51 PM11/19/10
to aster...@googlegroups.com
Saludos lista.

Estuve mirando la configuración del archivo "say.conf" y me parece muy interesante y práctica. Sin embargo aún no he podido encontrar la configuración para español. ¿Alguno tiene alguna idea de donde podría buscar? Sino, no tendría problema con hacerlo, pero lo que no quisiera es hacer trabajo que ya se ha hecho.

José Ferney Franco Baquero

unread,
Dec 1, 2010, 8:50:19 AM12/1/10
to aster...@googlegroups.com
Hola

2010/11/19 José Ferney Franco Baquero <fer...@gmail.com>

Estuve mirando la configuración del archivo "say.conf" y me parece muy interesante y práctica. Sin embargo aún no he podido encontrar la configuración para español. ¿Alguno tiene alguna idea de donde podría buscar? Sino, no tendría problema con hacerlo, pero lo que no quisiera es hacer trabajo que ya se ha hecho.

Después de un tiempo trabajando en esto obtuve una configuración que funciona aparentemente bien con los números en español. Tal vez existan configuraciones mucho mejores, pero esta fue la que se me ocurrió para resolver el problema de pronunciar el uno correctamente. Por ejemplo: 51051 (cincuenta y *un* mil cintuenta y *uno*).
Otro uso muy interesante de say.conf es poder definir reglas para pronunciar números telefónicos. Sin necesidad de pronunciarlos digito a digito. Tal vez no sea muy importante para muchos pero en mi país los números se pronuncian agrupando dos y tres dígitos.

Cualquier observación para mejorar esta primera versión es bienvenida.


[es](date-base,digit-base)
    _[n]um:X. => num:r:${SAY}

    _[n]um:m:0. => num:m:${SAY:1}
    _[n]um:r:0. => num:r:${SAY:1}

    ; Regla para pronunciar "un"
    _[n]um:m:1 => digits/1m
    ; Reglas de numeros de un digito
    _[n]um:m:Z => digits/${SAY}
    _[n]um:r:X => digits/${SAY}

    ; Reglas para pronunciar 10, 20, etc.
    _[n]um:[rm]:Z0 => digits/${SAY}
    ; Reglas para pronunciar 'ventiun', 'treintaiun', etc.
    _[n]um:m:21 => digits/20-and, digits/1m
    _[n]um:m:N1 => digits/${SAY:0:1}0, digits/and, digits/1m
    ; Reglas especiales para los numeros '11-19' y '21-29'
    _[n]um:[rm]:[12]Z => digits/${SAY}
    ; Las siguientes dos lineas reemplazan la anterior si no se tienen los audios digits/2[1-9]
    ;_[n]um:[rn]:1Z => digits/${SAY}
    ;_[n]um:[rn]:2Z => digits/20-and, digits/${SAY:1}
    ; Reglas para numeros de dos digitos
    _[n]um:[rm]:NZ => digits/${SAY:0:1}0, digits/and, digits/${SAY:1}

    ; Regla especial para el numero 'cien'
    _[n]um:[rm]:Z00 => digits/${SAY}
    ; Regla para los numeros '101-199'
    _[n]um:r:1XX => digits/100-and, num:r:${SAY:1}
    _[n]um:m:1XX => digits/100-and, num:m:${SAY:1}
    ; Regla para los numeros '200-999'
    _[n]um:r:NXX => digits/${SAY:0:1}00, num:r:${SAY:1}
    _[n]um:m:NXX => digits/${SAY:0:1}00, num:m:${SAY:1}

    _[n]um:r:1XXX => digits/thousand, num:r:${SAY:1}
    _[n]um:m:1XXX => digits/thousand, num:m:${SAY:1}
    _[n]um:r:NXXX => digits/${SAY:0:1}, digits/thousand, num:r:${SAY:1}
    _[n]um:m:NXXX => digits/${SAY:0:1}, digits/thousand, num:m:${SAY:1}
    _[n]um:r:XXXXX => num:m:${SAY:0:2}, digits/thousand, num:r:${SAY:2}
    _[n]um:m:XXXXX => num:m:${SAY:0:2}, digits/thousand, num:m:${SAY:2}
    _[n]um:r:XXXXXX => num:m:${SAY:0:3}, digits/thousand, num:r:${SAY:3}
    _[n]um:m:XXXXXX => num:m:${SAY:0:3}, digits/thousand, num:m:${SAY:3}

    _[n]um:[rm]:1XXXXXX => digits/1m , digits/million, num:r:${SAY:1}
    _[n]um:[rm]:NXXXXXX => digits/${SAY:0:1}, digits/millions, num:r:${SAY:1}
    _[n]um:[rm]:XXXXXXXX => num:m:${SAY:0:2}, digits/millions, num:r:${SAY:2}
    _[n]um:[rm]:XXXXXXXXX => num:m:${SAY:0:3}, digits/millions, num:r:${SAY:3}
    _[n]um:[rm]:XXXXXXXXXX => num:m:${SAY:0:4}, digits/millions, num:r:${SAY:4}
    _[n]um:[rm]:XXXXXXXXXXX => num:m:${SAY:0:5}, digits/millions, num:r:${SAY:5}
    _[n]um:[rm]:XXXXXXXXXXXX => num:m:${SAY:0:6}, digits/millions, num:r:${SAY:6}

    _[n]um:[rm]:1XXXXXXXXXXXX => digits/1m, digits/billion, num:n:${SAY:1}
    _[n]um:[rm]:NXXXXXXXXXXXX => digits/${SAY:0:1}, digits/billions, num:n:${SAY:1}
    _[n]um:[rm]:XXXXXXXXXXXXXX => num:m:${SAY:0:2}, digits/billions, num:n:${SAY:2}
    _[n]um:[rm]:XXXXXXXXXXXXXXX => num:m:${SAY:0:3}, digits/billions, num:n:${SAY:3}
    _[n]um:[rm]:XXXXXXXXXXXXXXXX => num:m:${SAY:0:4}, digits/billions, num:n:${SAY:4}
    _[n]um:[rm]:XXXXXXXXXXXXXXXXX => num:m:${SAY:0:5}, digits/billions, num:n:${SAY:5}
    _[n]um:[rm]:XXXXXXXXXXXXXXXXXX => num:m:${SAY:0:6}, digits/billions, num:n:${SAY:6}

Fernando Villares

unread,
Dec 1, 2010, 9:20:17 AM12/1/10
to aster...@googlegroups.com
me parece excelente tu aporte....

--
Este email pertenece a la lista de Asterisk-ES (http://www.asterisk-es.org)
 
Entra ahora en el canal de irc de Asterisk-ES para charlar en directo sobre VoIP y
Asterisk: http://www.asterisk-es.org/
 
~~~~~ Normas de la lista Asterisk-ES: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
http://comunidad.asterisk-es.org/index.php?title=Lista:normas-asterisk-es
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Para anular la suscripción: asterisk-es...@googlegroups.com

Saúl Ibarra Corretgé

unread,
Dec 1, 2010, 9:54:59 AM12/1/10
to aster...@googlegroups.com
2010/12/1 José Ferney Franco Baquero <fer...@gmail.com>:

> e un tiempo trabajando en esto obtuve una configuración que funciona
> aparentemente bien con los números en español. Tal vez existan
> configuraciones mucho mejores, pero esta fue la que se me ocurrió para
> resolver el problema de pronunciar el uno correctamente. Por ejemplo: 51051
> (cincuenta y *un* mil cintuenta y *uno*).

Los errores de say puedes reportarlos al bugtracker de Asterisk para
que sean incluidos en trunk, en caso de que hayas corregido un fallo.

--
/Saúl
http://saghul.net | http://sipdoc.net

José Ferney Franco Baquero

unread,
Dec 1, 2010, 9:58:56 AM12/1/10
to aster...@googlegroups.com
Gracias

2010/12/1 Fernando Villares <fvil...@gmail.com>

me parece excelente tu aporte....

En caso de que alguien lo queira usar se debe hacer lo siguiente:
* Añadir las líneas enviadas al final del archivo say.conf.
* Recargar la configuración.
* Ejecutar "CLI> say load new" para indicar al asterisk que se utilizarán las reglas definidas en dicho archivo. 
* En el plan de marcación ejecutar la aplicación Playback(num:80|say).


José Ferney Franco Baquero

unread,
Dec 1, 2010, 10:10:10 AM12/1/10
to aster...@googlegroups.com
Hola

2010/12/1 Saúl Ibarra Corretgé <sag...@gmail.com>

Los errores de say puedes reportarlos al bugtracker de Asterisk para
que sean incluidos en trunk, en caso de que hayas corregido un fallo.

De hecho no me había fijado que "SayNumber" no dice bien el número 51051:

Pronunciación de 51051 usando say.conf:
    -- Executing [saytest@especial:2] Playback("SIP/102-084190d0", "num:51051|say") in new stack
    -- <SIP/102-084190d0> Playing 'digits/50' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/and' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/1m' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/thousand' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/50' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/and' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/1' (language 'es')

Pronunciación de 51051 usando la aplicación SayNumber:
    -- Executing [saytest@especial:4] SayNumber("SIP/102-084190d0", "51051") in new stack
    -- <SIP/102-084190d0> Playing 'digits/50' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/and' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/1' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/thousand' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/50' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/and' (language 'es')
    -- <SIP/102-084190d0> Playing 'digits/1' (language 'es')
Reply all
Reply to author
Forward
0 new messages