Kategorie: Pediaphon

HTTPS-Verschlüsselung für die Wikipedia-Sprachausgabe Pediaphon


Da es diverse Anfragen bezüglich Verschlüsselung für meine Wikipedia-Sprachausgabe Pediaphon gegeben hat, wird pediaphon.org nun standartmäßig  verschlüsselt ausgeliefert. Das Zertifikat stammt von Let’s Encrypt. Da ich auf dem Server keine unnötige Python-Umgebung laufen lassen möchte, setze ich acme.sh von Travis CI ein.

https://github.com/Neilpang/acme.sh

Wikipedia wird mit HTTPS sicherer – Reparaturarbeiten am Pediaphon


Durch eine Anfrage eines Nutzers bin ich auf Probleme mit der Textkodierung der Pediaphon-Funktion „eigene Texte sprechen“ aufmerksam geworden. Nur ist diese Funktion auch in der Lage weiche Trennstriche, wie sie beispielsweise per Cut&Paste aus Word in das Eingabefeld kommen, zu erkennen und nicht mitzusprechen. Eine Stimme hat diese weichen Trennstriche als „bedingter Trennstrich“ oder als „Verneinung“ mitgesprochen. In Word wird das Negationszeichen, also wortwörtlich die “Verneinung” als weiches Trennzeichen verwendet.

Nach der Reparatur fiel mir ein auch einmal zu testen, ob das Sprechen von Wikipedia-Artikeln noch funktioniert, nachdem die Wikipedia, wie viele andere Webseiten nach den Snowden-Enthüllungen auch, nun nur noch per HTTPS abzufragen ist. Und tatsächlich, der Redirect von HTTP auf die entprechende HTTPS-Artikelseite führt in den Pediaphon-Scripten zu einem Problem, so dass bei allen Anfragen nur noch der normalerweise am Endes des Artikels angehängte Erklärungstext gesprochen wurde. Die Ursache war schnell gefunden, die Änderung für alle Sprachen und Stimmen zu realisieren war aber etwas aufwendiger, da alle Sprachvarianten betroffen waren.

Bei den folgenden Tests ist mir sofort ein weiteres kleines Problem aufgefallen. Vor einigen Monaten hatte ich beschlossen, die Audoausgabe defaultmäßig von Flash auf HTML5 umzuschalten, da mittlerweile fast alle mir bekannten Browser den MP3-Codec im HTML5-Audio-Tag unterstützen und Flash deshalb (und wegen der ständigen Sicherheitslücken) als Webtechnik in den Mülleimer der Geschichte gehört. Übrigens unterstütze ich HTML5-Audio für das Pediaphon schon seit Firefox 3.5 ( 2010). Allerdings mussten die Nutzer diese Option bisher aktiv auswählen.

Beim Einsatz HTML5-Audio weigern sich aber Firefox und andere Browser (neuerdings?) trotz “Pragma” „no-cache“ im HTML-Header die vom Pediaphon generierten Audio-Dateien immer neu zu laden. Die Audio-Repräsentation z.B. des Artikels zu Edward Snowden heißt im Pediaphon immer edward_snowden.mp3, auch wenn zwischendurch Parameter wie Stimme und Sprechgeschwindigkeit verändert werden. Flash, Java und Windowsmedia können durch Parameter dazu gebracht werden, die Datei immer frisch nachzuladen. HTML5-Audio weigert sich aber beharrlich und spielt den Inhalt aus dem Cache ab, auch wenn manuell die Datei per Reload in einem neuen Fenster nachgeladen wurde. Abhilfe schafft ein Trick: Den Dateien ist im URL ein Parameter angehängt, der einen Zufallswert mitliefert:

 

edward_snowden.mp3?z=<zufallswert>

 

Der Browser lädt dann die richtige Datei, hält sie aber durch den geänderten URL für eine andere. So wir nun auch HTML5-Audio im Browser dazu bewogen dynamische MP3- oder Ogg-Dateien nachzuladen und nicht die Datei aus dem Cache zu verwenden. So funktioniert das Pediaphon wieder wie gewohnt.

 

Sprich Freund und tritt ein – Sprachausgabe für den Raspberry Pi mit eSpeak und SVOX-pico


