Programm SPRICH
===============

0. Inhalt
---------

	1. Hinweise zur Neuauflage des Programms SPRICH
	2. Die Bedienung des Programms SPRICH
	3. Die Dateien im ZIP-Archiv
	4. Anhang mit Zusatzhinweisen und weiterfhrenden Links


1. Hinweise zur Neuauflage des Programms SPRICH
-----------------------------------------------

Das Programm SPRICH heit so, weil es Textdateien mit einer speziellen Lautschrift "vorlesen" oder 
die eingetippte Lautschrift direkt "sprechen" kann. Das akustische Ergebnis klingt sehr monoton und 
ziemlich "ungehobelt" oder - wie es einmal eine Besucherin meiner Homepage (und "Kraftwerk"-Fan) 
liebevoll nannte - so schn "trashig". Durch das Programm erfolgt keine phonetische Transkription 
wie bei einem modernen TTS-System (Text-to-Speech), d.h. es kann nicht einfach normaler Text 
eingegeben werden, sondern nur Lautschrift. Dies gelingt aber nach etwas bung ganz gut und man hat 
viel mehr Kontrolle ber das akustische Ergebnis als wenn dies vollkommen automatisch erfolgen 
wrde. Auerdem macht es auch Spa, damit zu experimentieren.

Die "Ur-Version" von SPRICH ist ein DOS-Programm, das ich 1993 auf einem PC mit 80286er-CPU 
geschrieben habe, um mit phonembasierter Sprachsynthese zu experimentieren. Da der PC ber keine 
Soundkarte verfgte, benutzte ich stattdessen ein selbstgebasteltes Audio-Interface, den "DOS-
Digitizer" [2], zu dem es in der Ausgabe 10/1990 der Zeitschrift "DOS International", die ich damals 
abonniert hatte, eine Bauanleitung inklusive Platinen-Layout gab (ja, damals wurde noch richtig 
gebastelt, nicht nur vorgefertigte Komponenten zusammengesteckt!). Dieser Digitizer kommunizierte 
mit dem PC ber die parallele Druckerschnittstelle - USB war ja noch nicht erfunden - und konnte 
Audiosignale mit einer Auflsung von 8 Bit sampeln - dies immerhin bei einer Sample-Frequenz von 
ber 44 kHz, was ja durchaus noch heutigem Standard entspricht.

Die Audio-Datei, in der die von mir selbst aufgenommenen Phoneme der deutschen Sprache (65 an der 
Zahl; siehe [8]) enthalten sind, hatte ein selbstkreiertes Format und war daher zu nichts kompatibel 
auer zu den damals von mir selbstgeschriebenen Programmen. Hierzu gehrte auch AUDIG, ein einfacher 
Audio-Editor zum manuellen Schneiden und Abspeichern einzelner Segmente (z.B. Phoneme) aus einem 
Audiosignal [1].

Das 1993 fr DOS entwickelte Programm SPRICH [1] wurde 2017 noch einmal aktualisiert, so dass es nun 
auch unter Windows lauffhig ist und mit normalen Soundkarten funktioniert - wobei inzwischen der 
Begriff "Soundkarte" auch schon wieder fast ein Anachronismus ist - fast wie "Schallplatte" -, denn 
mittlerweile ist dafr keine Erweiterungsplatine ("Karte") mehr erforderlich, die man in den Rechner 
steckt, sondern dies ist bereits alles auf der Hauptplatine des Rechners oder sogar im SOC 
("System-on-a-Chip" bzw. "Ein-Chip-System") integriert. Aus dem Rechnergehuse gucken dann nur noch 
ein paar unscheinbare Buchsen fr Mikrofon und Headset oder Lautsprecherboxen, und keiner wei mehr, 
was eigentlich alles an Technik dahintersteckt...

Anstelle der alten Phonem-Audiodatei PHONEME.PHO und der dazugehrigen Phonem-Definitionsdatei 
PHONEME.DEF verwendet das "neue" SPRICH nun eine standardkonforme WAV-Datei mit eingebetteter 
Cue-Liste. Diese enthlt Angaben zu jedem einzelnen Phonem wie das Lautschrift-Zeichen (z.B. "a"), 
eine optionale Bemerkung oder Beschreibung, etwa zur Aussprache (z.B.: "Beispiel: M<a>nn"), und 
natrlich Position und Lnge der Aufnahme des Phonems innerhalb der WAV-Datei. Das Programm selbst 
ist ganz "dumm" wei nichts von irgendwelchen "Phonemen" - es liest einfach nur irgendwelche Zeichen 
von der Tastatur oder aus einer Textdatei ein und spielt die dazugehrigen Samples aus der WAV-Datei 
ab. Dies bedeutet, dass man dem Programm "ganz einfach" - d.h. ohne selbst programmieren zu mssen - 
eine andere Stimme, eine abweichende Lautschrift oder sogar eine neue Sprache beibringen kann. 
Hierzu muss man lediglich mit einem geeigneten Audio-Editor neue Phoneme aufnehmen und diese in der 
Cue-Liste entsprechend benennen. Die Aufnahmen der einzelnen Phoneme mssen dazu noch nicht einmal 
nahtlos nebeneinanderliegen, sondern knnen durchaus auch kreuz und quer irgendwo mitten in der 
Datei liegen - Hauptsache, sie sind sauber eingegrenzt und eindeutig benannt. Vorher sollte man sich 
natrlich genau berlegen, welche Phoneme man bentigt, und wie die dazugehrigen Lautschrift-
Zeichen aussehen sollen. Anschlieend speichert man das Ganze als WAV-Datei ab - vorzugsweise unter 
dem Dateinamen "phoneme.wav". Zur Bearbeitung von WAV-Dateien mit Cue-Liste eignen sich vielen 
Audio-Editoren (z.B. Adobe Audition; leider nicht Audacity).

