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!

Novinky: Školení nejen k OS Ubuntu pro širokou veřejnost, více informací zde.

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

pim

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re: Festival čtoucí pohotově hezky česky
« Odpověď #25 kdy: 03 Červen 2010, 15:19:04 »
Pardon. Ma chyba. Omylem jsem do zavislosti napsal "uconv" misto "cstocs". V puvodnim prispevku bude vzapeti upraveno.
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ů: 4802
  • Karma: +508/-26
  • グーグル!ご存知ですか?
    • Zobrazit profil
    • HEJ
Re: Festival čtoucí pohotově hezky česky
« Odpověď #26 kdy: 13 Srpen 2010, 01:44:50 »
pokud by někdo měl problém se změnou hlasu - typicky při say-epos --voice violka to čte stále výchozím mužským hlasem -
tak ať se podívá do /etc/epos/restr.ini a zakomentuje příslušný parametr.


Sám nevím který, teď to zkoušet nebudu - soubor jsem přejmenoval celý na restr.ini.old a parametr pro změnu hlasu z say-epos funguje. Tento můj líný hack (povolí měnit všechny parametry z klienta) může teoreticky kompromitovat bezpečnost... takže pokud máte více času tak si zkuste
1. zakomentovat všechny (středník),
2. restartovat epos /etc/init.d/epos restart
3. vyzkoušet say-epos --voice violka...  
4. pokud bude opět skřehotat mužským hlasem tak poslední odkomentovaný parametr je ten který brání změně hlasu
5. jeden parametr odkomentovat
5. pokračovat bodem 2.

nebo se prokousejte dost podrobným manuálem /usr/share/doc/epos/html/epos.html
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

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re: Festival/Epos čtoucí pohotově hezky česky
« Odpověď #27 kdy: 15 Prosinec 2010, 18:27:39 »
O vikendu jsem strávil jednu noc u monitoru, dalsi tri dny usilovne testoval a nova verze je zde. Rozdeluje text vytazeny ze schranky na casti, ktere zpracovava seriove, takze dusledkem je:
  • Dovede prevest na hlas velice dlouhe useky textu (omezeni je jenom v kapacite schranky)
  • Prehravani i extremne dlouhych textu se spusti za par vterin (na mem PC za 15 s pri jakekoliv delce textu)

S vychozim nastavenim jsem zatim naraz bez problemu nacetl 80 stran z e-booku v pdf, coz odpovidalo:
  • 200 kB textu
  • 180 000 znaku
  • 40 souboru po 5 minutach
  • 800 MB vysledneho zvukoveho zaznamu ve .wav
  • Celkem 3 h 40 min prednesu

Temito parametry se da nastavit chovani skriptku:
l=5k # text bude delen na casti po "l" bytech. 1 kB textu ~ 915 znaků ~ 1 min zvuku ~ 4 MB zvukoveho zaznamu ve .wav formatu
n=5 # pocet pokusu o prevedeni textu na zvuk, nez to skript vzda

Mensi "l" vyusti v hodne rychle zpracovani textu, ale zase vysledkem bude vice souboru (hur se v nich orientuje)
Vetsi "l" ma vetsi chybovost a neuskodi zvyseni parametru "n"

  • Predem je treba nainstalovat: gawk, xsel, sox, cstocs, epos, libnotify-bin, VLC (teoreticky misto VLC i jiny prehravac, ale musi podporovat ovladani z prikazove radky)
  • Kod ulozte pod libovolnym nazvem a nastavte mu spustitelny priznak (treba pres kontextove menu --> vlastnosti --> opravneni).
  • Prvni spusteni skriptu nacte oznaceny text, druhe spusteni (pokud skript jeste bezi z minula) vyusti v zalohovani zvuku na plochu.
Kód: [Vybrat]
#!/bin/bash
# skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka
# potreba je: gawk, xsel, sox, cstocs, epos, VLC
# hlasy z http://epos.ufe.cz/download/inv/epos-tdp.tgz rozbalit do /usr/share/epos/inv/
# neni nutne,ale hodi se k zobrazovani bublinovych informaci: libnotify-bin

#TODO
# pro chybe zkontrolovat, elsi vse nainsatlovane; / instalacni skript ?
# zmensit i éíáščě kapitalky? - awk - Je potreba?
# function s vicesovnymi argumenty - zbytecne
# Plocha/Desktop atd. - unverzalni nazev
# backup mode - ukoncit VLC / nahradit jeho Playlist aktualnim umistenim souboru.
# backup mode - sloucit vysledek do jednoho souboru a enkodovat do ogg/mp3.
# pri ukonceni VLC v prubehu zpracovani prerusit dalsi zpracovavani textu.