Embedded Computer sind je nach Einsatzgebiet häufig nicht mit Bildschirmen oder Displays ausgestattet. Wenn sie aber in wechselnden Umgebungen mit oder ohne DHCP eingesetzt werden, ergibt sich häufig die Anforderung einmal schnell die bezogene oder eingestellte IP-Adresse herauszufinden. Natürlich lässt sich dieses Problem komfortabel mit DynDNS lösen, wenn der Rechner auch wirklich mit dem Internet verbunden ist. Ansonsten bleibt immer nur die Suche nach einem neuen Netzwerkgerät im Webinterface des Routers.

Diese Anforderung hatte ich selber ursprünglich für einen mobilen Roboter, der sich in wechselnden Umgebungen bzw. WLAN-Netzen bewegen konnte und per Webinterface bedient wurde. Um den Roboter initial zu finden, musste die IP-Adresse bekannt sein.
Aber auch für Zwecke der Heimautomatisierung eingesetzte Mini-Rechner müssen nicht immer mit Display betrieben werden. Für die Ausgabe seltener Störungen bietet sich das Audio-Interface, also die Soundkarte, als preiswerte und stromsparende Alternative an.

Mein mobiler Activemedia Pioneer 3AT Roboter mit Sprachausgabe 2006 FernUni in Hagen, damals realisiert mit MBROLA

Computergenerierte künstliche Sprachausgabe wird mit sogenannter Text-to-Speech-Software TTS realisiert. Diese Software setzt mit Hilfe von umfangreichen Aussprache-Lexika oder Heuristiken (Regeln) für die Zielsprache geschriebenen Text zunächst in eine Abfolge einzelner Laute (Phoneme) um. Die einzelnen Laute, bzw. deren Kombinationen werden entweder von einem Menschen bei der Erstellung der Software eingesprochen oder ebenfalls synthetisch (Signalsynthese oder Formantsynthese) erzeugt. Neuere Systeme basieren auf einem umfangreiche Wortschatz an von einem Menschen gesprochenen Worten, so das eine nahezu natürliche Sprache generiert werden kann. Selbst die Herausforderung eine natürliche Sprachmelodie (Prosodie) zu erzeugen, scheinen moderne kommerzielle Systeme zu meistern. Nun erfordert so eine hochqualitative Sprachdatenbank sehr viel Speicherplatz und ist aufwändig und teuer zu produzieren. Trotz allem gibt es im Open-Source-Bereich brauchbare und auch schlanke freie TTS-Programme. Eine sehr Ressourcen-sparende  TTS-Software ist eSpeak. Diese Software wurde ursprünglich auf einem Acorn RISC_OS Computer, also auch auf einer ARM-Architektur, entwickelt und eignet sich durch Ihre Kompaktheit, Ausführungsgeschwindigkeit und geringen Speicherbedarf besonders für Embedded Systeme. Außerdem unterstützt espeak über 20 Sprachen. An die Aussprache muss man sich etwas gewöhnen, sie ist aber verständlich.

Die auf dem Raspberry-Pi verwendete Debian-Variante Rasbian unterstützt eSpeak out-of-the-box.

Mit

sudo apt-get install espeak

ist die Installation erledigt. Die Ausgabe testen kann man testen, nachdem man das Audiointerface auf den Klinkenstecker per Alsamixer umgestellt hat. Default ist beim Rasberry PI Audioausgabe über HDMI. In /etc/config.txt kann das aber auch fest eingestellt werden.

sudo amixer cset numid=3 1

espeak -vde "hallo welt hier spricht der räspberri pei"

Wenn keine Option -w angegeben wird, gelangt die Ausgabe direkt an das Audio-Device /dev/dsp .

Höhere Sprachqualität mit SVOX-Pico

Eine Alternative mit der derzeit besten Sprachqualität im Open-Source-Bereich stellt die SVOX-Pico-TTS-Engine dar. Vielleicht kommt dem einen oder anderen Nutzer die Stimme bekannt vor. SVOX-Pico ist die in den Android-Versionen 2.1-2.3 eingesetzte Default-Sprachausgabe. Die neue, ab der Version 4.0 von Google für Android eingesetzte TTS-Engine, basiert leider auf Closed-Source-Software. Die SVOX-Pico TTS-Engine ist übrigens auch die Default-Engine für meine Wikipedia-Sprachausgabe Pediaphon und unterstützt neben Englisch (UK und US), Deutsch, Französisch auch Italienisch und Spanisch in hoher Qualität.

SVOX-Pico liegt als Open-Source vor, ist auf diverse Linux-Varianten portiert worden und lässt sich z.B. unter Ubuntu einfach mit sudo apt-get install pico2wave installieren. Für Raspbian muss das Paket selber kompiliert werden. Alternativ können Sie mein Debian-Paket für Rasbian ARM einfach herunterladen (MD5-Hash: b530eb9ff97b9cf079f622efe46ce513) und mit den Kommandos