Am Programm selbst wurden folgende nderungen vorgenommen:

1.) Die Sound-Ausgabe erfolgt ber ein auswhlbares Wiedergabegert (Soundkarte) statt ber den an 
	die parallele Druckerschnittstelle anzuschlieenden "DOS-Digitizer" [2].

2.) Verwendung einer WAV-Datei mit eingebetteter Cue-Liste anstelle der alten Phonem-Audiodatei 
    PHONEME.PHO und der dazugehrigen Phonem-Definitionsdatei PHONEME.DEF.

3.) Wegfall der folgenden Kommandos bzw. Funktionen im interaktiven Modus:

	- "random" zum Erzeugen von zufallsgesteuertem "Phonemsalat" mittels Pseudozufallszahlen.

	- "extern" zum Erzeugen von zufallsgesteuertem "Phonemsalat" durch Einlesen eines 8-Bit-Wertes 
	  von der parallelen Druckerschnittstelle (die heute so leider in keinem PC mehr vorhanden ist).

	- "proto" zum Offnen/Schlieen einer Textdatei, in der whrend der Wiedergabe des 
	  zufallsgesteuerten "Phonemsalats" die Phoneme mitprotokolliert wurden. 
	  Diese Textdatei konnte dann spter durch das Programm erneut "vorgelesen" werden.

	Fr die zufallsgesteuerte Phonem-Wiedergabe zwecks experimenteller Untersuchungen auf mgliche 
	"paranormale" Inhalte kann seit dem Jahr 2000 das Programm "EVPmaker" benutzt werden (siehe [3]). 
	Eine entsprechend hierfr angepasste Version der Phonemdatei ist ebenfalls erhltlich (siehe [4]).

4.) Umbenennung folgender Kommandos im interaktiven Modus:

	- "lies" statt "lese"
	- "schreibe" statt "schr"
	- "liste" statt "list"

5.) Erweiterung um folgende neue Kommandos im interaktiven Modus:

	- "lade"
	- "wav"
	- "wavcue"
	- "wavplay"
	- "zeile"
	- "gert"

	Eine Beschreibung der einzelnen Funktionen befindet sich weiter unten im Abschnitt 
	"2. Die Bedienung des Programms SPRICH".

6.) nderung einiger Phonembezeichnungen in der Datei PHONEME.DEF.

	Folgende Phoneme erhielten eine krzere Schreibweise:

	- "dj" wurde zu "J"
	- "ng" wurde zu "N"
	- "sch" wurde zu "S"
	- "tsch" wurde zu "tS"
	- "psch" wurde zu "pS"
	- "ksch" wurde zu "kS"

	Auch fr die Pausen gibt es neue Zeichen. Bisher entsprach die Phonembezeichnung der Pausendauer 
	in Millisekunden - nun gibt es hierfr kurze Symbole:

	- "50" wurde zu "|" (senkrechter Strich bzw. "Pipe"-Symbol)
	- "100" wurde zu " " (1 Leerzeichen)
	- "200" wurde zu "  " (2 Leerzeichen)
	- "500" wurde zu "." (Punkt)
	- "1000" wurde zu "#" (Doppelkreuz bzw. Raute oder "Hash"-Symbol)

7.) Wegfall der Notwendigkeit, im phonetischen Text Leerzeichen zwischen jedes Phonem einzufgen.

	Bisher dienten Leerzeichen innerhalb eines in Phonemschrift geschriebenen Textes dazu, die 
	einzelnen Phoneme voneinander zu trennen. Dies war dem simplen Algorithmus in dem Programm 
	"SPRICH" geschuldet. In der berarbeiteten Version wurde diese Einschrnkung beseitigt. 
	Leerzeichen dienen jetzt zum Einfgen von Pausen - jedes Leerzeichen entspricht dabei einer 
	Pause von ca. 100 ms Dauer.

	Durch die Verkrzung einiger Phonemzeichen und den Wegfall von Leerzeichen als Trenner zwischen 
	den Phonemen wird ein in Phonemschrift geschriebener Text kompakter, ist leichter zu lesen und 
	auch schneller zu schreiben. Zum Vergleich hier ein Phonemtext nach dem alten Format:

		m i t 100 h i l f 3 100 d i: s 3 z 100 p r o g r a m 3 z 100 k 3 n 3 n 100 s i: 
		100 i0 r 3 m 100 r  c n 0 100 d a z 100 sch p r  c 3 n 100 b ai b r i ng 3 n 500

	Und hier dasselbe im neuen Format:

		mit hilf3 di:s3z program3z k3n3n si: 
		i0r3m rcn0 daz Sprc3n baibriN3n.

