IRC-Client irssi lernt sprechen

Aus LinuxUser 11/2004

IRC-Client irssi lernt sprechen

Ein Festival der Sprache

Für den IRC-Client irssi gibt es zahlreiche Perl-Skripte im Netz, mit denen auf unkomplizierte Art und Weise neue Funktionen möglich werden: Ob Abfragen an den dict.leo.org-Server oder googeln direkt im IRC – es ist fast alles möglich. Dieser Artikel zeigt, wie Sie irssi zum Sprechen bringen.

Echte IRC-Junkies lassen den Client nicht gern aus den Augen; viele Anwender nutzen sogar screen[1] und sind so 24 Stunden am Tag im Chat online. Gerade wenn das Programm während der Arbeit im Hintergrund vor sich hin idlet, wäre es doch praktisch, wenn der IRC-Client Bescheid gibt, sobald ein anderer Teilnehmer den eigenen Nicknamen erwähnt oder eine private Nachricht sendet. Wer irssi[2] lokal oder remote mit screen nutzt, kann das Programm mit Festival[3] und dem Skript irssi2fest[4] zum Sprechen bringen.

Einen Haken haben die hier gezeigten Sprechübungen leider: Mit der Kombination aus Festival, irssi und irssi2fest redet das System nur Englisch – eine deutsche Sprachunterstützung ist derzeit auf diese Weise nicht möglich. Wer allerdings sowieso meist auf englischsprachigen IRC-Channels unterwegs ist, darf sich über “sprachkräftige” Unterstützung freuen.

Festival installieren

Voraussetzung neben einer funktionierenden Sound-Ausgabe ist die Installation verschiedener Programme. Als Erstes richten Sie Festival ein. Benutzer RPM-basierter Systeme finden fertige Pakete über die üblichen RPM-Suchmaschinen [5,6]. Unter Suse Linux 9.0 beispielsweise ließ sich Version 1.4.3, eigentlich für Suse Linux 9.1 gebaut, problemlos mit dem Aufruf

rpm -i festival-1.4.3-32.i586.rpm

installieren. Benutzer von Debian Linux installieren das Sprachausgabeprogramm über den üblichen Aufruf

apt-get install festival

– fehlende Abhängigkeiten werden dabei automatisch aufgelöst.

Spricht es? Festival testen

Als Nächstes starten Sie den Festival-Server mit dem Befehl

$ festival --server
server    Tue Sep 21 17:02:35 2004 : Festival server started on port 1314

Die Ausgabe verrät es schon: Der Server wurde erfolgreich gestartet und lauscht auf Port 1314. Wer sicher sein will, kann das mit dem netstat-Kommando überprüfen:

$ netstat -ltnv
Aktive Internetverbindungen (Nur Server)
Proto Recv-Q Send-Q Local Address           Foreign Address State
tcp        0      0 0.0.0.0:1314            0.0.0.0? LISTEN
…

Starten Sie anschließend eine telnet-Verbindung zum Server; dazu geben Sie als Zieladresse einfach localhost gefolgt von der Port-Nummer an:

$ telnet localhost 1314
Trying ::1…
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1…
Connected to localhost.
Escape character is '^]'.

Auch der Server hat die Verbindung bemerkt und meldet:

client(1) Tue Sep 21 17:07:37 2004 : accepted from localhost

In der telnet-Sitzung probieren Sie Ihr erstes Festival-Kommando aus. Der Satz “Hello World” sollte aus den Lautsprechern ertönen, wenn Sie

(SayText "hello world")

eingeben. Damit ist die größte Hürde schon genommen – der Rechner spricht. Die telnet-Sitzung verlassen Sie mit [Strg-AltGr-9]. Sofern noch nicht auf dem System vorhanden, installieren und konfigurieren Sie jetzt den IRC-Client irssi.

irssi installieren

irssi zeichnet sich nicht nur durch intuitive Benutzerführung, sondern vor allem durch die vielfältigen Erweiterungsmöglichkeiten über zahlreiche Perl-Skripte aus. Debian-Anwender installieren den IRC-Client wie gewohnt auf der Kommandozeile, z. B. durch den Aufruf:

apt-get install irssi-text

Sofern noch nicht auf dem System vorhanden, sorgt APT für die zusätzliche Installation diverser Perl-Module und -Libraries. Setzen Sie ein RPM-basiertes Linux-System ein, finden Sie den IRC-Client als fertiges Paket auf den Installationsmedien der Distribution; alternativ liegen der Quell-Code und fertige RPM-Pakete der aktuellsten Version im Download-Bereich der irssi-Homepage.

Standardmäßig liegen die Konfigurationsdateien des Clients im Verzeichnis ~/.irssi; zusätzliche Perl-Skripte speichern Sie in ~/.irssi/scripts[7].

Stellen Sie außerdem sicher, dass Perl in einer aktuellen Version installiert ist. Die Versionsnummer finden Sie schnell heraus:

$ perl --version
This is perl, v5.8.1 built for i586-linux-thread-multi

