Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: Festival/Epos čtoucí pohotově hezky česky  (Přečteno 30723 krát)

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Festival/Epos čtoucí pohotově hezky česky
« kdy: 05 Listopadu 2008, 09:07:38 »
Nainstalil jsem TTS program Festival a neb lenost vládne světem, hledal jsem způsob, jak jeho ovládání co nejvíce zesnadnit. Téma http://forum.ubuntu.cz/index.php/topic,13588.0.html bylo to pravé. Konkrétně skript pro čtení textu označeného myší od maestro "kkaarreell". Ale prográmek "xclip" má své mouchy a výsledný text byl samý otazník. Proto zájemcům doporučuju místo něj použít "xsel", což vše mimořádně zjednoduší. Nová verze skriptu nepotřebuje "xclip" a hlavne objemny balik "Java-JDK" kvůli "native2ascii". Tedy stačí balík "xsel", "cstocs", doinstalovaná čeština a upravený skript bude vypadat takto:

Kód: [Vybrat]
#!/bin/bash
# skript RekniTo cte text ze schranky pomoci TTS programu festival

# nastavime nazev pro docasne soubory
tmpfile="/tmp/reknito.tmp"

# ziskame obsah schranky
xsel -o > $tmpfile
# odstranime uvozovky, pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
sed -e 's/"//g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1

# vytvorime docasny soubor pro festival
echo "(voice_czech_ph)" > $tmpfile.4
echo '(SayText "' >> $tmpfile.4
cat $tmpfile.1 >> $tmpfile.4
echo '")' >> $tmpfile.4

# prevedeme text zpet do iso-8859-2 a nechame festival text precist
cstocs utf8 il2 $tmpfile.4 | festival --pipe

Nastavil jsem si na spuštění toho skriptu klávesovou zkratku a funguje perfektně. Stačí označit text myší, cvak a už se zvesela čte:-)
« Poslední změna: 15 Prosince 2010, 17:26:45 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

kkaarreell

  • Stálý člen
  • **
  • Příspěvků: 1072
Re: Festival čtoucí pohotově hezky česky
« Odpověď #1 kdy: 05 Listopadu 2008, 13:31:06 »
diky za update, vlozim info i do puvodniho vlakna

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #2 kdy: 06 Listopadu 2008, 17:58:59 »
Ještě jsem ten kód změnil, aby umožňoval výber jazyka, kterým bude text předčítán. Po spuštění vyskočí tabulka s předvolenou češtinou a nabídne možnost ho přečíst anglicky. Další jazyky se dají přidat snadno. Autodetekci bych jednak nezvládl a jednak se vyskytuje spousta textů, kde to podle diakritiky poznat nejde. Lide casto pisi cesky bez hacku a carek.
Mám s tím skriptem ale jeden problém. To dialogové okno se vždy objeví na pozadí místo v popředí. Netuším, čím to změnit. Poradíte?
Změna: Chyba byla v nastavení Compiz managera. V menu General, kartě Focus & Raise Behaviour stačilo snížit Focus Prevention Level.

Kód: [Vybrat]
#!/bin/bash
# skript PrectiTo cte text ze schranky pomoci TTS programu festival

# nastavime nazev pro docasne soubory
tmpfile="/tmp/PrectiTo.tmp"

# ziskame obsah clipboardu
xsel -o > $tmpfile
# odstranime uvozovky, pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
sed -e 's/"//g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1

# vytvorime docasny soubor pro festival
echo "" > $tmpfile.4

# preptame se na rec
ans=$(zenity --list --title  "Přečti to" --text "Jakou řečí je vybraný text napsán?" --radiolist --column "výběr" --column "jazyk" TRUE česky FALSE anglicky # Je libo dalsi jazyky? -->  #FALSE hindsky
)

ex=1
if [ $ans == "česky" ];then
echo "(voice_czech_ph)" >> $tmpfile.4
ex=0
fi

if [ $ans == "anglicky" ];then
echo "" >> $tmpfile.4
ex=0
fi

# Je libo dalsi jazyky?__
# |
# V
#if [ $ans == "hindsky" ];then
# echo "(voice_hindi_ph)" >> $tmpfile.4
# ex=0
#fi

# predcitani zruseno
if [ $ex -eq 1 ];then
exit
fi


echo '(SayText "' >> $tmpfile.4
cat $tmpfile.1 >> $tmpfile.4
echo '")' >> $tmpfile.4

# prevedeme text zpet do iso-8859-2 a nechame festival text precist
cstocs utf8 il2 $tmpfile.4 | festival --pipe

exit
« Poslední změna: 10 Listopadu 2008, 22:14:14 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

kkaarreell

  • Stálý člen
  • **
  • Příspěvků: 1072
Re: Festival čtoucí pohotově hezky česky
« Odpověď #3 kdy: 09 Listopadu 2008, 15:18:54 »
pim: Jakou pouzivas verzi xsel?
Kód: [Vybrat]
karel@stazka:~/devel/bash/reknito$ xsel --version
xsel version 0.9 by Conrad Parker <conrad@vergenet.net>
moje verze mi totiz ze znaku s diakritikou vytvari escape kody, kvuli kterym jsem prave potreboval ten native2ascii. Napriklad misto "kukuřice" je vystup "kuku\u0159ice". tobe to nedela?

kkaarreell

  • Stálý člen
  • **
  • Příspěvků: 1072
Re: Festival čtoucí pohotově hezky česky
« Odpověď #4 kdy: 09 Listopadu 2008, 16:25:39 »
Jedna se o jednoduchy skript, ktery cte text oznaceny mysi.

Poznamky:
1. pouziva se bud festival nebo epos (hlas violka).
2. Nove je pouzit xsel namisto xclip.
3. Neni treba native2ascii a cstocs, oboji lze nahradit pomoci uconv (diky pim za info).
4. Skript je udelan tak, aby mluvil cesky. Ale sikovny clovek si jej jiste upravi i pro anglictinu. Z toho take vyplyva, ze skript neobsahuje vyber jazyku, jak to ma ve svem skriptu "pim" (vyse).
5. Jelikoz Epos je ke zvukovce dost agresivni a pri prehravani hrci (alespon mne), je moznost nechat jej jen vygenerovat wav a ten prehrat programem aplay.

Instalace:

1. Nainstalujte balik xsel se vsemi jeho zavislostmi.

2. Pokud si prejete pouzivat TTS festival:
Nainstalujte "festival-czech" a "festvox-czech-ph" se vsemi jejich zavislostmi. Vytvorte soubor demo.txt s obsahem:
Kód: [Vybrat]
(voice_czech_ph)
(SayText "příšerně žluťoučký kůň úpěl ďábelské ódy")
Nyni vyzkousime funkcnost prikazem:
Kód: [Vybrat]
$ uconv -f utf-8 -t iso-8859-2 demo.txt | festival Meli bychom slyset libe ceske skrehotani.

