★ APPLICATIONS ★ CREATION MUSICAL ★ CPC lernt sprechen ★![]() |
SpeechSet (Computer Technik) | Applications Creation Musical |
Digitale Tonaufzeichnung, -Speicherung und -Wiedergabe ohne Zusatzhardware Digitale Tonaufzeichnung ist der HiFi-Renner der letzten Jahre. Die ‘Compact Discs' drängen inzwischen alle Analog-Konkurrenten ins verrauschte Abseits. Immerhin bedienen sich die Laser-Plattenspieler einer digitalen Auflösung von 16 Bit. Soll aber lediglich die Sprachausgabe verständlich sein, kommt man mit einer wesentlich kleineren Auflösung aus; es reicht sogar der Ein-Bit-A/D-Wandler der Kassettenschnittstelle der CPCs aus, um einige Sekunden Sprache abzutasten und dann über den Sound-Chip zwar etwas polternd, aber doch recht verständlich die Worte wieder erklingen zu lassen. Das Prinzip einer digitalen Ton-aufzeichnung ist im Prinzip recht einfach: ein schneller Analog/Digitalwandler liefert in einem hohen Abtast-Rhythmus die der jeweiligen Eingangsspannung entsprechenden Binärzahlen. Diese werden gespeichert und beim Abspielen wieder in demselben Rhythmus an einen Digital/ Analogwandler ausgegeben. Die Übertragungsqualität hängt dabei von der Abtastrate und der 'Quantelung', also der Auflösung der verwendeten Wandler ab. Nach dem in der Nachrichtentheorie sehr bekannten ‘Shan-nonschen Abtasttheorem' benötigt man eine Abtastfrequenz, die doppelt so hoch sein muß wie die höchste zu übertragende Signalfrequenz, damit man aus den Abtastwerten das ursprüngliche Signal wieder originalgetreu zusammensetzen kann. Da sich aber die Abtastwerte nicht beliebig genau digitalisieren lassen. erhält man durch die verbleibende Ungenauigkeit einen Rauschanteil, das sogenannte â Quantisierungsrauschen'. Bei Nach dem Abtasttheorem muß man allerdings mit 40 kHz Abtastrate arbeiten, um bis zu 20 kHz (HiFi-Qualität) zu übertragen. Demnach fallen bei 16 Bit Auflösung pro Sekunde immerhin 80 KByte an, die abgespeichert werden wollen. Für die reine Sprachausgabe ist hingegen keine HiFi-Qualität erforderlich. so daß man mit einer wesentlich kleineren Auflösung auskommt. Das hier vorgestellte Programm arbeitet maximal mit einer Abtastfrequenz von etwa 14 kHz. wobei die Auflösung aber nur ein Bit beträgt, also mit Rauschabstand von lediglich 6 dB versehen ist. Dennoch ist die wiedergegebene Sprache erstaunlich verständlich. Bei 14 kHz und ein Bit Auflösung sind pro Sekunde 14000 Bits, also etwa 1.75 KByte an Speicherplatz erforderlich. Mit 21 KByte lassen sich demnach rund 12 Sekunden abspeichern. Die Abtastrate läßt sich auf Kosten der Bandbreite aber auch verkleinern (Zeitkonstante in Zeile 2870 des Assemblerprogramms), so daß man auch Platz für etwas längere Sätze bekommt. Als Analog/Digitalwandler kommt beim CPC der Kassettenport zum Einsatz, der über den Ein-/Ausgabebaustein 8255 (Port &F500. Bit 7) eingelesen werden kann. Die Ausgabe erfolgt mit dem Baustein, mit dem man auch sonst ‘Krachmacht, also mit dem Sound-Chip AY-3-8912, der sogar 16 Lautstärkestufen (vier Bit Auflösung) kennt. Wenn man dabei das Tonperiodenregister, das für die Tonhöhe verantwortlich ist, auf Null setzt, kann man den Ausgangspegel des betreffenden Kanals durch das Lautstärkeregister steuern. Man erhält so einen einfachen 4-Bit-D/A-Wandler. Da aber der Kassettenport nur ein Bit liefert, wird auch der Sound-Chip so programmiert. daß er nur 'einbittig' arbeitet, also entweder Nullpegel oder vollen Pegel führt. Stolpersteine Leider gilt es noch einige Stolpersteine der CPC-Entwickler beiseite zu räumen. Der erste ist der Sound-Chip selber, der nur mit 1 MHz betrieben wird. Er ist daher nicht direkt am Prozessorbus angeschlossen, sondern läßt sich nur indirekt über den I/O-Baustein 8255 betreiben. Dieser Umstand macht eine relativ komplizierte Programmierung notwendig, da die Software auch das Übernahmesignal erzeugen muß. Auch die Adressierung der einzelnen Register des Sound-Chips ist indirekt: zuerst erhält das Adreßregister die gewünschte Registernummer und dann erfolgt die Ausgabe des Datenwerts, den der Sound-Chip dann dem vorgewählten Register zuordnet. Jedesmal müssen bei der Übergabe zwei Steuersignale über Extra-Leitungen (Bit 7 und 6 von Port C) des 8255 ausgegeben werden, die angeben, ob es sich um eine Adresse (11xxxxxx) oder einen Wert handelt (10xxxxxx für Schreiben und 01xxxxxx für Lesen). Zu dem Zeitpunkt, an dem beim Schreiben Bit 7 wieder auf Null geht, wird das in Port A stehende Byte übernommen (Strobe). Da aber über Port C (Bit 5) auch die Steuerung des Kassettenmotors erfolgt, muß man darauf achten, daß dieses Bit jeweils den Erfordernissen entsprechend gesetzt wird, also bei der Aufnahme auf *1' und bei der Wiedergabe auf ‘0'. Demnach sieht eine vollständige Schreibanweisung an den Sound-Chip folgendermaßen aus: LD A,Registernummer (0-14)Da während der Programmausführung die Interrupts verboten werden, lassen sich die gestrichenen CPU-Register mitverwenden, um diese komplizierte Prozedur etwas zu vereinfachen. Bei der eigentlichen Sprachausgabe kann man auf das ständige Neuladen des Adreßregisters verzichten, weil man dabei immer mit demselben Lautstärkeregister arbeitet. |
| ![]() |
|