Auf dem Testrechner kam die Kombination aus irssi 0.8.6 und Perl 5.8.1 erfolgreich zum Einsatz. Als Nächstes richten Sie CPAN ein und installieren das Perl-Modul Festival::Client.

Festival-Client mit CPAN installieren

Das CPAN (“Comprehensive Perl Archive Network”) [8] ist ein weltweites Online-Repository für Perl-Module. Zahlreiche FTP-Mirror stellen eine Fülle von Anwendungen bereit. Bei der Installation des Festival-Clients steht CPAN.pm[9] hilfreich zur Seite. Starten Sie den Installationsdialog mit Administratorrechten auf der Kommandozeile z. B. mit dem Aufruf

perl -MCPAN -e shell

Die meisten Fragen können Sie durch Drücken der [Eingabe]-Taste beantworten, da die Default-Einstellungen sinnvoll gewählt sind. Prüfen Sie nur bei der Abfrage nach den Pfaden zu den Programmen gzip, tar, unzip, make, lynx, wget und ncftpget, dass die Tools installiert sind und der Installer den richtigen Pfad erkannt hat; das geht z. B. mit which:

$ which wget
/usr/bin/wget

Bei der Frage nach dem nächstgelegenen CPAN-Server wählen Sie zuerst einen Kontinent, dann ein Land aus. Für Deutschland stehen anschließend einige FTP-Server zur Verfügung, von denen Sie mehrere auswählen können:

(1) ftp://cpan.noris.de/pub/CPAN/
(2) ftp://ftp-stud.fht-esslingen.de/pub/Mirrors/CPAN
(3) ftp://ftp.cs.tu-berlin.de/pub/lang/perl/CPAN/
…
Select as many URLs as you like (by number),
put them on one line, separated by blanks, e.g. '1 4 5' []

Geben Sie die Nummern durch Leerzeichen getrennt ein. Hat alles geklappt, sehen Sie anschließend die CPAN-Shell, zu erkennen am Prompt:

cpan>

Dort geben Sie anschließend install Festival::Client ein. Dann wird das Festival-Modul vom Server geladen und installiert. Hat alles geklappt, sehen Sie anschließend wieder den CPAN-Prompt. Nach der Installation sollten Sie übrigens einen kurzen Test-Sound hören, sofern Sie den Festival-Server nicht beendet haben. Den Installer verlassen Sie mit quit.

irssi2fest installieren und testen

Auf der Heft-CD finden Sie im Verzeichnis LinuxUser/irssi-speak zwei Dateien: Das Perl-Skript speak.pl kopieren Sie ins Verzeichnis ~/.irssi/scripts/, und die Konfigurationsdatei .speakrc gehört ins Verzeichnis ~/.irssi. Das Skript speak.pl muss darüber hinaus ausführbar sein. Ist das nicht der Fall, setzen Sie die richtigen Rechte mit dem Kommando

chmod 755 ~/.irssi/scripts/speak.pl

Um das Skript in irssi zu laden, schreiben Sie im IRC-Client selbst:

/script load speak

Danach können Sie sich selbst eine Testnachricht schicken – irssi sollte diese nun vorlesen. Wer das Skript direkt beim irssi-Start starten möchte, legt unterhalb des Verzeichnisses ~/.irssi/scripts/ ein neues Verzeichnis autorun an und verschiebt das Skript speak.pl dorthin:

cd ~/.irssi/scripts
mkdir autorun
mv speak.pl autorun/

Ab dem nächsten irssi-Start lädt der Client das Skript automatisch.

Alles neu macht der Mai

Die Dateien der Heft-CD enthalten einige Anpassungen, die das Original-Skript um zusätzliche Funktionen erweitern. So bietet die LinuxUser-Version z. B. bessere Unterstützung für “Aktionen” der IRC-Teilnehmer: Wenn jemand den Befehl /me sneezes. tippt, erscheint dieses in irssi als

* Nick sneezes.

Während das Original-Skript Schwierigkeiten hatte, das Sternchen am Zeilenanfang zu entschlüsseln, spricht unsere speak.pl-Version diese Aktionen jetzt korrekt aus (“Nick sneezes”). Weiterhin enthalten die Dateien der Heft-CD Anpassungen für oft gebrauchte Abkürzungen im IRC. Ab Zeile 40 finden Sie in der Konfigurationsdatei .speakrc Einträge wie z. B.:

'(?i)\bBTW\b' => 'by the way',
'(?i)\bBRB\b' => 'bee right back',

Wundern Sie sich nicht über die falsche Schreibweise von “bee” – hier greift das Skript auf einen Trick zurück: Damit das “e” in “be” wie ein langes “i” klingt, schreibt man es einfach als “ee”. Auf die gleiche Weise passen Sie die Aussprache von Nick-Namen an. Da Festival den Namen “DrEvil” wie das englische Wort “devil” ausspricht, tragen Sie im Bereich $nick_subs ab Zeile 38 in .speakrc Regeln für die Aussprache von Nicks ein:

'DrEvil' => 'Doctor Evil',