8.) berarbeitung des Quelltextes:

	Im Zuge der Programmnderungen wurde auch der gesamte C-Quelltext einer "Generalberholung" 
	unterzogen. Unter DOS-Zeiten mit einer Bildschirmauflsung von 25 Zeilen mit je 80 Zeichen im 
	"Textmodus" war es nicht unblich, beim Programmieren wertvollen Platz zu sparen und deswegen 
	mglichst kurze Variablennamen und mglichst wenige "berflssige" Leerzeichen und Kommentare zu 
	verwenden. Heute ist eine gute Lesbarkeit des Quelltextes wichtiger, daher werden aussagekrftige 
	Variablennamen verwendet, an deren Bezeichnung man schon erkennen kann, welchen Datentyp sie 
	haben und ob sie lokal oder global definiert sind.

	Der Quelltext besteht aus nur einer einzigen C-Datei (sprich.c) und kann mit gcc [6] kompiliert 
	werden. Der dazu erforderliche Aufruf lautet:

		gcc -Wall -O3 -o sprich sprich.c riff.c winmm.lib

	Die Option -O3 ist die hchste Optimizer-Stufe und erzeugt den schnellsten Code.
	Die Option -Wall schaltet alle Compiler-Warnungen an.

Unverndert geblieben bei SPRICH ist, dass es sich um ein Kommandozeilen-Programm fr die Konsole 
ohne grafische Benutzeroberflche handelt. Aus "nostalgischen Grnden" habe ich den im Hilfetext 
ausgegebenen Programmtitel auch unverndert bei "SPRICH V1.0  Copyright (c) 1993 Stefan Bion" 
belassen. :-)


2. Die Bedienung des Programms SPRICH
-------------------------------------

SPRICH ist ein Kommandozeilen-Programm fr die Konsole ohne grafische Benutzeroberflche, d.h. es 
wird ber die Windows-Eingabeaufforderung (cmd.exe) aufgerufen und benutzt. 

Zur Windows-Konsole (Eingabeaufforderung) vorab ein paar wichtige bzw. ntzliche Hinweise:

Falls nach dem Programmstart die Umlaute nicht korrekt angezeigt werden, liegt das daran, dass das 
Konsolen-Fenster einen DOS-Zeichensatz verwendet. Um das zu beheben, muss ein Windows-Zeichensatz 
eingestellt werden. Dies geht durch Klicken auf das Symbol ganz links in der Titelleiste des 
Konsolen-Fensters. In dem daraufhin geffneten Men whlt man "Eigenschaften", und in dem daraufhin 
wiederum geffneten "Eigenschaften"-Fenster klickt man man den Reiter "Schriftart" und whlt dort 
eine andere Schriftart aus, z.B. "Lucida Console". Und wenn man schon einmal dabei ist, kann man 
auch gleich noch die Zwischenablage-Funktion der Konsole aktivieren: Reiter "Optionen", Hkchen bei 
"QuickEdit-Modus" setzen. Man kann dann mittels Rechtsklick in das Konsolen-Fenster Texte aus der 
Zwischenablage an der aktuellen Cursorposition einfgen, oder umgekehrt mit der Maus markierte Texte 
mittels Rechtsklick aus dem Konsolen-Fenster in die Zwischenablage einfgen. Dies ist ganz ntzlich, 
wenn man Phonemtexte in einem separaten Text-Editor vorschreibt und dann Zeilenweise an SPRICH 
bergeben will, um mal schnell auszuprobieren, wie sich das anhrt. Es gibt auch noch weitere 
sinnvolle oder ntzliche Einstellmglichkeiten, etwa die Fenstergre und die Fensterpuffergre im 
Reiter "Layout". Den Wert "Hhe" unter "Fensterpuffergre" setze ich immer auf den Maximalwert von 
9999 - so kann man bei Bedarf auch mal etwas weiter hochscrollen. Auch die Schrift- und 
Hintergrundfarben lassen sich nach eigenen Wnschen anpassen. Damit man diese mhevoll geamchten 
Einstellungen nich jedemal erneut vornehmen muss, kann man diese auch dauerhaft speichern, indem man 
nach Klick auf "OK" bei "Eigenschaften bernehmen" auswhlt: "Eigenschaften gelten fr alle Fenster 
mit gleichem Namen" oder "Verknpfung, die dieses Fenster aufruft, ndern" (so zumindest lautet das 
bei Windows XP - bei anderen Windows-Versionen kann das anders heien). Eine andere Mglickeit 

SPRICH kann im Batchmodus oder im interaktiven Modus betrieben werden. Im Batchmodus kann beim 
Aufruf der Pfad zu einer Textdatei mit Phonemschrift mit angegeben werden, die dann direkt 
"vorgelesen" wird. Anschlieend beendet sich das Programm wieder. Das Vorlesen kann auch durch 
Drcken einer beliebigen Taste vorzeitig beendet werden.

Beispiel fr den Aufruf im Batch-Modus:

	D:\>sprich demo.txt
	Lese Textdatei "demo.txt" vor - zum Beenden beliebige Taste drcken ...
	   1: *******************************************************************************
	   2: * Allerlei "Quatschtext" zum Ausprobieren.
	   3: * Transkribiert am 15.05.1993.
	   4: *******************************************************************************
	   5:
	   6: halo: li:b3 k0mpju:t0|fr0ind3.
	   7: mit hilf3 di:s3z program3z
	   8: k3n3n si: i0r3m rcn0 daz
	   9: Sprc3n baibriN3n.
	(usw.)