apt-get install libpopt-dev
sudo dpkg --install pico2wave.deb

auf dem Rasberry Pi installieren. Das libpopt-dev ist ebenfalls erforderlich.
Mit

sudo amixer cset numid=3 1
pico2wave --lang=de-DE --wave=/tmp/test.wav "hallo welt hier spricht der räspberri pei"; play /tmp/test.wav;rm /tmp/test.wav

können Sie die Sprachausgabe testen.

Mit

sudo apt-get remove pico2wave

kann man das Debian-Paket auch wieder sauber deinstallieren.
Wer selber kompilieren möchte, muss neben know how etwas Geduld mitbringen.
Um die Quellen zu kompilieren ist neben automake auch das libtool erforderlich:

git clone -b upstream+patches git://git.debian.org/collab-maint/svox.git svox-pico
apt-get install automake libtool libpopt-dev
automake
./autogen.sh
./configure
make all
make install

Alternativ kann man auch ein direkt ein Debian-Paket bauen, dass auch sauber wieder aus dem System entfernt werden kann.
Ich habe zusätzlich für mein Binary die GCC-Optionen
-mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard
passend für den Raspberry Pi angepasst, damit auch die Hardware floation-point Unterstützung genutzt wird.

Um dann z.B. beim Bootvorgang automatisch die IP-Adresse des Pis zu sprechen, habe ich in der /etc/rc.local folgende Kommandos eingefügt:

/usr/bin/amixer cset numid=3 1
/usr/bin/espeak -vde "meine ei pie Adresse lautet $_IP"

Sicherlich lassen sich noch eine Menge anderer sinnvolle Anwendungen für eine Sprachausgabe auf dem PI finden. Mit seinen Sensoren kann der Pi auch als ein preiswertes Hilfsmittel für Blinde-Nutzer eingesetzt werden.

me@market – die Pediaphon-App im Android-Market


Die neue Pediaphon-App ist nicht wirklich meine erste App im Android Market, aber die erste komplette Eigenentwicklung. Das geht wirklich Ruckzuck im Android-Market, 25 $ kostest es und eine viertel Stunde später ist man Entwickler und kann Apps in den Market einpflegen. Etwas verwirrend für den Neuling ist eine Verzögerung im Market beim Versionswechsel der Apps. Mit besonderer Sorgfalt sollte auch die Manifest-Datei erstellt werden damit nicht unnötig Benutzer kleiner Displays (320×240) und älterer Android-Versionen ausgesperrt werden. Die Pediaphon App bietet eine ähnliche Funktionalität wie die Online-Variante, nur ist für ein mehr “App-mäßiges Look-and-Feel” Ajax eingesetzt worden. Die MP3-Dateien kommen weiterhin vom Pediaphon-Server, also neudeutsch aus der Cloud.

Da für die Audio-Wiedergabe HTML5 eingesetzt wird, funktioniert die App erst richtig gut mit Android 2.3 Gingerbread. Mit 2.2 Froyo kann aber, wenn es denn das Endgerät hergibt auch auf FLASH bzw. reinen MP3 download ausgewichen werden. Android Versionen 2.1 und älter habe ich zunächst einmal ausgesperrt, evt. gibt es dafür später eine angepasste Version.

UPDATE: Die App läuft jetzt mit nativem Audio, d.h. Android ab Version 2.1 wird unterstützt.

Wenn man diesem Golem-Artikel glauben schenken darf, sind ein Großteil der Android-Nutzer schon mit 2.2 und 2.3 unterwegs. Ich halte das nicht für eine sehr realistische Einschätzung, mein ältestes Android-Gerät (ein SmartQ5) läuft unter Cupcake 1.5, ich bin aber auch schon länger dabei ;-) .

Hier der Link in den Android-Market im Web: http://market.android.com/search?q=Pediaphon
Die “offizielle” App-Seite (engl. da für alle Sprachversionen nur ein Entwickler-Link angegeben werden kann): http://blog.robotnet.de/pediaphon-app-for-android/
Viel Spaß mit der kostenlosen Pediaphon-Android-App!

Technisch wäre die App auch sehr leicht für IOS, also für iPhone und iPad umzusetzen, aber Apple verlangt ja recht happige Gebühren für Entwickler und ich müsste dafür für ein Stündchen an einen Intel-Mac, den ich leider nicht in Reichweite habe. Leider erlaubt Apple ja keine (professionelle) Crosscompilation auf anderen Betriebssytemen als MacOS.

