Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
z9001:module_robotron:spracheingabe [2014/05/06 06:54] – Seite verschoben von z9001:module_sonstige:spracheingabe nach z9001:module_robotron:spracheingabe volkerpz9001:module_robotron:spracheingabe [2022/09/21 15:03] (aktuell) – [Literatur] volkerp
Zeile 35: Zeile 35:
  
 Von Dr. Kordon habe ich Unterlagen zum Modul erhalten, unter anderem Listing-Ausdrucke des Softwarekerns für das K1520-System K7821. Damit war es möglich, für die Z9001-Software SPRACHE1/2.COM den Assemblercode zu rekonstruieren. Von Dr. Kordon habe ich Unterlagen zum Modul erhalten, unter anderem Listing-Ausdrucke des Softwarekerns für das K1520-System K7821. Damit war es möglich, für die Z9001-Software SPRACHE1/2.COM den Assemblercode zu rekonstruieren.
 +
 +In der TU wurde ein leicht abweichendes Modul benutzt (ohne LED), aber mit gleichen Portadressen etc.
 +
 +KC-Modul TU ohne LED, CTC 0e0h..0e3h\\
 +KC-Modul MKD mit LED Port 0E4h ein, 0E8h aus , CTC 0e0h..0e3h
  
 ===== Literatur ===== ===== Literatur =====
Zeile 43: Zeile 48:
   * Dr.-lng. Lothar Seveke und Dr.-Ing. Ulrich Kordon: Spracherkenner-Zusatzmodul für U880-Mikrorechner, rfe 11/1987, S. 728-731   * Dr.-lng. Lothar Seveke und Dr.-Ing. Ulrich Kordon: Spracherkenner-Zusatzmodul für U880-Mikrorechner, rfe 11/1987, S. 728-731
  
-Beim KC-Klub-Treffen 2008 habe ich einen {{z9001:spracherkennung.pdf|Vortrag}} über die Spracheingabe gehalten und vor allem die {{z9001:sprachmodul.zip|Software}} vorgestellt. Im Archiv gibt es die Anleitung, die komplette Softwarebeschreibung sowie den rekonstruierten Assembler-Quelltext und die Version **sprache1hx**, die das normierte Histogramm YFELD (s.u.) zu Demostrationszwecken anzeigt.+Beim KC-Klub-Treffen 2008 habe ich einen {{z9001:spracherkennung.pdf|Vortrag}} über die Spracheingabe gehalten und vor allem die {{z9001:sprachmodul.zip|Software}} vorgestellt. Im Archiv gibt es die Anleitung, die komplette Softwarebeschreibung sowie den rekonstruierten Assembler-Quelltext und die Version **sprache1hx**, die das normierte Histogramm YFELD (s.u.) zu Demonstrationszwecken anzeigt.
  
 +2016 gab es noch einen Vortrag zum Thema beim VCFB: https://media.ccc.de/c/vcfb2016 
 ===== Software ===== ===== Software =====
  
Zeile 53: Zeile 59:
 **Es ist faszinierend und einen tiefen Blick in die {{z9001:sprachmodul.zip|Beschreibung und den Quellcode}} wert, wie eine so umfangreiche Aufgabe wie die Spracherkennung mit einem 2 MHz-Z80 und nur 2 KByte Software gelöst werden kann!** **Es ist faszinierend und einen tiefen Blick in die {{z9001:sprachmodul.zip|Beschreibung und den Quellcode}} wert, wie eine so umfangreiche Aufgabe wie die Spracherkennung mit einem 2 MHz-Z80 und nur 2 KByte Software gelöst werden kann!**
  