3. Pokud si prejete pouzivat TTS Epos (kvalitnejsi zvukovy vystup):
Nainstalujte program "epos" se vsemi jeho zavislostmi.  Pote stahnete z http://epos.ure.cas.cz/ dodatecne hlasy (violku) a rozbalte ziskany archiv jako root do /usr/share/epos/inv. Pak by jiz melo stacit pustit
Kód: [Vybrat]
eposd --voice violkaa vyzkouset
Kód: [Vybrat]
say-epos nazdarEpos vnitrne pouziva (alespon v te stare verzi, co mam ja) iso-8859-2, takze aby fungovala diakritika, je treba nejdriv provest konverzi
Kód: [Vybrat]
echo "červená modrá fiala" | uconv -f utf-8 -t iso-8859-2 | say-epos -
Nicmene mne epos krapet chrci. Z toho duvodu je lepsi jej jen nechat vygenerovat wav a ten prehrat necim jinym.
Po dokonceni experimentovani s eposem je vhodne jej ukoncit, protoze blokuje zvukovku. Treba jej rovnou zabit pomoci
Kód: [Vybrat]
killall eposd
4. Vytvorime skript samotny:
Vytvorime soubor "reknito" s nasledujicim obsahem:
Kód: [Vybrat]
#!/bin/bash
# skript RekniTo cte text ze schranky pomoci TTS programu festival nebo Epos hlasem violka

# nastavim na TTS Epos
tts="epos" 
#tts="festival"

# protoze epos zachazi se zvukovkou dost hrube a pri prehravani chrci, je lepsi pouzivat na prehrani zvuku treba aplay
use_aplay="true"

# nastavime nazev pro docasne soubory
cd /tmp
tmpfile="RekniTo.tmp"

# ziskame obsah clipboardu
xsel -o > $tmpfile
# odstranime uvozovky, pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
sed -e 's/"//g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1

# prevedeme vstup do iso-8859-2, zaroven nahradime unicode escape sekvence - nutne pouze pro starsi verzi xsel vyuzivajici iso8859-1
#uconv -x 'Hex/Java-Any' -f iso-8859-1 -t iso-8859-2 --output $tmpfile.2 $tmpfile.1
# naopak tento radek je pro xsel vyuzivajici jiz utf8
uconv -f utf-8 -t iso-8859-2 --output $tmpfile.2 $tmpfile.1

# pokud pouzivam tts epos...
if [ $tts == "epos" ]; then
  #spustim eposd
  eposd --voice violka
  # pokud mam pouzit aplay, vygeneruji wav soubor a ten prehraji
  if [ "$use_aplay" == "true" ]; then
    # vygeneruji wav
    cat $tmpfile.2 | say-epos -w -
    # ukoncim eposd, jelikoz blokuje zvukovku
    killall eposd
    # prehraji wav
    aplay said.wav

  else
    # reknu text rovnou
    cat $tmpfile.2 | say-epos -
    # ukoncim eposd, jelikoz blokuje zvukovku
    killall eposd
     
  fi

elif [ $tts == "festival" ]; then
  # vytvorime docasny soubor pro festival
  echo "" > $tmpfile.3
  echo "(voice_czech_ph)" > $tmpfile.3
  echo '(SayText "' >> $tmpfile.3
  cat $tmpfile.2 >> $tmpfile.3
  echo '")' >> $tmpfile.3
  # nechame festival text precist
  cat $tmpfile.3 | festival --pipe

fi

* Zda pouzivate TTS Festival nebo Epos se nastavuje odkomentovanim/zakomentovanim radku
Kód: [Vybrat]
tts="epos" 
#tts="festival"
* V pripade pouziti programu Epos muzete nastavit/zakazat, aby zvuk byl prehravan eposem samotnym a nebo externim programem (aplay).
Nastavite odkomentovanim/zakomentovanim radku
Kód: [Vybrat]
use_aplay="true"
Pokud chcete misto aplay pouzit jiny program, provedte prislusnou upravu radku
Kód: [Vybrat]
aplay said.wav* pro starou verzi programu xsel vyuzivajici iso8859-1 nahradte radek
Kód: [Vybrat]
uconv -f utf-8 -t iso-8859-2 --output $tmpfile.2 $tmpfile.1
radkem
Kód: [Vybrat]
uconv -x 'Hex/Java-Any' -f iso-8859-1 -t iso-8859-2 --output $tmpfile.2 $tmpfile.1

5. Nyni udelame soubor "reknito" spustitelnym.
Kód: [Vybrat]
$ chmod a+x reknitoVyzkousime funkcnost programu. Oznacime mysi nejaky text (pouze oznacime, nic vic) a spustime program "reknito"
Kód: [Vybrat]
$ ./reknitoPocitac by mel precist oznaceny text.

Pokud vse funguje jak ma, staci jiz vytvorit nejaky hezky spoustec pro program "reknito" (ci si nastavit klavesovou zkratku) a pretahnout jej treba do panelu.
« Poslední změna: 11 Listopadu 2008, 09:14:18 od kkaarreell »

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #5 kdy: 10 Listopadu 2008, 22:08:00 »
pim: Jakou pouzivas verzi xsel?
Kód: [Vybrat]
karel@stazka:~/devel/bash/reknito$ xsel --version
xsel version 0.9 by Conrad Parker <conrad@vergenet.net>
moje verze mi totiz ze znaku s diakritikou vytvari escape kody, kvuli kterym jsem prave potreboval ten native2ascii. Napriklad misto "kukuřice" je vystup "kuku\u0159ice". tobe to nedela?

Aktualizuj si xsel. Verze 1.2.0 nemá s českou diakritikou potíže.
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: Festival čtoucí pohotově hezky česky
« Odpověď #6 kdy: 24 Května 2009, 04:58:45 »
Hezký skriptík.
4. Vytvorime skript samotny:
Vytvorime soubor "reknito" s nasledujicim obsahem:
Kód: [Vybrat]
...
fi
na konec bych přihodil minimálně úklidový
Kód: [Vybrat]
rm $tmpfile
rm $tmpfile.1
rm $tmpfile.2
rm $tmpfile.3
rm said.wav
neřeší to sice stav když skript předčasně skončí protože nenbylo co číst, ale nestane se vám že se přítelkyně přihlásí do jejího účtu a při kliknutí na ikonku jí to bude číst to co to naposledy četlo vám...
(A)nebo temp soubory vytvářet v ~/ namísto v /tmp/,   