Whrend des Vorlesens werden die Zeilen aus der Datei mit vorangestellter Zeilennummer ausgegeben.
So kann man whrend des Vorlesens "mitlesen".

Im interaktiven Modus (ohne Angabe einer vorzulesenden Textdatei) erscheint nach dem Aufruf ein 
kurzer Hilfetext, in dem die Programmfunktionen kurz beschrieben werden:

	D:\>sprich

	SPRICH V1.0  Copyright (c) 1993 Stefan Bion (Build: Jan 31 2017, 22:59:33)
	Sie knnen beim Aufruf des Programmes SPRICH folgende Optionen angeben:

	  -p<Phonemdatei>[.wav]     Phonemdatei (WAV-Datei mit Cue-List) [phoneme.wav]
	  -o0 oder -o1              Audiogert whrend Wiedergabe geffnet halten [0]
	  <Textdatei>               Diese Textdatei (Phonemschrift) wird sofort vorgelesen

	Im interaktiven Modus stehen folgende Kommandos zur Verfgung:

	  lade [<Datei>[.txt]]      Ldt die Textdatei []
	  lies [<Datei>[.txt]]      Liest die Textdatei vor
	  schreibe [<Datei>[.txt]]  Hngt den zuletzt eingegebenen Satz an die Textdatei an
	  wav [<Datei>[.wav]]       Erzeugt aus der geladenen Textdatei eine WAV-Datei
	  wavcue [<Datei>[.wav]]    Wie 'wav', jedoch zustzlich mit Cue-Liste der Phoneme
	  wavplay [<Datei>[.wav]]   Wie 'wav', jedoch komprimiert mit Play-Liste zur Wiedergabe
	  zeile [von][-][bis]       Setzt Von-/Bis-Zeile fr 'lies' und 'wav...' [-]
	  liste                     Listet alle Phoneme mit Lnge und Beschreibung auf
	  gert [n]                 Auswahl des Audio-Wiedergabegertes [WAVE_MAPPER]
	  hilfe                     Zeigt diesen Hilfstext an
	  ende                      Beendet das Programm SPRICH

	Ansonsten knnnen Sie direkt Phonemschrift eingeben, die das Programm sofort
	nachpricht. Eine leere Eingabe (nur RETURN) wiederholt die letzte Wiedergabe.

	Es sind 71 Phoneme definiert.

	Sprich>_

Normalerweise verwendet SPRICH als Phonemdatei die Datei "phoneme.wav" im selben Verzeichnis, in dem 
auch die Programmdatei "sprich.exe" liegt. Wenn SPRICH einen anderen Phonemsatz verwenden soll, dann 
kann dessen Dateiname oder -pfad beim Aufruf des Programms hinter der Option -p angegeben werden. 
Beispiel:

	D:\>sprich -p"Meine Phoneme"

In diesem Fall wrde statt der normalerweise verwendeten Phonemdatei "phoneme.wav" die Datei 
"Meine Phoneme.wav" geladen werden. Die Endung ".wav" braucht nicht unbedingt mit angegeben zu 
werden. Falls der Dateiname Leerzeichen enthlt, muss der Name in Anfhrungszeichen gesetzt werden.
Zwischen der Option -p und dem Dateinamen darf sich allerdings kein Leerzeichen befinden!

Mit der Option -o kann man angeben, ob das Audiogert whrend des "Vorlesens" einer Textdatei 
geffnet bleiben soll (-o1), oder ob es fr jede vorzulesende Zeile geffnet und anschlieend wieder
geschlossen werden soll (-o0). Dies dient dazu, die leider unvermeidlichen kurzen Pausen zwischen 
den einzelnen Zeilen mglichst zu minimieren. Auf Windows-Versionen ab Vista ist es gnstiger, 
das Gert immer geffnet zu halten, daher wird diese Einstellung dort auch automatisch vorgenommen.
Auf Windows XP dagegen sind die Pausen krzer, wenn das Gert nicht stndig geffnet ist. Daher ist 
diese Option dort standardmig ausgeschaltet. Durch Angabe der Option -o kann diess automatische 
Verhalten bersteuert werden.

Unterhalb des Hilfetextes wird die Eingabeaufforderung "Sprich>" angezeigt. Dort knnen die 
angegebenen Kommandos eingetippt werden. Die Angaben zwischen den eckigen Klammern hinter den 
einzelnen Kommandos, wie z.B. [<Datei>[.txt]], sind optionale Parameter, die ggf. auch weggelassen 
werden knnen. Bei den Dateinamen brauchen keine Dateiendungen angegeben zu werden; fehlt diese, 
dann wird die in eckigen Klammern angegebene Dateiendung verwendet Wird z.B. das Kommando 
"lies demo" angegeben, dann wird die Datei "demo.txt" geladen und vorgelesen.