-Die Hardware besteht aus einem Verstärker für das Mikrofonsignal und je einem Hoch- und Tiefpass (Trennfrequenz ca. 1 kHz), die auf die Triggereingänge einer CTC gehen. CTC-Kanal 0 und 3 arbeiten als Zähler mit Zählwert 1 und werfen beim Nulldurchgang von Tief- und Hochpass einen Interrupt (Programmteile TP-NDG, HP-NDG), der CTC-Kanal 1 arbeitet als Zeitgeber (Analyse- Zeitfenster), durch Abfrage des Zählwerts erhält man die Position innerhalb des Zeitfensters.+Die Hardware besteht aus einem Verstärker für das Mikrofonsignal und je einem Tief- und Hochpass (Trennfrequenz ca. 1 kHz), die auf die Triggereingänge einer CTC gehen. CTC-Kanal 0 und 3 arbeiten als Zähler mit Zählwert 1 und werfen beim Nulldurchgang von Tief- und Hochpass einen Interrupt (Programmteile TP-NDG, HP-NDG), der CTC-Kanal 1 arbeitet als Zeitgeber (Analyse- Zeitfenster), durch Abfrage des Zählwerts erhält man die Position innerhalb des Zeitfensters.
  
 Für ein gewisses Zeitfenster werden die Abstände der Nulldurchgänge ermittelt und anschließend klassifiziert. Die Routine NDG werten diese Abstände als Intervallklasse aus. Die Interrupt-Routine des Zeitfensters CTC 1 sammelt die Intervallklassen von Hochpass und Tiefpass in 8 Byte zusammen. Für ein gewisses Zeitfenster werden die Abstände der Nulldurchgänge ermittelt und anschließend klassifiziert. Die Routine NDG werten diese Abstände als Intervallklasse aus. Die Interrupt-Routine des Zeitfensters CTC 1 sammelt die Intervallklassen von Hochpass und Tiefpass in 8 Byte zusammen.
-Die Pausendetektion (PAUSE) sucht Wortanfang und -Ende, der 8-Byte-Vektor wird 1-bit-quantisiert (Schwellwert SWHL), die 8 Bit werden in den Signalspeicher XFELD hinzugefügt. Durch eine zeitliche Normierung wird der Signalspeicher� durch die Routine ZEIN zu einem 16 Byte-Feld YFELD normiert (ähnlich Bild stauchen/strecken). Damit ist jedes erkannte Wort-Signal auf einen 16-Byte-Datensatz reduziert! (Umwandlung des Audiosignals in eine Folge von Merkmalsvektoren)+Die Pausendetektion (PAUSE) sucht Wortanfang und -Ende, der 8-Byte-Vektor wird 1-bit-quantisiert (Schwellwert SWHL), die 8 Bit werden in den Signalspeicher XFELD hinzugefügt. Durch eine zeitliche Normierung wird der Signalspeicher durch die Routine ZEIN zu einem 16 Byte-Feld YFELD normiert (ähnlich Bild stauchen/strecken). Damit ist jedes erkannte Wort-Signal auf einen 16-Byte-Datensatz reduziert! (Umwandlung des Audiosignals in eine Folge von Merkmalsvektoren)
  
 Weitere Routinen sortieren diese Datensätze in Wortklassen ein (mehrere Refrenzmuster pro Wort). Das erfolgt mit den Routinen VGLEI (minimale Hamming-Distanz berechnen), KNORM (Clusterbewertung normieren), CLST (Cluster streichen), CLUST (Clusterbildung). Der Vergleich mit vorher ermittelten Referenzmustern erfolgt als bitweiser Vergleich mit bereits gespeicherten Referenzmustern (Hammingdistanz = Anzahl der verschiedenen Bits), das Referenzmuster mit geringster Distanz ist das erkannte Wort. Ist die Distanz zu groß, wird das Wort abgewiesen. Andere Routinen dienen zur Einteilung von Wortklassen von Referenzmustern, zur Wortsignaldetektion (Anfang, Ende), dem automatischen Verwerfen falscher Muster und zur Erkennung bereits während der Signalanalyse. Weitere Routinen sortieren diese Datensätze in Wortklassen ein (mehrere Refrenzmuster pro Wort). Das erfolgt mit den Routinen VGLEI (minimale Hamming-Distanz berechnen), KNORM (Clusterbewertung normieren), CLST (Cluster streichen), CLUST (Clusterbildung). Der Vergleich mit vorher ermittelten Referenzmustern erfolgt als bitweiser Vergleich mit bereits gespeicherten Referenzmustern (Hammingdistanz = Anzahl der verschiedenen Bits), das Referenzmuster mit geringster Distanz ist das erkannte Wort. Ist die Distanz zu groß, wird das Wort abgewiesen. Andere Routinen dienen zur Einteilung von Wortklassen von Referenzmustern, zur Wortsignaldetektion (Anfang, Ende), dem automatischen Verwerfen falscher Muster und zur Erkennung bereits während der Signalanalyse.