//edit: na přepínání jazyka by se snad nějak mohla dát využít automatika přes sonnet http://www.abclinuxu.cz/clanky/recenze/co-prinasi-kde-4-technologie
« Poslední změna: 24 Května 2009, 17:20:05 od kiklhorn »
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #7 kdy: 04 Listopadu 2009, 18:30:02 »
Violka (hlas Eposu) má krásný přednes, ale hrozně dlouhé mezery po každé větě (vlastně po kterékoliv tečce). Proto jsem až doteď používal pouze Festival. Leč doba nazrála, jak pravil klasik, tak jsem se pokusil přijít na to, jak Violku umravnit. Řešení bylo překvapivě prosté. Stačilo hlasový výstup prohat přes prográmek sox. Violka pak čte s přijatelnými mezerami a jsme opět o krok blíže dokonalosti:-). Vygenerovaný zvukový soubor nechávám přečíst pomocí vlc, ale je samozřejmě možné použít jakýkoliv jiný program, třeba i přímo sox.

Změna:
- Na Kiklhornovo doporučení přidán samoúklid pozůstatků po běhu skriptu.
- Vyřešen problém Eposu, že občas zůstane nečinně viset v procesech. V takovém případě nyní stačí skript spustit podruhé a ten předčítání pošťouchne ke zdárnému konci.
- Upraveno chování při předčítání vět neukončených tečkou (například nadpisy). Doteď Violka četla bez pauzy a bez nádechu, jako by první slovo dalšího řádku bylo jenom pokračování posledního slova předchozího.
- Pokud skript nalezne uz zpracovaný wav, zkopíruje ten nalezený zvuk na plochu a smaže originál.
- Jako bonus po nainstalování knihovny libnotify se bude zobrazovat upozornění, co skript míní dělat.

Aktuální verze skriptu následuje:

Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka

echo 'nastaveni adresare pro docasne soubory'
mkdir -p /tmp/PrectiTo/
cd /tmp/PrectiTo
touch PrectiTo
echo 'nastaveni promennych'
tmpfile="PrectiTo"
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
time=$(date +%d.%m_%T) # cas spusteni skriptu

if [ -e /tmp/PrectiTo/said2.wav ]; then
echo 'zvuk jiz byl minule uspesne vygenerovan, bude zalohovan na plochu'
cp /tmp/PrectiTo/said2.wav ~/Plocha/Precti_to_$time.wav
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Právě byl zálohován na plochu jako 'Precti_to_$time.wav'"
echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/
exit
else
if [ -e /tmp/PrectiTo/PrectiTo.2 ]; then
echo 'problem - pri predchozim behu nebyl skript korektne ukoncen'
# text co zbyl z minula
text=$(cat $tmpfile)
notify-send --urgency=low --icon=$icon "Z minula zůstal nepřečtený text" "$text"
echo 'dalsi pokus o vygenerovani wav z nalezenych dat'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'minule se say-epos asi zaseklo, nutno uvolnit'
killall say-epos
echo 'say-epos jiz v procesech nevisi, koncim'
exit
else
echo 'zacatek zpracovani textu'
# protoze epos zachazi se zvukovkou dost hrube a pri prehravani chrci, je lepsi pouzivat na prehrani zvuku treba aplay
#use_aplay="true"

echo 'ziskani obsahu clipboardu'
xsel -o > $tmpfile
# oznameni,co se bude predcitat
text=$(cat $tmpfile)
notify-send --urgency=low --icon=$icon "Bude přečten text:" "$text"

echo 'odstraneni uvozovek' # pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
sed -e 's/"/ /g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1
echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes'
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile.1 > $tmpfile.2

echo 'spusteni eposd'
eposd --voice violka
echo 'vygenerovani wav'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'osekani zbytecne dlouhych mezer na konci kazde vety'
#sox said.wav said2.wav silence 0 -1 00:00:00.9 1%
sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1%
# vysvetleni parametru modulu silence: -l = orezat mezery na jistou mez, 1 = oriznout pripadnou mezeru na zacatku zvukove stopy, 0.1 = minimalni delka zvuku, po niz se prestava orezavat, 1% = prah citlivost k sumu, -1 = odstranovat vsechny ostatni mezery az do konce, 0.6 = nastaveni delky ponechaneho useku ticha, 1% = prah citlivosti k sumu
fi
fi

echo 'prehrani oblibenym prehravacem'
# aplay said2.wav
vlc "/tmp/PrectiTo/said2.wav"

echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/

exit
« Poslední změna: 06 Listopadu 2009, 16:53:56 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

boonn

  • Aktivní člen
  • *
  • Příspěvků: 296
  • Urgulak the Great
Re: Festival čtoucí pohotově hezky česky
« Odpověď #8 kdy: 29 Listopadu 2009, 20:02:09 »
Violka (hlas Eposu) má krásný přednes, ale hrozně dlouhé mezery po každé větě (vlastně po kterékoliv tečce). Proto jsem až doteď používal pouze Festival. Leč doba nazrála, jak pravil klasik, tak jsem se pokusil přijít na to, jak Violku umravnit. Řešení bylo překvapivě prosté. Stačilo hlasový výstup prohat přes prográmek sox. Violka pak čte s přijatelnými mezerami a jsme opět o krok blíže dokonalosti:-). Vygenerovaný zvukový soubor nechávám přečíst pomocí vlc, ale je samozřejmě možné použít jakýkoliv jiný program, třeba i přímo sox.

Změna:
- Na Kiklhornovo doporučení přidán samoúklid pozůstatků po běhu skriptu.
- Vyřešen problém Eposu, že občas zůstane nečinně viset v procesech. V takovém případě nyní stačí skript spustit podruhé a ten předčítání pošťouchne ke zdárnému konci.
- Upraveno chování při předčítání vět neukončených tečkou (například nadpisy). Doteď Violka četla bez pauzy a bez nádechu, jako by první slovo dalšího řádku bylo jenom pokračování posledního slova předchozího.
- Pokud skript nalezne uz zpracovaný wav, zkopíruje ten nalezený zvuk na plochu a smaže originál.
- Jako bonus po nainstalování knihovny libnotify se bude zobrazovat upozornění, co skript míní dělat.

Aktuální verze skriptu následuje:

Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka

echo 'nastaveni adresare pro docasne soubory'
mkdir -p /tmp/PrectiTo/
cd /tmp/PrectiTo
touch PrectiTo
echo 'nastaveni promennych'
tmpfile="PrectiTo"
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
time=$(date +%d.%m_%T) # cas spusteni skriptu

if [ -e /tmp/PrectiTo/said2.wav ]; then
echo 'zvuk jiz byl minule uspesne vygenerovan, bude zalohovan na plochu'
cp /tmp/PrectiTo/said2.wav ~/Plocha/Precti_to_$time.wav
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Právě byl zálohován na plochu jako 'Precti_to_$time.wav'"
echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/
exit
else
if [ -e /tmp/PrectiTo/PrectiTo.2 ]; then
echo 'problem - pri predchozim behu nebyl skript korektne ukoncen'
# text co zbyl z minula
text=$(cat $tmpfile)
notify-send --urgency=low --icon=$icon "Z minula zůstal nepřečtený text" "$text"
echo 'dalsi pokus o vygenerovani wav z nalezenych dat'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'minule se say-epos asi zaseklo, nutno uvolnit'
killall say-epos
echo 'say-epos jiz v procesech nevisi, koncim'
exit
else
echo 'zacatek zpracovani textu'
# protoze epos zachazi se zvukovkou dost hrube a pri prehravani chrci, je lepsi pouzivat na prehrani zvuku treba aplay
#use_aplay="true"

echo 'ziskani obsahu clipboardu'
xsel -o > $tmpfile
# oznameni,co se bude predcitat
text=$(cat $tmpfile)
notify-send --urgency=low --icon=$icon "Bude přečten text:" "$text"

echo 'odstraneni uvozovek' # pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
sed -e 's/"/ /g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1
echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes'
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile.1 > $tmpfile.2

echo 'spusteni eposd'
eposd --voice violka
echo 'vygenerovani wav'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'osekani zbytecne dlouhych mezer na konci kazde vety'
#sox said.wav said2.wav silence 0 -1 00:00:00.9 1%
sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1%
# vysvetleni parametru modulu silence: -l = orezat mezery na jistou mez, 1 = oriznout pripadnou mezeru na zacatku zvukove stopy, 0.1 = minimalni delka zvuku, po niz se prestava orezavat, 1% = prah citlivost k sumu, -1 = odstranovat vsechny ostatni mezery az do konce, 0.6 = nastaveni delky ponechaneho useku ticha, 1% = prah citlivosti k sumu
fi
fi

echo 'prehrani oblibenym prehravacem'
# aplay said2.wav
vlc "/tmp/PrectiTo/said2.wav"

echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/

exit

Ten tvůj skript nemůžu tak nějak rozchodit, i když vypadá líp ... když to spustím v terminálu, píše to:

Kód: [Vybrat]
urgulak@urgulakthegreat:~$ sudo ./reknito
nastaveni adresare pro docasne soubory
nastaveni promennych
zacatek zpracovani textu
ziskani obsahu clipboardu
./reknito: řádek 45: notify-send: příkaz nenalezen
odstraneni uvozovek
nahrazeni koncu radku teckou pro srozumitelnejsi prednes
spusteni eposd
vygenerovani wav
osekani zbytecne dlouhych mezer na konci kazde vety
sox FAIL formats: can't open input file `said.wav': No such file or directory
prehrani oblibenym prehravacem
VLC is not supposed to be run as root. Sorry.
If you need to use real-time priorities and/or privileged TCP ports
you can use vlc-wrapper (make sure it is Set-UID root and
cannot be run by non-trusted users first).
uklidove prace
-ukonceni zbylych procesu
say-epos: no process found
eposd: no process found
-odstraneni nepotrebnych souboru
urgulak@urgulakthegreat:~$ sudo ./reknito
nastaveni adresare pro docasne soubory
nastaveni promennych
zacatek zpracovani textu
ziskani obsahu clipboardu
./reknito: řádek 45: notify-send: příkaz nenalezen
odstraneni uvozovek
nahrazeni koncu radku teckou pro srozumitelnejsi prednes
spusteni eposd
vygenerovani wav
vijol@kaIv%z�vor@ceh%las%B'eposum�Ak@r�s%n�Bp^�ed@nes%#F,'aleIh%roz%�eBd@loOuh�AmezeriBpoka�%d�Bv%je�eAz�vor@kaBv%las%t@�eBpok^ter�kolif%Ate�%ceBz�vor@kuB'uzav%��t^#######################################################################################################################################################T
osekani zbytecne dlouhych mezer na konci kazde vety
prehrani oblibenym prehravacem
VLC is not supposed to be run as root. Sorry.
If you need to use real-time priorities and/or privileged TCP ports
you can use vlc-wrapper (make sure it is Set-UID root and
cannot be run by non-trusted users first).
uklidove prace
-ukonceni zbylych procesu
say-epos: no process found
-odstraneni nepotrebnych souboru

ps: kkaarreell  mi fachá, tak nevím ... kdybys věděl čím to je, kdyžtak napiš, díky ...
The only good is knowledge and the only evil is ignorance.
   ~ Socrates
 Use linux flarerpg.org - great open source game

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: Festival čtoucí pohotově hezky česky
« Odpověď #9 kdy: 30 Listopadu 2009, 17:48:47 »
Kód: [Vybrat]
sudo apt-get install libnotify-bin
a proč spouštíte tento skript se sudo?
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #10 kdy: 30 Listopadu 2009, 21:26:42 »
Teze jsem se chtel zeptat k cemu sudo:-). Libnotify to neovlivni. Pokud neni nainstalovan, jednoduse se nezobrazi zprava s bublinou a skript pracuje dal.
Udelal jsem od te doby ve skriptu par kosmetickych zmen. Na funkci (rostlinare) by to nemelo mit vliv. Pokud ti to ani nadale nepujde, napis, jake soubory se ti pri spusteni skriptu vytvori ve slozce /tmp/PrectiTo/.

Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka

echo 'nastaveni adresare pro docasne soubory'
mkdir -p /tmp/PrectiTo/
cd /tmp/PrectiTo
touch PrectiTo
echo 'nastaveni promennych'
tmpfile="PrectiTo"
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
time=$(date +%d.%m_%T) # cas spusteni skriptu

if [ -e /tmp/PrectiTo/said2.wav ]; then
echo 'zvuk jiz byl minule uspesne vygenerovan, bude zalohovan na plochu'
cp /tmp/PrectiTo/said2.wav ~/Plocha/Precti_to_$time.wav
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Právě byl zálohován na plochu jako 'Precti_to_$time.wav'"
echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/
exit
else
if [ -e /tmp/PrectiTo/PrectiTo.2 ]; then
echo 'problem - pri predchozim behu nebyl skript korektne ukoncen'
# text co zbyl z minula
#text=$(cat $tmpfile)
text=$(sed 2q $tmpfile)
notify-send --urgency=low --icon=$icon "Z minula zůstal nepřečtený text" "$text"
echo 'dalsi pokus o vygenerovani wav z nalezenych dat'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'minule se say-epos asi zaseklo, nutno uvolnit'
killall say-epos
echo 'say-epos jiz v procesech nevisi, koncim'
exit
else
echo 'zacatek zpracovani textu'
# protoze epos zachazi se zvukovkou dost hrube a pri prehravani chrci, je lepsi pouzivat na prehrani zvuku treba aplay
#use_aplay="true"