Nachfolgend eine ausfhrliche Beschreibung der einzelnen Kommandos:

	- "lade" - Ldt eine existierende Textdatei mit Phonemschrift, ohne sie vorzulesen. 

	  Durch die Funktion "lade" wird die Textdatei noch nicht geffnet und auf Existenz berprft, 
	  sondern das Programm merkt sich zunchst nur den Pfad bzw. den Namen der Datei zur spteren 
	  Verwendung. 

	  Nachdem eine Datei geladen wurde, kann das Vorlesen ber das Kommando "lies" ohne Angabe eines 
	  Dateinamens gestartet werden. Es kann auch die Funktion "pcm" aufgerufen werden, um daraus 
	  eine Audiodatei im PCM-Format zu erzeugen.

	  Der Name der aktuell geladenen Textdatei wird in den eckigen Klammern [] hinter dem 
	  Beschreibungstext zum Kommando "lade" angezeigt (nach erneutem Aufruf des Hilfetextes mittels 
	  des Kommandos "hilfe"). Ebenso wird der Name der aktuell geladenen Textdatei ausgegeben, wenn 
	  der Befehl "lade" ohne weitere Parameter eingegeben wird.

	- "lies" - Liest eine Textdatei mit Phonemschrift vor. Wenn als Parameter der Name einer 
	  Textdatei mit angegeben wird, dann wird diese Datei geladen und vorgelesen. Ohne Angabe eines 
	  Dateinamens wird die zuletzt mittels "lade", "lies" oder "schreibe" geladene Textdatei erneut 
	  vorgelesen. Ein Tastendruck bricht das Vorlesen vorzeitig ab.

	  Die vorzulesenden Textdateien knnen auer der Phonemschrift auch Leerzeilen oder 
	  Kommentarzeilen enthalten - diese werden beim Vorlesen ignoriert. Als Kommentarzeilen gelten 
	  Zeilen, die mit einem Sternchen beginnen.

	  Die ZIP-Datei, in der unter anderem das Programm SPRICH enthalten ist, enthlt einige 
	  Beispiel-Textdateien mit Phonemschrift, die mit der Funktion "lies" vorgelesen werden knnen
	  (siehe Kapitel "3. Die Dateien im ZIP-Archiv").

	- "schreibe" - Schreibt die zuletzt manuell eingegebenen und gesprochenen Phoneme in die aktuell 
	  (mittels "lade", "lies" oder "schreibe") geladene Textdatei. Die Phoneme werden dazu als neue 
	  Textzeile an das Ende der Datei angehngt. Falls die Datei noch nicht existiert, wird sie neu 
	  angelegt. Diese Funktion war ursprnglich (d.h. in der DOS-Version des Programms) dazu gedacht, 
	  neue Textdateien mit Phonemschrift zu erstellen oder zu erweitern, indem man erst einen Satz 
	  in Phonemschrift eingab und sprechen lie, ggf. korrigierte, und dann mittels "schreibe" zur 
	  Textdatei hinzufgte. Unter Windows, wo im Gegensatz zu DOS mit mehreren Programmen parallell 
	  gearbeitet werden kann, ist diese Vorgehensweise eigentlich nicht mehr sinnvoll, da man hier 
	  mittels der Zwischenablage Texte beliebig zwischen Texteditor und Konsole hin- und 
	  herkopieren kann.

	- "wav" - Erzeugt aus der (mittels "lade", "lies" oder "schreibe") geladenen Textdatei eine 
	  WAV-Datei mit dem vorgelesenen Text. Diese Datei kann dann mit anderen Audioprogrammen 
	  geffnet werden, um z.B. in eine MP3-Datei umgewandelt zu werden. Wird kein Dateiname 
	  angegeben, dann wird der zuletzt verwendete Dateiname oder der Name der geladenen Textdatei 
	  (mit der Endung ".wav" statt ".txt") verwendet.

	- "wavcue" - Wie "wav", jedoch wird zustzlich eine Cue-Liste in die WAV-Datei eingebettet. 
	  Diese enthlt die Positionen, Lngen, Bezeichnungen und Beschreibungen der ausgegebenen 
	  Phoneme, wie sie in der Phonemdatei "phoneme.wav" angegeben sind. Nach ffnen der Datei in 
	  einem geeigneten Audio-Editor (z.B. Adobe Audition) knnen die einzelnen Phoneme in der 
	  Audiodatei genau lokalisiert oder nher untersucht werden.

	- "wavplay" - Wie "wav", jedoch werden die Phoneme des vorzulesenden Textes hier in einer 
	  Play-Liste  gespeichert, deren Eintrge auf die Cue-Liste verweisen. Bei den gespeicherten 
	  PCM-Audiodaten und der Cue-List handelt es sich um eine Kopie aus der Phonemdatei (z.B. 
	  "phoneme.wav"). Die Audiodaten werden somit "komprimiert" gespeichert, d.h. jedes Phonem 
	  existiert als Sample nur einmal, egal wie oft es im Text vorkommt. Die erzeugte WAV-Datei 
	  ist daher immer in etwa so gro wie die Phonemdatei, unabhngig davon, wie lang der 
	  wiederzugebende Text ist.
	  
	  Zum Abspielen der Play-Liste eignen sich z.B. Programme wie Adobe Audition, die WAV-Dateien 
	  mit Cue- und Play-Listen verarbeiten knnen. Die Play-Liste in Adobe Audition wird ber das 
	  Men "View > Show Play List" geffnet und ber den Button "Play" abgespielt.

	- "zeile" - Ermglicht die Angabe eines Zeilenbereiches fr die Vorlesefunktion ("lies") und 
	  fr die Erzeugung einer WAV-Datei ("wav", "wavcue" und "wavplay"). Die Angabe erfolgt als 
	  Zeilennummern fr die erste und die letzte zu bercksichtigende Zeile. Von- und Bis-Zeile 
	  mssen durch ein "Minus"-Zeichen (-) voneinander getrennt werden. Beispiele fr die Syntax:

		-    => erste bis letzte Zeile
		3-   => 3. bis letzte Zeile
		-3   => erste bis 3. Zeile
		3-3  => 3. Zeile
		3    => 3. Zeile

	  Ohne Angaben gibt das Kommando "zeile" den aktuell eingestellten Zeilenbereich aus. Dieser ist
	  zustzlich auch im Hilfetext rechts neben der Beschreibung zum Kommando "zeile" in eckigen 
	  Klammern zu sehen.

	  Durch das Laden einer neuen Textdatei mittels "lade", "lies" oder "schreibe" wird der 
	  Zeilenbereich wieder auf "erste bis letzte Zeile" zurckgesetzt.

	- "liste" - Gibt eine Liste aller geladenen Phoneme zusammen mit ihrer Dauer in Sekunden und 
	  einem kurzem Beschreibungstext aus. Bezeichnung und Beschreibung der Phoneme stammen aus der 
	  Phonem-Definitionsdatei (PHONEME.DEF), die Wiedergabedauer aus der dazugehrigen Audiodatei 
	  (PHONEME.AUD).

	- "gert" - Auswahl des zu verwendenden Audiogertes fr die Wiedergabe. Ohne Angabe eines 
	  Parameters werden die im System vorhandenen Audio-Wiedergabegerte aufgelistet, gefolgt von  
	  einer Eingabeaufforderung zur Eingabe der Nummer des neu auszuwhlenden Gertes. Beispiel: 

			Sprich>gert
			Vorhandene Gerte:
			>  -1 - WAVE_MAPPER
			    0 - SB Audigy Audio [BF00]
			    1 - Realtek HD Audio output
			Auswahl: _

	  Nach Eingabe einer Nummer (z.B. 0) wird das entsprechende Gert ausgewhlt und dieses dann 
	  unterhalb der Eingabeaufforderung angezeigt. Wird nichts eingegeben (d.h. nur die RETURN-Taste 
	  gedrckt), dann ndert sich nichts. Das aktuell ausgewhlte Gert wird zustzlich auch in 
	  eckigen Klammern [] hinter dem Beschreibungstext zum Kommando "gert" angezeigt (nach Aufruf 
	  des Hilfetextes mittels "hilfe"). Voreingestellt ist "WAVE_MAPPER", was dem Standard-Gert in 
	  Windows entspricht und im Normalfall funktionieren sollte, so dass dieses Kommmando nur im 
	  Bedarfsfall aufgerufen zu werden braucht.

	- "hilfe" - Zeigt den Hilfstext des Programms an (s.o.).

	- "ende" - Beendet das Programm SPRICH