echo '- Jde se na vec:-)'

echo '- Nastaveni promennych'
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
Jmeno=$(basename "$0") # nazev souboru skriptu
time=$(date +%d.%m_%T) # cas spusteni skriptu
l=5k # text bude delen na casti po "l" bytech. 1 kB textu ~ 915 znaků ~ 1 min zvuku ~ 4 MB zvukoveho zaznamu ve .wav formatu
n=5 # pocet pokusu o prevedeni textu na zvuk, nez to skript vzda

echo '- Nastaveni adresare pro docasne soubory'
mkdir -p /tmp/$Jmeno/
cd /tmp/$Jmeno

echo '- Zacatek logovani chyb'
#exec 1>log 2>&1
#exec 2>log
#exec 2>&1 | tee -a log
#exec 3>&1 > >(tee -a /dev/fd/3 | logger -p "$LOG_FACILITY" -t "$LOG_TOPIC_OUT" )
exec 2> >(tee -a log)

# 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 $1.wav silence 0 -1 00:00:00.9 1%
sox said.wav $1 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
}

# zpracovani hlasu 1 - nacteni
function Voice_read() {
nn=$n
echo '- Zacina synteza zvuku. Obcas to nevyjde napoprve, zkusime to nanejvys '$nn' krat.'
while [ $nn -gt 0 ]; do
echo '- Zbyva' $nn 'pokusu'
#let n=n-1
let nn=nn-1
echo '- Spusteni eposd'
eposd --voice violka
echo '- Vygenerovani wav'
cstocs utf8 il2 $1 | say-epos -w -
echo '- Pokus o syntezu ukoncen'
if [ -e said.wav ]; then
echo '- Surovy zvukovy zaznam je hotov'
nn=0;
fi
done;
}

# zpracovani hlasu 2 - zkraceni mezer a vlozeni do fronty k prehrani
function Voice_process() {
if [ -z $1 ]; then
echo '! Chybi vstupni parameter s nazvem souboru ke zpracovani, zkusime vychozi surovy zaznam.'
set 1=said.wav
fi
if [ ! -e $1 ]; then
echo '- Pokus o zpracovani '$1
trim $1
if [ -e $1 ]; then
echo '- Finalni zaznam '$1' je hotovy, nyni bude prehran'
vlc --started-from-file --playlist-enqueue "/tmp/$Jmeno/$1" & # Spust v rezimu jedine instance, pridej do playlistu a pokracuj
if [ -z "$pid_player" ]; then
pid_player=$!
echo '- Spusten prehravac s PID='$pid_player
fi
else
chyba=$(sed 2q log)
notify-send --urgency=low --icon=$icon "Text se nepodařilo převést na hlas" "$chyba"
cp -u 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 '! Nalezen z minula zvuk jiz uspesne upraveny do finalni podoby'
if [ ! "$backup" = "1" ]; then
echo ' - prepnuto do modu zalohovani'
backup=1
mkdir -p ~/Plocha/$Jmeno-$time/
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Zpracovaný záznam bude zálohován na Plochu do adresáře jménem '$Jmeno-$time'"
fi
fi
#pauza 'enter'
}

# 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
awk '{print tolower($0)}' < $Jmeno > $Jmeno.1
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $Jmeno.1 | 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 $Jmeno.2.aa ]; then
echo '- Rozdeleni textu na casti po '$l' bytech'
split --bytes=$l $Jmeno.2 $Jmeno.2.
else
echo '! Nalezen rozdeleny text z minula'
fi
#pauza 'enter'

for f in $Jmeno.2.??; do
rm -rf /tmp/$Jmeno/said.wav
if [ ! -e $f.wav ]; then
Voice_read $f
fi
Voice_process $f.wav
if [ "$backup" = "1" ]; then
echo ' - Zaznam zkopirovan do ~/Plocha/'$Jmeno'-'$time'/'$f'.wav'
cp $f.wav ~/Plocha/$Jmeno-$time/$f.wav
fi
done
#pauza 'enter'

echo '- Ceka se na ukonceni prehravace s PID='$pid_player
wait $pid_player
echo '- Prehravac ukoncen'
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

Preji prijemny poslech.
« Poslední změna: 16 Prosinec 2010, 23:01:07 od pim »
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