echo 'ziskani obsahu clipboardu'
xsel -o > $tmpfile
# oznameni,co se bude predcitat
text=$(sed 2q $tmpfile)
# echo ${tmpfile:4:7}
notify-send --urgency=low --icon=$icon "Bude přečten text:" "$text"

# pomoci souboru
#echo 'odstraneni uvozovek' # pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
#sed -e 's/"/ /g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1
#echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes'
#sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile > $tmpfile.2
#echo 'odstraneni zavorek'
#sed -e 's/(/ /g' $tmpfile.2 > $tmpfile.1
#sed -e 's/)/ /g' $tmpfile.1 > $tmpfile.2
#echo 'nahrada "atd."'
#sed -e 's/atd./ a tak dále /g' $tmpfile.2 > $tmpfile.1
#echo 'nahrada "mj."'
#sed -e 's/mj./ mimo jiné /g' $tmpfile.1 > $tmpfile.2
#echo 'nahrada "apod."'
#sed -e 's/apod./ a podobně /g' $tmpfile.2 > $tmpfile.1
#echo 'nahrada "aj."'
#sed -e 's/aj./ a jiné /g' $tmpfile.1 > $tmpfile.2

# pomoci roury
echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes a dalsi textove upravy'
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile | sed 's/(/ /g;s/)/ /g;s/atd./ a tak dále /g;s/mj./ mimo jiné /g;s/apod./ a podobně /g;s/aj./ a jiné /g' > $tmpfile.2



echo 'spusteni eposd'
eposd --voice violka
echo 'vygenerovani wav'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'osekani zbytecne dlouhych mezer na konci kazde vety'
#sox said.wav said2.wav silence 0 -1 00:00:00.9 1%
sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1%
# vysvetleni parametru modulu silence: -l = orezat mezery na jistou mez, 1 = oriznout pripadnou mezeru na zacatku zvukove stopy, 0.1 = minimalni delka zvuku, po niz se prestava orezavat, 1% = prah citlivost k sumu, -1 = odstranovat vsechny ostatni mezery az do konce, 0.6 = nastaveni delky ponechaneho useku ticha, 1% = prah citlivosti k sumu
fi
fi

echo 'prehrani oblibenym prehravacem'
# aplay said2.wav
vlc "/tmp/PrectiTo/said2.wav"

echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/

exit
« Poslední změna: 30 Listopadu 2009, 21:29:32 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

boonn

  • Aktivní člen
  • *
  • Příspěvků: 296
  • Urgulak the Great
Re: Festival čtoucí pohotově hezky česky
« Odpověď #11 kdy: 02 Prosince 2009, 14:22:24 »
Teze jsem se chtel zeptat k cemu sudo:-). Libnotify to neovlivni. Pokud neni nainstalovan, jednoduse se nezobrazi zprava s bublinou a skript pracuje dal.
Udelal jsem od te doby ve skriptu par kosmetickych zmen. Na funkci (rostlinare) by to nemelo mit vliv. Pokud ti to ani nadale nepujde, napis, jake soubory se ti pri spusteni skriptu vytvori ve slozce /tmp/PrectiTo/.

Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka

echo 'nastaveni adresare pro docasne soubory'
mkdir -p /tmp/PrectiTo/
cd /tmp/PrectiTo
touch PrectiTo
echo 'nastaveni promennych'
tmpfile="PrectiTo"
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
time=$(date +%d.%m_%T) # cas spusteni skriptu

if [ -e /tmp/PrectiTo/said2.wav ]; then
echo 'zvuk jiz byl minule uspesne vygenerovan, bude zalohovan na plochu'
cp /tmp/PrectiTo/said2.wav ~/Plocha/Precti_to_$time.wav
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Právě byl zálohován na plochu jako 'Precti_to_$time.wav'"
echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/
exit
else
if [ -e /tmp/PrectiTo/PrectiTo.2 ]; then
echo 'problem - pri predchozim behu nebyl skript korektne ukoncen'
# text co zbyl z minula
#text=$(cat $tmpfile)
text=$(sed 2q $tmpfile)
notify-send --urgency=low --icon=$icon "Z minula zůstal nepřečtený text" "$text"
echo 'dalsi pokus o vygenerovani wav z nalezenych dat'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'minule se say-epos asi zaseklo, nutno uvolnit'
killall say-epos
echo 'say-epos jiz v procesech nevisi, koncim'
exit
else
echo 'zacatek zpracovani textu'
# protoze epos zachazi se zvukovkou dost hrube a pri prehravani chrci, je lepsi pouzivat na prehrani zvuku treba aplay
#use_aplay="true"

echo 'ziskani obsahu clipboardu'
xsel -o > $tmpfile
# oznameni,co se bude predcitat
text=$(sed 2q $tmpfile)
# echo ${tmpfile:4:7}
notify-send --urgency=low --icon=$icon "Bude přečten text:" "$text"

# pomoci souboru
#echo 'odstraneni uvozovek' # pokud je chceme cist, staci prikaz zamenit tim zakomentovanym
#sed -e 's/"/ /g' $tmpfile > $tmpfile.1
#sed -e 's/"/ uvozovky /g' $tmpfile > $tmpfile.1
#echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes'
#sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile > $tmpfile.2
#echo 'odstraneni zavorek'
#sed -e 's/(/ /g' $tmpfile.2 > $tmpfile.1
#sed -e 's/)/ /g' $tmpfile.1 > $tmpfile.2
#echo 'nahrada "atd."'
#sed -e 's/atd./ a tak dále /g' $tmpfile.2 > $tmpfile.1
#echo 'nahrada "mj."'
#sed -e 's/mj./ mimo jiné /g' $tmpfile.1 > $tmpfile.2
#echo 'nahrada "apod."'
#sed -e 's/apod./ a podobně /g' $tmpfile.2 > $tmpfile.1
#echo 'nahrada "aj."'
#sed -e 's/aj./ a jiné /g' $tmpfile.1 > $tmpfile.2

# pomoci roury
echo 'nahrazeni koncu radku teckou pro srozumitelnejsi prednes a dalsi textove upravy'
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $tmpfile | sed 's/(/ /g;s/)/ /g;s/atd./ a tak dále /g;s/mj./ mimo jiné /g;s/apod./ a podobně /g;s/aj./ a jiné /g' > $tmpfile.2