Jetzt spricht Festival dieses korrekt als zwei getrennte Worte aus. Eine letzte Anpassung sollten Sie selbst noch vornehmen: In der Datei speak.pl sehen Sie in Zeile 261 den Eintrag:

$Festival->say("Nick $clean_data");

Ersetzen Sie das Wort “Nick” durch Ihren eigenen Nicknamen, damit selbst ausgeführten Aktionen richtig vorgelesen werden.

Zu viel Gelaber?

Wem das dauernde Gequatsche irgendwann auf die Nerven geht, der kann das Skript so anpassen, dass es nur noch bestimmte Dinge vorliest. In der Datei speak.pl finden Sie am Ende der Datei mehrere Einträge, in denen signal_add vorkommt. So sorgt die Zeile

Irssi::signal_add('message public', '_public');

beispielsweise dafür, dass Nachrichten anderer Teilnehmer in Channels vorgelesen werden. Entsprechend steht

Irssi::signal_add('message own_public', '_own_public');

für die Dinge, die man selbst sagt. Weiter unten in der Liste finden Sie Einträge, die irssi zum Sprechen bringen, wenn jemand den Channel betritt (“join”), verlässt (“quit”) oder gekickt wird (“kick”). Um gezielt solche Sprachausgaben auszublenden, setzen Sie einfach ein Rautezeichen (#) an den Zeilenanfang – das kommentiert die Aktion aus. Sie können irssi2fest problemlos so konfigurieren, dass nur noch private Nachrichten, die per /msg oder /query an Sie gehen, ertönen. Um die Änderungen einzulesen, führen Sie in irssi wieder den Befehl /script load aus. Liegt die Datei speak.pl im Verzeichnis ~/.irssi/scripts, laden Sie diese über

/script load speak

neu; ist das Skript im Unterverzeichnis autorun, heißt der Aufruf statt dessen:

/script load autorun/speak

Remote mit screen sprechen

Solange sich Festival-Server und IRC-Client im gleichen lokalen Netzwerk befinden, funktioniert die hier gezeigte Vorgehensweise prima. Wenn irssi allerdings im screen auf einer anderen Maschine läuft, muss dieser Rechner in der Lage sein, Pakete an den Rechner mit dem Festival-Server zu senden. Sollte dieser im eigenen LAN hinter einer Firewall laufen, können Sie mit einem SSH-Tunnel tricksen.

Starten Sie eine SSH-Verbindung vom Rechner mit dem Festival-Server zur Maschine mit dem irssi-Client. Benutzen Sie dazu den Parameter -R, um an einem entfernten Port zu lauschen und die Pakete an den Festival-Rechner weiterzuleiten:

ssh entfernter.rechner.mit.irssi -R 1314:127.0.0.1:1314

Um den SSH-Tunnel zu testen, öffnen Sie eine weitere SSH-Verbindung zu diesem Rechner und sprechen dort per telnet den Festival-Server an:

telnet localhost 1314

Der Festival-Server auf dem lokalen Rechner sollte nun wieder melden, dass die Verbindung akzeptiert wurde. Um zu testen, ob die Sprachausgabe über den SSH-Tunnel funktioniert, schreiben Sie in der telnet-Sitzung auf der entfernten Maschine wieder

(SayText "hello")

Sie sollten den Text dann zu Hause aus den eigenen Lautsprechern hören. Damit das Ganze in irssi klappt, müssen natürlich noch das Perl-Modul Festival::Client und die irssi2fest-Skripte auf dem entfernten Computer installiert werden.

Glossar

Festival

ein mehrsprachiges Sprachsynthesesystem, das am Center for Speech Technology (CSTR) in Edinburgh entwickelt wird. Das System spricht nur wenige Sprachen von Hause aus; andere Projekte setzen jedoch auf Festival als Grundgerüst auf und entwickeln Erweiterungen für andere Sprachen.

Infos

[1] screen-Artikel: Heike Jurzik, “Manchmal kommen sie wieder – screen”, LinuxUser 01/2001, S. 92 ff., http://www.linux-user.de/ausgabe/2001/01/092-zubefehl/befehl12.html

[2] irssi: http://de.irssi.org/

[3] Festival: http://www.cstr.ed.ac.uk/projects/festival/

[4] Original-irssi2fest-Skript: http://lowdrag.org/irc2fest/

[5] rpmfind: http://rpmfind.net/

[6] rpmseek: http://www.rpmseek.com/

[7] irssi-Artikel: Martin Loschwitz, “Chat-Komfort im Terminal – Der IRC-Client irssi”, LinuxUser 06/2002, S. 28 ff., http://www.linux-user.de/ausgabe/2002/06/028-irssi/irssi.html

[8] CPAN: http://www.cpan.org/

[9] Automatisches Installieren von Perl-Modulen mit CPAN.pm: Michael Schilli, “Alle Mann an die Pumpen! – CPAN”, Linux-Magazin 10/1997, http://www.linux-magazin.de/Artikel/ausgabe/1997/10/CPAN/cpan.html

LinuxUser 11/2004 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben