DE3335026C2 - - Google Patents
Info
- Publication number
- DE3335026C2 DE3335026C2 DE3335026A DE3335026A DE3335026C2 DE 3335026 C2 DE3335026 C2 DE 3335026C2 DE 3335026 A DE3335026 A DE 3335026A DE 3335026 A DE3335026 A DE 3335026A DE 3335026 C2 DE3335026 C2 DE 3335026C2
- Authority
- DE
- Germany
- Prior art keywords
- register
- significant
- binary number
- switches
- bit position
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000012545 processing Methods 0.000 claims description 5
- 230000015572 biosynthetic process Effects 0.000 abstract 1
- 238000003786 synthesis reaction Methods 0.000 abstract 1
- 238000000034 method Methods 0.000 description 15
- 241000282414 Homo sapiens Species 0.000 description 5
- 230000014509 gene expression Effects 0.000 description 4
- 238000005259 measurement Methods 0.000 description 4
- 238000007792 addition Methods 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000001228 spectrum Methods 0.000 description 2
- 230000001755 vocal effect Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010252 digital analysis Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/52—Multiplying; Dividing
- G06F7/523—Multiplying only
-
- G—PHYSICS
- G10—MUSICAL INSTRUMENTS; ACOUSTICS
- G10L—SPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
- G10L25/00—Speech or voice analysis techniques not restricted to a single one of groups G10L15/00 - G10L21/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2207/00—Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F2207/38—Indexing scheme relating to groups G06F7/38 - G06F7/575
- G06F2207/3804—Details
- G06F2207/3808—Details concerning the type of numbers or the way they are handled
- G06F2207/3852—Calculation with most significant digit first
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49942—Significance control
- G06F7/49947—Rounding
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Linguistics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Human Computer Interaction (AREA)
- Acoustics & Sound (AREA)
- Multimedia (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Complex Calculations (AREA)
- Analogue/Digital Conversion (AREA)
Description
Die Erfindung bezieht sich auf eine digitale Daten
verarbeitungsschaltung zur raschen annäherungsweisen Be
stimmung des Produkts einer ersten Binärzahl und einer
zweiten Binärzahl, insbesondere für die Spracherkennung,
Spracherzeugung oder Kodierung und Dekodierung von Sprech
laugen zum Zwecke einer Übertragung gemäß dem Oberbegriff des
Patentanspruchs 1.
Um Sprechlaute zu erzeugen, zu erkennen oder zum
Zweck einer Übertragung zu kodieren oder zu dekodieren,
ist es erwünscht, die Möglichkeit zu haben, die komplexen
Wellenformen der menschlichen Sprache in ihre digitalen
Darstellungen mit so gutem Wirkungsgrad wie möglich umzuwandeln
bzw. wieder zurückzuverwandeln, so daß die digitalen
Teile des Systems nur die kleinstmöglichen Datengeschwindigkeiten
zu verarbeiten brauchen. Die bestehenden
wirtschaftlichen und technischen Beschränkungen erfordern
stets, daß die digitalen Daten jeweils die wesentliche Information
darstellen. Z. B. ist es erforderlich, daß die
Daten in einem Speicher festgehalten werden, und daß die
Größe des Speichers so klein wie möglich gehalten wird.
Ein anderes Beispiel ist gegeben bei Spracherkennungssystemen.
Hier kommt es darauf an, daß Daten vorzugsweise
in Echtheit so schnell analysiert werden wie die Sprache
von einem menschlichen Wesen hervorgebracht wird. Daher
gibt es stets eine praktische Grenze für die Verarbeitungs
leistung, die für diese Aufgabe aufgewandt werden kann.
Eine Digitalübertragung erfordert naturgemäß sowohl eine
digitale Kodierung, d. h. eine Art von Erkennung und am an
deren Ende eine Dekodierung, also eine Art von Erzeugung,
Da die menschliche Sprache voller überschüssiger Information
ist, wurde bereits eine Anzahl Wege entwickelt, um nur den
kleinsten wesentlichen Inhalt der Sprechlaute für die Umwandlung
in die digitale Form zu extrahieren. In diesem
Zusammenhang wird verwiesen auf Seite 28 der Ausgabe vom Oktober
1973 des IEEE Spectrum, wo über verschiedene Verfahren
dieser Art zusammenfassend berichtet wird. Ein Verfahren zum
Kodieren nur des wesentlichen Informationsgehaltes umfaßt
die Berechnung eines linearen voraussagbaren Koeffizienten
und die digitale Kodierung dieses Koeffizienten (K) statt
den Versuch zu machen, die tatsächliche analoge Wellenform
zu kodieren, welche der Sprache entspricht. Auf diese Weise
werden nur die wahrnehmbaren wichtigsten Eigenschaften der
Wellenform erhalten.
Grundsätzlich besteht die menschliche Spache aus stimmhaften
und stimmlosen Komponenten. Stimmhafte Sprechlaute
werden durch Schwingungen von Vokalsaiten erzeugt und umfassen
glatte und harmonische Wellenform einer Vielfalt
von Frequenzen. Untergruppen dieser Frequenzen werden durch
die Resonanzeigenschaften des Vokaltraktes betont, welche
die Leistung oder die Energie auf bestimmte Bereiche des
Frequenzspektrums konzentrieren. Im Gegensatz hierzu sind
stimmlose Sprechlaute Geräusche, die durch Luftturbulenzen
im Bereich von Verengungen von Lippen oder Zunge hervorgebracht
werden. Zwar werden durch Resonanzbedingungen stimmlose
Sprechlaute in einem bestimmten Frequenzbereich kon
zentriert. Es besteht aber zumindest in diesem Frequenzbereich
die Neigung, daß ihre Leistung oder Energie gleichmäßig
über den Frequenzbereich verteilt ist. Um Sprechlaute
digital darzustellen, ist es erforderlich, festzustellen,
ob die Wellenform stimmhaft oder stimmlos ist, d. h.
ob die Wellenform glatt und harmonisch oder ein ungeregeltes
Geräusch (noisy and random) ist, und die Frequenzuntergruppen
(Formanten genannt) in dem stimmhaften Teil durch ihren
Energiegehalt festzustellen. Dies kann dadurch geschehen,
daß die analoge Sprechlautwellenform mit einem üblichen
im Handel erhältlichen Analog/Digital-Wandler in eine Reihe
von Digitalzahlen umgewandelt wird, welche der Größe der
Wellenform zu jedem gegebenen Zeitpunkt entsprechen. Diese
Zahlen werden dann fortlaufend analysiert, um zu sehen,
wie voraussagbar und glatt sie sich während eines gewählten
Zeitabschnitts oder Zeitrahmens ändern, womit ein Indiz dafür
erhalten wird, welche Formanten vorherrschend sind, ob
das Signal stimmhaft oder nicht stimmhaft ist. Dieses Vorgehen
wird als Autokorrelation bezeichnet und es wird in
einem Zeitbereich, im Gegensatz zu einem Frequenzbereich,
durchgeführt.
Zur tatsächlichen Analyse gehört die Berechnung bestimmter
Zahlenverhältnisse mit großer Geschwindigkeit,
wenn die Zahlen empfangen werden, und zwar für jedes inter
essierende Frequenzband. Die Berechnung ist äußerst multi
plikationsintensiv und erfordert sehr große, sehr schnelle
Rechner, wenn in Echtzeit mit der Sprache Schritt gehalten
werden soll. Nach dem bisherigen Stand der Technik ist es
wenig vorteilhaft, eine Umwandlung von der analogen in die
digitale Form auf einer Echtzeitgrundlage vorzunehmen. Dieser
rechnertechnische Engpaß könnte allerdings beseitigt
werden, wenn eine digitale Datenverarbeitungsschaltung zur
Verfügung stünde, mit der eine Multiplikation zweier Binärzahlen
wesentlich schneller durchgeführt werden könnte.
Bekannte Multiplikationsschaltungen, wie sie z. B. in der
DE-OS 27 43 575 beschrieben werden, kommen nicht in Betracht,
da dort die Multiplikation das Durchlaufen mehrerer
Verschiebungs- und Additionszyklen erfordert, so daß
für die vollständige Rechenoperation ein Vielfaches der
Zykluszeit aufgewendet werden muß.
Es ist daher die Aufgabe der vorliegenden Erfindung, eine
Schaltung anzugeben, mit der eine Multiplikation, insbesondere
in angenäherter Form, in einem einzigen Zyklus
möglich ist.
Die Aufgabe wird bei einer Schaltung der eingangs genannten
Art durch die Merkmale aus dem Kennzeichen des
Anspruchs 1 gelöst.
Grundsätzlich wird die Beschleunigung durch Multiplikation
auf einem abgekürzten Wege erreicht. Statt sehr lange detaillierte
Multiplikationsverfahren zweier Binärzahlen zu gebrauchen,
wird gemäß der Erfindung die Bitstelle höchster Wertigkeit
in mindestens einer der Zahlen, welche eine Eins enthält,
festgestellt und dann einfach die andere Zahl um die gleiche
Anzahl von Bitstellen, wie sie dieser Bitstellung entspricht,
nach links verschoben. Auf diese Weise ergibt sich das Produkt
viel rascher als durch Multiplikation üblicher Art, und da
eine große Anzahl von Multiplikationen benötigt wird, um die
K-Werte abzuleiten, wird eine beachtliche Menge an Zeit eingespart.
Allerdings ist das so erhaltene Produkt nicht ganz genau, es
kann sogar manchmal ziemlich ungenau sein, jedoch ist die Formel
zur Ermittlung des K-Wertes so beschaffen, daß diese
Ungenauigkeiten die Tendenz haben, sich gegenseitig aufzuheben.
Daher ist der schließlich sich ergebende Wert von K durchaus
brauchbar. Dieses rasche Multiplikationsverfahren wird bei
vielen Anwendungen der Verarbeitung digitaler Signale benutzt,
wo Verhältniswerte errechnet werden, wie z. B. Leistungs-
oder Energieverhältnisse, geometrische Mittelwerte, Autokorrelation,
Querkorrelation, maximale Entropie, harmonische
Mittelwerte und andere Funktionen.
Durch diese näherungsweise Art der Multiplikation wird es
gleichzeitig möglich, die gesamte Rechenoperation in einem
Zyklus durchzuführen, indem die Binärzal im ersten Register
als ganzes geprüft und die Binärzahl im zweiten Register
nach Maßgabe des Prüfergebnisses in einem einzigen Schritt
um die entsprechende Stellenzahl verschoben wird. Dazu dienen
die verschiedenen Gruppen von Schaltern, von denen jeweils
eine Gruppe für eine bestimmte Verschiebung vorgesehen
ist.
Vorteilhafte Weiterbildungen der Erfindung sind in den Unteransprüchen
gekennzeichnet.
Im folgenden ist die Erfindung anhand der Zeichnungen
erläutert. Es zeigt
Fig. 1 bis 4 zum besseren Verständnis
eine Veranschaulichung der bereits bekannten Autokorrelationsrechnung,
die aufgrund der Erfindung beschleunigt durchgeführt
werden kann, und
Fig. 5 das Schema einer Ausführungsform der
erfindungsgemäßen Schaltung zur raschen Bestimmung des angenäherten
Produkts zweier Binärzahlen.
Fig. 1 und Fig. 2 sind gleichzeitig zu betrachten.
Fig. 2 zeigt ein analoges Eingangssignal 10, das in Fig. 1
ebenfalls symbolisch dargestellt ist. Die Amplitude des Signals
10 ist zeitlich veränderbar. Der Kurvenabschnitt von
Fig. 2 entspricht einem Zeitintervall von etwas mehr als
128 Abtast- oder Musterperioden (sampling Perioden). Die
128 Musterperioden bilden zusammen einen Musterrahmen,
dessen Länge vielleicht 20 Millisekunden beträgt. Während
jeder Musterperiode t mißt ein Analog/Digitalwandler 12
die Amplitude und bildet eine Binärzahl, welche dieser
Amplitude entspricht, so daß das Signal digitalisiert analysiert
werden kann.
Ein sehr brauchbares digitales Analysationsverfahren besteht
darin, den Korrelationskoeffizienten zu errechnen. Ein Weg
zur Bestimmung der Korrelation zwischen jeweils zwei Signalen
besteht darin, die in einem Signal enthaltene Leistung
oder Energie mit derjenigen in dem anderen zu vergleichen
und diesen Vergleich als ein Verhältnis darzustellen. Offensichtlich
enthalten zwei analoge Signale, die beide die
in Fig. 2 gezeigte Wellenform auch die gleichen Amplituden
aufweisen, die gleiche Energie oder Leistung. Eine Teilung
der Leistung des einen durch die des anderen Signals
ergibt ein Verhältnis im Wert Eins oder einen Koeffizienten
Eins, was einer perfekten Korrelation entspricht. Natürlich
könnten zwei Signale grundlegend verschiedene Wellenformen
und dennoch die gleiche Leistung aufweisen, aber die Wahrscheinlichkeit
hierfür ist gering, besonders wenn eine große
Zahl von Vergleichen zu verschiedenen Zeitpunkten durchgeführt
wird. Daher ist der Leistungsvergleich ein brauchbares
Mittel zur Entscheidung darüber, ob ein Analogsignal einem
anderen gleich ist.
Die Energie oder Leistung in einem Analogsignal ist
proportional dem Quadrat der Fläche unter der Kurve, wenn
die Wellenform in passenden Einheiten graphisch aufgezeichnet
wird wie in Fig. 2 geschehen. Nach klassischem Vorgehen würde
man diese Fläche unter der Kurve 10 dadurch bestimmen, daß
die Amplitude oder Höhe a der Kurve 10 an jeder Stelle längs
der waagerechten Zeitachse mit der Breite des gewählten Zeit
inkrements multipliziert und alle diese Flächenbits zur Ge
samtfläche aufsummiert werden. Wird das gewählte Zeitinkrement
unendlich klein gemacht, so ist die Berechnung der Fläche
eine genaue. Wenn aber das Zeitinkrement so groß ist wie
der Abschnitt T in Fig. 2, ist noch immer eine gute Annäherung
der Fläche und damit der Leistung oder Energie bestimmbar.
Ein anderer Weg zur Vereinfachung des mathematischen Vorgehens
besteht darin, willkürlich eine Zeitmessungseinheit zu
verwenden, so daß T=1 ist. Dann erhält man durch Multiplikation
von a mit T einfach den Wert a und bei dessen Quadrierung
zwecks Erhaltung des Energie- oder Leistungsbetrags erhält
man a². Durch Summieren aller 128 Rechenergebnisse für
a² in dem Musterrahmen von Fig. 2 ergibt sich die Gesamtenergie
oder Leistung unterhalb der Kurve 10. Mathematisch
ausgedrückt:
Um zwei Signale in Beziehung zueinander zu bringen und
festzustellen, ob sie gleich sind, kann man nach einem bekannten
Verfahren die Energie oder Leistung beider Signale
gleichzeitig im Zeitabschnitt eines Musterrahmens prüfen.
Fig. 3 zeigt zwei Signale mit den Amplituden a bzw. b. Die
beiden Signale haben gleiche Form, d. h. gleichen zeitlichen
Verlauf, stehen aber nicht in zeitlicher Übereinstimmung miteinander.
Daher kann die Korrelation zumindest für den Musterrahmen
t₀ bis t₁₂₈ dadurch bestimmt werden, daß die Energie
unter den beiden Kurven dort, wo sie sich überlappen (schraffierter
Bereich) mit der Gesamtenergie oder Leistung beider
Kurven verglichen wird. Es sind bisher bereits mehrere mathematische
Ausdrücke verwendet worden, um diesen Vergleich durchzuführen
und einen Korrelationskoeffizienten K zu bestimmen.
Zwei solche Ausdrücke sind:
Dabei ist zu beachten, daß der Nenner quadriert ist, so daß
jedes etwa mögliche negative Vorzeichen in dem Nenner eliminiert
wird. Es ist ferner zu beachten, daß beide Ausdrücke
eine große Zahl von Multiplikationen für jeden Musterrahmen
erfordern.
Statt die Korrelation eines Signals zu einem anderen
rechnerisch zu ermitteln kann man auch die Korrelation eines
Signals zu einem zeitlich verschobenen Abbild seiner selbst
berechnen. Dies wird als Autokorrelation bezeichnet. Signale
von normalem, glattem, periodischem, voraussagbarem
und harmonischem Verlauf haben hohe Autokorrelationskoeffizienten
im Wert von annähernd Eins.
Störungs- oder rauschbehaftete unvoraussagbare Signale,
die herumspringen oder hüpfen, haben niedrige Autokorrelationskoeffizienten
im Wert von annähernd Null. Der Koeffizient
ist noch immer mit Hilfe der Gleichung 2 oder 3 berechenbar,
aber die Kurve b stimmt praktisch mit der Kurve a überein
und ist dieser gegenüber nur etwas in der Zeit verzögert,
so daß sich bei übermäßiger Verzögerung ein Bild ergibt, das
annähernd Fig. 3 entspricht. Nach dem Stand der Technik wird
die Verzögerung in einem weiten Bereich verändert, wobei auf
bedeutungsvolle Korrelationen geachtet wird.
Sprachlaute und Worte, wie sie von menschlichen Wesen
gesprochen werden, haben charakteristische zeitlich veränderliche
Autokorrelationskoeffizienten. Dies bedeutet, für jedes
Frequenzband in dem gesprochenen Wort ändert sich der Koeffizient
K in dem Bereich von Null nach plus oder minus Eins
während der Zeitdauer in der das Wort gesprochen wird.
Fig. 4 zeigt eine Tabelle mit einer Reihe von Autokorrelations
koeffizienten K₁ bis KN, von denen jeder einem bestimmten
Frequenzband entspricht, und zeigt, wie sich diese Koeffizienten
zu aufeinanderfolgenden Zeitpunkten T₁ bis TN ändern,
während der durch sie dargestellte Sprachlaut gesprochen wird.
Die Tabelle von Fig. 4 kann in einem Computerspeicher festgehalten
und mit den durch den Computer aus einem gesprochenen
Wort errechneten Koeffizienten verglichen werden. Wenn
die errechneten Koeffizienten innerhalb von etwa 10% der
Werte in der Tabelle liegen, kann der Computer ein Zusammenpassen
erklären und damit die Sprache oder den Sprachlaut
erkennen.
Fig. 1 zeigt innerhalb der gestrichelten Umrandung 14
das Grundschema der Schaltung, die benötigt wird, um einen
der Koeffizienten K für ein Frequenzband zu errechnen. Die
Amplitude des Eingangssignals wird in jedem Intervall t
gemessen und von dem Wandler 12 als ein binäres Wort dargestellt
bzw. abgegeben. Das binäre Wort umfaßt einfach eine
Zahl, die der Amplitude proportional ist, welche an den zwei
Knotenpunkten 15 und 16 auftritt. Die Zahl am Knotenpunkt
15 wird von einem K-Rechner 18 als Größe "a" in der Gleichung
(3) benutzt. Zur Erleichterung der Beschreibung wird
nachstehend ein typischer Rechenvorgang entsprechend der
Gleichung (3) durchgeführt. Die Zahl an dem Knotenpunkt 16
wird durch eine Verzögerungsvorrichtung 17 um eine Zeitspanne
t, die gleich der Meß-Zeitspanne (sampling period) ist, verzögert
und dann dem Rechner 18 zugeleitet, wo sie als "b"-
Wert in der Gleichung (3) benutzt wird. Der Rechner 18, der
zum Teil aus einem gewöhnlichen Mikroprozessor besteht, führt
ein Programm durch, das zur Lösung der Gleichung (3) dient.
Dies erfordert, daß der Rechner 18 jede Zahlengruppe aus dem
Wandler 12 aufnimmt und die Werte "a" und "b" miteinander
multipliziert, und daß er diesen Vorgang 128 mal bis zum
Ende des Muster- oder Meßrahmens wiederholt und danach
sämtliche 128 Produkte addiert, um den Zähler in der
Gleichung (3) zu bilden. Die Bestimmung des Nenners der
Gleichung ist komplizierter. Es müssen 128 a-Werte und b-
Werte quadriert, aufsummiert und dann miteinander addiert
werden. Durch diese Zahl wird das Zweifache des im Zähler
stehenden Ausdrucks geteilt. Da sämtliche a-Werte und b-Werte
bis zum Ende des Musterrahmens nicht bekannt sind, kann
die Berechnung von K bis zu diesem Zeitpunkt durchgeführt
werden. Sobald aber der Koeffizient K einmal berechnet ist,
wird er in einem Speicher festgehalten, um ihn mit einer
Tabelle von der in Fig. 4 gezeichneten Art vergleichen zu können.
Damit ist der erste Koeffizient K des ersten Musterrahmens
rechnerisch ermittelt.
Um die K-Werte für Frequenzbänder höherer Frequenzen
zu ermitteln, ist es erforderlich, die vorherrschenden größeren
Amplitudenänderungen in dem Signal zu eliminieren, welche
die Komponenten mit höherer Frequenz maskieren und verdunkeln.
Zum Beispiel enthält die in Fig. 2 gezeigte Kurve 10 einen
merklichen kleinen Buckel in der Nähe des Zeitpunkts t₁₂₈,
der, obgleich er als Information wichtig ist, nur geringen
Einfluß auf die Berechnung von K hat, da K sich als Mittelwert
der K-Einzelwerte längs des Musterrahmens ergibt. Der
Großteil der Kurve 10 ggf. Die Grundfrequenz, wird durch
die Einheit 14 beseitigt, indem der erste K-Wert, der für
den Musterrahmen errechnet wurde, hergenommen, mit einem
negativen Vorzeichen versehen und die zu den Knotenpunkten
15 und 16 gehörenden Zahlenwerte mittels der Multipliziervorrichtung
19 und 20 K mal multipliziert werden. Die zu
den Knotenpunkten 15 und 16 gehörenden Zahlen werden während
der Dauer des Musterrahmens in einem Speicher festgehalten,
um auf diese Weise die Vollendung der Berechnung von K abzuwarten.
Am Ende des Musterrahmens, nachdem K bestimmt ist,
wird die Zahlenfolge aus dem Speicher zurückgeholt, um sie
mittels der Multipliziervorrichtungen 19 und 20 K mal zu multiplizieren.
Da der Wert K eine Annäherung dafür darstellt,
um wieviel sich die Kurve 10 von Meßperiode zu Meßperiode
durchschnittlich ändert, ergibt die Multiplikation mit -K
der zeitlich verschobenen etwas veränderten Zahl eine negative
Zahl, die dicht bei der ursprünglichen nicht verschobenen
Zahl liegt. Wenn die Zahlenwerte mit Hilfe der Addiervorrichtungen
21 und 22 zusammengezählt werden, wird das meiste
der Signalamplitude ausgelöscht, wobei an den Ausgängen 23
und 24 Digitalzahlen verbleiben, die nur solche Teile der
Kurve 10 darstellen, die nicht durchschnittlich sind und
von den Änderungen der Gesamtdurchschnittseigenschaften,
welche die Kurve 10 aufweist, abweichen. Mit anderen Worten,
die Ausgänge 23 und 24 führen höhere Frequenzkomponenten
der Wellenform, z. B. den Buckel am Ende des Musterrahmens
in Fig. 2.
Die Ausgänge 23 und 24 werden nunmehr einer anderen
Einheit 14 zugeleitet, um den Koeffizienten K für dieses
höhere Frequenzband zu errechnen. Der Vorgang wird so oft
wiederholt, wie Einheiten 14 erwünscht sind, je nach der
Komplexität der gewünschten Analyse. Es sind bereits bis
zu 20 Einheiten 14 anzuwenden versucht worden. Die Endaus
gänge 25 und 26 können in einem Speicher direkt festgehalten
werden, um die gesamte übrige Information zu erhalten.
Praktisch werden natürliche sämtliche Multiplikationen,
Additionen und K-Berechnungen aller Einheiten 14 von demselben
Mikroprozessor durchgeführt. Alle diese Berechnungen
erfordern verhältnismäßig viel Zeit, besonders, wenn bedacht
wird, wielange es dauert, auch nur eine Multiplikation zweier
Digitalzahlen mit 16 Bits auszuführen. Außerdem müssen, um
in Echtzeit zu arbeiten, die Multiplikationen mit K, die
Additionen mittels der Addiervorrichtung 21 und 22 für sämtliche
Einheiten 14 einer sehr kurzen Zeitspanne nach dem Ende
jedes Musterrahmens und bevor neue Berechnungen aufgrund
neuer Daten begonnen werden, ausgeführt werden. Praktisch
ist es daher nach dem bisherigen Stand der Technik einfach
nicht möglich, eine Spracherkennung in Echtzeit, wenn jeder
Laut empfangen wird, zu erhalten. Hierzu wären unannehmbar
kostspielige und große Rechner erforderlich. Statt dessen
nehmen die gegenwärigen Erkennungssysteme auf der Grundlage
der Verwendung von Mikroprozessoren mit wirtschaftlich tragbarem
Aufwand eine verhältnismäßig lange Zeit in Anspruch,
um jedes Wort zu analysieren, womit Gespräche, die mit normaler
Geschwindigkeit stattfinden, verhindert werden. Durch
die Erfindung wird dieses Problem mittels eines Verfahrens
und einer Apparatur gelöst, die es ermöglicht, den Koeffizienten
K genügend rasch zu berechnen, so daß eine Echtzeit-
Spracherkennung möglich wird.
Durch die Erfindung wird die Berechnung von K dadurch
beschleunigt, daß jeder Multiplikationsvorgang mit einer
Schaltung wie in Fig. 5 gezeigt bei hoher Geschwindigkeit
auf einem abgekürzten Weg durchgeführt wird. Um zwei Zahlen
zu multiplizieren, werden die Zahlen von einer Datenschiene
30 in zwei Register übertragen. Die eine Zahl wird in ein
Schieberegister 32 übertragen, wobei sich der Bit mit der
höchsten Wertigkeit (MSB) auf der linken Seite in Fig. 5
befindet. Die andere Zahl wird in ein Prüfregister 36 über
tragen. Die Zahl in dem Prüfregister wird geprüft, um die
Bitstelle höchster Wertigkeit zu bestimmen, die eine Eins
enthält. Die Zahl in dem Prüfregister 32 wird dann um die
gleiche Anzahl von Stellen verschoben, um sie praktisch
in einem Schritt mit der Leistung oder Energie von zwei,
dargestellt durch die in der Zahl in dem Register 36 vor
handenen Ziffer mit der höchsten Wertigkeit, zu multiplizieren.
Mit anderen Worten gesagt, das Register 36 kann so
angesehen werden als wenn es die Stellen Null bis Fünf aufweist,
gezählt von unten nach oben. Wenn die Stelle höchster
Wertigkeit, die eine Eins aufweist, die Stelle Null ganz
unten ist, findet keine Verschiebung statt, da mit Eins
multipliziert würde. Wenn die Stelle höchster Wertigkeit,
die eine Eins aufweist, so verändert wird, daß sie die Stelle
Zwei einnimmt (d. h. die dritte von unten), wird die Zahl
im Register 32 um zwei Stellen verschoben, um eine Multiplikation
mir Vier durchzuführen. Allgemein gesprochen, die
Zahl in dem Register 32 wird um die gleiche Stellenzahl
verschoben, wie es der Stelle entspricht, in der die Eins
mit der höchsten Wertigkeit vorgefunden wird. Wenn z. B.
die Zahl in dem Prüfregister 36 00 101 ist, was der Zahl
Fünf im Dezimalsystem entspricht, so würde eine Prüfung
der Zahl ergeben, daß die Bitstelle höchster Wertigkeit,
welche eine Eins enthält, die Stelle Zwei ist. Daher wird
die Zahl in dem Register 32 um zwei Stellen weitergeschoben,
um sie praktisch augenblicklich mit Vier zu multiplizieren.
Das Ergebnis ist naturgemäß nicht ganz genau,
da der richtige Multiplikator Fünf wäre. Die Annäherung ergibt
jedoch, wie gefunden wurde, gute Ergebnisse bei der
Berechnung von Verhältniswerten, bei denen die gleichen
Annäherungen sowohl im Zähler als auch im Nenner des Verhältnisses
vorgenommen werden.
Die Zahl in dem Register 36 kann auf einer Vielfalt
von Wegen geprüft werden,
jedoch für die äußerste Geschwindigkeit zeigt
Fig. 5 eine Hardware, die erfindungsgemäß mit einem einzigen Maschinenzyklus
arbeitet.
Der Einfachheit halber ist in der Zeichnung nur eine
vier Schiebestellungen aufweisende Ausführungsform dargestellt.
Die am wenigsten bedeutungsvollen vier Bits werden
über eine Schiene 38 zu vier Sätzen von Schaltern 40, 41,
42 und 43 geleitet. Die Schalter 40 werden durch ein Signal
auf der Leitung 45 freigegeben und bewegen, wenn sie
freigegeben sind, die Signale von der Schiene 38 zurück
in das Register 32 in eine um ein Bit höhere Schiebestellung.
Dies ergibt eine Multiplikation mit Zwei. In gleicher
Weise bewegen die Schalter 41, wenn sie durch die Leitung
46 freigegeben werden, die Bits um zwei Stellen zwecks Multi
plikation mit Vier. Die übrigen zwei Sätze von Schaltern 42
und 43 bewegen die Bits in Abhängigkeit von Signalen auf
den Leitungen 47 und 48 um zwei bzw. vier Stellen weiter,
was einer Multiplikation mit Acht bzw. Sechzehn entspricht.
Die Auswahl eines Satzes von Schaltern und damit der
Zahl der Schiebeschritte erfolgt durch einen Dekoder 50.
Der Dekoder 50 umfaßt einen üblichen Festwertspeicher (ROM),
in welchem die Leitungen 45 bis 48 normalerweise durch Hoch
ziehtransistoren oder entsprechende Vorrichtungen 51 bis 54
ins Positive gezogen sind. Die Kreise geben diejenigen Stellungen
in der ROM-Matrix an, welche arbeitende Transistoren
enthalten. Das Register 36 hat zwei Ausgänge für jede Bitstellung:
einen Q-Ausgang, der dem Eingang folgt und einen
"Nicht-Q"-Ausgang, welches der entgegengesetzte ist. Die
bedeutungsvollste, d. h. die höchste Wertigkeit aufweisende
Bitstelle in dem Register 36 liegt mit ihrem Q-Ausgang an
einer Leitung 55 und ihrem "Nicht-Q"-Ausgang an einer Leitung
56. Wenn also eine Eins der obersten Stelle des Registers
36 vorhanden war, würde eine Spannung auf der Leitung 55
drei Transistoren in dem ROM einschalten, um die Leitungen
45 bis 47 zu sperren bzw. an Erde zu legen, welche wiederum
die Schalter 40 bis 42 für die erste, zweite und dritte
Schiebestelle daran verhindern würden zu arbeiten. Nur die
Schalter 43 für die Schiebestellung 4 könnte arbeiten.
Eine solche Verschiebung um vier Stellen würde wiederum
praktisch die Zahl in dem Register 42 mit 16 multiplizieren.
Wenn die oberste Stelle in dem Register 36 Null ist,
schaltet eine Spannung auf der Leitung 56 einen Transistor
in dem ROM so, daß die Leitung 48 an Erde gelegt oder gesperrt
wird. Die Schalter 43 sind dann gesperrt und nur
die Schalter 40 bis 43 können in Abhängigkeit von den Inhalten
der weniger bedeutungsvollen Bitstellen in dem Register
36 arbeiten.
Wenn die zweitoberste Stelle in dem Register 36 eine
Eins enthält, sind die Leitungen 45 und 46 über die Leitung
57 geerdet, so daß nur die Schalter 42 arbeiten und die
Zahl in dem Register 32 um drei Stellen verschieben können,
was eine Multiplikation mit 8 bedeutet. Es ist nicht not
wendig, die Leitung 48 zu sperren; dies ist bereits durch
die Null in der obersten Stelle geschehen, was eine Eins
auf der Leitung 56 zur Folge hat. Eine Null in der zweitobersten
Stelle erzeugt auf der Leitung 58 einen Ausgangswert,
der die Leitung 47 und die Schalter 42 abschaltet.
In gleicher Weise sperrt die drittoberste Stelle in
dem Register 36 mit Hilfe der Leitung 59 die Schalter für
die untere Stelle der Zahl, wenn sie eine Eins enthält,
und die Schalter 41 für ihre eigene Stelle mit Hilfe der
Leitung 60, wenn sie eine Null aufweist.
Die vierte Stelle von oben gezählt erfordert keine
Sperrung der Leitung 46 bis 48, weil diese bereits durch
die Nullen in den bedeutungsvolleren Bitstellen gesperrt
worden sind. Und wenn noch mehr Nullen in bedeutungsvolleren
Bitstellungen vorhanden wären, bliebe die Leitung 45
"hoch", d. h. eingeschaltet, würde die Schalter 40 auslösen
und eine Multiplikation mit Zwei bewirken. Ist aber eine
Null in der 4. Stelle vorhanden, so betätigt eine Spannung
auf der Leitung 62 einen Transistor, um die Leitung 45 zu
erden und die Multiplikation mit 2 zu verhindern. Ganz allgemein
ergibt sich, daß jeder der Schalter 40 bis 43 eine Ver
schiebung bewirkt, es sei denn, daß er daran gehindert
wird, entweder durch eine Null in der ihm selbst entsprechenden
Stelle oder durch eine Eins in irgendeiner der
Stellen höherer Wertigkeit.
Schließlich stellt die Bitstelle mit der geringsten
Wertigkeit (LSB) eine Multiplikation mit Eins dar, was trivial
ist und keine Aktion erfordert oder eine Multiplikation
mit Null, was erfordert, daß das Register 32 geräumt wird.
Das Register 32 wird durch eine Räumschaltung 67 freigemacht,
wenn die Schaltung 67 ein Signal auf der Leitung 66
empfängt. Die Leitung 66 wird durch eine Spannungsquelle 65
nach oben gezogen und bringt ein Signal hervor, es sei denn,
sie ist durch eines der Q-Signale auf den Leitungen 55, 57
59, 61 oder 63 geerdet, wodurch das Vorhandensein einer Eins
in dem Register 36 und daher ein Multiplikator, der nicht
Null ist, angezeigt wird.
Sind nun die Zahlen in den Registern 32 und 36 annähernd
multipliziert worden, so können sie in üblicher Weise zu den
vorherigen Summen addiert werden, wobei ein übliches Register
34 eine übliche arithmetische Logikeinheit (ALU) 70 und ein
Sammler 72 benutzt werden.
Claims (4)
1. Digitale Datenverarbeitungsschaltung zur schnellen Bestimmung
eines Produkts aus einer ersten Binärzahl und
einer zweiten Binärzahl, umfassend
- (a) ein erstes Register (36) zum Festhalten der ersten Binärzahl;
- (b) ein zweites Register (32) zum Festhalten der zweiten Binärzahl;
- (c) eine mit dem ersten Register (36) verbundene Registerprüfeinrichtung zum Bestimmen der bedeutungsvollsten, d. h. die höchste Wertigkeit aufweisenden Bitstelle in dem ersten Register (36), welche eine Eins aufweist, wenn die erste Binärzahl im ersten Register (36) festgehalten wird;
- (d) eine mit dem zweiten Register (32) verbundene Schiebevorrichtung zum Verschieben des Inhaltes des zweiten Registers (32) nach bedeutungsvolleren bzw. eine höhere Wertigkeit aufweisenden Stelle hin um eine Anzahl von Stellen, die der bedeutungsvollsten, d. h. höchstwertigen, durch die Registerprüfeinrichtung bestimmten Bitstelle entspricht; und
- (e) eine mit dem zweiten Register (32) verbundene Ausgabevorrichtung zum Ausgeben der verschobenen zweiten Binärzahl als Produkt;
dadurch gekennzeichnet, daß
- (f) die Registerprüfeinrichtung einen Dekoder (50) um faßt, welche alle Bitstellen des ersten Registers (36) gleichzeitig prüft und an seinem Ausgang jeweils ein Freigabesignal abgibt, welches charakteristisch ist für die bestimmte, eine Eins aufweisende Bitstelle des ersten Registers (36) mit der höchsten Wertigkeit; und
- (g) die Schiebevorrichtung mehrere Gruppen (40, . . ., 43) von Schaltern aufweist, von denen jeweils eine Gruppe von einem der charakteristischen Freigabesignale aus dem Dekoder (50) angesteuert wird und dazu dient, alle Ziffern der zweiten Binärzahl gleichzeitig um eine vorbestimmte Zahl von Stellen zu verschieben.
2. Schaltung nach Anspruch 1, dadurch gekennzeichnet,
daß der Dekoder (50) einen Festwertspeicher (ROM) aufweist,
der so kodiert ist, daß er die Freigabesignale
erzeugt, und der erste Leitungen (55, . . ., 64) aufweist,
welche jeweils mit den einzelnen Bitstellen des ersten
Registers (36) verbunden sind, und zweite Leitungen
(45, . . ., 48), welche jeweils mit den einzelnen Gruppen
(40, . . ., 43) von Schaltern verbunden sind und zur Weitergabe
der Freigabesignale dienen.
3. Schaltung nach einem der Ansprüche 1 und 2, dadurch
gekennzeichnet, daß eine Räumvorrichtung zum Ausräumen
oder Freimachen des zweiten Registers (32), sofern nicht
eine der Bitstellen im ersten Register (36) eine Eins
enthält, vorgesehen ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US06/426,564 US4475167A (en) | 1982-09-29 | 1982-09-29 | Fast coefficient calculator for speech |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3335026A1 DE3335026A1 (de) | 1984-03-29 |
DE3335026C2 true DE3335026C2 (de) | 1992-10-08 |
Family
ID=23691304
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19833335026 Granted DE3335026A1 (de) | 1982-09-29 | 1983-09-28 | Digitale datenverarbeitungsschaltung |
Country Status (4)
Country | Link |
---|---|
US (1) | US4475167A (de) |
JP (1) | JPS5961892A (de) |
DE (1) | DE3335026A1 (de) |
GB (1) | GB2127996B (de) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5949640A (ja) * | 1982-09-16 | 1984-03-22 | Toshiba Corp | 乗算回路 |
JPS5997200A (ja) * | 1982-11-26 | 1984-06-04 | 株式会社日立製作所 | 音声認識方式 |
DE59813105D1 (de) * | 1997-12-19 | 2006-02-23 | Infineon Technologies Ag | Vorrichtung zur multiplikation mit konstanten faktoren und deren verwendung zur videokompression (mpeg) |
US7685222B2 (en) * | 2004-11-01 | 2010-03-23 | Sony Corporation | Power of two multiplication engine |
US10108396B2 (en) | 2013-06-25 | 2018-10-23 | Stmicroelectronics S.R.L. | Method and system for performing division/multiplication operations in digital processors, corresponding device and computer program product |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3018958A (en) * | 1956-08-31 | 1962-01-30 | Ibm | Very high frequency computing circuit |
US3221157A (en) * | 1961-06-26 | 1965-11-30 | Ibm | Associative memory |
BE701057A (de) * | 1966-08-30 | 1967-12-18 | ||
US3571580A (en) * | 1969-02-06 | 1971-03-23 | Northern Electric Co | Device for determining least significant {37 one{38 {0 in a binary word |
DE2401997C3 (de) * | 1973-01-16 | 1978-06-15 | Canon K.K., Tokio | Numerische Ausgabevorrichtung |
GB1480503A (en) * | 1973-09-13 | 1977-07-20 | Siemens Ag | Calculating unit for serial multiplication |
US4118785A (en) * | 1973-10-08 | 1978-10-03 | Nippon Telegraph And Telephone Public Corporation | Method and apparatus for digital attenuation by pattern shifting |
JPS5086949A (de) * | 1973-12-03 | 1975-07-12 | ||
US4086474A (en) * | 1976-09-30 | 1978-04-25 | Honeywell Information Systems Inc. | Multiplication technique in a data processing system |
JPS556670A (en) * | 1978-06-30 | 1980-01-18 | Fujitsu Ltd | Multiplication processor |
US4396994A (en) * | 1980-12-31 | 1983-08-02 | Bell Telephone Laboratories, Incorporated | Data shifting and rotating apparatus |
-
1982
- 1982-09-29 US US06/426,564 patent/US4475167A/en not_active Expired - Lifetime
-
1983
- 1983-07-11 JP JP58125985A patent/JPS5961892A/ja active Granted
- 1983-09-13 GB GB08324477A patent/GB2127996B/en not_active Expired
- 1983-09-28 DE DE19833335026 patent/DE3335026A1/de active Granted
Also Published As
Publication number | Publication date |
---|---|
US4475167A (en) | 1984-10-02 |
DE3335026A1 (de) | 1984-03-29 |
GB2127996B (en) | 1986-03-05 |
JPS5961892A (ja) | 1984-04-09 |
GB2127996A (en) | 1984-04-18 |
GB8324477D0 (en) | 1983-10-12 |
JPH0443280B2 (de) | 1992-07-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE2934489C2 (de) | ||
DE2524497C3 (de) | Verfahren und Schaltungsanordnung zur Sprachsynthese | |
DE2659096C2 (de) | ||
DE3306730C2 (de) | ||
DE2163053C3 (de) | Schaltanordnung zum Bilden von zeitlich aufeinanderfolgenden Gruppensignalen in der Peiltechnik | |
DE2919085C2 (de) | Vorverarbeitungsverfahren und -vorrichtung für eine Spracherkennungsvorrichtung | |
DE2422496A1 (de) | Verfahren zum wandeln eines analogen eingangssignals in eine folge digitalisierter muster und spektrumanalysator unter verwendung des verfahrens | |
DE69734837T2 (de) | Sprachkodierer, sprachdekodierer, sprachkodierungsmethode und sprachdekodierungsmethode | |
DE3852678T2 (de) | Mustererkennung. | |
DE3236832A1 (de) | Verfahren und geraet zur sprachanalyse | |
DE2825110A1 (de) | Verfahren zur erkennung kontinuierlicher sprachsignale | |
DE3236885A1 (de) | Verfahren und geraet zur sprachanalyse | |
DE2820645A1 (de) | Vorrichtung und verfahren zur spracherkennung | |
DE2825186A1 (de) | Verfahren zur verringerung der falschanzeige in spracherkennungsverfahren fuer kontinuierliche sprachsignale | |
DE2825082A1 (de) | Verfahren zur spracherkennung | |
DE10234130B3 (de) | Vorrichtung und Verfahren zum Erzeugen einer komplexen Spektraldarstellung eines zeitdiskreten Signals | |
DE3237613A1 (de) | Spracherkennungs-verfahren und -vorrichtung fuer kontinuierliche sprache | |
DE2414866A1 (de) | Einrichtung zum ermitteln der signalbeschaffenheit einer digitalen, phasenmodulierten welle | |
DE3878895T2 (de) | Verfahren und einrichtung zur spracherkennung. | |
DE2020753A1 (de) | Einrichtung zum Erkennen vorgegebener Sprachlaute | |
DE69523032T2 (de) | Vorrichtung und Verfahren zur Kodierung der Sprachgrundfrequenz | |
DE4491015C2 (de) | Verfahren zum Erzeugen eines Spektralrauschbewertungsfilters zur Verwendung in einem Sprachcoder | |
DE2730662A1 (de) | Verfahren und schaltung zum erzeugen eines autokorrelations-funktions-faktors | |
DE2636032B2 (de) | Elektrische Schaltungsanordnung zum Extrahieren der Grundschwingungsperiode aus einem Sprachsignal | |
DE19581667C2 (de) | Spracherkennungssystem und Verfahren zur Spracherkennung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8110 | Request for examination paragraph 44 | ||
D2 | Grant after examination | ||
8364 | No opposition during term of opposition |