echo 'spusteni eposd'
eposd --voice violka
echo 'vygenerovani wav'
cstocs utf8 il2 $tmpfile.2 | say-epos -w -
echo 'osekani zbytecne dlouhych mezer na konci kazde vety'
#sox said.wav said2.wav silence 0 -1 00:00:00.9 1%
sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1%
# vysvetleni parametru modulu silence: -l = orezat mezery na jistou mez, 1 = oriznout pripadnou mezeru na zacatku zvukove stopy, 0.1 = minimalni delka zvuku, po niz se prestava orezavat, 1% = prah citlivost k sumu, -1 = odstranovat vsechny ostatni mezery az do konce, 0.6 = nastaveni delky ponechaneho useku ticha, 1% = prah citlivosti k sumu
fi
fi

echo 'prehrani oblibenym prehravacem'
# aplay said2.wav
vlc "/tmp/PrectiTo/said2.wav"

echo 'uklidove prace'
echo '-ukonceni zbylych procesu'
killall say-epos
killall eposd
echo '-odstraneni nepotrebnych souboru'
rm -rf /tmp/PrectiTo/

exit

Díky - sudo jsem napsal ... abych řekl pravdu nezáměrně, pravď. proto že jsem zároveŇ s tím ještě něco instaloval/nastavoval. Každopádně nainstalování libnotify-bin pomohlo -- tušil jsem to, ale nemohl to nějak najít v synapticu, nebo nevím. Dík  ;)
The only good is knowledge and the only evil is ignorance.
   ~ Socrates
 Use linux flarerpg.org - great open source game

boonn

  • Aktivní člen
  • *
  • Příspěvků: 296
  • Urgulak the Great
Re: Festival čtoucí pohotově hezky česky
« Odpověď #12 kdy: 02 Prosince 2009, 17:15:56 »
jj, díky, sudo byl omyl, s libnotify funguje
The only good is knowledge and the only evil is ignorance.
   ~ Socrates
 Use linux flarerpg.org - great open source game

1x23

  • Aktivní člen
  • *
  • Příspěvků: 449
Re: Festival čtoucí pohotově hezky česky
« Odpověď #13 kdy: 20 Prosince 2009, 14:44:26 »
ahoj snažim se ted rozchodit čtení ale hodilo mi to chybu

čtu:

a zvuk nikde, nevi někdo co stim?


Kód: [Vybrat]
./reknito
'az%vuk@I�ig@de#F,neviI�eg@docos%�im@#######################################################################################################################################################Q?
Client side error: 463 Segment number 1360 occurred, but the maximum is 442
said.wav: No such file or directory

a zvuk nikde, nevi někdo co stim?

použivam epos
« Poslední změna: 20 Prosince 2009, 14:48:56 od 1x23 »
NTB: Lenovo P50. OS - Ubuntu 18.04

Linux registred user: 499415

Habo

  • Návštěvník
  • Příspěvků: 94
Re: Festival čtoucí pohotově hezky česky
« Odpověď #14 kdy: 21 Prosince 2009, 16:02:41 »
...
(A)nebo temp soubory vytvářet v ~/ namísto v /tmp/,   
...
Nie to by nebolo lepsie, pretoze docasne subory patria do /tmp pretoze to sa automaticky pri starte PC zmazava a teda je vyriesena situacia ked to skape napr. pri vypadku prudu; lepsie je nastavit tmpfile="RekniTo-$USER.tmp"

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #15 kdy: 26 Prosince 2009, 09:52:10 »
1x23: Uz jsem se s tim take setkal,ale nevybavuju si presne, v cem spocivala potiz. Mas spravne nainstalovany hlas Violka?
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

LuciusMare

  • Závislák
  • ***
  • Příspěvků: 1749