Filip Dominec

  • [Proplesk] [Piškot]
  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 1157
  • Karma: +141/-6
    • Zobrazit profil
Re: Festival/Epos čtoucí pohotově hezky česky
« Odpověď #28 kdy: 15 Prosinec 2010, 23:01:56 »
pim: ještě si k tomu připiš závislost na gawk

Musím ale přiznat, že u mne se to nedá používat - zvuk je nesmírně trhaný, zní to, jako kdyby to každou druhou hlásku nahradilo tichem... Věřím, že se to nějak povede napravit, protože skript to může být hodně užitečný. Každopádně díky.
http://www.vrattenamstat.cz/ | Buďme tolerantní k triviálním dotazům; neznamenají "neumím to najít", ale "nejsem si jist, že to je správná cesta".

pim

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re: Festival/Epos čtoucí pohotově hezky česky
« Odpověď #29 kdy: 16 Prosinec 2010, 22:57:11 »
Copak gawk neni uz v cistem systemu? Dobroje. Budiz doplneno.

Pokud se ti to prehrava trhane, muze to byt vytizenim cpu v prubehu zpracovavani dalsi casti textu. V tom pripade pomuze zvysit prioritu VLC procesu (v nastaveni VLC).

Chybejici hlasky, to vypada na osekavani mezer neboli sox. Zkus pozastavit prehravani a podivat se do temp slozky vytvorene skriptem. Tam jsou ulozeny docasne soubory v ruznem stupni zpracovani. Zkontroluj text a poslechni si "said.wav". Pokud ten je jeste v poradku a divne zni jenom finalni zvukovy zaznam, pak je chyba v uprave pomoci sox. Vysvetleni parametru sox mas ve skriptu hned u inkriminovaneho prikazu. Jestli se ti to podari doladit, nahod vysledek sem:-).
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

pim

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re: Festival/Epos čtoucí pohotově hezky česky
« Odpověď #30 kdy: 17 Prosinec 2010, 20:45:07 »
Jeste dve vylepseni:
  • Po exportu puvodni prehravac nevyhodi chybu, ale korektne se ukonci (Odkomentovanim dvou radku na konci je mozne nastavit, aby se hned pote spustilo prehravani exportovaneho zaznamu).
  • Pripadny export vysledku nebude ulozen jako hromada velkych zvukovych souboru formatu .wma, ale jako jeden soubor ve formatu dle volby (ve vychozim stavu mnohem uspornejsi .ogg)

Kód: [Vybrat]
#!/bin/bash

#Popis
# - skript na cteni textu ze schranky pomoci TTS programu Epos hlasem violka
# - potreba je: gawk, xsel, sox, cstocs, epos, VLC
# - hlasy z http://epos.ufe.cz/download/inv/epos-tdp.tgz rozbalit do /usr/share/epos/inv/
# - neni nutne, ale hodi se k zobrazovani bublinovych informaci: libnotify-bin

#TODO
# - pro chybe zkontrolovat, elsi vse nainsatlovane; / instalacni skript ?
# - function s vicesovnymi argumenty - zbytecne
# - Plocha/Desktop atd. - unverzalni nazev
# - pri ukonceni VLC v prubehu zpracovani prerusit dalsi zpracovavani textu.

echo '- Jde se na vec:-)'

echo '- Nastaveni promennych'
icon="/usr/share/icons/Humanity/devices/48/audio-input-microphone.svg" # ikona zobrazena v bublinove napovede
Jmeno=$(basename "$0") # nazev souboru skriptu
time=$(date +%d.%m_%T) # cas spusteni skriptu
Format=ogg # pripadna zaloha vygenerovaneho zvuku bude ve zvolenem formatu
l=5k # text bude delen na casti po "l" bytech. 1 kB textu ~ 1 min zvuku ~ 4 MB zvukoveho zaznamu ve .wav formatu
n=5 # pocet pokusu o prevedeni textu na zvuk, nez to skript vzda

echo '- Nastaveni adresare pro docasne soubory'
mkdir -p /tmp/$Jmeno/
cd /tmp/$Jmeno

echo '- Zacatek logovani chyb'
#exec 1>log 2>&1
#exec 2>log
#exec 2>&1 | tee -a log
#exec 3>&1 > >(tee -a /dev/fd/3 | logger -p "$LOG_FACILITY" -t "$LOG_TOPIC_OUT" )
exec 2> >(tee -a log)

# 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 $1.wav silence 0 -1 00:00:00.9 1%
sox said.wav $1 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
}

