Pokud často posloucháte hudbu z Amaroku a rádi byste před každou písní chtěli slyšet, jak se daná píseň jmenuje (takový automatický moderátor), napsal jsem pro to skript.
Co vlastně dělá: běží v terminálu na pozadí (ideálně), sleduje, zda-li Amarok hraje. Pokud ano, zjistí název z ID3 tagu, lehce ztlumí hudbu, řekne název písničky (syntetizovaným hlasem, pochopitelně), obnoví hlasitost a čeká na další písničku.
Na systetizování používá espeak, po odkomentování je možno i kttsd, který má o něco málo čistší zvuk (dříve jsem kttsd měl, teď z repozitářů nějak zmizel či co. Kdybyste věděli, jak ho jednoduše přidat, prosím napište mi).
Zátěž CPU není prakticky žádná, protože drtivou většinu času skript čeká ve sleep. Syntetizovaný hlas je primárně dostupný v angličtině, takže nejlepší výsledky jsou pro výsledky s anglickými názvy Co s češtinou nevím, zatím se mi to nechtělo řešit, zejména jak poznat, že název je český.
Takže vlastní skript
#! /bin/sh
# Automaticky moderator Amaroku - na zacatku kazde pisnicky syntetizovany hlas rekne, co prave hraje za pisnicku
# Autor Ales Janda, www.kyblsoft.cz (2006,2007)
# Pouzivejte, upravujte, sirte dle libosti
vrat_nazev_pisnicky() {
skladatel="`dcop amarok player artist`"
album="`dcop amarok player album`"
nazev="`dcop amarok player title`"
pisnicka="";
if [ "$skladatel" != "" ]; then pisnicka="$skladatel"; fi
if [ "$album" != "" ]; then pisnicka="$pisnicka, $album"; fi
if [ "$nazev" != "" ]; then pisnicka="$pisnicka, $nazev"; fi
pisnicka=`echo "$pisnicka" | tr "_-" " "`
}
predchozi_pisnicka=""
while [ true = true ]; do
if [ true = `dcop amarok player isPlaying` ]; then
vrat_nazev_pisnicky
if [ "$pisnicka" != "$predchozi_pisnicka" ] && [ "$pisnicka" != "" ]; then
pisnicka_nyni=$pisnicka
sleep 5 #chvilku pocka
vrat_nazev_pisnicky
if [ "$pisnicka" = "$pisnicka_nyni" ]; then #jestli se to od te doby nezmenilo (napr. prochazenim pisni)
hlasitost=`dcop amarok player getVolume`
dcop amarok player setVolume $(($hlasitost*5/6)); sleep 0.3 # postupne ztlumeni hlasitosti
dcop amarok player setVolume $(($hlasitost*4/6)); sleep 0.3
dcop amarok player setVolume $(($hlasitost*3/6)); sleep 0.3
echo $pisnicka
# nasledujici radek zakomentujte, pokud nepouzivate jako syntetizator espeak
espeak -s 150 "$pisnicka"
# nasledujici radky odkomentujte, pokud pouzivate jako syntetizator kttsd
# dcop kttsd KSpeech sayText "$pisnicka" en > /dev/null
# sleep 4
# while [ true = `dcop kttsd KSpeech isSpeakingText` ]; do sleep 0.1; done
dcop amarok player setVolume $(($hlasitost*4/6)); sleep 0.3 # a zase zvyseni hlasitosti
dcop amarok player setVolume $(($hlasitost*5/6)); sleep 0.3
dcop amarok player setVolume $(($hlasitost*6/6)); sleep 0.3
fi
fi
predchozi_pisnicka=$pisnicka
fi
sleep 2
done
Co s tím:
- Nasvítit, zkopírovat, uložit do souboru .sh
- Přesvědčete se, že máte nainstalován espeak. Pokud ne, doinstalujte ho (yum install espeak). Pokud chcete použít kttsd (KSpeech), upravte skript podle komentářů. Pokud máte něco úplně jiného, upravte skript podle sebe
- Spusťte skript
- Poslouchejte hudbu
Je možné, že vás to po čase začne štvát (však to nemusíte pouštět pořád), ale jako machrovinka je to skvělé To prostě nikdo nemá
Užívejte dle libosti