AMIGA Narrator-TTS-Voice unter Linux nutzen

  • Die Stimme des AMIGA war fuer damals als Soft-TTS-Voice echt garnicht schlecht ;)

    Nur gab es (fuer mich) bis jetzt keine Chance sie ausserhalb einer AMIGA-Emulation zu nutzen :(


    Gestern dachte ich - es waere schoen, wenn es dafuer auch einen Emulator geben wuerde :)

    --und mich hat wohl schon jemand vor 2 Monaten gehoert"


    Es gibt den "AmigaNarrator -  Commodore Amiga narrator.device emulator" auf github :)


    Damit der laeuft braucht man ein original "narrator.device" und "translator.library" aus einer Workbench.
    Im errsten Link wird angegeben, dass die aus der Workbench v1.2 am besten waeren.


    Nun wie bekommt man die aus dem .ADF?

    Man installiere dazu den Total Commander und darin das ADF-Plugin (AMIGADX) von der PlugIn-Seite


    Hat man die beiden Dateien steckt man die zu den anderen ausgepackten Dateien des Github .ZIP und

    compiliert mit

    ./build.sh


    Das ergibt dann eine narrator und eine translator Binary.


    Die Einzelnutzung der Befehle ist auf der README.md der Gitbuh-Seite erklaert.


    Es gibt auch eine ./say.sh die fuer einen nach

    say.sh "Hello world."
    alle noetigen Befehle ausfuehrt.


    Da diese say.sh aber alle Befehle hintereinander "weg-pipt" scheint mein Orange Pi Zero (H3-CPU) zu sher hinterher zu haengen und die Ausgabe erfolgt unterbrochen (weil er es dann wohl direkt "streamen" muss :( )


    Da ich zuvor die Befehle einzeln erfolgreich getestet hatte, habe ich wieder einzelne Befehle (hintereinander) daraus gemacht und so klappr es auch (inkl. etwas debug-Ausgabe) - saygl.sh :

    Leider dauert die Umsetzung in ein .S8 Audio-file auf dem Orange Pi Zero eine ganze Weile.


    Ein Test-WAV-Audio File gibt es hier (nicht von mir)


    PS: Unterstuezt Mingw auf Windows Sound - dann koennte ich es da mal testen oder auf einem schnelleren Linux)


  • Schade dass man nicht auf das "aktuelle" Translator setzt. Das konnte nämlich auch unterschiedliche Sprachen.

    Das Program ist ja noch neu und man muss ja nicht diesen Translator nutzen
    (aus em Kopf gab es im AMIGA BASIC-Handbuch ein Listing fuer Deutsch zur Nutzung des Narrator)


    Sicherlich gibt es auch einen Phonem-Converter der auch anstatt des Translator genutzt werden kann.

    Ansonsten kannst Du ja mal probieren auf der Github-Seite eine "Issue" auf zu machen - evtl. ist der Autor fuer die Idee empfaenglich? ;)

  • Erledigt.

    translator.library with language support · Issue #1 · arthurchoung/AmigaNarrator
    Is it possible to add support for a newer translator.library? Under https://aminet.net/package/util/libs/translator42 you will found a version with language…
    github.com

    Suche: Sun Ultra 45 | Dolch PAC 65

  • Falls `aplay` (in say.sh verwendet) auf einem System nicht funktioniert (S8-Format kann nicht abgespielt werden), dann geht alternativ auch `ffplay`:

    Code: say-ffplay.patch
    diff --git a/say.sh b/say.sh
    index af36fa2..3355f9c 100644
    --- a/say.sh
    +++ b/say.sh
    @@ -6,5 +6,5 @@ if [ "x$1" == "x" ]; then
     fi
     TEXT="$1"
     
    -./translator "$TEXT" 2>/dev/null | ./narrator - 2>/dev/null | aplay -f S8 -r 22200
    +./translator "$TEXT" 2>/dev/null | ./narrator - 2>/dev/null | ffplay -f s8 -ar 22200 -ac 1 -autoexit -nodisp -hide_banner -

            move.w  #%0010011100000000,sr

  • Nun wie bekommt man die aus dem .ADF?

    Man installiere dazu den Total Commander und darin das ADF-Plugin (AMIGADX) von der PlugIn-Seite

    Alternativ mit dem xdftool

    Code
    $ xdftool amiga-os-204-workbench.adf read Devs/narrator.device
    $ xdftool amiga-os-204-workbench.adf read Libs/translator.library

    Installation unter Debian:

    Code
    $ sudo apt install pipx
    $ pipx install amitools
    $ xdftool --help

            move.w  #%0010011100000000,sr

  • Warum braucht ihr dafür Tools? Unter Linux geht das doch mit Hausmitteln ...

    Suche: Sun Ultra 45 | Dolch PAC 65

  • Warum braucht ihr dafür Tools?

    Ja, ist für das Thema in diesem Thread nicht nötig, aber es gibt zwei Sachen, die mich daran grundsätzlich stören.

    1. root-Rechte für mount und
    2. bestimmte Dateieigenschaften gehen 'verloren'
      (ich benutze das xdftool viel in Skripten/Makefiles und zum Beispiel habe ich mit der 'fsuae'-Option von 'unpack' dann einen einfachen Zugriff auf die Kommentare und die eigentlichen Amiga-Dateiattribute, bzw. kann ich mit selbst erstellten '*.uaem'-Dateien die Attribute für ein 'pack' oder eine geskriptete fsuae-Instanz selbst vorgeben, so werden hier die LHAs erstellt)


    edit: Zum Thema, für die Translator Library 42.4 ist die Lade- und Emulations-Implementierung viel zu einfach (die v33_translator.library könnte wahrscheinlich vom Aufwand her noch gehen, aber es gibt mehrere Code- und Daten-Segmente und die gewünschte Funktion greift wahrscheinlich auch auf die eigene Library-Referenz zu). Wenn niemand Lust hat und schneller ist, versuche ich mal, mir am Wochenende Zeit dafür zu nehmen.

            move.w  #%0010011100000000,sr

    Einmal editiert, zuletzt von nicode ()

  • Wenn niemand Lust hat und schneller ist, versuche ich mal, mir am Wochenende Zeit dafür zu nehmen.

    Hat mangels Zeit und dank des Aufwands etwas länger gedauert. Wahrscheinlich wäre es einfacher gewesen, den Quellcode vom Translator V42 zu portieren (der ja im Aminet zur Verfügung steht). Allerdings gibt es scheinbar mehrere Versionen. Wie auch immer, es hat mich mehr interessiert, wie man mit Musashi arbeiten kann.


    Aktuellen Zwischenstand gibt's im Branch meines Forks: https://github.com/nicodex/AmigaNarrator/tree/translator42


    Code
    $ git clone --recurse-submodules --branch=translator42 https://github.com/nicodex/AmigaNarrator.git AmigaNarrator42
    $ cd AmigaNarrator42/
    $ make
    $ ./translateas --help


    Ob Upstream die Änderungen überhaupt haben möchte weiß ich nicht (klang im Upstream-Issue nicht so). Ich habe zwar versucht die Originaldateien möglichst wenig zu ändern, aber ohne Makefile wollte ich nicht daran arbeiten, Musashi als doppelten Code habe ich durch ein Submodule ersetzt und der Codestil ist immer Geschmackssache (ich verschwende damit am liebsten keine Zeit und verwende irgendetwas halbwegs übliches und clang-format, wer den Stil nicht mag, ändert halt die .clang-format und formatiert stumpf alles neu)...


    Beispiel in einer Linux-Shell (benötigt iconv und ffplay), wenn alles an seinem Platz liegt (Accents/*.accent, Devs/narrator.device, Libs/v33_translator.library):

    KAO2NNEHN WHIHIXRX DAAS SHAA2FFEHN? YEH2S, WIY KAEN.