3. Die Dateien im ZIP-Archiv
----------------------------

Folgende Dateien befinden sich in dem ZIP-Archiv "sprichwin.zip":

	Dokumentation:

	- README.txt          Diese vorliegende Datei.

	Das Programm und weitere zur Ausfhrung bentigte Dateien:

	- sprich.exe          Das ausfhrbare Programm SPRICH.
	- phoneme.wav         Die Phonem-Audiodatei mit eingebetteter Cue-Liste fr die 
	                      Metadaten zu den enthaltenen Phonemen (siehe [8]).

	Beispiel-Textdateien mit Phonemschrift, die mit der Funktion "lies" vorgelesen werden knnen:

	- demo.txt            Allerlei "Quatschtext" zum Ausprobieren.
	- hannya.txt          Das buddhistische Sutra "Hannya Shingyo".
	- johanson.txt        Ein kurzes Zitat aus einem Buch von Tom Johanson.
	- seasons.txt         Der ebenfalls bekannte englische Song "Seasons in the Sun".
	- martin.txt          Das bekannte Martinslied.
	- mops.txt            Das Gedicht "Ottos Mops" des Sprachakrobaten von Ernst Jandl.
	- zeiten.txt          Das Gedicht "Von Zeiten" des Sprachakrobaten von Ernst Jandl.

	Beispiel fr die automatische Konvertierung einer PHO-Datei fr den Sprachsynthesizer MBROLA in 
	eine Phonemschrift-Textdatei fr SPRICH (nhere Hinweise hierzu im Anhang unter [7]):

	- mb2sp.pl            Perl-Script zur Konvertierung von MBROLA-PHO-Dateien in SPRICH-Phoneme.
	- wetter.pho          Phonemdatei fr den Sprachsynthesizer MBROLA.
	- wetter.txt          Phonemschrift-Textdatei fr SPRICH, mit mb2sp.pl konvertiert.

	Dateien zur Erstellung der ausfhrbaren Datei "sprich.exe":

	- Konsole.lnk         Verknpfung zur Windows-Eingabeaufforderung - startet "autoexec.bat".
	- autoexec.bat        Batchdatei - setzt den Windows-Zeichensatz und die Umgebung fr gcc.
	- make.bat            Batchdatei zum Erstellen des Programms SPRICH.

	- sprich.c            Sourcecode des Programms SPRICH.
	- riff.c              Sourcecode mit Strukturen fr die Cue-List und Funktionen zum Parsen von 
	                      RIFF-Files.
	- riff.h              Headerdatei zu "riff.c".
	- WINMM.LIB           Bibliothek mit Windows-Multimedia-Funktionen fr die Aufnahme und 
	                      Wiedergabe von Audio ber die Soundkarte.