Pediaphon QR-Code mit Android-Market Link für das Smartphone

Das Pediaphon-App im Android Market

Die Pediaphon-App im Android Market

Die Pediaphon-App

Android Gingerbread 2.3.3 auf dem 99 Euro Androiden Vodafone 845


Nachdem sich mein neues Orange San Francisco (mit 2.3.3 Gingerbread, Cyanogen Mod 7), frisch importiert aus UK, nach nur einer Woche mit einem Sturz verabschiedet hat :-( , konnte ich nun nicht widerstehen als ich gelesen habe, dass eine frühe Cyanogen Mod 7 Beta auch für das Vodafone 845 verfügbar ist. Das kam insofern überraschend, als dass es bisher kein wirklich stabiles ROM mit Froyo für das Gerät gab.

Wer mutig ist kann Gingerbread für das Vodafone 845 hier ausprobieren:

http://forum.xda-developers.com/showthread.php?t=1096075

und hier:

http://www.android-hilfe.de/vodafone-845-forum/115220-cyanogenmod-7-auf-dem-845-a.html

Noch nicht alles läuft perfekt, das größte Manko ist derzeit noch die fehlende Kalibrierung für den Touch Screen. Der verwendetet Kernel unterstützt wohl keine Touch Screen Kalibrierung.
Das Android Keyboard sollte daher durch die HTC_Ime.zip ersetzt werden, die kalibriert werden kann.
Empfehlenswert ist es auch den ADW-Launcher durch den schlankeren Zeam Launcher zu ersetzen.

Damit läuft das Telefon überraschend flüssig!

Um an die notification bar heranzukommen muss im Launcher diese als swipe down Aktion eingestellt werden. Es scheinen auch keine Applikationen zu laufen, welche die Kamera nutzen (die Kamera selber funktioniert), weder das großartige Google Goggles noch einen QR-Code Reader konnte ich erfolgreich benutzen, beides crashed die Kamera, die erst nach einem reboot wieder funktioniert. Layar, eine App welche die Kamera im Videomodus benutzt (Augmented Reality), funktioniert aber prima.

HTML5-Audio (Pediaphon Touch Interface) und Video (http://www.jplayer.org/latest/demo-01-video-supplied-m4v/) funktionieren auch endlich mit gingerbread.

cyanogenmod7 auf dem vodafone 845

gingerbread auf dem vodafone 845

UPDATE:
Es gibt dort mittlerweile Android 2.3.5 – Cyanogen Mod 7.1.0 – Huawei U8120 – RC1 – update 11 – damit funktioniert auch die Kallibrierung des Tochscreens ganz wunderbar. Auch das Update 11 läuft mit dem Zeam-Launcher super flott. Nur das Kamera Problem besteht noch. Ansonsten besser als alle Custom ROMs (und auch besser als das Original ROM) die ich kenne, und nun schon IMHO alltagstauglich.

Das Pediaphon mit neuem Touch-Interface für Android, iPhone, iPad und iPad


Weil die HTML5-Audiounterstützung nun auf Android 2.3 Gingerbread ebenso gut funktioniert wie unter iOS auf den Apple-Mobilgeräten, war ich neugierig ob sich die gemeinsame Basis der beiden Welten (der Android-Webbrowser basiert ebenso wie der Safari-Browser auf der freien Webkit Rendering Engine) für eine HTML-basierte, an die Touch-Bedienung angepasste, eigene Oberfläche eignet. Die Ansicht, die Entwicklung von plattformübergreifenden HTML-basieren Anwendungen gegenüber nativen APPs zu favorisieren, vertrete ich schon seit langem. Besonders für e- und m-learning Anwendungen ist eine Standardisierung nützlich um zu verhindern, dass im Hochschulbereich immer knappe Entwicklungskapazitäten an einzelne Endgeräte verschwendet werden. Wiederverwendbarkeit und langer Lebenszyklus sind bei Web-basierten Anwendungen eher sicherzustellen als bei nativen APPs.

Ich wollte ursprünglich Sencha Touch einsetzen  bin aber durch einen Kollegen auf iWebkit aufmerksam geworden. iWebkit besticht durch seine Einfachheit in der Anwendung, schon rudimentäre HTML-Kenntnisse reichen aus um eine iWebkit-Seite zu erstellen. Auf dem iPhone und iPad sehen iWebkit-Seiten aus wie eine native APP und sie laufen auch ganz fabelhaft  auf Android- Nokia S60- Palm Pre- und Openmocko, basierten Geräten.

Als beispielhafte Anwendung wird hier ein eigenes Pediaphon-User-Interface für Webkit-basierte Mobilbrowser vorgestellt. Die Audioausgabe wird hier mit HTML5 realisiert, für Android 2.2 Froyo basierte Telefone gibt es auch eine Flash Alternative.

Hier einige Screenshots vom GUI (Auf einem Android 2.3 Gingerbread Emulator, aber auch schon live mit einem Orange San Francisco getestet):

Ausprobiert werden kann das Pediaphon iWebkit-Interface hier in Deutsch und in Englisch, Spanisch, Französisch und Italienisch.

HTML5-Audio für das Pediaphon nun auch mit Android 2.3 Gingerbread


Nachdem Apples iPad nun HTML5-Audio unterstützt habe ich lange auf das HTML5-Feature in Android gewartet. Nachdem ich einen enttäuschenden Kommentar zum neuen Gingerbreads-Browser gelesen habe, wollte ich wissen ob Audio-Streaming nun wenigstens funktioniert.

Der in Android 2.3 Gingerbread enthaltene Webkit-Browser unterstützt nun endlich auch HTML5-Audio. Sowohl MP3 wie auch der freie OGG-Container werden von Android unterstützt. Ausprobiert habe ich das mit dem Emulator des aktuellen Android-SDKs mit mp3-Audiodateien generiert von meinem Pediaphon, der Online-Sprachausgabe für die Wikipedia.

Android Gingerbread Emulator spielt HTML5-Audio im Browser

SVOX-PICO Android Opensource Stimme im Pediaphon


Nun im Testbetrieb die SVOX-PICO Android Opensource TTS-Engine mit deutscher Stimme im Testbetrieb fuer das Pediaphon. Besser als Mbrola aber nicht so gut wie die kommerzielle Variante. Siehe Pediaphon. (dort Stimme NEU waehlen)

Neue französische und spanische Stimmen für das Pediaphon


Das französische und das spanische Benutzerinterface für das Pediaphon ist nun an das aktuelle Layout angepasst, was Updates erheblich erleichtert. Ich konnte mit wenig Aufwand in das französische Pediaphon 8 weitere (also nun insgesamt 9) Stimmen integrieren. Auch das spanische Interface verfügt nun über insgesamt 5 Stimmen.

WLAN-Lokalisation a la Apple, die neuen Datenschutzrichtlinien – noch ein Datenkrake


Hier der zweite Teil des Hands-On, sollte eigentlich nur zum Geolocation API sein, aber aus aktuellem Anlass auch zu Location based Services und Privatsphäre.
Das HTML5 Geolocation API funktioniert im Safari auf dem iPad ganz ausgezeichnet.
Artig fragt hier der Safari um Erlaubnis, gibt aber wohl (wie auch Google-Maps mobile, hatte ich schon im März 2009 vermutet, ganz unten im Artikel) die SSID aller WLANs in der Umgebung an Apple weiter.

Leider gibt es das iPad nur mit verspiegeltem Display, also zum arbeiten nicht zu gebrauchen, schade.

Die Aufregung in der Fachwelt verwundert mich ein wenig. Die Anbieter solcher Location based Services wären doch ohne solche Informationen von den mobilen Clients gar nicht in der Lage ihre Datenbanken aufzufüllen. Den betroffenen Nutzern sollte aber klar sein, dass solche Dinge immer Auswirkungen auf die Privatsphäre haben. Außerdem sind ja nun anscheinend die iPhone- und iPod-Nutzer als Wardriver unterwegs, spüren WLAN-Netze auf und geben diese Informationen an Server in den USA weiter. Mit deutschen Datenschutzgesetzen ist das mit Sicherheit nicht vereinbar. Aber ohne SSID-Datenbanken keine Funktionalität, so einfach ist das. Wer aber nicht möchte das Informationen über seinen Aufenthalt publik werden könnten, darf diese Daten nicht an Google oder Apple weitergeben. Was einfach fehlt ist, wie auch bei sozialen Netzwerken, Sachverstand und ein verantwortungsvoller Umgang mit diesen Techniken.

HTML-Geolocation kann hier (auch einmal ohne Google Maps ;-) ) ausprobiert werden: Openstreetmap HTML5 Geolocation, optimiert für kleine Displays, Android Froyo, iPhone, iPad, iPod touch.