Hola
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}