Re: Festival čtoucí pohotově hezky česky
« Odpověď #16 kdy: 23 Ledna 2010, 18:42:50 »
Juu, ozivovani! ;D (Nevím kde se ptát jinde)
Takže, chtěl bych aby na mě můj počítač mluvil, a to nejlépe česky, bohužel, google je nesdílný (přece jenom, "festival česky"...) a mě to hází chyby.
Takže, v souboru demo.txt mám
Kód: [Vybrat]
(voice_czech_ph)
(SayText "příšerně žluťoučký kůň úpěl ďábelské ódy")]
Ale festival mi hází:
Kód: [Vybrat]
SIOD ERROR: unbound variable : voice_czech_ph
SIOD ERROR: unbound variable : p���ern�
:(
Citace
<Firzen> tak teď budu Číňan
<Firzen> tak uvidíme :D
Jabber: LuciusMare (zkroucenina) jabbim (tecka) cz

Martin Kiklhorn

  • Člen občanského sdružení Ubuntu ČR a placené komunitní podpory
  • Administrátor fóra
  • Závislák
  • ******
  • Příspěvků: 4807
  • グーグル!ご存知ですか?
    • HEJ
Re: Festival čtoucí pohotově hezky česky
« Odpověď #17 kdy: 23 Ledna 2010, 19:46:18 »
iconv , cstocs nebo recode

nebo se mrkni na http://forum.ubuntu.cz/index.php/topic,35358.0.html kde jsem to řešil v pythonu
Citace
#musim upravit CP jinak cte nesmysly a ne cestinu
Jsou ve vašem dotazu OPRAVDU VŠECHNY vám dostupné informace o problému?
Linux user since 2007-10-11, Registered #456007
Virtual
| Distribuce
~/slozka znamená /home/"vase jmeno"/slozka
6521 69DE 0F34 FCBC FB1D  DE76 360E 52B2 F71A B8E8

LuciusMare

  • Závislák
  • ***
  • Příspěvků: 1749
Re: Festival čtoucí pohotově hezky česky
« Odpověď #18 kdy: 23 Ledna 2010, 19:49:04 »
Jo, pardon, to jsem zapomnel zminit, ano, pajpoval jsem mu to pres cstocs, presne jak to bylo v tom puvodnim threadu. A muj ani necte, jen vypise chybu a umre.
Citace
<Firzen> tak teď budu Číňan
<Firzen> tak uvidíme :D
Jabber: LuciusMare (zkroucenina) jabbim (tecka) cz

Kocuro Pablo

  • Návštěvník
  • Příspěvků: 46
Re: Festival čtoucí pohotově hezky česky
« Odpověď #19 kdy: 10 Února 2010, 19:20:32 »
Zdravím, skript je dobrý, ale mě nechtěl fungovat. Zjistil jsem, že xsel nenačítá obsah schránky. Pokud jsem spustil samotný xsel z konzole, šlo to, ale za běhu skriptu ne.  Proto jsem za pomoci man xsel přidal některé parametry,  příkaz vypadá potom takto:
Kód: [Vybrat]
xsel -o -b -t 1500  > $tmpfile. -b určuje čtení schránky, -t 1500 značí, že má k dispozici na čtení 1500 milisekund. Přidání parametru -t možná nebylo potřeba, ale mě taky trochu pomohlo. Potom mi všechny zde uvedené skripty začaly fungovat. Pouze občas se zasekne, zřejmě na úpravě získaného textu, ale opětovným spuštěním se čtení rozběhne.
  Verzi programu xsel mám 1.2.0, systém Ubuntu 9.04.

HP Compaq 7900SFF, C2D8400, RAM 3.5, HDD 2TB, Ubuntu 14.04    Lenovo Ideapad S100 s Lubuntu 14.04, nemá chybu! A Acer Iconia A1-830, Android 4.2.

kiflik

  • Návštěvník
  • Příspěvků: 64
    • NUTRION.cz
Re: Festival čtoucí pohotově hezky česky
« Odpověď #20 kdy: 11 Února 2010, 01:27:11 »
ahoj snažim se ted rozchodit čtení ale hodilo mi to chybu

čtu:

a zvuk nikde, nevi někdo co stim?


Kód: [Vybrat]
./reknito
'az%vuk@I�ig@de#F,neviI�eg@docos%�im@#######################################################################################################################################################Q?
Client side error: 463 Segment number 1360 occurred, but the maximum is 442
said.wav: No such file or directory

a zvuk nikde, nevi někdo co stim?

použivam epos

nemáš nahraný hlas...

mít rozbaleno v /usr/share/epos/inv/tdp  violku nebo i machace
hlasy jsou na http://epos.ufe.cz/download/inv/epos-tdp.tgz



ls /usr/share/epos/inv/tdp
machac.tdi  violka.tdi


spustit démona s violkou

eposd --voice violka -D
Base directory is /usr/share/epos
Loading config from fixed.ini
Loading config from ansi.ini
Adding language czech
Loading language from czech.ini
Loading charset 8859-2
Loading voice from kubec-vq.ini
Loading voice from machac.ini
Loading voice from violka.ini
Loading voice from machac8.ini
Loading voice from violka16.ini
Loading voice from violka8.ini
Loading voice from vichova-f.ini
Loading voice from vichova-vq.ini
Loading voice from vichova.ini
Loading voice from kubec-f.ini
Loading voice from kubec.ini
Loading voice from theimer.ini
Loading voice from mbr.ini
Loading voice from jiri.ini
Loading voice from machac_bang.ini
Loading voice from machac_bang_smooth.ini
Loading voice from machac_lpc_bang.ini
Loading voice from machac_lpc_bang_phone.ini
Loading voice from machac_lpp.ini
Loading voice from machac_bang8.ini
Loading voice from machac_lpc_bang8.ini
Loading voice from machac_lpc_bang_phone8.ini
Loading voice from machac_lpp8.ini
Adding language slovak
Loading language from slovak.ini
Loading voice from igor.ini
Adding language latin
Loading language from latin.ini
Loading voice from hildegard.ini
Loading voice from caesar.ini
Loading voice from benedictus.ini
Loading voice from linnaeus.ini
Adding language vogon
Loading language from vogon.ini
Loading voice from jeltz.ini
Compiling czech language rules
Compiling slovak language rules
Compiling latin language rules
Compiling vogon language rules
Loading SAMPA mappings
Loading alternate SAMPA mappings

no a test hovoření

say-epos "co chceš žbleptnout"
DELL XPS 13 - 9350 # Toshiba Portégé R600 SSD # Timeline 3810T

Peterx

  • Aktivní člen
  • *
  • Příspěvků: 403
Re: Festival čtoucí pohotově hezky česky
« Odpověď #21 kdy: 11 Února 2010, 08:10:55 »
Sorac za otazku trochu mimo, ale ja zhanam opacny program, ktory mi zo zvukoveho, alebo filmoveho suboru spravi text. Je taky?

LuciusMare

  • Závislák
  • ***
  • Příspěvků: 1749
Re: Festival čtoucí pohotově hezky česky
« Odpověď #22 kdy: 11 Února 2010, 14:56:00 »
A me festival porad necte... :(
Citace
<Firzen> tak teď budu Číňan
<Firzen> tak uvidíme :D
Jabber: LuciusMare (zkroucenina) jabbim (tecka) cz

pim

  • Aktivní člen
  • *
  • Příspěvků: 111
  • I zde mohla být umístěna Vaše reklama.
Re: Festival čtoucí pohotově hezky česky
« Odpověď #23 kdy: 02 Června 2010, 18:27:46 »
V názvu vlákna už je "Festival" jen z historických důvodů. Už dávno jsem mu dal vale. V Lucidu zacal Epos nějak podezřele často chybovat, tak jsem se pokusil najít důvod a když už jsem byl v tom, skript jsem překopal. Od té doby mi už přes měsíc funguje bezporuchově, tak tu novou verzi přidávám.

Hlavní změnou je ošetření vyjímek a chyb. Pokud něco nevyjde, uloží chybovou hlášku na plochu.

Ovládá se a funguje stále stejně: po spuštění skript koukne, jestli už něco není rozpracováno a pokusí se to obnovit/zálohovat na plochu. Pokud nic nenajde, přečte text ze schránky.

Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem Violka
# potreba je: xsel, sox, cstocs, epos
# hlasy z http://epos.ufe.cz/download/inv/epos-tdp.tgz rozbalit do /usr/share/epos/inv/
# neni nutne,ale hodi se: libnotify-bin, vlc

#TODO
# pro chybe zkontrolovat, elsi vse nainsatlovane; / instalacni skript ?
# zmensit i éíáščě kapitalky? - awk - Je vubec potreba?
# function s vicesovnymi argumenty pro libnotify - zbytecne
# Plocha unverzalni nazev


echo '- Jde se na vec:-)'

Jmeno=$(basename "$0") # nazev souboru skriptu
echo '- Nastaveni adresare pro docasne soubory'
mkdir -p /tmp/$Jmeno/
cd /tmp/$Jmeno

echo '- Zacatek logovani chyb'
exec 2> >(tee -a log)

echo '- Nastaveni promennych'
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
time=$(date +%d.%m_%T) # cas spusteni skriptu
n=5 # pocet pokusu o prevedeni textu na zvuk, nez to skript vzda




# Overime, zda skript byl minule ukoncen normalnim zpusobem
if [ -e /tmp/$Jmeno/$Jmeno.pid ]; then
echo '! Po predchozim spusteni nebyl skript korektne ukoncen'
# notify-send --urgency=low --icon=$icon "Naposledy nebyl skript korektně ukončen" "Pokusím se obnovit data z minula"
PID1=$(ps -p $(cat $Jmeno.pid)) # zjisti, zda je zjistene PID aktivni
# echo '- PID1 = '$PID1
PID2=$(echo $PID1 | gawk '{print $8}') # zjisti nazev programu s danym PID
# echo '- PID2 = '$PID2
PID3=$(echo $Jmeno | gawk '{print substr($(basename "$0"),1,15)}') # oreze na 15 znaku (protoze 'ps' mi vyhazuje nazev kdoviproc zkraceny)
# echo '- PID3 = '$PID3
if [ "$PID2" == "$PID3" ]; then # porovnanim overi, zda se pod danym PID neskryva jiz jiny program
echo '! Skript jiz jednou bezi s PID '$(cat $Jmeno.pid)', pred pokracovanim je nutno ho sestrelit'
kill -9 $(cat $Jmeno.pid)
echo '- Prave se tak stalo, muzeme pokracovat'
fi
fi

# Skript stoprocentne bezi pouze jednou, nastala vhodna chvile se podepsat
echo $$ > $Jmeno.pid


# FUNKCE
# pauza pro odhmyzovaci ucely
function pauza(){
   read -p “$*”
}

# osekani moc dlouhych pauz
function trim() {
echo '- Osekani zbytecne dlouhych mezer na konci kazde vety'
#sox said.wav said2.wav silence 0 -1 00:00:00.9 1%
sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1%
# vysvetleni parametru modulu silence: -l = orezat mezery na jistou mez, 1 = oriznout pripadnou mezeru na zacatku zvukove stopy, 0.1 = minimalni delka zvuku, po niz se prestava orezavat, 1% = prah citlivost k sumu, -1 = odstranovat vsechny ostatni mezery az do konce, 0.6 = nastaveni delky ponechaneho useku ticha, 1% = prah citlivosti k sumu
}

# zobrazeni bublinove zpravy
#function notify() {
# notify-send --urgency=$1 --icon=$icon $2 $3
#}



#HLAVNI CAST
if [ ! -e $Jmeno ]; then
echo '- Ziskani obsahu clipboardu'
xsel -o > $Jmeno # Pokud by nefungovalo, "Kocuro Pablo" by misto tohoto pouzil nasledujici radek
# xsel -o -b -t 1500  > $Jmeno
text=$(sed 2q $Jmeno) # oznameni, co se bude predcitat
notify-send --urgency=low --icon=$icon "Bude přečten text:" "$text"
else
echo '! Nalezen surovy text z minula'
text=$(sed 2q $Jmeno) # oznameni, co se bude predcitat
notify-send --urgency=low --icon=$icon "Bude obnoven text:" "$text"
fi
#pauza 'enter'

if [ ! -e $Jmeno.2 ]; then
echo '- Upravy textu pro srozumitelnejsi prednes'
# všechno malým, ať Violka nehláskuje?
# tr '[:upper:]' '[:lower:]' < $Jmeno > $Jmeno.1
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $Jmeno | sed 's/"/ /g;s/(/ /g;s/)/ /g;s/atd\./ a tak dále /g;s/mj\./ mimo jiné /g;s/apod\./ a podobně /g;s/aj\./ a jiné /g' > $Jmeno.2 #  Nahrazeni koncu radku teckou, nahrada nekterych obvyklych zkratek celymi frazemi, odstraneni zavorek, uvozovek...
else
echo '! Nalezen upraveny text z minula'
fi
#pauza 'enter'

if [ ! -e said.wav ]; then
echo '- Zacina synteza zvuku. Obcas to nevyjde napoprve, zkusime to nanejvys '$n' krat.'
while [ $n -gt 0 ]; do
echo '- Zbyva' $n 'pokusu'
let n=n-1
echo '- Spusteni eposd'
eposd --voice violka
echo '- Vygenerovani wav'
cstocs utf8 il2 $Jmeno.2 | say-epos -w -
echo '- Pokus o syntezu ukoncen'
if [ -e said.wav ]; then
echo '- Surovy zvukovy zaznam je hotov'
n=0;
fi
done;
else
echo '! Nalezen surovy zvukovy zaznam'
fi
#pauza 'enter'

if [ ! -e said2.wav ]; then
trim
if [ -e said2.wav ]; then
echo '- Finalni zaznam je hotovy, nyni bude prehran'
vlc "/tmp/$Jmeno/said2.wav" # nejaky vhodny prehravac
else
chyba=$(sed 2q log)
notify-send --urgency=low --icon=$icon "Text se nepodařilo převést na hlas" "$chyba"
cp log ~/Plocha/Precti_to_log_$time
notify-send --urgency=low --icon=$icon "Chyby byly zaznamenány do logu" "Právě byl zálohován na plochu pod jménem 'Precti_to_log_$time'"
fi
else
echo '! Zvuk jiz byl minule uspesne upraven do finalni podoby, tak ho jenom zalohujeme na plochu'
cp said2.wav ~/Plocha/Precti_to_$time.wav
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Právě byl zálohován na plochu pod jménem 'Precti_to_$time.wav'"
fi
#pauza 'enter'


echo '- Zacinaji uklidove prace'
echo '- Ukonceni zbylych procesu'
killall say-epos
#killall eposd
echo '- Odstraneni nepotrebnych souboru'
rm -rf /tmp/$Jmeno/
echo '- Tak zase nekdy...'

exit
Máte-li se skriptem problémy či návrhy na vylepšení - sem s nimi:-)
« Poslední změna: 03 Června 2010, 15:22:02 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

standa

  • Aktivní člen
  • *
  • Příspěvků: 279
Re: Festival čtoucí pohotově hezky česky
« Odpověď #24 kdy: 02 Června 2010, 20:06:05 »
U mě nečte. Hláška z LOG
Kód: [Vybrat]
Error: Already running
 (872)
/home/standa/reknito: řádek 106: cstocs: příkaz nenalezen
Client side error: Input text too funny
Error: Already running
 (872)
/home/standa/reknito: řádek 106: cstocs: příkaz nenalezen
Client side error: Input text too funny
Error: Already running
 (872)
/home/standa/reknito: řádek 106: cstocs: příkaz nenalezen
Client side error: Input text too funny
Error: Already running
 (872)
/home/standa/reknito: řádek 106: cstocs: příkaz nenalezen
Client side error: Input text too funny
Error: Already running
 (872)
/home/standa/reknito: řádek 106: cstocs: příkaz nenalezen
Client side error: Input text too funny
sox FAIL formats: can't open input file `said.wav': No such file or directory

 

Provoz zaštiťuje spolek OpenAlt.