4. Anhang
---------

[1] DOS-Programm SPRICH von 1993:
	http://www.stefanbion.de/dosprogs/

[2] DOS-Digitizer: http://www.stefanbion.de/dosprogs/digitizer.htm

[3] EVPmaker: http://www.tonbandstimmen.de/evpmaker/

[4] Phonemdatei als WAV-Datei fr EVPmaker und andere Audioprogramme:
	http://www.tonbandstimmen.de/files/phoneme.wav

	Die WAV-Datei enthlt dieselben PCM-Samples wie die originale Audiodatei PHONEME.AUD, jedoch 
	wurde die Samplerate auf den blicheren Wert von 22050 Hz gesetzt. Die Positionen der Phoneme 
	innerhalb der PCM-Audiodaten sowie die in der Datei PHONEME.DEF enthaltenen Namen und 
	Beschreibungen der Phoneme wurden als Cue-Marker direkt in die WAV-Datei integriert und knnen 
	mit blichen Audio-Editoren oder mit meinem Programm "CueListTool" [5] bearbeitet werden.

[5] CueListTool: http://www.tonbandstimmen.de/cuelisttool/

[6] gcc (als Bestandteil von "MinGW - Minimalist GNU for Windows"):
	http://www.mingw.org/

	Nach dem Start des nur 85 KB kleinen Installers werden weitere Pakete aus dem Internet 
	nachgeladen. Fr die Entwicklung in C gengt es, das Paket "mingw32-base" zu installieren.
	Anschlieend muss das Unterverzeichnis "bin" (z.B. "C:\Programme\MinGW\bin") in die PATH-
	Variable aufgenommen werden.

	Unter 64-Bit-Windows hatte ich das Problem, dass bei Aufruf von "gcc" eine Fehlermeldung kam.
	Dies lie sich durch Aufruf von "mingw32-gcc.exe" statt "gcc.exe" beheben.

	Ein weitere gcc-Distribution fr Windows ist "MinGW-w64 - for 32 and 64 bit Windows":
	https://sourceforge.net/projects/mingw-w64/

	Es erzeugt mit denselben gcc-Optionen kleinere Binaries gegenber MinGW, z.B. 75 KB statt 85 KB 
	fr "sprich.exe".