# zpracovani hlasu 1 - nacteni
function Voice_read() {
nn=$n
echo '- Zacina synteza zvuku. Obcas to nevyjde napoprve, zkusime to nanejvys '$nn' krat.'
while [ $nn -gt 0 ]; do
echo '- Zbyva' $nn 'pokusu'
#let n=n-1
let nn=nn-1
echo '- Spusteni eposd'
eposd --voice violka
echo '- Vygenerovani wav'
cstocs utf8 il2 $1 | say-epos -w -
echo '- Pokus o syntezu ukoncen'
if [ -e said.wav ]; then
echo '- Surovy zvukovy zaznam je hotov'
nn=0;
fi
done;
}

# zpracovani hlasu 2 - zkraceni mezer a vlozeni do fronty k prehrani
function Voice_process() {
if [ -z $1 ]; then
echo '! Chybi vstupni parameter s nazvem souboru ke zpracovani, zkusime vychozi surovy zaznam.'
set 1=said.wav
fi
if [ ! -e $1 ]; then
echo '- Pokus o zpracovani '$1
trim $1
if [ -e $1 ]; then
echo '- Finalni zaznam '$1' je hotovy, nyni bude prehran'
vlc --started-from-file --playlist-enqueue "/tmp/$Jmeno/$1" & # Spust v rezimu jedine instance, pridej do playlistu a pokracuj
if [ ! -e player.pid ]; then
pid_player=$!
echo $pid_player > player.pid
echo '- Spusten prehravac s PID='$pid_player
else
pid_player=$(cat player.pid)
fi
else
chyba=$(sed 2q log)
notify-send --urgency=low --icon=$icon "Text se nepodařilo převést na hlas" "$chyba"
cp -u 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 '! Nalezen z minula zvuk jiz uspesne upraveny do finalni podoby'
if [ ! "$backup" = "1" ]; then
echo ' - prepnuto do modu zalohovani'
backup=1
#mkdir -p ~/Plocha/$Jmeno-$time/
notify-send --urgency=low --icon=$icon "Z minula zůstal zvukový záznam" "Zpracovaný záznam bude zálohován na Plochu. Zpracování může zabrat nějaký čas."
fi
fi
#pauza 'enter'
}

# 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' AÁBCČDĎEĚÉFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ

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 # ignoruje kapitálky s diakritikou
# tr '[AÁBCČDĎEĚÉFGHIÍJKLMNŇOÓPQRŘSŠTŤUÚŮVWXYÝZŽ]' '[aábcčdďeěéfghiíjklmnňoópqrřsštťuúůvwxyýzž]' < $Jmeno > $Jmeno.1 # przní "Ě"
awk '{print tolower($0)}' < $Jmeno > $Jmeno.1
sed -e :a -e '$!N;s/\n/. /;ta' -e 'P;D' $Jmeno.1 | 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 $Jmeno.2.aa ]; then
echo '- Rozdeleni textu na casti po '$l'B'
split --bytes=$l $Jmeno.2 $Jmeno.2.
else
echo '! Nalezen rozdeleny text z minula'
fi
#pauza 'enter'

echo ' --- Zacina smycka ---'
for f in $Jmeno.2.??; do
echo ' -- Zacatek zpracovani souboru '$f' --'
rm -rf /tmp/$Jmeno/said.wav
if [ ! -e $f.wav ]; then
Voice_read $f
fi
Voice_process $f.wav
if [ "$backup" = "1" ]; then
PlayList="$PlayList $f.wav"
fi
echo ' -- Konec zpracovani souboru '$f' --'
done
echo ' --- Konci smycka ---'
#pauza 'enter'


if [ "$backup" = "1" ]; then
echo '- Slouceni zvukovych souboru a jejich ulozeni na Plochu'
sox --combine concatenate$PlayList ~/Plocha/$Jmeno-$time.$Format
notify-send --urgency=low --icon=$icon "Záloha zvukového záznamu umístěna do:" "~/Plocha/$Jmeno-$time.$Format"
echo '- Ukonceni prehravace z minuleho behu skriptu'
echo ' - player.pid = '$pid_player
PID1=$(ps -p $pid_player) # zjisti, zda je zjistene PID aktivni
echo ' - PID1 = '$PID1
PID2=$(echo $PID1 | gawk '{print $8}') # zjisti nazev programu s danym PID
echo ' - PID2 = '$PID2
if [ "$PID2" == "vlc" ]; then # porovnanim overi, zda se pod danym PID neskryva jiz jiny program
kill $pid_player
echo ' - Prehravac ukoncen'
else
echo ' - Prehravac nenalezen'
fi
#pauza 'enter'
#echo '- Prehrani zalohovaneho souboru.'
#vlc ~/Plocha/$Jmeno-$time.$Format & disown
else
echo '- Ceka se na ukonceni prehravace s PID = '$pid_player
wait $pid_player
echo '- Prehravac ukoncen'
fi
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
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
  • Karma: +1/-1
    • Zobrazit profil
