Watson Text To Speech Service & iOS
Audio Formate im Browser, und somit in einer hybriden App zu verwenden, ist generell immer ein wenig schwierig. Dass die IBM diese Schwierigkeitsstufe bei dem Text To Speech Service noch kräftig anzieht, ist aber eigentlich unnötig.
Unter iOS werden folgenden Audio Formate im Browser unterstützt: aac, mp3, aif und wav. (Wikipedia | Browser-Test)
Der Watson Text To Speech Service bietet dahingegen folgende Formate zur Ausgabe an: ogg, wav, flac, l16 und mulaw. (Watson Developercloud)
Wie man sieht, ist die Schnittmenge an der Stelle überschaubar und leider beinhaltet sie nur das Format mit der geringsten Komprimierung. Zum Vergleich: Ein einfaches "Hallo" aus dem Service hat als wav-Datei eine Größe von 37,4 KB, der gleiche Output als ogg-Datei kommt mit 7,41 KB aus.
Leider beschränkt sich das Problem aber nicht nur auf die 5-fache Datenmenge, sondern bietet noch eine ganz besondere Spezialität. Die von Watson generierte wav-Datei kann anscheinend aufgrund der Kodierung nicht im Safari abgespielt werden. Öffnet man die wav-Datei in einem Audio-Editor und speichert sie ohne etwas zu verändern erneut ab, lässt sich die Datei auch im iOS Browser öffnen.
Da stellt sich dann schon ein wenig die Frage, ob die IBM als Mitentwickler des Wave-Standards einen Fehler in der Kodierung hat oder ob Apple einen Fehler beim Dekodieren hat.
Der Fehler scheint aber auch schon anderen aufgefallen zu sein, denn auf der Demo-Seite des Services ist der "Speak" Button unter iOS direkt deaktiviert.
Und so sieht die Seite im Browser aus:
Der Download Button speichert übrigens eine ogg-Datei, die unter iOS nur mit einer externen App geöffnet werden kann.
ogg-Datei aus dem Watson Service
flac-Datei aus dem Watson Service
wav-Datei aus dem Watson Service
wav-Datei aus dem Watson Service, gespeichert im Audio Editor
** Update **
Die Ursache für den Fehler ist die fehlende Längenangabe im Header der wav-Datei. Im Watson Java-SDK gibt es eine Klasse mit der die fehlenden Informationen nachträglich in die Datei geschrieben werden können. Mit leichten Anpassungen ist dies auch unter JavaScript möglich, und so kann sich Watson auch unter iOS Gehör verschaffen.