[7] MBROLA (https://en.wikipedia.org/wiki/MBROLA) ist ein Sprachsynthesizer, der - hnlich wie 
	SPRICH - aus Phonemen hrbare Sprache erzeugt - allerdings in einer wesentlich besseren Qualitt
	als SPRICH, da hierbei statt Phonemem Diphone verwendet werden und zudem auch die Tonhhe 
	bercksichtigt wird; somit klingt die mit MBROLA erzeugte Sprache schon sehr natrlich. MBROLA 
	verwendet ein spezielles Dateiformat mit der Endung ".pho", in der die wiederzugebenden Phoneme 
	untereinander geschieben werden, d.h. jedes Phonem steht in einer eigenen Zeile der PHO-Datei. 
	Rechts neben jedem Phonem sind dort noch zustzliche Parameter zur Tonhhe und Dauer angegeben. 
	Mit Hilfe des Perl-Scripts "mb2sp.pl", das sich in dem ZIP-Archiv "sprichwin.zip" befindet, 
	knnen aus solchen PHO-Dateien fr MBROLA Phonemschrift-Textdateien fr SPRICH erzeugt werden. 
	Die Informationen zur Tonhhe und zur Dauer der Phoneme gehen dabei natrlich verloren, da die 
	Frequenz und die Dauer der Phoneme nicht variabel sind, sondern in der Phonemdatei festgelegt 
	sind. Lediglich die Pausendauern werden aus der PHO-Datei bernommen.

	Um das Perl-Script verwenden zu knnen, muss natrlich ein Perl-Interpreter installiert sein. 
	Der Aufruf erfolgt dann von der Windows-Eingabeaufforderung aus folgendermaen:

		perl mb2sp.pl < PHO-Datei > Textdatei

	Ein konkretes Beispiel zur Konvertierung der MBROLA-Datei "wetter.pho" in die Phonemschrift-
	Textdateien "wetter.txt" fr SPRICH:

		perl mb2sp.pl < wetter.pho > wetter.txt

	Die erzeugte Datei "wetter.txt" kann anschlieend mit dem "lies"-Kommando von SPRICH 
	wiedergegeben werden.

[8] Die in der Phonemdatei "phoneme.wav" enthaltenen Phoneme der deutschen Sprache mit ihren 
    Lautschriftzeichen und Aussprachebeispielen:

	Nr. | Dauer [s] | Phonem   | Beschreibung
	----+-----------+----------+----------------------------------------------------
	  1 |     0.102 | a        | Beispiel: M<a>nn
	  2 |     0.205 | a:       | Beispiel: V<a>ter, k<a>m, Schw<a>n
	  3 |     0.100 | e        | Beispiel: <E>dikt
	  4 |     0.199 | e:       | Beispiel: W<e>g
	  5 |     0.100 | 3        | Beispiel: bitt<e>, <>ffnen
	  6 |     0.200 | 3:       | Beispiel: g<ir>l, l<ear>n (engl.)
	  7 |     0.100 |         | Beispiel: M<>nner
	  8 |     0.201 | :       | Beispiel: w<>hlen
	  9 |     0.102 | i        | Beispiel: W<i>nd
	 10 |     0.203 | i:       | Beispiel: v<ie>le
	 11 |     0.101 | 0        | Beispiel: k<o>mmen
	 12 |     0.201 | 0:       | Beispiel: f<a>ll, bef<ore> (engl.)
	 13 |     0.099 | o        | Beispiel: Adv<o>kat
	 14 |     0.199 | o:       | Beispiel: B<oo>t
	 15 |     0.100 |         | Beispiel: <>konomisch
	 16 |     0.200 | :       | Beispiel: sch<>n
	 17 |     0.098 | u        | Beispiel: M<u>tter
	 18 |     0.197 | u:       | Beispiel: K<u>chen
	 19 |     0.097 |         | Beispiel: Gl<>ck, kn<>pfen
	 20 |     0.204 | :       | Beispiel: F<>e, Kr<>mel
	 21 |     0.261 | ai       | Beispiel: h<ei>raten, B<ei>spiel
	 22 |     0.238 | au       | Beispiel: M<au>s, <au>f
	 23 |     0.274 | eo       | Beispiel: Th<eo>logie
	 24 |     0.283 | 30       | Beispiel: Geh<r>
	 25 |     0.267 | a       | Beispiel: ordin<r>
	 26 |     0.253 | i       | Beispiel: d<a>te, pl<ay> (engl.)
	 27 |     0.265 | 0       |
	 28 |     0.237 | ia       | Beispiel: L<ia>ne
	 29 |     0.265 | i0       | Beispiel: T<ier>
	 30 |     0.294 | io       | Beispiel: B<io>logie
	 31 |     0.264 | 0i       | Beispiel: B<eu>te
	 32 |     0.250 | oa       | Beispiel: Kl<oa>ke
	 33 |     0.289 | o0       | Beispiel: herv<or>, T<or>
	 34 |     0.256 | u3       | Beispiel: R<uhe>
	 35 |     0.262 | ui       | Beispiel: L<ui>se
	 36 |     0.254 | u0       | Beispiel: <Uhr>, Tort<ur>
	 37 |     0.169 | b        | Beispiel: <b>esser, ha<b>en
	 38 |     0.141 | d        | Beispiel: <d>u, <d>anke
	 39 |     0.178 | f        | Beispiel: <f>inden, <V>ater, <Ph>iloso<ph>
	 40 |     0.145 | g        | Beispiel: <G>old, <G>eld
	 41 |     0.216 | J        | Beispiel: <G>enie
	 42 |     0.200 | h        | Beispiel: <H>aus
	 43 |     0.219 | c        | Beispiel: Li<ch>t, Mn<ch>
	 44 |     0.291 | x        | Beispiel: A<ch>tung, Lo<ch>, Bu<ch>
	 45 |     0.103 | j        | Beispiel: <j>a, <j>ung
	 46 |     0.213 | k        | Beispiel: <k>eck, Ta<g>, <Ch>ronist, <C>af
	 47 |     0.172 | l        | Beispiel: <l>assen
	 48 |     0.213 | m        | Beispiel: <M>aus
	 49 |     0.217 | n        | Beispiel: <n>ei<n>
	 50 |     0.291 | n:       | Beispiel: <n>ei<n>
	 51 |     0.164 | N        | Beispiel: si<ng>en, tri<n>ken
	 52 |     0.225 | p        | Beispiel: <P>ass, Wei<b>, o<b>gleich
	 53 |     0.172 | r        | Beispiel: <R>asen, <R>egen, <R>ose
	 54 |     0.166 | z        | Beispiel: Gla<s>, Ma<ss>e, Ma<s>t, na<ss>
	 55 |     0.195 | s        | Beispiel: <S>ohn, Ro<s>e
	 56 |     0.184 | S        | Beispiel: <Sch>iff, <Ch>arlotte
	 57 |     0.126 | t        | Beispiel: <T>ee,  S<t>a<dt>, Fin<d>ling
	 58 |     0.148 | w        | Beispiel: <V>ase, <W>inter
	 59 |     0.255 | tz       | Beispiel: Ka<tz>e
	 60 |     0.272 | tS       | Beispiel: kla<tsch>en, We<tts>treit
	 61 |     0.282 | pf       | Beispiel: <Pf>anne
	 62 |     0.284 | pz       | Beispiel: <Ps>ychologie
	 63 |     0.276 | pS       | Beispiel: h<bsch>
	 64 |     0.280 | kS       | Beispiel: E<cks>tein
	 65 |     0.301 | kz       | Beispiel: He<x>e
	 66 |     0.330 | kf       | Beispiel: Ha<ckf>leisch
	 67 |     0.043 | |        | Pause 50 ms zwischen Vokalen, z.B. b<eo>bachten (Senkrechter Strich)
	 68 |     0.095 |          | Pause 100 ms zwischen Wrtern (1 Leerzeichen)
	 69 |     0.199 |          | Pause 200 ms zwischen Satzteilen (2 Leerzeichen)
	 70 |     0.492 | .        | Pause 500 ms fr Gedankenstrich, Satzende (Punkt)
	 71 |     0.993 | #        | Pause 1000 ms fr Absatzende (Hash)