Re:Festival/Epos čtoucí pohotově hezky česky
« Odpověď #31 kdy: 04 Leden 2012, 20:22:28 »
Poradil by mi někdo, jak napsat skript, který by přes epos jednoduše konvertoval obsah souboru do mp3?
studoval sem ten skript výše, ty funkce trim(), Voice_read() a Voice_process() by asi šly použít, ale nějak jsem se v tom stejně ztratil :/

Filip Dominec

  • [Proplesk] [Piškot]
  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 1157
  • Karma: +141/-6
    • Zobrazit profil
Re:Festival/Epos čtoucí pohotově hezky česky
« Odpověď #32 kdy: 04 Leden 2012, 21:49:40 »
Poradil by mi někdo, jak napsat skript, který by přes epos jednoduše konvertoval obsah souboru do mp3?
studoval sem ten skript výše, ty funkce trim(), Voice_read() a Voice_process() by asi šly použít, ale nějak jsem se v tom stejně ztratil :/

Měl by ti vzniknout soubor /tmp/(jméno)/said.wav, tak jen ze skriptu nahraď řádek na jeho smazání řádkem na jeho konverzi do mp3:

Kód: [Vybrat]
lame -V3 input.wav output.mp3
http://www.vrattenamstat.cz/ | Buďme tolerantní k triviálním dotazům; neznamenají "neumím to najít", ale "nejsem si jist, že to je správná cesta".

augustin

  • Návštěvník
  • *
  • Příspěvků: 66
  • Karma: +1/-1
    • Zobrazit profil
Re:Festival/Epos čtoucí pohotově hezky česky
« Odpověď #33 kdy: 04 Leden 2012, 22:18:30 »
už sem na to přišel sám, postup je:

Kód: [Vybrat]
cat souborkprecteni | iconv --from-code UTF-8 --to-code ISO-8859-2 | say-epos -w - && sox said.wav said2.wav silence -l 1 0.1 1% -1 0.6 1% && lame said2.wav said.mp3 && rm -rf said.wav said2.wav
(možná by to šlo ještě zjednodušit, ale takhle to taky funguje)

pim

  • Člen
  • **
  • Příspěvků: 111
  • Karma: +19/-1
  • I zde mohla být umístěna Vaše reklama.
    • Zobrazit profil
Re:Festival/Epos čtoucí pohotově hezky česky
« Odpověď #34 kdy: 05 Leden 2012, 18:50:03 »
Kdyz uz jsi na to prisel sam, tak prima, ale pokud bys chtel pouzit skript PrectiTo, tak v nem je primo na 21. radku:
Kód: [Vybrat]
Format=flac # pripadna zaloha vygenerovaneho zvuku bude ve zvolenem formatu. Pro seznam podporovanych zadat v terminalu $manTakze nejrychlejsi reseni by bylo prepsat string Format=flac na Format=mp3
Ubuntu 10.04 64bit (LTS) & Arch Linux 64bit;
HP6720s; CPU: C2D T7250; Chipset: Intel GM965; Graphics: Intel GMA X3100; Wifi: Intel 3945ABG;

Ludek

  • Návštěvník
  • *
  • Příspěvků: 87
  • Karma: +2/-0
    • Zobrazit profil
Re:Festival/Epos čtoucí pohotově hezky česky
« Odpověď #35 kdy: 13 Únor 2014, 15:36:59 »
Zdravím, tak jsem postupně vyzkoušel všechny skripty a mé nadšení rostlo. Předně moc děkuji pim za všechnu práci. Sice existuje Gespeaker
http://www.muflone.com/gespeaker/english/index.html
ale tento skript je ve všech směrech mnohem použitelnější.
Jen poslední verze mi přestala fungovat... violka čte stále dokola "zrvácené lomítko, zvrácené lomítko".
Předchozí skript funguje skvěle. Škoda jen, že se mi do něj nevejde celá kniha :-)
Ještě jednou díky! :-)