dilluns, de desembre 21, 2009

Llegir l'hora en veu alta


Fa un temps explicava com instal·lar les veus catalanes de Festival (2). Avui veurem com fer que llegeixi les hores, segons el costum català:

Per llegir l'hora en veu alta al terminal hi ha prou amb escriure la següent línia (Atenció: les 'cometes' abans i després de date... són accents, no cometes!!!):


echo "Són les `date +%k` hores, `date +%-M` minuts amb `date +%-S` segons." |padsp festival --tts --language catalan

Si volem, per exemple que ens digui l'hora en veu alta a les hores en punt hem de preparar un arxiu de text amb dues línies:


#!/bin/bash
echo "Són les `date +%k` hores, `date +%-M` minuts amb `date +%-S` segons." |padsp festival --tts --language catalan

Al desar l'arxiu anterior, és molt important triar la codificació ISO-8859-1 o ISO-8859-15, ja que si triem UTF-8, que és l'opció per omissió, el Festival no podrà llegir-ho, i donará l'error 'LTS_Ruleset catala_downcase: no rule matches:'.

posem que l'anomenem digueshora.sh

De nou al terminal fem:


crontab -e

i afegim a l'arxiu de programacions la línia:


0 * * * * bash [ruta]/digueshora.sh

on hem de substituir [ruta] per la ruta absoluta on hem desat l'arxiu digueshora.sh.

No oblidem desar fent Crl+O, abans de sortir amb Ctrl+X

Una altra opció sense els minuts és:


echo "Són les `date +%k` hores, i `date +%-M` minuts." |padsp festival --tts --language catalan

Per que digui les hores amb quarts, podríem fer alguna cosa així (us animem a millorar-ho):


hora=`date +%-I`
hora_seg=$(echo "scale=0; $hora+1" | bc)
if [ "$hora_seg" -eq "13" ]; then hora_seg="una"; fi
minuts=`date +%-M`
case $hora in
0 ) xe_hora="Són les dotze" ;;
1 ) xe_hora="És la una" ;;
2 ) xe_hora="Són les dues" ;;
* ) xe_hora ="Són les $hora";;
esac
case $minuts in
0 ) xe_minuts="" ;;
* ) xe_minuts=", i $minuts minuts.";;
esac
case $minuts in
15 ) xerra="És un quart de $hora_seg." ;;
30 ) xerra="Són dos quarts de $hora_seg." ;;
45 ) xerra="Són tres quarts de $hora_seg." ;;
* ) xerra="$xe_hora$xe_minuts" ;;
esac
echo $xerra |padsp festival --tts --language catalan
Possibles millores:
  • Que digui "d'una', en lloc de "de una", o "Són dos quarts i cinc", "Són dos quarts i 3 minuts",...

2 comentaris:

  1. el "són" em dona un error:

    $ echo "són les 3" |padsp festival --tts --language catalan
    LTS_Ruleset catala_downcase: no rule matches:
    LTS_Ruleset: # s *here* � � n #


    si trec l'accent es reprodueix corretament.

    estic amb una karmic i la localització està en català: LANG=ca_ES.UTF-8

    en aquest exemple tampoc afecta gaire, però a un document on hi hagi accents no funcionarà.

    pot ser que sigui un error del paquet català del festival?

    potser obriré un bug.

    ResponElimina
  2. muzzol: >Al desar l'arxiu anterior, és molt important triar la codificació ISO-8859-1 o ISO-8859-15, ja que si triem UTF-8, que és l'opció per omissió, festival no podrà llegir-lo, i donará l'error 'LTS_Ruleset catala_downcase: no rule matches:'.

    És una limitació coneguda del Festival, funciona amb Latin-1

    ResponElimina