Zeile 84: Zeile 90:
 U. Kordon: //"Übrigens haben sich auch noch Unterlagen für einen geplanten Sprachausgabemodul zum Z9001 auf der Basis des damaligen Valvo-Schaltkreises MEA8000 (4-Formant-Synthetisator) angefunden. Der Sprachausgabemodul ist bis zum Funktionsmuster entwickelt worden, der dann mit "einheimischen Rohstoffen", d. h. mit einem Ersatz des Importschaltkreises, realisiert werden sollte. Das haben wir übrigens auch geschafft, allerdings schrieb man da inzwischen das Jahr 1989 ... (ohne nostalgische Anwandlungen, einfach als Fakt)."// U. Kordon: //"Übrigens haben sich auch noch Unterlagen für einen geplanten Sprachausgabemodul zum Z9001 auf der Basis des damaligen Valvo-Schaltkreises MEA8000 (4-Formant-Synthetisator) angefunden. Der Sprachausgabemodul ist bis zum Funktionsmuster entwickelt worden, der dann mit "einheimischen Rohstoffen", d. h. mit einem Ersatz des Importschaltkreises, realisiert werden sollte. Das haben wir übrigens auch geschafft, allerdings schrieb man da inzwischen das Jahr 1989 ... (ohne nostalgische Anwandlungen, einfach als Fakt)."//
  
-===== Bemerkung =====+===== Bemerkungen ===== 
 + 
 +Vor allem männliche (tiefe) Stimmen reizen den Zählumfang bis 255 oftmals aus, so dass Worte nur schwer zu unterscheiden sind (Die 16-Byte-Datensätze sehen alle aus wie F8FFFFFEF5F8FEFF...). Bei höheren Stimmlagen (Frauen, Kindern) ergeben sich normale Muster und damit eine wesentlich bessere Worterkennung.  
 + 
 +Eine entscheidende Rolle spielt dabei auch das Mikrofon! Mit dem regelbaren Widerstand auf der Platine kann die Empfindlichkeit des Mikrofons angepasst werden.
  
-Die originale Sprachsoftware wurde für ein 2MHz-U880-System geschrieben. Durch den höheren Takt des Z9001 verändern sich die Zeitfenster (sAssemblerquelltext), so dass vor allem männliche (tiefeStimmen den Zählumfang bis 255 oftmals ausreizen und Worte nur schwer zu unterscheiden sind (Die 16-Byte-Datensätze sehen alle aus wie F8FFFFFEF5F8FEFF...). Bei höheren Stimmlagen (Frauen, Kindern) ergeben sich normale Muster und damit eine wesentlich bessere Worterkennung.+Zur Arbeit mit dem Sprachprogramm ist es sinnvoll, sich eine Wortliste bereitzulegen, die die Klassennummern 1..50(200) und die Wörter enthält. Das Sprachprogramm arbeitet nur mit den Klassennummern und nicht mit Klartexten!
  
 **Vielen Dank an Dr. Kordon und Dr. Seveke für die freundliche Zuarbeit und die Überlassung der Unterlagen!** **Vielen Dank an Dr. Kordon und Dr. Seveke für die freundliche Zuarbeit und die Überlassung der Unterlagen!**
  
  • z9001/module_robotron/spracheingabe.1399359254.txt.gz
  • Zuletzt geändert: 2014/05/06 06:54
  • von volkerp