DE102020131264A1 - Verfahren und System der Audioeingangsbitgrössenkonvertierung zur Audioverarbeitung - Google Patents

Verfahren und System der Audioeingangsbitgrössenkonvertierung zur Audioverarbeitung Download PDF

Info

Publication number
DE102020131264A1
DE102020131264A1 DE102020131264.4A DE102020131264A DE102020131264A1 DE 102020131264 A1 DE102020131264 A1 DE 102020131264A1 DE 102020131264 A DE102020131264 A DE 102020131264A DE 102020131264 A1 DE102020131264 A1 DE 102020131264A1
Authority
DE
Germany
Prior art keywords
sample
bit
parts
scaled
gain
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.)
Pending
Application number
DE102020131264.4A
Other languages
English (en)
Inventor
Marcin Terpilowski
Tomasz DORAU
Tobias Bocklet
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020131264A1 publication Critical patent/DE102020131264A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/28Programmable structures, i.e. where the code converter contains apparatus which is operator-changeable to modify the conversion process
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/162Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/16Sound input; Sound output
    • G06F3/165Management of the audio stream, e.g. setting of volume, audio stream path
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/02Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word
    • H03M7/04Conversion to or from weighted codes, i.e. the weight given to a digit depending on the position of the digit within the block or code word the radix thereof being two
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS OR SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/02Feature extraction for speech recognition; Selection of recognition unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Acoustics & Sound (AREA)
  • Computational Linguistics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Circuit For Audible Band Transducer (AREA)
  • Complex Calculations (AREA)

Abstract

Ein Verfahren, System und Gerät sind auf die Audioeingangsbitgrößenkonvertierung zur Kompatibilität mit Audioverarbeitungssystemen mit einer erwarteten Eingangs-Sample-Bitgröße gerichtet.

Description

  • HINTERGRUND
  • Es existiert eine Anzahl von Techniken zur automatischen Spracherkennung (Automatic-Speech-Recognition - ASR), die auf kleinen elektronischen Geräten oder Computergeräten verwendet werden. Um ein Beispiel zu nennen, kann dies eine Schlüsselphrasenerkennung (wie zum Beispiel Wake-on-Voice) oder Hot-Word-Erkennungssysteme beinhalten, die verwendet werden, um ein Wort oder eine Phrase oder dergleichen, das/die eine Aktivität durch ein Gerät initiieren kann, zu erkennen. Zum Beispiel kann das Gerät durch Übergehen von einem Energiesparmodus oder Schlafmodus in einen aktiven Modus erwachen, und/oder es kann ein bestimmtes Computerprogramm, wie zum Beispiel eine Personal Assistant (PA) -Anwendung wecken. In diesem Fall kann die Erkennung einer Weck-Schlüsselphrase eine automatische Spracherkennungsanwendung aktivieren, um einen von einem Benutzer eingehenden Befehl zu verstehen. Zum Beispiel kann ein Benutzer „Alexa, wie ist das Wetter?“ aussprechen, wobei das Wort „Alexa“ die Weck-Schlüsselphrase ist.
  • Die Effizienz und Genauigkeit solcher ASR-Anwendungen ist durch das Übernehmen neuronaler Netzwerktechniken, die zum Beispiel häufig durch Hardwarebeschleuniger mit fester Funktion betrieben werden, erhöht worden. Ältere Techniken erforderten die Verwendung von digitalen Signalprozessoren (Digital-Signal-Processors - DSP) oder Mehrzweck-Computerverarbeitungseinheiten (Computer-Processing-Units - CPU), was viel weniger effizient ist. Eine solche Effizienz könnte für ASR-Anwendungen so niedrig oder der Energieverbrauch so hoch sein, dass ASR nicht auf einem kleinen eigenständigen Gerät betrieben werden könnte. Einige ASR-Techniken haben dieses Ziel erlangt, und verwenden neuronale Netzwerke zur Merkmalsextraktion, zum akustischen Bewerten und/oder Decodieren. Während viel des Betriebs des ASR-Prozesses auf eine solche Weise betrieben werden kann, wird jedoch häufig noch ein DSP benötigt, um komplexe Konvertierungsalgorithmen auszuführen, um unterschiedliche Bittiefen (oder Sample-Bitgrößen) eines Eingangsaudiosignals in die durch die ASR-Anwendung und -Hardware benötigte Bittiefe zu konvertieren . So müssen zum Beispiel 24-Bit-Audio-Samples von einem digitalen Mikrofon (Digital-Microphone - DMIC) häufig in 16-Bit-Samples für Kompatibilität mit den ASR-Anwendungen konvertiert werden. Eine solche Konvertierung, wenn durch einen DSP ausgeführt, verringert unerwünschterweise die Effizienz und/oder erhöht den Energieverbrauch auf einem Datenverarbeitungsgerät.
  • Figurenliste
  • Das hierin beschriebene Material ist in den begleitenden Figuren beispielhaft und nicht einschränkend veranschaulicht. Zur Vereinfachung und Klarheit der Veranschaulichung sind die in den Figuren veranschaulichten Elemente nicht notwendigerweise maßstabsgetreu gezeichnet. Zum Beispiel können die Dimensionen einiger Elemente der Klarheit wegen relativ zu anderen Elementen übertrieben sein. Ferner wurden, wo als geeignet betrachtet, Referenzbeschriftungen zwischen den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben. In den Figuren gilt:
    • 1 ist ein Diagramm einer beispielhaften Einstellung, in der eine Audioverarbeitung ausgeführt wird;
    • 2 ist ein schematisches Diagramm eines Audioverarbeitungssystems gemäß mindestens einer der Implementierungen hierin;
    • 3 ist ein schematisches Diagramm eines beispielhaften Audioeingangsbitgrößenkonvertierungssystems gemäß mindestens einer der hierin beschriebenen Implementierungen;
    • 4 ist ein Flussdiagramm eines Verfahrens einer Audioeingangsbitgrößenkonvertierung gemäß mindestens einer der Implementierungen hierin;
    • Die 5A-5C sind ein Flussdiagramm eines detaillierten Verfahrens einer Audioeingangsbitgrößenkonvertierung gemäß mindestens einer der Implementierungen hierin;
    • 6 ist ein schematisches Diagramm einer beispielhaften Sample-Splitting-Einheit gemäß mindestens einer der hierin beschriebenen Implementierungen;
    • 6A ist ein schematisches Diagramm der Audio-Sample-Bitgrößenkonvertierung gemäß der Sample-Splitting-Einheit von 6;
    • 7 ist ein schematisches Diagramm von Audio-Samples, um eine Umformungsoperation gemäß der Sample-Splitting-Einheit von 6 zu erläutern;
    • 7A ist ein schematisches Diagramm, um eine Verschiebungsoperation gemäß der Sample-Splitting-Einheit von 6 zu erläutern;
    • 8 ist ein schematisches Diagramm einer beispielhaften Absolutwerteinheit gemäß mindestens einer der hierin beschriebenen Implementierungen;
    • 9 ist eine grafische Darstellung einer Sägezahnfunktion, um die Zeichenzurückweisung gemäß der Absolutwerteinheit von 8 zu erläutern;
    • 10 ist ein schematisches Diagramm einer beispielhaften Skalierungseinheit gemäß mindestens einer der hierin beschriebenen Implementierungen;
    • 11 ist ein schematisches Diagramm, um die Verschmelzung von Sample-Vektoren zu demonstrieren, um einen einzelnen skalierten Sample-Vektor durch die Skalierungseinheit von 10 zu bilden;
    • 12 ist ein schematisches Diagramm eines konventionellen Sample-Bitgrößenkonvertierungssteuerungssystems, das zum Vergleich in Experimenten verwendet wird;
    • 13 ist ein schematisches Diagramm eines Sample-Bitgrößenkonvertierungssystems gemäß mindestens einer der hierin offenbarten Implementierungen;
    • 14A ist eine grafische Darstellung, die eine Referenzeingangswellenform des Audioeingangs zeigt;
    • 14B ist ein Diagramm, das die Anzahl der Bits zeigt, die für jedes 24-Bit-Eingangs-Sample des getesteten Audioeingangs besetzt sind;
    • Die 15A-15B sind grafische Darstellungen in dem Frequenzbereich, die einen Vergleich von Merkmalswerten zwischen denen des offenbarten Verfahrens und dem Referenzsystem mit fester Verstärkung an einem Niedrigspektrumteil und für verschiedene Entfernungen zeigen;
    • Die 16A-16B sind grafische Darstellungen in dem Frequenzbereich, die einen Vergleich von Merkmalswerten zwischen denen des offenbarten Verfahrens und dem Referenzsystem mit fester Verstärkung an einem Mittelspektrumteil und für verschiedene Entfernungen zeigen;
    • 17 ist eine grafische Darstellung, die Merkmalswerte der Ausgangs-Samples und nach Hochpassfiltern des offenbarten Verfahrens für verschiedene Entfernungen und an dem Niedrigspektrumteil zeigt;
    • 18 ist eine grafische Darstellung, die Merkmalswerte der Ausgangs-Samples und nach Hochpassfiltern des offenbarten Verfahrens für verschiedene Entfernungen und an dem Mittelspektrumteil zeigt;
    • 19 ist eine grafische Darstellung, die Merkmalswerte der Ausgangs-Samples und nach Hochpassfiltern des Referenzsystems mit fester Verstärkung für verschiedene Entfernungen und an dem Niedrigspektrumteil zeigt;
    • 20 ist eine grafische Darstellung, die Merkmalswerte der Ausgangs-Samples und nach Hochpassfiltern des Referenzsystems mit fester Verstärkung für verschiedene Entfernungen und an dem Hochspektrumteil zeigt;
    • 21 ist ein veranschaulichendes Diagramm eines beispielhaften Systems;
    • 22 ist ein veranschaulichendes Diagramm eines anderen beispielhaften Systems; und
    • 23 veranschaulicht ein beispielhaftes Gerät, wobei alles gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet ist.
  • DETAILLIERTE BESCHREIBUNG
  • Eine oder mehrere Implementierungen werden nun unter Bezugnahme auf die beigefügten Figuren beschrieben. Während spezifische Konfigurationen und Anordnungen diskutiert werden, sollte klargestellt werden, dass dies nur für veranschaulichende Zwecke gemacht wird. Entsprechende Fachleute werden erkennen, dass andere Konfigurationen und Anordnungen eingesetzt werden können, ohne von dem Geist und Umfang der Beschreibung abzuweichen. Für entsprechende Fachleute wird ersichtlich, dass hierin beschriebene Techniken und/oder Anordnungen auch in einer Vielzahl anderer Systeme und Anwendungen als dem, was hierin beschrieben ist, eingesetzt werden können.
  • Während die folgende Beschreibung verschiedene Implementierungen darlegt, die in Architekturen, wie zum Beispiel System-on-a-Chip (SoC) -Architekturen, manifestiert werden können, ist die Implementierung der hierin beschriebenen Techniken und/oder Anordnungen nicht auf bestimmte Architekturen und/oder Datenverarbeitungssysteme beschränkt, und kann durch jegliche Architektur und/oder jegliches Datenverarbeitungssystem für ähnliche Zwecke, mit Ausnahme der hierin offenbarten Strukturen, implementiert werden. Beispielsweise verschiedene Architekturen, die zum Beispiel mehrere integrierte Schaltungs (Integrated-Circuit - IC) -Chips (zum Beispiel einschließlich optional digitaler Signalprozessoren, aber ansonsten Hardware mit fester Funktion, wie zum Beispiel neuronale Netzwerkbeschleuniger, oder dergleichen) und/oder Pakete und/oder verschiedene Datenverarbeitungsgeräte und/oder Unterhaltungselektronik (Consumer-Electronic - CE) -Geräte, wie zum Beispiel Set-Top-Boxen, Smartphones, intelligente Lautsprecher, Automobilsysteme, Sicherheitssysteme, oder jegliches andere Gerät oder System einsetzen, das die hierin beschriebenen Techniken und/oder Anordnungen implementieren kann. Ferner kann, während die folgende Beschreibung zahlreiche spezifische Details, wie zum Beispiel logische Implementierungen, Typen und Wechselbeziehungen von Systemkomponenten, logische Partitionierungs-/Integrationsauswahlen, usw., darlegen kann, der beanspruchte Gegenstand ohne solche spezifischen Details praktiziert werden. In anderen Fällen können einige Materialien, wie zum Beispiel Steuerungsstrukturen und vollständige Software-Anweisungssequenzen, nicht detailliert gezeigt werden, um das hierin offenbarte Material nicht unklar zu machen.
  • Das hierin offenbarte Material kann in Hardware, Firmware, Software oder jeglicher Kombination davon implementiert werden, sofern nicht anderweitig beschrieben, wobei eine alternative Implementierung zum Beispiel auf einen neuronalen Netzwerkbeschleuniger (Neural-Network-Accelerator - NNA) beschränkt sein kann. Das hierin offenbarte Material kann auch als auf einem maschinenlesbaren Medium gespeicherte Anweisungen implementiert werden, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Medium kann jegliches Medium und/oder jeglichen Mechanismus zum Speichern oder Übertragen von Informationen in einer Form, die durch eine Maschine (zum Beispiel ein Datenverarbeitungsgerät) gelesen werden kann, beinhalten. Zum Beispiel kann ein maschinenlesbares Medium einen Read-Only-Memory (ROM); Random-Access-Memory (RAM); Speicherungsmedien für Magnetplatten; optische Speicherungsmedien; Flash-Speichergeräte; elektrische, optische, akustische oder andere Formen von verbreiteten Signalen (zum Beispiel Trägerwellen, Infrarotsignale, digitale Signale, usw.) und andere beinhalten.
  • Bezugnahmen in der Spezifikation auf „(genau) eine Implementierung“, „eine Implementierung“, „eine beispielhafte Implementierung“ usw., geben an, dass die beschriebene Implementierung ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik beinhalten kann, aber nicht jede Implementierung kann notwendigerweise das bestimmte Merkmal, die bestimmte Struktur oder Charakteristik beinhalten. Außerdem beziehen sich solche Phrasen nicht notwendigerweise auf dieselbe Implementierung. Ferner wird, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder Charakteristik in Verbindung mit einer Implementierung beschrieben wird, vorgeschlagen, dass es in dem Kenntnisbereich eines Fachmanns liegt, ein solches Merkmal, eine solche Struktur oder Charakteristik in Verbindung mit anderen Implementierungen, ob hierin explizit beschrieben oder nicht, zu beeinflussen.
  • Verfahren, Geräte, Systeme, Vorrichtungen, Datenverarbeitungsplattformen und Artikel, die sich auf die Audioeingangsbitgrößenkonvertierung zur Audioverarbeitung beziehen, werden hierin beschrieben.
  • Wie erwähnt, sind viele automatische Spracherkennungs (ASR) -Systeme, wie zum Beispiel virtuelle Assistenten, nicht direkt kompatibel mit digitalen Audiosignalen oder anderen hochwertigen Audiosignalen mit relativ großen Eingangs-Sample-Bitgrößen, wie zum Beispiel 24 Bit. Dies ist insbesondere problematisch bei Schlüsselphrasenerkennungs (Keyphrase-Detection - KPD) -Systemen (auch bezeichnet als Schlüsselworterkennung (Keyword-Detection - KWD)), die eine Schlüsselphrase verwenden, um ein Gerät zu wecken, um den virtuellen Assistenten eine Anforderung von einem Benutzer empfangen zu lassen. Ein KPD-System kann „immer ein“ sein, und verbraucht daher zu jeder Zeit mindestens eine minimale Menge an Energie und Ressourcen, was besonders wichtig ist bei batteriebetriebenen Geräten wie Laptops, Smartphones, intelligenten Lautsprechern, usw.
  • Darauf bezogen, wurden einige rein neuronale Netzwerksysteme entwickelt, um den Ressourcen- und Energieverbrauch zu reduzieren, und für effiziente Matrixoperationen verbesserte Hardwarebeschleuniger zu verwenden. Ein Beispiel für ein solches System ist ein durch Intel entwickeltes Gaussian-Mixture-Model & Neural-Network-Accelerator (GNA) -System und ähnliche Systeme Diese Systeme verwenden neuronale Netzwerke anstelle eines digitalen Signalprozessors (DSP) zur Merkmalsextraktion, zum akustischen Bewerten und Decodieren in dem ASR-Prozess. Diese rein neuronalen Netzwerksysteme verwenden jedoch häufig Beschleuniger, die nur Samples oder Vektoren einer bestimmten Bitgröße, wie zum Beispiel ein Maximum von 16-Bit-Vektoreingängen, akzeptieren. Unglücklicherweise kann ein solches System nicht direkt mit DMIC und anderen hochauflösenden Mikrofon- und Audioempfangssystemen, die 24-Bit-Samples produzieren, verbunden werden. Dynamisches Audio mit einer Tiefe von 24-Bit wird häufig benötigt, um einen großen Bereich von Entfernungen zwischen dem Benutzer (oder der Quelle) und dem Gerät angemessen zu analysieren, da ein Signalpegel proportional zu dem Quadrat der Entfernung ist, und eine größere Bitbreite die Randkapazität zwischen dem niedrigsten und höchsten Pegel des verarbeiteten Signals erhöht, wobei sie es genauer macht.
  • Ein konventionelles Vorverarbeiten solcher high-definition (oder hochauflösenden) Signale von einem digitalen Mikrofon (zum Beispiel: Strahlbildung, Rauschreduzierung, Nachhallunerdrückung, usw.) und eine Konvertierung in 16-Bit-Audiosignal-Samples kann mit angemessener Bitgrößenkonvertierung ausgeführt werden. Diese konventionellen Systeme erfordern häufig komplexe Algorithmen, die den Energieverbrauch erhöhen, und müssen in den meisten Fällen aufgrund ihrer Komplexität auf einem digitalen Signalprozessor ausgeführt werden. Die Verwendung eines DSP ist nicht annähernd so effizient wie Prozessoren, wie zum Beispiel neuronale Netzwerkbeschleuniger.
  • Bei einer weniger effizienten konventionellen Audioeingangs-Sample-Bitgrößenkonvertierung reduziert das konventionelle Audiosystem die Auflösung eines digitalen Mikrofoneingangssignals auf 16 Bit durch Weglassen des (der) niedrigstwertigen Bytes. Diese Technik lässt Bits von den originalen oder ursprünglichen Audio-Samples fallen, wodurch sie die Qualität (oder Genauigkeit) der Audioverarbeitung, wie zum Beispiel der KPD oder eines anderen Sprachverarbeitungssystems, reduziert. Da Audioinformationen verloren sind, resultiert dies in einer Verringerung der Spracherkennungsleistung, speziell für Signale mit niedriger Amplitude und Fernfeldbedingungen.
  • Um diese Themen zu lösen, verwendet das vorliegende Verfahren und System eine Audioeingangs-Sample-Bitgrößenkonvertierungstechnik, die durch einen neuronalen Netzwerkbeschleuniger, wenn verfügbar, ausgeführt werden kann, und um die Effizienz eines Ende-zu-Ende-ASR-Systems für neuronale Netzwerke, wie zum Beispiel eines Schlüsselphrasenerkennungssystems, zu ergänzen. Insbesondere kann das offenbarte Verfahren Audio-Samples von einem digitalen Mikrofon in einer ersten Bitgröße, wie zum Beispiel 24 Bit, in ein skaliertes Ausgangs-Sample mit einer anderen Bitgröße, wie zum Beispiel 16 Bit konvertieren, und das kann zur weiteren Audioverarbeitung, wie zum Beispiel ASR oder Schlüsselphrasenerkennung, verwendet werden. Ausgang bezieht sich hierin auf einen Ausgang von einer Bitgrößenkonvertierungseinheit. Es ist hierin auch zu beachten, dass sich die ASR und Schlüsselphrasenerkennung auf die Anerkennung oder die Erkennung jeglichen Zielgeräusches bezieht, einschließlich jeglichen Teils von Sprache oder Teils eines Wortes, eines ganzen Wortes, einer Phrase, eines Satzes, usw.
  • Das offenbarte Verfahren erfüllt dies, indem zuerst das ursprüngliche Eingangs-Sample in mehrere Sample-Teile mit jeweils einer mit den Audioverarbeitungssystemen kompatiblen Bitgröße, wie zum Beispiel 16 Bit, geteilt wird. Durch ein Beispiel kann mindestens einer der Sample-Teile die höchstwertigen Bits (Most-Significant-Bits - MSB) von dem ursprünglichen Sample, und als der hohe Sample-Teil (oder nur hoher Teil) bezeichnet, halten, während ein oder mehrere andere Sample-Teile die verbleibenden Bits einschließlich der niedrigstwertigen Bits (Least-Significant-Bits - LSB), bezeichnet als der niedrige Sample-Teil (oder niedriger Teil) halten kann, sodass mindestens ursprünglich keine Bits von dem ursprünglichen Sample verloren werden. Ein Behälter mit größerer Bitgröße (oder Übergangs-Sample), wie zum Beispiel 32 Bit, kann verwendet werden, um die mehreren Sample-Teile zu bilden, sodass neuronale Netzwerkbeschleuniger für diese Operation verwendet werden können, um die Sample-Teile anzuordnen. Durch eine Form werden die Sample-Teile in zwei separate Sample-Vektoren entschachtelt: einen hohen Sample-Vektor mit allen hohen Sample-Teilen und einen niedrigen Sample-Vektor mit allen niedrigen Sample-Teilen. Dies ermöglicht es einem neuronalen Netzwerkbeschleuniger, jeden Sample-Vektor separat zu handhaben, um die Kapazität zu haben, mehr Informationen von dem Quell-Stream für Audio mit höherer Auflösung zu behalten.
  • Dann werden Absolutwerte der Sample-Teile sowie ein separater Vorzeichenvektor gebildet, um eine Verstärkung oder ein Gewicht auf die Sample-Teile anzuwenden. Das negative Vorzeichen sollte entfernt werden, bevor die Verstärkungen angewendet werden, sodass das Vorzeichenbit in jedem Sample-Teil eine Schätzung der Zählung der maximal verwendeten Bits nicht beeinflusst. Das Vorzeichen kann bewahrt und später wieder mit dem resultierenden skalierten Ausgangs-Sample verbunden werden. Das Vorzeichen beeinflusst die Zählung, da hier eine binär vorzeichenbehaftete Zahlendarstellung „Zweierkomplement“ verwendet werden kann. In diesem System wird, wenn eine Zahl negativ ist, ein höheres MSB auf 1 gesetzt, um einen negativen Wert anzugeben. Die verbleibenden Bits werden wie vorher mit positiven Werten behandelt. Somit ist das negative Vorzeichen nicht mit der vorgeschlagenen Lösung kompatibel, die auf MSB prüft, die auf 0 gelöscht wurden. Darüber hinaus sollten durch eine beispielhafte Form alle der Samples vorzeichenlos sein, um zu schätzen, welches Sample die größte Größe hat. Dies wird durch die unten beschriebene Max-Pool-Operation ausgeführt.
  • Eine Verstärkung (oder ein Gewicht oder Skalierungsfaktor) wird dann auf jeden der hohen und niedrigen Sample-Teile angewendet. Durch eine Form werden die Verstärkungen durch Verwenden einer Zählung der Anzahl von Bits gesetzt, die in dem hohen Sample-Teil mit dem größten Wert unter allen hohen Sample-Teilen in einer Gruppe oder einem Satz von N Samples, wie beispielsweise in einem Beispiel ungefähr 400 Samples, verwendet werden, Die gleichen Verstärkungen können dann für alle Samples in dem Sample-Satz verwendet werden. Die Verstärkungen sind so angeordnet, dass sie die MSB stärker wiegen als die LSB, um den Wert der hohen Sample-Teile und damit der resultierenden Ausgangs-Samples zu erhöhen. Je größer die Werte des Ausgangs-Samples, desto größer die Verteilung der Sample-Werte, die für eine spätere Audioverarbeitung, wie zum Beispiel Merkmalsextraktion, in ein neuronales Netzwerk eingegeben werden können, wodurch die Präzision und Empfindlichkeit des neuronalen Netzwerks und deshalb die Genauigkeit des Ausgangs des neuronalen Netzwerks erhöht wird.
  • Zusätzlich veranlassen die Verstärkungen effektiv eine Bitverschiebung in dem resultierenden skalierten Sample, sodass der hohe Sample-Teil bis zu dem höchsten verfügbaren Bitraum (214) in einem skalierten hohen Sample-Teil gefüllt wird. Dies ermöglicht es einem Raum in den niedrigeren Biträumen des hohen Sample-Teils, Bits von dem niedrigen Sample-Teil zu empfangen, wenn die hohen und niedrigen Sample-Teile summiert werden, um ein skaliertes Ausgangs-Sample zu bilden. Ein weiterer Anpassungs- oder Skalierungsfaktor kann auf einen niedrigen Sample-Teil angewendet werden, um einige der Bits des niedrigen Sample-Teils mit den leeren Biträumen des hohen Sample-Teils mit den Bits des niedrigen Sample-Teils auszurichten, um einen skalierten niedrigen Sample-Teil zu bilden, sodass, wenn die skalierten hohen und niedrigen Sample-Teile kombiniert werden, ein skaliertes Ausgangs-Sample sowohl von skalierten hohen als auch niedrigen Sample-Teilen gefüllt wird, wodurch weiterhin LSB von dem niedrigen Sample-Teil mit mindestens einiger Darstellung in dem resultierenden skalierten Ausgangs-Sample bereitgestellt werden. Dies stellt noch mehr Präzision und Genauigkeit für die skalierten Ausgangs-Samples bereit, welche gegenüber konventionellen Methoden, die das ursprüngliche Sample einfach durch Fallenlassen des letzten Bytes abschneiden, erheblich erhöht werden.
  • Danach kann ein separater Vorzeichenvektor, der das Vorzeichen (positiv oder negativ) des ursprünglichen Samples und mindestens Abschnitte der skalierten Sample-Teile beibehält, erneut kombiniert werden, um ein einzelnes skaliertes, konvertiertes oder Ausgangs-Sample mit der Bitgröße, die mit dem Audioverarbeitungssystem kompatibel ist, wie zum Beispiel 16 Bit, zu bilden.
  • Das offenbarte Verfahren und System mit hocheffizienter Sample-Bitgrößenkonvertierung, die hochgenaue konvertierte Samples bildet, kann durch rein neuronale Netzwerkbeschleunigerkomponenten, vor allem durch affine Transformationen (oder Schichten), 1D-Faltungsoperationen und Identitätsoperationen, um einige Beispiele zu nennen, und wie unten detailliert beschrieben, betrieben werden. Eine vollständig verbundene Schicht (oder affine Schicht oder affine Transformation) ist jegliche Schicht (Eingangs-, Ausgangs- oder verborgene Schicht), wobei die Gewichtsmatrix für diese Schicht meistens mit Werten ungleich Null bestückt ist (bezogen auf mindestens mehr als die Hälfte), sodass jeder Ausgang für Knoten auf dieser Schicht durch eine signifikante Menge der Eingänge beeinflusst wird. Eine solche Schichtoperation wird als eine Aktivierungsfunktion einer affinen Transformation beschrieben, wie zum Beispiel: y ( t ) = f ( Ws ( t ) + B )
    Figure DE102020131264A1_0001
    wobei W eine Gewichtsmatrix (oder ein Vektor) ist, die die Schichtkonnektivität definiert, s(t) der Eingangsvektor der Schicht zum Zeitpunkt (Frame) t ist, y(t) der Ausgangsvektor zum Zeitpunkt (Frame) t ist, B ein Vorspannungsvektor, falls vorhanden, ist, und f() die Aktivierungsfunktion für die Schicht ist.
  • Daher kann die hierin beschriebene Konvertierungsanordnung mit der Verwendung einer gesamten KPD-Pipeline (Anfang-zu-Ende-Audioverarbeitung eines neuronalen Netzwerks), die an einer autonomen Version eines NN-Beschleunigers ausgeführt wird, kompatibel gemacht werden. Während der hierin offenbarten Sample-Bitgrößenkonvertierung ist die Rolle von DSP-Firmware auf Hardware-Initialisierung und Reagieren auf Unterbrechungen, wenn eine Schlüsselphrasenerkennung auftritt, beschränkt. Andernfalls kann ein DSP-Kern, wenn vorhanden, in einen energiereduzierten Modus versetzt werden.
  • Solche Anfang-zu-Ende-Audioprozesse für neuronale Netzwerke können auf Intel's Gaussian-Mixture-Model & Neural-Network-Accelerator (GNA) und/oder Autonomous-Neural-Network-Accelerator (ANNA) implementiert werden, um einige Beispiele zu nennen. Ein solcher GNA wird durch US-Patentveröffentlichung Nr. 2018/0121796 , veröffentlicht am 3. Mai 2018, und betitelt Flexible Neural Network Accelerator and Methods Therefor, offenbart, die hierin in ihrer Gesamtheit für alle Zwecke enthalten ist. Hierin bezieht sich ein neuronaler Netzwerkbeschleuniger (NNA) auf einen Prozessor für einen speziellen Zweck, der speziell angeordnet ist, um ein neuronales Netzwerk zu verarbeiten. Ein solcher NNA hat mindestens spezifische Logikhardware für Vektoren von Eingangsdaten, die durch ein neuronales Netzwerk verbreitet werden sollen, Eingangsgewichte für Knoten in dem Netzwerk, Eingangsvorspannungen und/oder anzuwendende Konstanten, eine Verbreitungsschaltung, wie zum Beispiel eine Mehrfachakkumulationsschaltung, und eine Aktivierungsfunktionseinheit. Durch eine Form hat der NNA die Fähigkeit, Daten von einem DMIC direkt zu verarbeiten (zum Beispiel ohne die Verwendung eines DSP, um eine Bitgrößenkonvertierung von Samples auszuführen), wie hierin beschrieben, um in der Lage zu sein, auf eine vollständig oder im Wesentlichen autonome Weise zu laufen.
  • Infolgedessen sind das vorliegende Verfahren und System besonders wertvoll, wenn das System in Fernfeldbedingungen läuft, und wenn die Signalamplitude niedrig ist. Auch ermöglicht das Ausführen des offenbarten Verfahrens an einem autonomen Hardwarebeschleuniger eine hohe Leistung und einen beschränkten Ressourcenverbrauch (sowohl Energie als auch Zyklen), verglichen mit einer DSP-Implementierung. Diese Strukturen und Verfahren resultieren in einer signifikanten energieeffizienten Lösung, und erhöhen die Energieeffizienz einer Audioverarbeitung signifikant.
  • Während die beispielhaften Beschreibungen hierin hauptsächlich das offenbarte Verfahren und System zum Ausführen einer Sample-Bitgrößenkonvertierung für ASR, und insbesondere für KPD, beschreiben, versteht es sich, dass das vorliegende Verfahren und System als eine Vorverarbeitungsoperation für viele unterschiedliche Audioverarbeitungssysteme, und einschließlich jener, die ein neuronales Netzwerk verwenden, verwendet werden könnte.
  • Jetzt Bezug nehmend auf 1, ist beispielhafte Einstellung 100 zum Bereitstellen einer ASR, wie zum Beispiel einer Schlüsselphrasenerkennung, gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet. Die Einstellung 100 kann Benutzer 101 beinhalten, der Audioeingang 111 für Gerät 102 bereitstellt. Zum Beispiel kann das Gerät 102 in einem Tiefschlaf- oder Energiesparmodus oder dergleichen sein, und der Benutzer 101 kann versuchen, das Gerät 102 über eine Schlüsselphrasenerkennung zu wecken. Wenn der Benutzer 101 den Audioeingang 111 bereitstellt, der als die Schlüsselphrase des Geräts 102 identifiziert wird, kann das Gerät 102 von einem Schlaf- oder Energiesparmodus erwachen, eine Aufgabe ausführen oder dergleichen. Zum Beispiel kann das Gerät 102 eine automatische Wake-on-Voice-Fähigkeit für den Benutzer 101 bereitstellen. Durch andere Beispiele kann sich Wake-on-Voice, oder allgemeiner Schlüsselphrasenerkennung, auf eine Situation beziehen, in der das Gerät bereits wach ist und andere Aufgaben, wie zum Beispiel Spielen von Musik, ausführt und die Schlüsselphrasenerkennung das Wecken eines spezifischen Programms oder einer spezifischen Anwendung, wie zum Beispiel eines persönlichen Assistenten (Personal-Assistent - PA) oder eines virtuellen Assistenten (Virtual-Assistent - VA), auslöst. In einem solchen Fall kann die Schlüsselphrasenerkennung eine automatische Spracherkennungs (ASR) -Anwendung wecken, um einen Befehl oder eine Anforderung zu verstehen, den PA anzuweisen, eine Aufgabe auszuführen. Alternativ kann anstelle eines PA mit allgemeinem Wissen eine spezifische Audioanwendung, die spezifische Befehle empfängt, zuhören, wie zum Beispiel die, die Befehle erwartet, um zum Beispiel einen Telefonanruf zu tätigen.
  • Andernfalls kann der Benutzer 102 für ein ASR mit großem Wortschatz einem PA eine Frage stellen oder Informationen anfordern, wobei die ASR-Anwendung die Sprache erkennen muss, um die Anforderung zu verstehen, und dem Benutzer eine relevante Antwort bereitzustellen. Durch andere Alternativen kann der Benutzer das Gerät 102 als ein Diktiergerät verwenden, sodass die ASR-Anwendung die Sprache des Benutzers erkennen muss, um die Audio-Sprache in geschriebenen Text in einer Anwendung auf dem Gerät 102, die zum Beispiel eine Textschnittstelle bereitstellt, zu konvertieren. Wie von den Beschreibungen hierin ersichtlich wird, kann das vorliegende Verfahren und System für jegliche dieser Anwendungen und viele andere Anwendungen, die Audiosignale analysieren und ein Sampling des Signals erfordern, verwendet werden.
  • Wie gezeigt, kann in einigen Beispielen ein ASR- oder Audioverarbeitungssystem über das Gerät 102 implementiert werden, sodass das Gerät 102 ein Smartphone sein kann. Das Gerät 102 kann jedoch jegliches geeignete Gerät sein, das eine solche Audioverarbeitung wie hierin beschrieben handhabt, wie zum Beispiel ein intelligenter Lautsprecher, Computer, Laptop, ein Ultrabook, ein Smartphone, ein Tablet, ein Phablet, ein tragbares Gerät, wie zum Beispiel eine Smart-Watch, intelligente Kopfhörer oder Brillen, oder dergleichen. In jeglichem Fall kann das Gerät 102 als ein wie hierin verwendetes Datenverarbeitungsgerät beschrieben werden.
  • Bezug nehmend auf 2, ist beispielhaftes Audioverarbeitungssystem 200, das sich auf dem Gerät 102 (1) für ASR befinden kann, hier als ein Beispiel des Systemtyps gezeigt, der die offenbarte Audio-Sample-Bitgrößenkonvertierung verwenden kann, und gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet ist. Das System 200 kann ein oder mehrere Audioerfassungs- oder Empfangsgeräte 204, wie zum Beispiel ein Mikrofon oder eine Reihe von Mikrofonen, akustische Front-End-Einheit 206, hierin unten detailliert offenbarte Audio-Sample-Bitgrößenkonvertierungseinheit 208, ASR-Engine 214 mit Merkmalsextraktionseinheit 210, Einsteller 212 zum Kompensieren von Änderungen durch die Konvertierungseinheit 208, akustische Bewertungseinheit 216 und Decoder 218, beinhalten oder kommunizierend mit diesen verbunden sein. Das System 200 kann optional auch KPD-Einheit 220, Weckeinheit 222 und/oder Sprachinterpretierungsausführungseinheit 226, sowie Endgerät 224, Lautsprecherkomponente 228 und Anzeigekomponente 230, alle unten beschrieben, bereitstellen.
  • Nun detaillierter, empfängt das Mikrofon 204 Schallwellen von Benutzer 202 (oder 101 von 1) und konvertiert die Schallwellen in ein rohes elektrisch-akustisches Signal, das in einem Speicher aufgezeichnet werden kann. Durch das Mikrofon 204 empfangener Audioeingang kann jegliche durch den Benutzer 202 ausgegebene Sprache und jegliches andere Hintergrundgeräusch oder jede Stille oder dergleichen in der Umgebung des Mikrofons 204 beinhalten. Audioeingang kann als Audio, Eingangsaudio, ein Eingangsprach-Stream oder dergleichen charakterisiert werden.
  • Durch eine Form kann das Mikrofon 204 direkt über eine digitale Zweidrahtschnittstelle, wie zum Beispiel eine Pulse-Density-Modulation (PDM) -Schnittstelle verbunden werden, um ein Beispiel zu nennen. In diesem Fall wird ein digitales Signal direkt in ein akustisches Front-End 206 eingegeben. Das digitale Signal kann auch durch andere Strukturen oder Schaltungen bereitgestellt werden, und ist nicht besonders beschränkt. Die akustische Front-End-Einheit 206 kann eine Vorverarbeitung ausführen, die eine Signalaufbereitung, Rauschunterdrückung, Sampling-Geschwindigkeitskonvertierung, Signalentzerrung und/oder Vorverstärkungsfiltration, um das Signal zu verflachen, beinhalten kann. Die akustische Front-End-Einheit 206 kann das akustische Signal auch in Frames oder ursprüngliche Samples, durch Frames von 10ms oder 30ms durch einige Beispiele, aufteilen. Die ursprünglichen digitalen Samples können hier in Rohform bereitgestellt und dann nach der oben erwähnten Vorverarbeitung in 24-Bit-Werten beibehalten werden, um eine high-definition (oder hochauflösende) Audioqualität bereitzustellen.
  • Die ursprünglichen Samples können dann einer Audioeingangsbitgrößenkonvertierungs (Audio-Input-Bit-Size-Conversion - AIBC) -Einheit, oder nur Konvertierungseinheit, 208 bereitgestellt werden, um die ursprünglichen Samples von einer ersten Bitgröße, wie zum Beispiel 24 Bit, in eine zweite Bitgröße, wie zum Beispiel 16 Bit, für Kompatibilität mit den folgenden ASR-Einheiten zu konvertieren. Die Konvertierungseinheit 208 kann als Teil der akustischen Front-End-Einheit 206 oder der ASR-Engine 214 oder keiner von beiden betrachtet werden. Wie unten detailliert offenbart, konvertiert die Konvertierungseinheit 208 die Sample-Größen auf eine hocheffiziente Weise, und bildet hochgenaue konvertierte Samples, alles ohne die Verwendung eines DSP. Um dies zu erfüllen, kann die Konvertierungseinheit 208 jeden Eingang oder jedes ursprüngliche Sample einer ersten Bitgröße in ein Übergangs-Sample oder einen Behälter mit einer Größe, die eine größere Bitgröße als das ursprüngliche Sample hat, konvertieren. Das Übergangs-Sample wird dann in Sample-Teile mit jeweils einer mit den ASR-Einheiten kompatiblen Bitgröße geteilt, und eine Verstärkung wird auf Absolutwertversionen der Sample-Teile angewendet, um skalierte Sample-Teile zu bilden. Ein Vorzeichenvektor wird ebenfalls erzeugt, um das Vorzeichen des ursprünglichen Samples beizubehalten. Mindestens Abschnitte der Sample-Teile und der Vorzeichenvektor werden dann erneut kombiniert, um ein skaliertes Ausgangs-Sample mit der kompatiblen Bitgröße zu bilden, um es für weitere Audioverarbeitung bereitzustellen. Eine solche Audio-Sample-Bitgrößenkonvertierungseinheit 208 wird als Konvertierungseinheit 300 (3) unten detailliert beschrieben. Für ASR oder KPD ist der Ausgang der Konvertierungseinheit 208 ein skaliertes Sample, das der Merkmalsextraktionseinheit 210 bereitgestellt wird.
  • Die Merkmalsextraktionseinheit 210 kann als Teil der ASR-Engine, des akustischen Front-End 206, von beiden oder von keiner der beiden betrachtet werden. Eine konventionelle Version der Merkmalsextraktionseinheit 210 extrahiert akustische Merkmale oder Merkmalsvektoren von dem akustischen Signal (oder in diesem Fall von skalierten Samples) durch Verwenden von Fourier-Transformationen usw., um in dem Signal bereitgestellte Phoneme zu identifizieren. Alternativ wird eine Merkmalsextraktionseinheit 210, die die Verwendung eines DSP vermeidet und stattdessen hauptsächlich durch einen neuronalen Netzwerkbeschleuniger arbeitet, durch US-Patentveröffentlichung Nr.: 2019/0043477 , veröffentlicht am 7. Februar 2019, und betitelt „Method and System of Temporal-Domain Feature Extraction for Automatic Speech Recognition“, offenbart, die hierin in ihrer Gesamtheit für alle Zwecke enthalten ist. Diese Technik für die Merkmalsextraktionseinheit 210 kann akustische Merkmale oder Merkmalsvektoren in der Form von Mel-Frequency-Spectral-Coefficients (MFSC) oder Cepstrum-Coefficients (MFCC) ohne die Verwendung eines DSP erzeugen. Diese Merkmalsextraktionseinheit 210 kann auch andere Aufgaben ausführen, die die Verwendung eines DSP vermeiden, wie zum Beispiel das Bereitstellen einer linearen Vorhersage, von Additiven, wie zum Beispiel Energiemessungen, von Delta-und Beschleunigungskoeffizienten, und der Anwendung von Gewichtsfunktionen, des Stapelns und der Transformationen von Merkmalsvektoren, des Reduzierens von Dimensionalität und von Normalisierung.
  • Die Merkmalsextraktionseinheit 210 kann Merkmalsvektoren (Feature-Vectors - FV) 232 erzeugen, die jegliche geeigneten Merkmale oder Merkmalsvektoren oder dergleichen, die die Audioeingangs-Samples darstellen, sein oder beinhalten können, und kann, wie oben erwähnt, ohne die Verwendung eines DSP stattdessen durch Verwenden von Hardware mit spezifischem Zweck und/oder eines neuronalen Netzwerkbeschleunigers bereitgestellt werden. Für das Beispiel, in dem der DSP vermieden wird, kann eine Zeitreihe von Merkmalsvektoren (zum Beispiel jeweils für eine Zeitinstanz erzeugte Merkmalsvektoren) verwendet werden, sodass jeder der Merkmalsvektoren einen Stapel von Merkmalen beinhaltet. Insbesondere können Merkmalsvektoren von der Merkmalsextraktionseinheit 210 zu mehreren Sampling-Zeiten in der Form der oben erwähnten MFCC bereitgestellt werden, oder dergleichen können erzeugt werden. Die Sampling-Zeiten können in jeglichem geeigneten Intervall sein, wie zum Beispiel alle 10 ms oder dergleichen, und das zu jeder Sampling-Zeit ausgeführte Sampling kann jegliche Dauer einer Eingangssprache oder von Audio, wie zum Beispiel 25 ms von Audio oder dergleichen, samplen. Die Koeffizienten der Merkmalsvektoren können jegliche Anzahl von Sampling-Koeffizienten beinhalten, beziehen sich jedoch gewöhnlich auf die Mel-Frequenzskala, und können durch ein Beispiel 13 bis 40 Koeffizienten beinhalten. Darüber hinaus können die Koeffizienten jeweils als Merkmale, ein Merkmalsvektor, ein Sampling, oder dergleichen bezeichnet werden. Durch ein Beispiel wird die Nicht-DSP-Merkmalsextraktion wie oben erwähnt und durch Verwenden der Nicht-FFT und eines Energiebetriebsakkumulationsansatzes verwendet. Für das andere oben erwähnte Beispiel können DSP verwendet werden, wenn eine Fourier-Transformation des Audioeingangs und/oder des über das Mikrofon 204 empfangenen Audio verwendet wird. In jedem Fall kann die Merkmalsextraktionseinheit 210 auch ein Abbilden auf die Mel-Skala ausführen, Logarithmen der Leistungen bei jeder Mel-Frequenz bestimmen und die Mel-Frequency-Cepstrum-Coefficients basierend auf einer Discrete-Cosine-Transform (DCT) der Logarithmen der Leistungen bestimmen.
  • Die Sampling-Koeffizienten können gestapelt oder verkettet oder kombiniert oder dergleichen werden, um die Merkmalsvektoren 232 zu erzeugen, nachdem sie durch cepstrale mittlere Normalisierung oder dergleichen normalisiert wurden oder dergleichen, um zum Beispiel die Koeffizienten zu erzeugen. Die Koeffizienten können kombiniert werden, um jeden Merkmalsvektor 232 so zu erzeugen, dass jeder Merkmalsvektor durch ein mögliches Beispiel ein 143 (zum Beispiel 11x13) -dimensionaler Vektor ist. Es kann jedoch jegliche Anzahl von Instanzen von Sampling-Koeffizienten kombiniert oder gestapelt werden, um die Merkmalsvektoren 232 zu erzeugen. Die Merkmalsvektoren 232 können Sampling-Koeffizienten mit überlappenden Zeitbereichen beinhalten, sodass ein erster Merkmalsvektor den Zeiten t0-t10 zugeordnet sein kann, während ein nächster Merkmalsvektor Sampling-Koeffizienten beinhalten kann, die zum Beispiel den Zeiten t1-t11 zugeordnet sind. Durch ein Beispiel können die Merkmalsvektoren (FV) 232 die Form von 16-Bit-Werten in Festpunktdarstellung mit bekannter Anzahl von fraktionalen Bits (Q-Faktor) haben. Die resultierenden Merkmale sollten logarithmisch proportional zu dem Pegel des Eingangssignals (MFSC, MFCC, usw.) sein.
  • Ein Einsteller (oder Addierer oder Subtrahierer) 212 stellt dann jeden der Merkmalsvektoren ein, indem er einen Verstärkungs- oder Skalierungskompensationswert oder Vektor ka anwendet, der den Effekt oder Versatz der auf die Sample-Vektoren angewendeten Verstärkungen entfernt, bevor er überhaupt das skalierte Sample bildet und es der Merkmalsextraktoreinheit 210 bereitstellt. Dies resultiert in dem Entfernen der Skalierung, als ob die Skalierung nicht angewendet worden wäre, und resultiert in de-skalierten Merkmalsvektoren (De-scaled-Feature-Vectors - DFV) 234. Dies wird ausgeführt, da von skalierten Sample-Vektoren berechnete Merkmale so vorgespannt sind, dass nachfolgende ASR- und KPD-Berechnungen falsche Ergebnisse haben würden. Darüber hinaus kann sich die Skalierung zwischen den Sample-Gruppenfenstern schnell ändern, sodass die Skalierung eine unerwünschte Varianz von Merkmalswerten einbringen kann, die in dem Eingangssignal nicht vorhanden ist. Diese Anordnung ermöglicht auch die Verwendung der Bitkostenkonvertierung mit bereits implementierten Merkmalsextraktionsmodulen, die nicht für dynamische Skalierungsmerkmale wie beschrieben angepasst sind.
  • Die de-skalierten Merkmalsvektoren (DFV) 234 werden dann der akustischen Bewertungseinheit 216 bereitgestellt, die auch als Teil der ASR-Engine 214 betrachtet werden kann oder nicht. Die akustische Bewertungseinheit 216 kann akustische Modelle verwenden, um eine Wahrscheinlichkeitsbewertung für kontextabhängige Phoneme zu bestimmen, die identifiziert werden sollen, wobei das Modell ein tiefes neuronales Netzwerk (Deep-Neural-Network - DNN) sein kann, das basierend auf einem Trainingssatz von Audio-Samples vortrainiert wurde. Die akustische Bewertung kann durch Verwenden jeglichen geeigneten neuronalen Netzwerks, wie zum Beispiel eines künstlichen neuronalen Netzwerks, eines tiefen neuronalen Netzwerks (DNN), eines neuronalen Faltungsnetzwerks (Convolutional-Neural-network - CNN), eines zeitverzögerten neuronalen Netzwerks (Time-Delayed-Neural-network - TDNN) oder dergleichen ausgeführt werden. In einigen Beispielen kann das neuronale Netzwerk zur akustischen Bewertung Hidden-Markov-Models (HMM) implementieren. Die resultierenden akustischen Ausgangsbewertungen von der akustischen Bewertungseinheit 216 können als Bewertungen, Wahrscheinlichkeiten, Bewertungen von subphonetischen Einheiten, Wahrscheinlichkeitsdichtefunktions (Probability-Density-Function - PDF) -Bewertungen oder dergleichen charakterisiert werden. Zum Beispiel kann die akustische Bewertungseinheit 216 solche Ausgangsbewertungen oder -Zustände für jeden der de-skalierten Merkmalsvektoren 234 erzeugen, um eine Zeitreihe von akustischen Bewertungen zu erzeugen.
  • Die akustischen Bewertungen können dann einem Decoder 218 bereitgestellt werden. Dies kann ein ASR-Decoder mit großem Vokabular sein, wie zum Beispiel ein Weighed-Finite-State-Transducer (WFST), oder es kann ein spezieller Schlüsselphrasen- oder Schlüsselworterkennungsdecoder (KPD- (oder KWD-) Decoder) sein. Ein KPD-Decoder für eine rein neuronale Netzwerklösung wurde in US-Patentveröffentlichung Nr. 2019/0043488, veröffentlicht am 7. Februar 2019, und betitelt „Method and System of Neural Network Keyphrase Detection“, beschrieben, die hierin in ihrer Gesamtheit für alle Zwecke enthalten ist. Dieser KPD-Decoder führt vektorisierte Operationen aus, und eine solche vektor- und subphonetisch-basierte Datenstruktur für einen Schlüsselphrasenerkennungsdecoder ist durch US-Patent Nr. 10,083,689 , erteilt am 25. September 2018 und betitelt „Linear Scoring For Low Power Wake On Voice“ offenbart, das ebenfalls hierin in seiner Gesamtheit für alle Zwecke enthalten ist.
  • Wenn der Decoder 218 ein KPD-Decoder ist oder einen solchen haben kann, kann der Decoder 218 einer KPD oder Steuereinheit 220 eine oder mehrere Schlüsselphrasenbewertungen (oder Wert(e), der(die) auf einer Schlüsselphrasenbewertung basiert(basieren) bereitstellen. Der Schlüsselphrasenerkennungsdecoder kann dies erfüllen, indem er ein Schlüsselphrasenmodell (oder mehrere Schlüsselphrasenmodelle) und ein Zurückweisungsmodell empfängt und implementiert.
  • Basierend auf einer oder mehreren endgültigen Schlüsselphrasenbewertungen (zum Beispiel, wenn eine Schlüsselphrasenbewertung größer als ein Schwellenwert oder dergleichen ist) kann die KPD-Einheit 220 einen Indikator für eine Systemweckeinheit 222 bereitstellen (zum Beispiel wenn eine Schlüsselphrasenbewertung eine vorbestimmte Schlüsselphrase angibt oder eine von mehreren vorgegebenen Schlüsselphrasen abgeglichen wurde). Die Weckeinheit 222 weckt dann die entsprechende Anwendung, wie zum Beispiel einen PA. In einigen Beispielen kann die KPD-Einheit 220 auch einen Systembefehl bereitstellen, der der Schlüsselphrase zugeordnet ist, um von dem(den) Endgerät(en) 224 anzufordern, eine Operation, wie zum Beispiel das Starten einer Anwendung, das Erzeugen oder Abrufen von Daten, oder dergleichen auszuführen. In einigen Formen kann die KPD-Einheit 220 eine Sprachaktivierung und eine Start- und/oder Endpunktspracherkennung ausführen oder damit verbunden sein.
  • Wenn der Decoder 218 ein Decoder mit großem Vokabular ist oder einen solchen hat, erzeugt der Decoder Hypothesenphrasen jeweils mit Bewertungen, die dann der Sprachinterpretierungsausführungseinheit 226 bereitgestellt werden. Die Sprachinterpretierungsausführungseinheit 226 bestimmt, welche der Phrasen die korrekte Phrase ist. Abhängig von der Phrase kann ein Endgerät 224 aktiviert werden, um weitere Aktionen auszuführen, wie zum Beispiel das Beantworten einer Frage durch den PA, oder das Finden von durch die Phrase angeforderten Informationen. Andernfalls kann die Phrase durch eine Anzeigekomponente 230, wie zum Beispiel mit einem Diktierprogramm, angezeigt werden, oder, wie zum Beispiel mit einer Lautsprecherkomponente 228, gesprochen werden. Viele andere Aktionen können abhängig von der resultierenden erkannten Phrase ausgeführt werden, und sind hier nicht besonders beschränkt.
  • In einigen Implementierungen werden die Konvertierungseinheit 208, die Merkmalsextraktionseinheit 210, die akustische Bewertungseinheit 216 und der Decoder 218 an mindestens einem neuronalen Netzwerkbeschleuniger und fest zugeordneter Hardware mit spezifischem Zweck anstatt an einem digitalen Signalprozessors (DSP) ausgeführt. Somit ist ein Vorteil des Audioverarbeitungssystems 200, dass es einen separaten DSP-Betrieb jedes dieser Module vermeidet, sodass keine „Berechnungs“ -Unterscheidung zwischen der Bitgrößenkonvertierung, der Merkmalsextraktion, der akustischen Bewertung und der Decodierung existiert. Mit anderen Worten, und allgemein gesprochen, können die Ergebnisse von neuronalen Netzwerkschichten eines der Module ohne separate Operationen in neuronale Netzwerkschichten des nächsten Moduls eingegeben werden, um die Daten einem DSP für Berechnungen bereitzustellen. Das Ergebnis ist eine autonome neuronale Netzwerkbeschleunigung, die in der Lage ist, eine ASR- oder Schlüsselphrasenerkennung im Wesentlichen bereitzustellen, ohne sich wesentlich auf andere Prozessoreinheiten zu verlassen, wodurch die Berechnungslasten und der Energieverbrauch reduziert werden, was die Funktionen kleiner Datenverarbeitungsgeräte und von „immer ein“-Geräten, um einige Beispiele zu nennen, verbessert. Durch andere Alternativen wird mindestens die Bitgrößenkonvertierung durch den NNA ausgeführt, während ein DSP für den Betrieb jeglicher einer oder mehrerer der anderen Einheiten verwendet werden kann.
  • Bezug nehmend auf 3, ist Audioeingangsbitgrößenkonvertierungssystem oder - Gerät (oder Konvertierungseinheit) 300 gezeigt, dasselbe wie oder ähnlich der AIBC-Einheit 208, und kann die hierin offenbarten Bitgrößenkonvertierungsverfahren ausführen. Die Konvertierungseinheit 300 kann Sample-Splitting-Einheit 302, Absolutwerteinheit 304, Max-Pool-Einheit 306, Verstärkungsschätzeinheit 308, Skalierungseinheit 310, Merkmalsextraktoreinheit 312 und Verstärkungseinstellungseinheit 314, die einen Einsteller (oder Addierer/Subtrahierer) 316 hat, haben. Es versteht sich, dass der Merkmalsextraktor 312 als eine von der Konvertierungseinheit 300 separate Einheit entweder allein oder als Teil einer ASR-Engine betrachtet werden kann.
  • Die Sample-Splitting-Einheit 302 teilt die ursprünglichen Samples in Sample-Teile durch Verwenden eines Übergangs-Samples oder eines Behälters, der größer als die ursprünglichen Samples ist. Das Übergangs-Sample hat eine Bitgröße, wie zum Beispiel 32 Bit, die bequem in Sample-Teile mit jeweils der gewünschten Bitgröße, wie zum Beispiel 16 Bit, teilbar ist, und dies kann durch Verwendung eines neuronalen Netzwerkbeschleunigers anstatt eines DSP erfüllt werden. In einem Beispiel hält einer der Sample-Teile die MSB des ursprünglichen Samples, das analysiert wird, und mindestens ein anderer der Sample-Teile hält die LSB des ursprünglichen Samples, das analysiert wird. Durch einen Ansatz erzeugt die Teilung zwei separate Sample-Vektoren für einen gesamten Sample-Satz oder eine gesamte Sample-Gruppe. Dies resultiert darin, dass LSB-Sample-Teile von mehreren Übergangs-Samples zusammen in einem niedrigen Sample-Vektor platziert werden, während die MSB-Sample-Teile der mehreren Übergangs-Samples zusammen in einem hohen Sample-Vektor platziert werden. Dies macht es für einen NNA effizienter, auf jedem der Sample-Vektoren unterschiedlich zu arbeiten. Die Splitting-Einheit 302 verschiebt auch die niedrigen Sample-Teile, um ein höchstes Bit (hier bei 215) zu reservieren, um ein Vorzeichen anzugeben, wird jedoch auf Null gesetzt (was positiv oder vorzeichenlos angibt).
  • Die Absolutwerteinheit 304 erzeugt dann die Absolutwertversionen der hohen und niedrigen Sample-Teile, sowie einen Vorzeichenvektor, um das Vorzeichen des ursprünglichen Samples beizubehalten, erneut durch Verwenden neuronaler Netzwerkbeschleunigeroperationen.
  • Die Max-Pool-Einheit 306 bestimmt als nächstes den Sample-Teil mit dem größten numerischen Wert unter einer Gruppe oder einem Satz von Samples, wie zum Beispiel N = 400 oder N = 416, und durch Verwenden eines maximalen Poolings, wie durch einen neuronalen Netzwerkbeschleuniger ausgeführt. Durch diesen Ansatz müssen nur die hohen Sample-Teile analysiert werden.
  • Die Verstärkungsschätzeinheit 308 verwendet den Sample-Teil mit dem Maximalwert, um Verstärkungen oder Gewichte für jeden der Sample-Teile des aktuellen Sample-Satzes zu erzeugen. Die Verstärkungen basieren auf der Größe des Sample-Teils (zum Beispiel wie viele Stellen der 16 Bits besetzt sind, oder mit anderen Worten, auf der Anzahl der Biträume von 0 bis zu dem höchsten Bitraum mit einer ,1' in dem Sample-Teil). Eine separate niedrige Verstärkung und hohe Verstärkung kann für den niedrigen Sample-Teil bzw. den hohen Sample-Teil und wie unten beschrieben gebildet werden.
  • Danach wendet die Skalierungseinheit 310 die Verstärkungen auf die Absolutwert-Sample-Teile an und erzeugt ein skaliertes Ausgangs-Sample. Dies wird erfüllt, indem mindestens Abschnitte der skalierten Sample-Teile erneut kombiniert werden und das Vorzeichen (in der Form des Vorzeichenvektors durch ein Beispiel) auf die resultierende erneute Kombination angewendet wird. Dies resultiert in einem vorzeichenbehafteten skalierten Sample (oder einem konvertierten Sample oder skalierten Ausgangs-Sample) der gewünschten 16-Bit-Tiefe.
  • Der Merkmalsextraktor 312 empfängt die skalierten Ausgangs-Samples, eines für jedes ursprüngliche Sample, und extrahiert Merkmale, um einen Merkmalsvektor wie hierin beschrieben zu bilden. Der Merkmalsvektor wird jedoch aufgrund der Anwendung der Skalierung durch die Konvertierungseinheit 300 skaliert. Somit kann die Verstärkungseinstellungseinheit 314 einen Einsteller (oder Addierer/Subtrahierer) 316 haben, um den Merkmalsvektor (oder skalierte Merkmale) zu de-skalieren. Dies wird ausgeführt, indem eine Verstärkungseinstellung ka auf den skalierten Merkmalsvektor angewendet wird, und diese wird basierend auf den Versätzen der auf die Sample-Teile angewendeten Verstärkungen und bekannten Eigenschaften der durch den Merkmalsextraktor (312) ausgeführten Transformation vorgespannt. Der kA-Koeffizient entspricht einem in der Skalierungseinheit (310) angewendeten Skalierungsfaktor. Die durch den Merkmalsextraktor (312) erzeugten skalierten Merkmale werden daher aufgrund der durch die Skalierungseinheit (310) angewendeten Skalierung ebenfalls vorgespannt. Um Merkmale auf den richtigen Signal- oder Wertpegel zurückzusetzen, als ob die Skalierung nicht stattgefunden hat, subtrahiert die Verstärkungseinstellungseinheit (314) den kA-Koeffizienten von jedem oder einem einzelnen Element in dem skalierten Merkmalsvektor, da eine Multiplikation mit einer Konstanten einer Addition in einem logarithmischen Bereich wie hier entspricht. Merkmalsextraktionsalgorithmen für ASR werden in Logarithmus intern berechnet. Die resultierenden de-skalierten eingestellten Merkmale oder der Merkmalsvektor werden dann einer akustischen Bewertungseinheit zum Beispiel für ASR oder KPD oder für andere Audioverarbeitungsoperationen bereitgestellt.
  • Durch eine Alternative wird ein NNA verwendet, um alle der Operationen der Konvertierungseinheit 300 wie oben erwähnt auszuführen (außer zum Beispiel Hardware-Initialisierung). Durch eine andere Alternative wird mindestens die Verstärkungserzeugung durch einen NNA ausgeführt, während jegliche Kombination einer oder mehrerer der anderen Operationen der Konvertierungseinheit 300 durch einen DSP ausgeführt werden kann. Die Einheiten oder Module, die die oben erwähnten Einheiten der Konvertierungseinheit 300 bilden, sowie die Details ihres Betriebs werden unten mit dem Betrieb der Prozesse 400 und 500 beschrieben.
  • Jetzt Bezug nehmend auf 4, ist beispielhafter Prozess 400 für Audioeingangs-Sample-Bitgrößenkonvertierung zur Audioverarbeitung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet. Der Prozess 400 kann eine oder mehrere Operationen 402-410 beinhalten, wie in 4 veranschaulicht. Darüber hinaus wird der Prozess 400 hierin unter Bezugnahme auf die Systeme 200, 300 oder 2100 der 2, 3, bzw. 21 und wo relevant beschrieben.
  • Der Prozess 400 kann „Erhalten eines Audioeingangs einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße“ 402 beinhalten. Somit kann Audio für ASR, KPD oder eine andere Audioverarbeitung von einer Speicherung oder einem oder mehreren Mikrofonen und durch ein Beispiels mit Samples in einer Bitgröße für high-definition oder hochauflösendes Audio, wie zum Beispiel 24 Bit, erhalten werden. Solche Samples können aufeinanderfolgende nicht überlappende Samples entlang eines Audiosignals sein, oder können überlappende Signale, wie zum Beispiel 25ms-Samples mit 10ms-Überlappungen durch ein Beispiel sein. Es existieren viele andere Beispiele. Das Audio kann eine Vorverarbeitung und/oder Front-End-Verarbeitung empfangen haben, sodass die Samples mindestens ausreichend für die Bitgrößenkonvertierung hierin formatiert sind.
  • Der Prozess 400 kann „Aufteilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile“ 404 beinhalten, und durch eine Form wird dies durch einen NNA ausgeführt. Durch Splitten der ursprünglichen Samples in mehrere Sample-Teile kann mindestens ein Sample-Teil für MSB des ursprünglichen Teils bereitgestellt werden, und mindestens ein Teil kann für LSB des ursprünglichen Teils bereitgestellt werden, und jeder kann vor dem erneuten Kombinieren der Sample-Teile unterschiedlich behandelt werden, um ein Ausgangs-Sample zu bilden. Durch eine Form können die Sample-Teile dieselbe Bitgröße wie die gewünschte Bitgröße des Ausgangs-Samples, wie zum Beispiel 16 Bit, haben.
  • Durch eine Form werden die ursprünglichen Sample-Teile gebildet, indem zuerst jedes ursprüngliche Sample in einen Behälter für ein Übergangs-Sample gelegt wird, das größer als das ursprüngliche Sample, wie zum Beispiel 32 Bit, ist, und gleichmäßig in Sample-Teile einer Bitgröße, die dieselbe wie die Bitgröße des Ausgangs-Samples, wie zum Beispiel 16 Bit, ist, geteilt werden kann. Diese Übergangs-Samples können aufeinanderfolgend zum Beispiel in einem Eingangspuffer-Array eines NNA platziert werden, wobei sie einen Eingangsvektor bilden. Der Eingangsvektor kann dann entschachtelt werden, um alle niedrigen Sample-Teile in einem niedrigen Sample-Vektor und alle hohen Sample-Teile in einem hohen Sample-Vektor zu platzieren. Ein NNA kann dann jeden Sample-Vektor unterschiedlich und effizienter verarbeiten und behandeln. Die Details werden unten bereitgestellt.
  • Durch eine Form werden die Sample-Teile auch als eine Absolutwertversion der Sample-Teile bereitgestellt. Dies wird erfüllt, indem ein separater Vorzeichenvektor erzeugt wird, der das Vorzeichen des ursprünglichen Samples beibehält, und der später angewendet werden kann, um das Ausgangs-Sample zu bilden. Die Absolutwertversionen der niedrigen und hohen Sample-Vektoren können wie unten beschrieben gebildet werden.
  • Der Prozess 400 kann „Erzeugen mindestens einer Verstärkung durch mindestens einen neuronalen Netzwerkbeschleuniger“ 406 beinhalten. Durch einen Ansatz stellt ein NNA genauere Resultate bereit, wenn die Eingangswerte der Sample-Teile, die das Ausgangs-Sample bilden, größer sind. Mit mehr Bits in den Biträumen der Sample-Teile (anstelle von Nullen) stellen die Sample-Teile eine größere Werteverteilung bereit. Je größer die Verteilung, desto größer die Genauigkeit eines neuronalen Netzwerks. Um diese Werterhöhung zu erfüllen, können Verstärkungen abhängig von den Werten der Sample-Teile dynamisch erzeugt werden, und um den Wert von MSB in hohen Sample-Teilen zu erhöhen, während der Wert von LSB in niedrigen Sample-Teilen verringert wird. Ein NNA kann verwendet werden, um die Verstärkungen zu erzeugen.
  • Durch eine Form, um den Wert der Sample-Teile weiter zu erhöhen, hängen die Verstärkungen von dem größten Wert der Sample-Teile unter einem Satz der Sample-Teile (oder von einem Satz der ursprünglichen Samples) ab, wie zum Beispiel N gleich ungefähr 400 ursprüngliche Samples, und damit ungefähr 400 hohe Sample-Teile. Ein NNA kann maximales Pooling verwenden, um den größten Wert oder den höchsten Sample-Teil zu bestimmen, um die Verwendung eines DSP durch ein Beispiel zu vermeiden. Die Verstärkungen selbst können von einer Zählung abhängen, wie viele Biträume in einem der Sample-Teile und durch ein Beispiel in dem hohen Sample-Teil mit dem größten Wert verwendet werden (obwohl andere Sample-Teile, wie zum Beispiel der durchschnittliche Sample-Teil, verwendet werden könnten). Durch eine Form hängen sowohl eine hohe als auch eine niedrige Verstärkung, die auf hohe und niedrige Sample-Teile des Sample-Satzes angewendet werden sollen, von derselben Zählung ab, und werden so gesetzt, dass proportional der Wert des hohen Sample-Teils erhöht und der Wert des niedrigen Sample-Teils verringert wird. Durch eine Form sind die Verstärkungen für die hohen und niedrigen Sample-Teile für alle Sample-Teile eines Satzes der Samples dieselben.
  • Der Prozess 400 kann „Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden“ 408 beinhalten. Die Verstärkungen können angewendet werden, indem die Verstärkung mit dem Absolutwert der Sample-Teile multipliziert wird, um skalierte Sample-Teile zu erzeugen. Insbesondere, um den Wert des hohen Sample-Teils und damit des kombinierten Samples zu erhöhen, und um eine bessere Darstellung von LSB von dem niedrigen Sample-Teil bereitzustellen, agiert die Verstärkung als eine Bitverschiebung, um das MSB des Werts auf dem hohen Sample-Teil zu bewegen, um den höchsten verfügbaren Bitraum (oder die größte verfügbare Bitraumzahl) zu besetzen. Dies erhöht nicht nur den Wert des hohen Sample-Teils, sondern es erzeugt auch leere Biträume an dem Ende oder Grund des hohen Sample-Teils, die während der Skalierungsoperation durch Bits von dem niedrigen Sample-Teil gefüllt werden können. Somit wird eine weitere Verschiebungsoperation an dem niedrigen Sample-Teil ausgeführt, sodass die höchsten Bits auf dem niedrigen Sample-Teil mit den leeren Räumen auf dem hohen Sample-Teil ausgerichtet werden, um die leeren Bits zu füllen, wenn die skalierten hohen und niedrigen Sample-Teile summiert werden. Andere Bits des niedrigen Sample-Teils können stattdessen berechnet oder verwendet werden. Diese Operation kann auch durch einen NNA und durch eine Form vollständig durch einen NNA anstatt eines DSP ausgeführt werden.
  • Somit kann der Prozess 400 „Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile einschließlich des mindestens einen skalierten Sample-Teils umfasst“ 410 beinhalten. Hier können die skalierten hohen und niedrigen Sample-Teile durch Summieren kombiniert werden. Dies platziert die höchsten Bits des niedrigen Sample-Teils in den leeren Räumen, die durch den hohen Sample-Teil übrig gelassen wurden, um ein einzelnes skaliertes Absolutwert-Sample zu bilden. Der oben erwähnte Vorzeichenvektor kann dann angewendet werden, um das Vorzeichen des ursprünglichen Samples wieder anzubringen, um hier das endgültige skalierte und vorzeichenbehaftete Ausgangs-Sample zu bilden. Weitere Details werden unten bereitgestellt.
  • Das skalierte Ausgangs-Sample kann dann zur weiteren Audioverarbeitung, wie zum Beispiel zur Merkmalsextraktion für ASR- oder KPD-Operationen, bereitgestellt werden. Durch eine Form können, wenn die Merkmalsextraktion die Ausgangs-Samples empfängt, die resultierenden Ausgangsmerkmalsvektoren, die durch die Merkmalsextraktion erzeugt wurden und der akustischen ASR- oder KPD-Bewertung bereitgestellt werden sollen, zuerst durch Anwenden eines Einstellungsfaktors kA deskaliert werden. Der Einstellungsfaktor entspricht durch die Verstärkungen auf die Sample-Teile angewendeten Skalierungsversätzen, und der Einstellungsfaktor entfernt mindestens einiges der Skalierung der Ausgangs-Samples (oder hier auf den Merkmalsvektoren). Wie oben erwähnt, wird dies ausgeführt, da von skalierten Sample-Vektoren berechnete Merkmale so vorgespannt sind, dass nachfolgende ASR- und KPD-Berechnungen falsche Resultate haben würden. Darüber hinaus kann sich die Skalierung zwischen den Sample-Gruppenfenstern rapide ändern, sodass die Skalierung eine unerwünschte Varianz von Merkmalswerten einbringen kann, die in dem Eingangssignal nicht vorhanden ist. Dies ermöglicht auch die Verwendung der Bitkostenkonvertierung mit bereits implementierten Merkmalsextraktionsmodulen, die nicht für dynamische Skalierungsmerkmale wie beschrieben angepasst sind.
  • Es versteht sich, dass eine oder mehrere der Operationen des Prozesses 400 durch einen neuronalen Netzwerkbeschleuniger ausgeführt werden können, der eine Hardware mit speziellem Zweck zum Ausführen einer oder mehrerer neuronaler Netzwerkschichten anstatt eines DSP oder eines anderen ähnlichen weniger effizienten Prozessors hat. Durch eine Form werden alle Operationen der hierin erwähnten Bitgrößenkonvertierung durch mindestens einen NNA anstatt eines DSP ausgeführt.
  • Bezug nehmend auf die 5A-5C, ist beispielhafter Prozess 500 für Audioeingangsbitgrößenkonvertierung zur Audioverarbeitung gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet. Der Prozess 500 kann eine oder mehrere Operationen 502-562 beinhalten, die allgemein mit geraden Zahlen nummeriert sind. Der Prozess 500 oder Abschnitte davon kann/können durch jegliches hierin diskutiertes Gerät oder System oder dergleichen ausgeführt werden, um eine Eingangs-Sample-Bitgrößenkonvertierung bereitzustellen, und durch eine Form, wie in einem neuronalen Netzwerk ausgeführt, um zum Beispiel Teil einer ASR-Operation eines vollständig neuronalen Netzwerks wie hierin beschrieben zu sein. Der Prozess 500 oder Abschnitte davon können beliebig oft für jegliche Anzahl von Samples wiederholt werden, um eine ASR einschließlich einer Schlüsselphrasenerkennung über ein Gerät oder System bereitzustellen. Darüber hinaus kann der Prozess 500 hierin unter Bezugnahme auf die Systeme 200, 300 oder 2100 der 2, 3, bzw. 21 und wo relevant beschrieben werden.
  • Der Prozess 500 kann „Erhalten von Audiosignaleingangs-Samples in einer ersten Bitgröße“ 502 beinhalten. Für diese Operation wird ein Eingangsaudiosignal von einem Mikrofon in Datenblöcke (Datenfenster) mit einer Länge von N Samples (zum Beispiel N ≈ 400 oder 416 durch ein Beispiel unten) segmentiert. Die Datenblöcke können hierin als Gruppen oder Sätze von Sample-Daten bezeichnet werden. Durch eine Form können die Sample-Sätze jeweils Sample für Sample analysiert werden, oder mit anderen Worten, sodass ein Datenfenster durch die Komponenten des vorgelegten Systems in einer einzelnen Iteration verarbeitet wird. Die Sample-Sätze (oder Datensätze) können aufeinanderfolgend entlang des Eingangsaudiosignals definiert werden, sodass es keine Überlappung in den Sample-Sätzen gibt. Durch eine andere Alternative können sich die Sample-Sätze um ein Intervall überlappen, oder können sich für jedes Sample n überlappen, sodass Samples auf eine First-In First-Out (FIFO) -Weise hinzugefügt werden, um eine bestimmte Sample-Größe (wie zum Beispiel die N = 400) beizubehalten, und sodass ein neuer Sample-Satz zur Analyse mit der Hinzufügung jedes Samples gebildet wird. Andere Variationen werden ebenfalls in Betracht gezogen.
  • Bezug nehmend auf 6A, hat durch eine Form ein digitales Sample eine Bitgröße, die typischerweise für high-definition oder hochauflösendes Audio verwendet wird, wie zum Beispiel 24 Bit. Ein solches ursprüngliches Sample 612 mit 24 Bit ist mit drei Bytes B0 bis B2 gezeigt, wobei B2 die MSB halten kann, und B0 die LSB des ursprünglichen Samples hält. Es versteht sich auch, dass sich diese Operation auf das ursprüngliche Sample in einer Version bezieht oder dieses einschließt, die mindestens ausreichend vorverarbeitet wurde, damit die Bitgrößenkonvertierung wie hierin beschrieben beginnt.
  • Der Prozess 500 kann „Splitten der Samples“ 504 beinhalten, das durch die Sample-Splitting-Einheit 302 (3) ausgeführt werden kann. Diese Operation teilt das ursprüngliche Sample 612 in mehrere Sample-Teile, hier Sample-Teile 616 und 618, die jeweils eine gewünschte oder erwartete Bitgröße, wie zum Beispiel 16 Bit, haben. Jeder Sample-Teil kann dann separat und unterschiedlich behandelt werden, um die Genauigkeit des Samples zu erhöhen.
  • Bezug nehmend auf 6, kann die Sample-Splitting-Einheit 302 (3) dieselbe wie oder ähnlich Sample-Splitting-Einheit 600 mit Umformungsschicht (oder -Einheit) 602 und vorzeichenloser Verschiebungsschicht (oder -Einheit) 604 sein. Die Umformungsschicht 602 unterteilt Übergangs-Samples 614 in die Sample-Teile auf eine Weise, die für eine NNA-Verarbeitung effizient und mit dieser kompatibel ist. Die vorzeichenlose Verschiebungsschicht 604 verschiebt die Bitwerte in dem niedrigen Sample-Teil, um den höchsten Bitraum für Vorzeichenindikator S 620 (6A) zu reservieren. Der Begriff „Schicht“ wird hier verwendet, da diese Einheiten Operationen an einem NNA anstatt eines DSP ausführen können. Die Details sind wie folgt.
  • Der Prozess 500 kann „Platzieren des ursprünglichen Samples in einem Übergangsbehälter mit Übergangsbitgröße“ 506 beinhalten. Somit können die einzelnen ursprünglichen Samples 612 jeweils als 24-Bit-Werte in einem Speicher, außer zum Beispiel in einem 32-Bit-Behälter (auch bezeichnet als ein Übergangsbehälter oder Übergangs-Sample) 614, gespeichert werden. Der 32-Bit-Behälter kann in Vorzeichengrößenformat oder in Zweierkomplementformat sein, wobei das höchste Bit (oder der Bitraum mit der größten Zahl, hier 31) reserviert ist, um das Vorzeichen des Übergangs-Sample-Werts anzugeben, wie zum Beispiel (1) für negativ und (0) für positiv. Insbesondere sind die ursprünglichen 24-Bit-Samples hier auf höchstwertige Bits (MSB) ausgerichtet, die die größten Bitwerte in einem Binärwert-Sample sind. Diese Bits sind in dem Übergangs-Sample 614 der Reihe nach platziert, sodass sich der numerische Wert des Samples nicht ändert (und damit in der Reihenfolge der Signifikanz). Mit anderen Worten, für den 32-Bit-Behälter 614, in dem die Biträume von 0 bis 31 nummeriert sind, werden die MSB platziert, um die Biträume mit den größten oder höchsten Bitraumzahlen in dem Behälter 614 zu besetzen, oder mit anderen Worten, die höheren Bits oder Bytes der 32-Bit-Behälter zu besetzen. In diesem Fall würde das MSB eines 24-Bit-Samples in Bitraum 30 platziert. Bitraum 31 ist für das Vorzeichenbit reserviert, und wird von dem Bitraum mit dem höchstzahligen Bitraum des ursprünglichen Samples 612 kopiert. Die verbleibenden Biträume des 32-Bit-Behälters nach dem LSB des 24-Bit-Samples (hier nach dem Byte B0) sind leer und können mit Nullen gefüllt werden. Die Übergangs-Samples können aufeinanderfolgend als ein Eingangsvektor in einem Speicher oder Eingangspuffer eines neuronalen Netzwerkbeschleunigers (NNA) gespeichert werden, wie unten detailliert beschrieben.
  • Der Prozess 500 kann „Teilen des Übergangsbehälters in Sample-Teile“ 508 beinhalten. Insbesondere kann das Übergangs-Sample 614, jetzt mit 32-Bit-Werten, in mehrere 16-Bit-Sample-Teile geteilt werden, hier gezeigt als die Sample-Teile 616 und 618. Durch ein Beispiel können die zwei Sample-Teile von einem niedrigen (oder niedrigstwertigen Bit (LSB)) Sample-Teil xL 618 und einem hohen (oder MSB) Sample-Teil xH 616 gebildet werden, wobei niedrig und hoch sich auf die Signifikanz der Bits sowie auf die Raumzahlen in dem 32-Bit-Behälter beziehen können. Es versteht sich, dass das Übergangs-Sample 614 und die Sample-Teile 616 und 618 viele unterschiedliche Bitgrößen, wie mit ASR, KPD und/oder anderen verwendeten Audioverarbeitungssystemen kompatibel, sein können. Somit wird in Betracht gezogen, dass das Übergangs-Sample 614 in mehr als zwei Sample-Teilegeteilt werden könnte. Durch eine Form sollte das Übergangs-Sample eine Bitgröße sein, die ohne Rest in Sample-Teile mit einer Bitgröße aufgeteilt werden kann, die für die verbleibenden Operationen der ASR, KPD oder anderer Audioverarbeitungssysteme erwartet wird.
  • Bezug nehmend auf 7, kann der Prozess 500 „Ausführen einer Umformungsschicht, um niedrige und hohe Sample-Vektoren zu bilden“ 510 beinhalten. Durch eine Form können die 32-Bit-Behälter (oder Übergangs-Samples) des Satzes von N Samples ursprünglich aufeinanderfolgend gespeichert werden, um einen Eingangsvektor für die Verarbeitung mit einem neuronalen Netzwerkbeschleuniger (NNA) zu bilden, und durch einen Ansatz, um eine oder mehrere Zeilen eines Arrays an einem Eingangspuffer oder einem anderen Speicher des NNA zu besetzen. Durch ein Beispiel kann jede Zeile 48 Sample-Teile speichern, oder 24 Sample-Teile, die die Größe eines Eingangsvektors haben können, der an einer Instanz durch eine MAC des NNA gehandhabt wird. Die Verarbeitung würde dann Zeile für Zeile fortfahren.
  • Diese Anordnung ist jedoch ineffizient, wenn der NNA Daten auf einer zeilenmaßgeblichen (Zeile für Zeile) Basis verarbeitet. Insbesondere bilden die aufeinanderfolgenden Übergangs-Samples ein verschachteltes oder alternierendes Muster eines alternierenden hohen Sample-Teils und dann niedrigen Sample-Teils, wie durch Eingangsvektor 702 gezeigt. Jedes Sample 0 bis N auf dem Eingangsvektor 702 stellt ein Übergangs-Sample von 32 Bits dar, und jedes Sample hat einen niedrigen Sample-Teil L(n) und einen hohen Sample-Teil H(n). Der Versatz ist ein Zählen der Bytes von dem Start des Eingangsvektors 702, wie in Speicher gespeichert. Wenn der verschachtelte Eingangsvektor 702 von 32-Bit-Übergangs-Samples direkt in NN-Bitgrößenkonvertierungsschichten eingegeben werden sollte, ist die Verarbeitung eines alternierenden Musters niedriger und hoher Sample-Teile ineffizient, da der NNA die niedrigen Sample-Teile unterschiedlich behandeln soll als die hohen Sample-Teile, wie unten erläutert. Dies würde den NNA dazu veranlassen, die Operationen mit jedem Paar von Sample-Teilen zu wechseln. Das Wiederholen derselben Operationen für hohe Sample-Teile und dann separat für niedrige Sample-Teile hat sich als viel effizienter erwiesen. Zum Beispiel kann eine unterschiedliche Aktivierungsfunktion auf jeden Typ von Sample-Teil angewendet werden, und das Hin- und Her-Wechseln der Aktivierungsfunktion auf dem NNA verbraucht unnötigerweise Zeit und Energie. Zum Beispiel werden nur MSB-Sample-Teile verarbeitet, um die Verstärkung zu schätzen, da diese Samples eine vollständig verwendete Bitbreite haben, die mit der Architektur des NNA kompatibel ist, sodass das aufeinanderfolgende Verarbeiten aller MSB- oder hohen Sample-Teile effizient ist. Dies gilt insbesondere, da der NNA-Ausgang 16 Bit sein kann. Der LSB- oder niedrige Sample-Teil wird lediglich gehalten, um schließlich leere Bits in dem hohen Sample-Teil nach dem Skalieren zu füllen, wie hierin beschrieben.
  • Um diese Samples dann effizienter zu verarbeiten, kann die Umformungsschicht 602 vor der weiteren Verarbeitung eine Entschachtelungsoperation ausführen. Diese „Entschachtelungs“-Operation kann durch den NNA ausgeführt werden, und ist gleichwertig mit der Transponierung einer Matrix. Das Resultat ist das Splitten der 32-Bit-Übergangs-Samples in zwei Sätze von 16-Bit-Sample-Teilen, wobei jeder hohe MSB 16-Bit-Sample-Teil H(n) in hohem Sample-Vektor 704 platziert werden soll, und die niedrigen LSB 16-Bit-Sample-Teile L(n) in niedrigem Sample-Vektor 706 platziert werden sollen, wie in 7 gezeigt. Mit anderen Worten, ein Vektor 702 von 32-Bit-Eingangs-Samples, der als ein Vektor von 16-Bit-Paaren betrachtet werden kann, wird durch die Entschachtelungsschicht (oder Transponierungsoperation) in zwei separate Vektoren von 16-Bit-Sample-Teilwerten umgeformt. Jeder Sample-Vektor kann dann in seiner eigenen einen oder mehreren Zeilen auf einem Eingangspuffer-Array des NNA platziert werden, um Zeile für Zeile verarbeitet zu werden.
  • Insbesondere kann eine Transponierungsschicht, die durch den neuronalen Netzwerkbeschleuniger betrieben wird (wie zum Beispiel die oben erwähnte und in 21 gezeigte), eine Identitätsmatrix auf der MAC ausführen, die jeden Sample-Teil von dem 32-Bit-Übergangs-Sample 614 in der MAC selbst betritt, wobei alle anderen Elemente Null sind, um eine Identitätsmatrix zu betreiben. Wann immer die Identitätsoperation verwendet wird, kann das in die MAC eingegebene Gewicht eins (1) sein, sofern nicht ein anderes Gewicht erwähnt wird. Die Vorspannungselemente werden auf Null (0) gesetzt. Auf diese Weise ist der Ausgang von der MAC dasselbe wie der Eingang. Durch ein Beispiel ist die Transponierung eine verfügbare Operation, die durch eine spezialisierte Schicht für diesen Zweck realisiert und auf dem NNA ausführbar ist, und die eine Aktivierungsfunktion verwenden kann, um die Transponierung auszuführen. Durch einen anderen beispielhaften Ansatz kann ein Ausgang der MAC entlang derselben Zeile von ähnlichen niedrigen oder hohen Sample-Teilen platziert werden, wodurch das Sample-Array transponiert wird, sodass alle niedrigen Sample-Teile zusammen in derselben einen oder mehreren Zeilen des Arrays platziert werden, und die hohen Sample-Teile zusammen in derselben einen oder mehreren Zeilen des Arrays platziert werden, und sodass dies andere Zeile(n) als die mit den niedrigen Sample-Teilen ist (sind). Da die Verarbeitung des entschachtelten Eingangsvektors auf eine alternierende Weise als dasselbe angesehen werden kann, als hätte er jedes 32-Bit-Übergangs-Sample auf seiner eigenen Zeile (mit einer Spalte hoher Sample-Teile separat von einer Spalte niedriger Sample-Teile), kann dies effektiv berücksichtigt werden, um den Eingangsvektor 702 in die separaten hohen und niedrigen Vektorzeilen zu transponieren. Mit der Transponierungsschicht kann der Beschleuniger die Sample-Daten Zeile für Zeile in einer zeilenmaßgeblichen Operation bearbeiten, wobei die niedrigen Sample-Teile in den nächsten Schritten der Bitgrößenkonvertierungsoperationen separat von den hohen Sample-Teilen analysiert werden.
  • Alternativ könnte der Beschleuniger ein Datenmischmodul haben, das Sample-Daten von einem Speicher zur Platzierung in den Eingangsregistern der MAC des Beschleunigers erhält. Dies könnte die hohen Sample-Vektordaten abrufen, um sie vor oder nach den niedrigen Sample-Vektordaten verarbeiten zu lassen. Das Entschachteln einer solchen Transponierungsschichtoperation und die Datenmischmoduloption werden mindestens teilweise durch die oben zitierte US-Patentveröffentlichung Nr. 2018/0121796 offenbart
  • Es ist zu beachten, dass, während die Teilung des Übergangs-Samples notwendig sein kann, die Platzierung der Sample-Teile in separaten hohen und niedrigen Sample-Vektoren durch einen DSP oder einen anderen Prozessor anstatt eines NNA ausgeführt werden kann. Es ist zu beachten, dass in diesem Fall der NNA immer noch die unten beschriebenen Verstärkungen erzeugen und/oder anwenden kann.
  • An diesem Punkt sind die hohen Sample-Teile des hohen Sample-Vektors 704 bereit zur weiteren Konvertierungsverarbeitung. Die niedrigen Sample-Teile des niedrigen Sample-Vektors 706 erfordern jedoch mehr Verfeinerung, bevor die Konvertierungsverarbeitung auf dem niedrigen Sample-Vektor fortgesetzt wird. Somit kann der Prozess 500 „Verschieben des niedrigen Sample-Teils“ 512 beinhalten, und dies kann durch die vorzeichenlose Verschiebungsschicht 604 ausgeführt werden.
  • Insbesondere ist Verschiebungsoperation 720 (7A) gezeigt, die eine Kopie der in 6A gezeigten Verschiebungsoperation ist. Der höchste Bitraum sowohl der niedrigen als auch der hohen Sample-Teile sollte für ein Vorzeichenbit reserviert werden, um die Berechnungen mindestens für die Bitgrößenkonvertierungsoperationen mit dem erwarteten Vorzeichengrößenformat auszurichten (andere ASR- oder KPD-Operationen können unterschiedliche Formate, wie zum Beispiel Zweierkomplement, verwenden). Das Vorzeichen S auf dem hohen Sample-Teil 616 ist bereits in erstem (oder höchstem) Bitraum 622 von dem ursprünglichen Sample direkt gebildet. Der niedrige Sample-Teil 618 (oder 724 in 7A) muss noch den Vorzeichenbitraum für das Vorzeichen S an erstem (oder höchstem Bitraum) 726 (620 in 6A) reservieren lassen.
  • Um einen Bitraum 726 für ein Vorzeichen S auf dem niedrigen Sample-Teil 618 zu reservieren, können die Übergangs-Samples 614 nicht einfach in die zwei 16-Bit-Sample-Teile geteilt werden, da der niedrige Sample-Teil nur das letzte Byte des ursprünglichen 24-Bit-Samples in dem aktuellen Beispiel und ohne ein Vorzeichen beinhaltet. Zum Beispiel kann niedriger Sample-Teil 722 ein n-ter Eingang in einem vorzeichenbehafteten 16-Bit-Behälter von dem 32-Bit-Übergangs-Sample sein, und nun in dem niedrigen Sample-Vektor 706 gefunden werden. Ein separierter niedriger Sample-Teil 724 zeigt die verschobenen Bits, um das Vorzeichen-S-Bit 726 bereitzustellen. Insbesondere kann originales Bit mit dem Wert 215 728 von dem 32-Bit-Behälter (und das höchste Bit des letzten Bytes in dem originalen 24-Bit-Sample) den Bitraum 215 (726) von niedrigem Sample-Teil xL 722 nicht besetzen, da der Bitraum 15 (726) für das Vorzeichen-S-Bit reserviert ist, wie in 7A gezeigt (dies ist ähnlich dem Vorzeichen S 620 (6A)).
  • Um die Verschiebung zu erfüllen, wird jeder niedrige 16-Bit-Teil um ein Bit nach rechts (oder nach unten, wie in den 6A und 7A gezeigt) verschoben. Dies wird ausgeführt, indem eine Identitätsmatrix durch die MAC betrieben wird, sodass der Ausgang derselbe originale Wert ist wie der niedrige Sample-Teil, der dann in eine Aktivierungsfunktionseinheit des Beschleunigers eingegeben wird (siehe zum Beispiel 21). Eine fest zugeordnete Aktivierungsfunktion wird dann angewendet, um die Bits wie folgt um einen Bitraum von jedem der niedrigen Sample-Teile nach unten (oder nach rechts) zu verschieben. f ( x ) = { x 2 + 2 14 x < 0 x 2        x 0
    Figure DE102020131264A1_0002
    wobei x der Wert des niedrigen 16-Bit-Sample-Teils auf dem niedrigen Sample-Vektor ist, und f(x) der neue numerische Wert des niedrigen Sample-Teils ist, der den Vorzeichen-S-Wert nicht beinhaltet. Der Doppelpfeil bezieht sich darauf, dass jede Seite der Gleichung die andere impliziert. Die 214 wird addiert, um von jeglichem negativen Wert einschließlich des maximal möglichen negativen Werts einen positiven Wert zu erzeugen. Gleichung (2) resultiert darin, dass der Vorzeichenbitraum 15 (215) ursprünglich auf Null gesetzt wird (positiv oder vorzeichenlos).
  • Auch wird in diesem Fall letztes Bit jedes oder einzelner Übergangs-Sample-Werte (das LSB der 32-Bit-Behälter) 611 (oder 711) fallen gelassen, wenn die Bits verschoben werden, um die niedrigen Sample-Teile xL 724 an dem niedrigen Sample-Vektor 706 zu bilden, um ausreichend Raum für 15 Bit plus den Vorzeichen-S-Bitraum 726 in dem niedrigen 16-Bit-Sample-Teil xL 724 bereitzustellen. Es werden jedoch keine Informationen verloren, da 24-Bit-Samples zu dem MSB ausgerichtet sind, und der LSB-Bitraum in dem 32-Bit-Behälter leer ist, wenn ein 24-Bit-Sample gehalten wird.
  • Nach der Splitting-Operation kann der Prozess 500 „Bestimmen des Absolutwerts von Sample-Teilen“ 514 beinhalten. Die hohen Sample-Teile xH sind noch vorzeichenbehaftet, und somit nicht zur Verstärkungsfaktorschätzung geeignet. Die Verstärkungen sollten auf die vorzeichenlosen Sample-Teile angewendet werden, da das Sample mit dem maximalen Absolutwert in den folgenden Schritten gefunden werden sollte. Alle Werte sollten vorzeichenlos sein, sodass sie in der Max-Pool-Operation verglichen werden können. Diese Operation erhält die Absolutwertversionen der vorzeichenbehafteten niedrigen und hohen Sample-Teile. Ein von den Sample-Teilen separater Vorzeichenvektor wird erzeugt, um das Vorzeichen des ursprünglichen Samples, und damit der Sample-Teile, beizubehalten, und für eine eventuelle erneute Kombination mit skalierten Versionen der niedrigen und hohen Sample-Teile gespeichert.
  • Bezug nehmend auf 8, um diese Operationen auszuführen, hat Absolutwerteinheit 304 (3) oder 800 xH-Vorzeichenschicht (oder -Einheit) 802, xL-Mul (Multiplikations-) Schicht (oder -Einheit) 804, xH-Mul- (Multiplikations-) Schicht (oder -Einheit) 806 mit Einsteller 808, xL-Vorzeichenextraktoreinheit 810 und xL-Vorzeichenzurückweiser 812. Die Operation dieser Schichten wird mit den Prozessoperationen wie folgt erläutert.
  • Der Prozess 500 kann „Bilden des Vorzeichenvektors für den hohen Sample-Teil“ 516 beinhalten. Nach dem Splitten des Übergangs-Samples ist der niedrige Sample-Teil xL eine nicht negative Zahl mit dem Vorzeichen S von Null in dem höchsten Bitraum (215). Der hohe Sample-Teil xH hat jedoch ein Vorzeichenbit, das von dem ursprünglichen Sample übertragen wird und positiv (1) oder negativ (-1) (0 bzw. 1 in Binärform) sein kann. Der Vorzeichenwert wird durch die xH-Vorzeichenschicht 802 extrahiert, und in einem Vorzeichenvektor SH und durch eine Form mit derselben Bitgröße wie die gewünschte Ausgangs-Sample-Bitgröße platziert. Der Vorzeichenvektor hat ein Vorzeichengrößenformat oder ein Zweierkomplementformat, andernfalls jedoch jegliches Format, das die Berechnungen hierin ermöglicht.
  • Dies bezieht zuerst das Verwenden einer Identitätsmatrix oder -Operation wie oben beschrieben ein, um den hohen Sample-Teil xH, der analysiert wird, ohne jegliche anderen Eingangselemente in dem Eingang der MAC des NNA zu platzieren, sodass der Ausgang der MAC mit dem Wert des Eingangs-Sample-Teils übereinstimmt. Dies ermöglicht es dem NNA, dann den hohen Sample-Teil in eine Aktivierungsfunktion einzugeben: f ( x ) = Vorzeichen ( x )
    Figure DE102020131264A1_0003
    die dann das höchste Bit des hohen Sample-Teils liest, um zu identifizieren, ob das Vorzeichen entweder -1 oder 1 (binär 1 bzw. 0) ist. Dieser Wert wird dann in seinem eigenen Vorzeichenvektor, und hier wie erwähnt in einem 16-Bit-Behälter, platziert, wobei das höchste Bit in dem Vektor entweder 0 bzw. 1 in Binärform ist, um das Vorzeichen anzugeben. Alle anderen Biträume in dem Vorzeichenvektor werden auf Null gesetzt, außer dass das niedrigste Bit (20) auf 1 gesetzt wird, sodass der Wert des Vorzeichenvektors SH 1 oder -1 ist. Andere Vorzeichenformate könnten ebenfalls verwendet werden, solange der Binärwert 1 oder -1 ist. Somit kann die Spezifikation der xH-Vorzeichenschicht 802 zusammengefasst werden als: Eingang : x H ( 16  Bit ) Aktivierungsfunktion : f ( x ) = Vorzeichen ( x ) 1 x H 0 1 x H < 0 Ausgang : S H = Vorzeichen von x H ( 16  Bit )
    Figure DE102020131264A1_0004
  • Die Absolutwertoperation 514 kann dann „Anwenden des Vorzeichens auf den niedrigen Sample-Teil“ 518 beinhalten, und diese Operation bezieht ein, dass die xL-Mul (Multiplikations) -Schicht 804 den Vorzeichenvektor mit dem niedrigen Sample-Teil xL multipliziert. Dies wird ausgeführt, um das Vorzeichen zu dem vorzeichenlosen niedrigen Sample-Teil hinzuzufügen, um einen Vorzeichenübertrag zu bilden, der zum Einstellen des hohen Sample-Teils verwendet werden kann. Dies wird unten erklärt. Danach wird das Vorzeichen von dem niedrigen Sample-Teil entfernt, um den Absolutwert des niedrigen Sample-Teils zur weiteren Verarbeitung zu erhalten.
  • Die Operation hier zum Anhängen des Vorzeichens an den niedrigen Sample-Teil kann in diesem Beispiel als einfache Multiplikation zwischen zwei Binärwerten im Zweierkomplementformat ausgeführt werden. Mit dieser Operation sollte der xH-Wert des hohen Sample-Teils korrigiert werden, falls jegliche Bits in dem niedrigen Sample-Teil xL gesetzt sind. Es ist zu beachten, dass das resultierende Vorzeichen (für den Vorzeichenextraktor) in diesem Fall nur erscheinen wird, wenn der niedrige Sample-Teil xL an dem Anfang (höhere Bits) ungleich Null ist. Wenn die höheren Bits des niedrigen Sample-Teils Null sind, ändert der ,Übertrags'-Zweig die Werte des Samples nicht. Somit kann die xL-Mul-Schicht 804 Folgendes haben: Eingang : niedriger Sample Teil x L ( 16  Bit )
    Figure DE102020131264A1_0005
    Ausgang :  vorzeichenbehafteter niedriger Sample Teil x L ' ( 16  Bit in Vorzeichengr o ¨ benformat )
    Figure DE102020131264A1_0006
  • Dies kann ohne eine Aktivierungsfunktion und durch erneutes Verwenden der Identitätsfunktion auf dem NNA erfüllt werden, um den niedrigen Sample-Teil xL als das einzige Eingangselement auf der MAC einzugeben (alle anderen Eingangselemente werden standardmäßig auf Null gesetzt), während das Vorzeichen als ein Gewicht auf der MAC eingegeben wird, sodass die MAC das Vorzeichen mit dem niedrigen Sample-Teil xL, der analysiert wird, multipliziert.
  • Als nächstes kann der Absolutwertprozess 514 „Bestimmen des niedrigen Vorzeichenextraktors“ 520 beinhalten. Dies kann verwendet werden, um den hohen Sample-Teil einzustellen, für den Fall, dass der niedrige Sample-Teil ungleich Null ist. Es wird ein Vorzeichenübertragsvektor für den niedrigen Sample-Teil erzeugt, der zu dem hohen Sample-Teil hinzugefügt wird, um das Vorzeichenbit zu berücksichtigen, das das MSB des niedrigen Sample-Teils mit einem negativem Vorzeichen und im Zweierkomplementformat ist. Die Spezifikation dieser xL-Vorzeichenextraktorschicht 810 kann sein: Eingang : x L ' ( vorzeichenbehaftete  16  Bit ) Aktivierungsfunktion : f ( x ) = 1 ( x ) 1                         0 x H 0                         1 x H < 0 Ausgang : x L ' Vorzeichen u ¨ bertrag  { 1,   0 }   ( in  16 Bit vorzeichenbehaftetem Format )
    Figure DE102020131264A1_0007
    wobei 1 die Indikatorfunktion ist, und x der vorzeichenbehaftete Wert des hohen Sample-Teils ist. Diese Schicht oder Einheit 810 kann auch ausgeführt werden, indem eine Identitätsoperation an der MAC verwendet wird, um den Wert des hohen Sample-Teils beizubehalten, und dann den hohen Sample-Teil in die Aktivierungsfunktion einzugeben.
  • Die Absolutwertoperation 814 kann auch „Anwenden eines Vorzeichens auf den hohen Sample-Teil“ 522 und „Einstellen des hohen Sample-Teils für den niedrigen Sample-Teil ungleich Null durch Anwenden des niedrigen Vorzeichenextraktors auf den vorzeichenbehafteten hohen Sample-Teil“ 524 beinhalten. Dies multipliziert zuerst das Vorzeichen SH jetzt in Vorzeichenvektorform und mit dem vorzeichenbehafteten hohen Sample-Teil xH,, von dem das Vorzeichen stammte. Durch eine Form kann diese Operation eine Multiplikation im Zweierkomplementformat sein, sodass ein Invertierungsalgorithmus angewendet wird, um alle Bits negativ zu machen, der dann zu eins addiert wird. Dies multipliziert den hohen Sample-Teil mit seinem eigenen Vorzeichen, um das Vorzeichen zu entfernen und den Absolutwert zu erzeugen. Während eine abs(x)-Aktivierungsfunktion verwendet werden könnte, ermöglicht das Verwenden des Vorzeichenextraktors ein früheres Entfernen des Vorzeichens für die nachfolgenden Operationen, die vorzeichenlose Werte benötigen.
  • Dann wird das Resultat des multiplizierten Vektors durch einen Einsteller 808 eingestellt, indem der Vorzeichenübertrag von dem xL-Vorzeichenextraktor 810 hinzugefügt wird. Die xH-Mul-Schicht 806 kann diese Operationen ausführen, und hat die folgenden Merkmale: Eing a ¨ nge : x H ( 16  Bit ) ,  Vorzeichen S H ( 16  Bit ) ,  x L ' Vorzeichen u ¨ bertrag ( 16  Bit ) x H abs = ( x H * Vorzeichen S H ) + x L '  Vorzeichen u ¨ bertrag Ausgang : x H  abs ( 16  Bit )
    Figure DE102020131264A1_0008
  • Um diese Operationen durch den NNA zu erfüllen, kann der vorzeichenbehaftete hohe Sample-Teil xH als der Eingangswert in einer Identitätsoperation wie oben beschrieben in die MAC eingegeben werden. Das Vorzeichen SH kann als ein Gewicht in die MAC eingegeben werden, sodass es mit dem vorzeichenbehafteten hohen Sample-Teil multipliziert wird, und das xL' - Übertragsvorzeichen kann als eine neuronale Netzwerkvorspannung in den NNA eingegeben werden, sodass es zu dem Ergebnis der Multiplikation addiert wird. Dies kann für jeden hohen Sample-Teil, der in dem hohen Sample-Vektor analysiert wird, wiederholt werden. Das Ergebnis ist der vorzeichenlose (oder Absolutwert) hohe Sample-Teil xH abs mit 16 Bit.
  • Separat kann der Prozess 500 „Erzeugen des Absolutwerts des niedrigen Sample-Teils“ 526 beinhalten, und dies kann erfüllt werden, indem der niedrige (oder xL) Vorzeichenzurückweiser 812 das Vorzeichen von dem vorzeichenbehafteten niedrigen Sample-Teil xL' entfernt. Die Merkmale der Schicht sind wie folgt: Eingang : x L ' ( 16  Bit ) Aktivierungsfunktion : f ( x ) = S a ¨ gezahn ( x ) = f ( x ) = { x + 2 15 x < 0 x        x 0                    Ausgang : x L abs = x L '  mit gel o ¨ schtem Vorzeichenbit ( 16  Bit )
    Figure DE102020131264A1_0009
    wobei x der numerische Wert des vorzeichenbehafteten niedrigen 16-Bit-Sample-Teils ist. Eine grafische Darstellung der Sägezahnaktivierungsfunktion ist in 9 gezeigt. Die 215 wird zu x addiert, um jeglichen möglichen negativen Wert in einen positiven Wert zu konvertieren. Durch dieses Beispiel wurde die Sägezahn(x) -Gleichung durch die Eigenschaft des Zweierkomplementformats einer vorzeichenbehafteten 16-Bit-Ganzzahl bestimmt. Das Ergebnis ist ein niedriger Sample-Teil xL abs mit einem 16-Bit-Wert und einem Vorzeichenbit.
  • Die Funktionalität der Absolutwerteinheit 814 ist in Tabelle 1 dargestellt Tabelle 1: Berechnungsalgorithmus der Absolutwerteinheit
    Eingang Ausgang
    xH xL xH abs XL abs Vorzeichen
    ≥ 0 - xH xL 1
    < 0 = 0 -xH 0 -1
    < 0 ≠ 0 -xH - 1 -xL -1
    wobei der Ausgang, zusammengesetzt aus höherem und niedrigerem Teil, der Absolutwert des Eingangs, ebenfalls zusammengesetzt aus zwei Teilen, ist, bei gegebenem Eingang im Zweierkomplementformat.
  • In der nächsten Operation kann der Prozess 500 „Berechnen der Verstärkung für die Sample-Teile“ 528 beinhalten, und wie oben erwähnt, um Verstärkungen (oder Gewichte oder Skalierungsfaktoren) zu finden, sodass eine maximale Anzahl von Bits in dem resultierenden skalierten Ausgangs-Sample gesetzt wird, und durch einen Ansatz, sodass das höchste höchstwertige Bit in den hohen Sample-Teilen unter allen Samples in einer Gruppe oder einem Satz N von Samples nicht abgeschnitten wird.
  • Diese Operation 528 kann „Bestimmen des Maximalwerts des hohen Sample-Teils des Sample-Satzes“ 530 beinhalten. Die Verstärkungen, die auf die Absolutwert-Sample-Teile angewendet werden sollen, basieren auf dem Sample-Teil-Maximalwert unter allen Samples N, die als eine Gruppe, wie zum Beispiel N = 416 durch das Beispiel hierin, analysiert werden. Wie erwähnt, können die Sample-Gruppen oder -Sätze aufeinanderfolgend gebildet werden, sodass sich die Gruppen nicht entlang eines Audiosignals überlappen. Alternativ könnten die Gruppen überlappt werden, sodass jedes Mal, wenn ein Sample zu der Gruppe oder zu dem Satz hinzugefügt wird (oder wenn eine bestimmte Anzahl von Samples hinzugefügt wird), dieselbe Anzahl von Samples durch ein Beispiel in FIFO-Reihenfolge entfernt wird, und die neue Gruppe durch die ASR oder KPD erneut analysiert wird.
  • Um den Sample-Teil-Maximalwert in der Gruppe, und insbesondere von den hohen Sample-Teilen (und damit zum Beispiel von dem hohen Sample-Teil-Vektor 704) zu bestimmen, betreibt die Max-Pooling-Einheit 306 eine Pooling-Schicht wie zum Beispiel jene, die in einem neuronalen Faltungsnetzwerk (CNN) verwendet würde. Durch eine beispielhafte Form, wie zum Beispiel bei dem oben genannten GNA, ist der größte verfügbare Pooling-Faktor sechs, sodass vier aufeinanderfolgende Schichten erforderlich sind, um den Maximalwert des hohen Sample-Teils von N = 416 Elementen zu bestimmen. Die Konfiguration solcher Maxing-Schichten ist in Tabelle 2 dargestellt. Tabelle 2: Beispielhafte Struktur einer Max-Pooling-Schicht
    Schicht Eingangs elemente Eingangs schritt FIR in Verwendung Ausgangs -Pool-Größe Ausgänge Tatsächlicher Reduzierungs faktor
    1 416 8 8 6 9x8 (72) 5,8
    2 72 8 8 6 2x8 (16) 4,5
    3 16 4 4 6 1x4 (4) 4
    4 4 1 1 4 1x1 (1) 4
    wobei FIR die verwendeten Finite-Impulse-Response-Filter sind.
  • Als nächstes kann der Prozess 500 „Berechnen der niedrigen Verstärkung“ 532 und „Berechnen der hohen Verstärkung“ 534 beinhalten. Dies kann durch die Verstärkungsschätzeinheit 308 und aus den oben genannten Gründen ausgeführt werden. Die Verstärkungen können wie folgt berechnet werden: F u ¨ r den Bereich : X H 2 ( n 1 )  und X H 2 n 1 : k H = 2 ( 15 n )
    Figure DE102020131264A1_0010
    k L = 2 n
    Figure DE102020131264A1_0011
    wobei xH der Wert des maximalen hohen Sample-Teils ist, der von dem oben beschriebenen maximalen Pooling bestimmt wird, und n der höchste (oder größte) Bitraum als eine Zählung der Biträume in dem Sample-Teil anstatt der Bitraumzahl ist. Zum Beispiel tritt n = 0 auf, wenn keine Biträume in dem Sample-Teil ein Bit haben (alle sind Null), während n = 1 sich auf den Bitraum 20 bezieht, der das einzige (wirklich höchste) Bit in dem Sample-Teil hat. Für einen 16-Bit-Sample-Teil, bei dem der 215-Bitraum noch für ein Vorzeichen S reserviert ist (gehalten als eine vorzeichenlose oder positive Null durch die obige Absolutwertoperation), bezieht sich der größte n-Wert (n = 15) auf den Bitraum 214. Die Zählung für n ist auch auf hohem Sample-Teil 1102 ( 11) gezeigt. Der oben erwähnte Bereich nennt lediglich die kleinsten und größten möglichen Werte für xH bei gegebenem n. Diese Werte sind in Tabelle 3 unten ebenfalls gezeigt. Die hohe Verstärkung kH soll auf die hohen Sample-Teile angewendet werden, und die niedrige Verstärkung kL soll auf die niedrigen Sample-Teile angewendet werden.
  • In den extremsten Fällen, wie zum Beispiel mit dem größtmöglichen Wert für n (wobei n = 15 ist), und unabhängig davon, ob der Rest der Biträume ein Bit hält oder nicht, ist die Verstärkung wie folgt: X H 2 14
    Figure DE102020131264A1_0012
    k H = 1 = 2 0
    Figure DE102020131264A1_0013
    k L = 2 15 0.
    Figure DE102020131264A1_0014
  • Wenn andererseits in xH keine Bits existieren (wobei n = 0 ist), gibt dies an, dass keine Bits für jeglichen hohen Sample-Teil in dem Satz aller Samples N ⇔ xH = 0 existieren. Dann gilt: k H = 2 15 = 32768
    Figure DE102020131264A1_0015
    k L = 2 0 = 1
    Figure DE102020131264A1_0016
  • Es ist zu beachten, dass der kH-Wert zu groß wäre, um in den hohen Sample-Teil zu passen (er würde den Bitraum 215 benötigen, der wie oben erwähnt für ein Vorzeichen reserviert ist). Dies spielt jedoch keine Rolle, da in diesem Fall der hohe Sample-Teil herausfällt. Insbesondere, wenn n = 0 ist, resultiert dies darin, dass der nicht modifizierte niedrige Sample-Teil die Größe des Ausgangs-Samples bildet. In diesem Fall spielt es keine Rolle, dass die hohe Verstärkung kH ein großer Wert ist, da die Verstärkung kH mit der Größe des hohen Sample-Teils, die Null ist, multipliziert wird. Die Verteilung der Variablen für die Verstärkungsberechnung einschließlich dieser extremsten Bedingungen sind in Tabelle 3 unten gezeigt. Tabelle 3: Werte von n, K, kH und kL für gegebenes xH
    n xH ≥ 2(n-1) xH ≤ 2n- 1 kH kL K
    0 0 N/A 0 N/A 0 1 20 7
    1 1 20 1 21-1 16384 214 1/2 2-1 6
    2 2 21 3 22 - 1 8192 213 1/4 2-2 5
    3 4 22 7 23-1 4096 212 1/8 2-3 4
    4 8 23 15 24 - 1 2048 211 1/16 2-4 3
    5 16 24 31 25 - 1 1024 210 1/32 2-5 2
    6 32 25 63 26 - 1 512 29 1/64 2-6 1
    7 64 26 127 27 -1 256 28 1/128 2-7 0
    8 128 27 255 28 - 1 128 27 1/256 2-8 -1
    9 256 28 511 29 - 1 64 26 1/512 2-9 -2
    10 512 29 1023 210 — 1 32 25 1/1024 2-10 -3
    11 1024 210 2047 211 - 1 16 24 1/2048 2-11 -4
    12 2048 211 4095 212 - 1 8 23 1/4096 2-12 -5
    13 4096 212 8191 213 - 1 4 22 1/8192 2-13 -6
    14 8192 213 16383 214 - 1 2 21 1/16384 2-14 -7
    15 16384 214 32767 215 - 1 1 20 0 N/A -8
  • Erneut Bezug nehmend auf 11 als ein anderes Beispiel, soll der hohe Sample-Teil 1102 n = 12 haben, dann werden die Gleichungen von oben angewendet: x H 2 11 ( 2048 )  und  x H ( 2 12 1 ) ( 4095 )
    Figure DE102020131264A1_0017
    k H = 2 3 = 8
    Figure DE102020131264A1_0018
    k L = 2 12 = 1 / 4096
    Figure DE102020131264A1_0019
  • Dieses Beispiel wird unten fortgesetzt, um Skalierungsprozess 1100 und 536 zu erläutern.
  • Um die Verstärkungsberechnung auszuführen, kann der NNA AFFINE-Schichten und mit einer nichtlinearen Aktivierungsfunktion wie oben in den Gleichungen (7) und (8) angegeben verwenden, um kH und kL zu berechnen. Insbesondere kann die wie oben beschriebene Identitätsoperation an der MAC des NNA verwendet werden, und eine Aktivierungsfunktionseinheit (21) kann dann die Gleichungen (7) und (8) oben ausführen.
  • Diese Verstärkungen werden dann auf alle Sample-Teile in dem aktuellen Satz oder in der aktuellen Gruppe mit N Samples angewendet, die den maximalen hohen Sample-Teil bereitgestellt haben, um ,n‘ überhaupt erst zu bilden.
  • Die K-Variable in Tabelle 3 wird verwendet, um einen Einstellungs- oder Verstärkungsentfernungskoeffizienten kA zu bilden, um die Verstärkung oder den Versatz, die durch Anwenden der Verstärkungen kH und kL gebildet wurden, umzukehren oder zu entfernen. Der Einsteller kA kann nach weiterer Audioverarbeitung, wie zum Beispiel Merkmalsextraktion, angewendet werden, wie unten erläutert.
  • Jetzt Bezug nehmend auf 10, kann der Prozess 500 „Skalieren der Sample-Teile“ 536 beinhalten, und dies bezieht sich auf das Anwenden der hohen und niedrigen Verstärkungen auf die jeweiligen hohen und niedrigen Sample-Teile, und durch eine Form der Absolutwertversionen der niedrigen und hohen Sample-Teile, um skalierte hohe und niedrige Sample-Teile zu erzeugen. Die skalierten hohen und niedrigen Sample-Teile können dann kombiniert werden, während das Vorzeichen für das kombinierte Sample wieder eingerichtet wird, um ein skaliertes Ausgangs-Sample zu erzeugen. Dies kann durch Skalierungseinheit 1000 ausgeführt werden, die eine Form der Skalierungseinheit 310 (3) sein kann. Die Skalierungseinheit 1000 kann Voll-/Leerbereichsschwellenwerteinheit 1001, hohe Skalierungsschicht (oder -Einheit) 1002, niedrige Skalierungsschicht (oder -Einheit) 1004, Ausgangs-Summenschicht (oder -Einheit) 1006 und Vorzeichenkorrekturschicht (oder -Einheit) 1008 haben. Die Operation dieser Einheiten wird mit dem Prozess 500 wie folgt beschrieben.
  • Als eine optionale vorläufige Skalierungsoperation kann der Prozess 500 die Anfrage „voller/leerer hoher Sample-Teil?“ 538 beinhalten, und diese Anfrage kann beinhalten, dass die Voll-/Leerbereichsschwellenwerteinheit 1001 die Verstärkungsanwendung weglässt und skalierte Sample-Teile kombiniert, wenn der hohe Sample-Teil bereits den höchsten verfügbaren Bitraum für die Größe des hohen Sample-Teils verwendet (hierin bezeichnet als voll), oder alle Biträume Null sind (bezeichnet als leer). Insbesondere sind an diesem Punkt sowohl der hohe Sample-Teil xH als auch der niedrige Sample-Teil xL nicht negative als vorzeichenbehaftetes U2 codierte Werte (das Vorzeichenbit wird gelöscht, wo der Bitraum 215 auf Null gesetzt ist). Wenn der volle Bereich in jeglichem der hohen Sample-Teile (oder höheren Wörtern) in einer Gruppe von N Samples verwendet wird, sodass bereits ein Bit in dem Bitraum 214 existiert, dann kann dieser hohe Sample-Teil direkt zu der Vorzeichenkorrektureinheit 1008 bewegt werden, um das Vorzeichens zu dem hohen Sample-Teil hinzuzufügen (bei Operation 552) und um die Größe dieses vollen hohen Sample-Teils direkt als das Ausgangs-Sample zu verwenden. Dies wird ohne das Ausführen von Skalierungsberechnungen gemacht, was die Leistung erhöht. Durch eine Form wird in einem solchen Fall aufgrund einer dynamischen Einschränkung des 16-Bit-Verarbeitungssystems nicht geprüft, ob alle Bits des 24-Bit-Eingangs-Sample-Teils gesetzt sind. Mit anderen Worten, es geht zuerst hauptsächlich um den hohen Sample-Teil.
  • Ebenso kann in dem Grenz- oder Extremfall, wenn ein hoher Sample-Teil xH, der analysiert wird, gleich Null ist (und daher leer ist), der niedrige Sample-Teil xL direkt der Vorzeichenkorrektureinheit 1008 bereitgestellt (oder kopiert) werden, um das Vorzeichen hinzuzufügen, und es als das Ausgangs-Sample bereitzustellen, ohne Verstärkungs- oder Skalierungsoperationen auszuführen.
  • Alternativ könnte die Verstärkungs- und Skalierungsanwendung ohnehin auf diese vollen oder leeren Sample-Teile angewendet werden, aber es versteht sich, dass die Resultate dieselben Resultate oder ähnlich den Resultaten sind, die durch Überspringen dieser Operationen erhalten werden können, da die Verstärkungs- und Skalierungsgleichungen diese Resultate bereitstellen.
  • Andernfalls, wenn der hohe Sample-Teil nur teilweise gefüllt ist oder wenn der volle/leere Zustand des hohen Sample-Teils nicht überprüft wird, dann wendet die Skalierungseinheit 310 die Verstärkungen auf die Sample-Teile an, und kombiniert sie gemäß der folgenden Formel: X skaliert = ( k H X H ) + ( k L x L 2 14 )
    Figure DE102020131264A1_0020
    wobei sich das ,·‘ auf eine einfache Skalarmultiplikation zwischen zwei Binärwerten (anstatt auf eine Vektorberechnung, wie zum Beispiel ein Skalarprodukt, usw.) bezieht. Ebenso kann die Addition einfach die Addition von zwei Binärwerten von skalierten hohen und niedrigen Sample-Teilen xH und xL sein.
  • Durch Anwenden von Gleichung (9) kann das Beispiel von 11 mit n = 12 fortfahren mit: x s k a l i e r t = k H x H + k L x L = 2 3 x H + 2 12 x L .
    Figure DE102020131264A1_0021
  • Der Prozess 500 kann „Anwenden der Verstärkung auf die Sample-Teile“ 540 beinhalten, und dies kann „Modifizieren des hohen Sample-Teils durch eine hohe Verstärkung“ 542 beinhalten. Diese Operation kann durch die hohe Skalierungsschicht 1002 durch ein Beispiel ausgeführt werden und resultiert in einer Erhöhung des Werts des hohen Sample-Teils, wie oben beschrieben. In Skalierungsbeispiel oder Operation 1100 wurden hoher Sample-Teil xH 1102 und niedriger Sample-Teil xL 1104 von einem ursprünglichen Sample wie oben beschrieben erhalten. Die Sample-Teile sind Absolutwert-Sample-Teile, und der auf null gesetzte Vorzeichenbitraum 215 ist in den Sample-Teilen nicht gezeigt. Für diese Operation wird eine hohe Verstärkung auf den hohen Sample-Teil xH 1102 angewendet, indem die Verstärkung mit dem Wert des hohen Sample-Teils multipliziert wird. Dies erzeugt skalierten hohen Sample-Teil xH skaliert (abs) 1112, wobei die Verstärkung eine Bitverschiebung verursachte, sodass das MSB des hohen Sample-Teils 1102 nun den größten Bitraum 214 besetzt. Der Rest der Bits von dem hohen Sample-Teil 1102 wird der Reihe nach hinter dem größten Bitraum gefüllt, bis die letzten Biträume des skalierten hohen Sample-Teils leer gelassen werden (bei Nullen). In dem fortgeführten Beispiel, in dem n = 12 ist, hat der skalierte hohe Sample-Teil drei leere Bits 22 bis 20, die anschließend mit Bits von skaliertem niedrigen Sample-Teil 1114 gefüllt werden können, nach der Summierung der skalierten hohen und niedrigen Sample-Teile. Diese Operation lässt verbleibende zurückgewiesene Bits 1108 von dem niedrigen Sample-Teil 1104 weg.
  • Insbesondere kann der Prozess 500 „Modifizieren des niedrigen Sample-Teils durch eine niedrige Verstärkung“ 544 beinhalten, und dies kann durch die niedrige Skalierungsschicht 1004 ausgeführt werden. Hier geht die Multiplikation der niedrigen Verstärkung und des niedrigen Sample-Teils 1104 wie bei dem hohen Sample-Teil vor.
  • Um die Anwendung der Verstärkungen auf dem NNA auszuführen, werden die Eingangsskalierungsfaktoren oder -Verstärkungen (kL und kH) als Gewichtsvektoren in diagonalen affinen Schichten verwendet, wobei eine Diagonalmatrix als die Gewichtsmatrix verwendet wird. In der Diagonalmatrixschicht sind die Gewichtswerte, die keinen Platz auf der Hauptdiagonale der Matrix besetzen, alle Nullen. Somit wird die Operation auf eine Matrix reduziert, die ein Array mit einem Element für jeden Punkt in der Diagonale ist. Für die Verwendung der Diagonalmatrixschicht sollten die Eingangs- und Ausgangs-Arrays dieselbe Größe haben.
  • Weiterhin den niedrigen Sample-Teil betrachtend, resultiert das Anwenden der Verstärkung darin, dass entweder derselbe Wert des niedrigen Sample-Teils beibehalten wird, oder der Wert des niedrigen Sample-Teils verringert wird. Jedoch ist an diesem Punkt der niedrige Sample-Teil weiterhin nicht so ausgerichtet, dass leere Bits auf dem skalierten hohen Sample-Teil gefüllt werden, da der verstärkungsmodifizierte niedrige Sample-Teil weiterhin um 14 Bits versetzt ist, da der niedrige Sample-Teil xL (aufgrund eines fraktionalen Verstärkungswerts) fraktional sein kann, und sich in dem Bereich von (2-14,1) ändert. Somit kann der Prozess 500 als nächstes „Skalieren des niedrigen Sample-Teils“ 546 beinhalten, und der verstärkungsmodifizierte niedrige Sample-Teil wird mit 2-14 multipliziert. Durch einen Ansatz verwendet dies eine Teilungsoperation, die durch die Aktivierungsfunktion der niedrigen Skalierungsschicht 1004 und an dem direkt von der MAC empfangenen verstärkungsmodifizierten niedrigen Sample-Teil ausgeführt werden kann. Das Resultat ist ein skalierter niedriger Sample-Teil 1114, der nun bereit ist, die leeren Biträume in dem skalierten hohen Sample-Teil zu füllen.
  • Der Prozess 500 kann „Kombinieren der Sample-Teile“ 548 beinhalten, und dies beinhaltet „Summieren der hohen und niedrigen Sample-Teile“ 550, was durch die Ausgangs-Summenschicht 1006 ausgeführt werden kann. Somit werden nach dem separaten Skalieren sowohl der höhere als auch der niedrigere Teil durch die Ausgangs-Summenschicht 1006 zu einzelnem skaliertem Ausgangs-Sample xskaliert(abs) 1106 summiert. Diese Operation platziert die höchsten Bits des niedrigen Sample-Teils und damit die nun ausgerichteten Bits des skalierten niedrigen Sample-Teils 1114 in den niedrigeren Räumen des skalierten Ausgangs-Samples 1106. Dies ist eine direkte Addition von zwei Binärwerten, und kann auf dem NNA ausgeführt werden, indem beide Werte in die MAC eingegeben werden, wobei alle anderen Null sind. Das resultierende skalierte Ausgangs-Sample ist weiterhin ein absoluter Wert, das sein höchstes Bit bei Null reserviert hat, um mit einem Vorzeichen gefüllt zu werden.
  • Der Prozess 500 kann „Korrigieren der summierten Teile für das Vorzeichen, um ein vorzeichenbehaftetes skaliertes Ausgangs-Sample zu erzeugen“ 552 beinhalten, was durch die Vorzeichenkorrekturschicht 1008 ausgeführt werden kann. Hier ist der Vorzeichenvektor, der vorher durch die Absolutwerteinheit 800 extrahiert wurde, entweder 1 oder -1, und wird auf endgültige Samples in der Vorzeichenkorrekturschicht 1008 angewendet. Die Anwendung des Vorzeichens wird durch eine affine Diagonalschicht ausgeführt, wobei ein Vektor von Absolutwerten auf dem Eingang platziert wird, und das Vorzeichen als Gewichte auf der Diagonalschicht agiert. Dies bezieht eine Element-für-Element-Multiplikation ein. Der Effekt ist ein vorzeichenbehaftetes Ausgangs-Sample 1106, bei dem MSB-Vorzeichenbit 1110 zurück auf das Sample platziert wird, um ein skaliertes und vorzeichenbehaftetes Ausgangs-Sample in Zweierkomplement, Vorzeichengröße oder einem anderen Vorzeichenformat zu bilden.
  • Es ist zu beachten, dass als eine Alternative die Verstärkung nur auf einen der Sample-Teile, wie zum Beispiel auf die hohen Sample-Teile, erzeugt und angewendet werden kann. Dies kann eine Verbesserung für höhere Signale sein, und die Invertierung kann wahr sein. Es könnten auch mehr als zwei Sample-Teile von einem ursprünglichen Sample erzeugt und dann für zwei Sample-Teile wie hierin beschrieben erneut kombiniert werden.
  • Es versteht sich, dass das System modifiziert werden könnte, um eine unterschiedliche bestimmte Anzahl von verwendeten Bits zu handhaben. Das System muss nicht immer alle Bits bis zu dem höchsten Bit verwenden. Zum Beispiel sättigen einige Systeme Signale, die zu hoch sind, und das vorliegende System kann verwendet werden, um den Signalpegel zu beschränken. Dies kann erreicht werden, indem andere Aktivierungsfunktionen verwendet werden, die zum Beispiel die Einstellungskoeffizienten kx und kL berechnen.
  • Zur Audioverarbeitung, die nicht auf ASR oder KPD bezogen ist, können die skalierten und vorzeichenbehafteten Ausgangs-Samples durch eine Anwendung zur weiteren Audioverarbeitung empfangen werden. Für ASR oder KPD kann die Verarbeitung mit der Merkmalsextraktion fortfahren.
  • Der Prozess 500 kann „Erzeugen eines Merkmalsvektors von einer Merkmalsextraktion“ 554 beinhalten. Die Merkmale werden zum Beispiel durch die Merkmalsextraktoreinheit 312 extrahiert. Dies kann das Berechnen des Energiespektrums und das Anwenden einer logarithmischen Funktion auf die resultierenden Summen wie oben beschrieben beinhalten. Daher ist diese Operation proportional zu ~log(x2). Dies kann verwendet werden, um eine Einstellung ka wie folgt zu bilden.
  • Der Prozess 500 kann „Entfernen der Verstärkung von den Merkmalsvektoren“ 556 beinhalten, und dies kann „Berechnen der Verstärkungseinstellung ka“ 558 beinhalten. Dies kann auch das Entfernen mindestens eines Teils der Verstärkung anstatt der gesamten Verstärkung beinhalten, wenn relevant. Die skalierten Ausgangs-Samples sollten während der Merkmalsextraktion verwendet werden, dann aber für folgende Audioprozesse in ASR und KPD entfernt werden, da, wie oben erwähnt, eine zusätzliche Änderung des Signalpegels Algorithmen stören würde, die dies nicht erwarten. Zum Beispiel würde ein aus großen Entfernungen aufgezeichnetes Signal, daher Signale mit niedrigem Pegel, erweitert werden, was in dem Verlust von Informationen über die ursprüngliche Entfernung resultiert. Die Verwendung von Samples auf diese Weise hat den Vorteil, dass sie mit einem wünschenswerten dynamischen Bereich von Eingängen kompatibel sind, die durch unterschiedliche Merkmalsextraktionsalgorithmen gehandhabt werden. Dies kann durch die Verstärkungseinstellungseinheit 316 ausgeführt werden. Insbesondere können die bei der Skalierungsoperation eingebrachten Verstärkungen effektiv entfernt werden, indem der skalierte Merkmalsvektor, der von der Merkmalsextraktoreinheit ausgegeben wird, mit einem Einstellungsfaktor kA summiert wird. Dieser Wert kann durch die Verstärkungsschätzeinheit selbst oder durch eine separate Verstärkungseinstellungseinheit erzeugt werden. Der Einstellungsfaktor kA sollte die Verstärkungen kH und kL kompensieren oder umkehren, und die Werterhöhung (oder den Versatz) des skalierten Merkmalsvektors, die von den Verstärkungen herrührt, entfernen. Somit sollte, um die eingebrachte Verstärkung zu korrigieren, der Faktor kA gleich sein zu: k A ( K ) = 2 Q log ( 2 K ) = 2 Q K l o g 2
    Figure DE102020131264A1_0022
    wobei K ein Versatz ist, der durch die Multiplikation von kH und kL mit ihren jeweiligen Sample-Teilen und mit K-Werten erzeugt wird, wie in Tabelle 3 oben als ein Beispiel angegeben, und Q ein q-Faktor der Festpunktdarstellung von Werten in dem durch die Merkmalsextraktionseinheit erzeugten Merkmalsvektor ist. Andernfalls kann kA durch Einstellen der K-Konstante erzeugt werden, um Samples in einem optimalen Niveau für folgende ASR- oder KPD-Algorithmen zu erhalten.
  • Der Prozess 500 kann „Verwenden von ka, um den Merkmalsvektor einzustellen“ 560 beinhalten, und wie erwähnt kann dies eine Summierung zwischen der Einstellung kA und dem Merkmalsvektor sein. Durch eine Form ist dies eine einfache Addition zwischen zwei Binärwerten. Auf dem NNA kann dies ausgeführt werden, indem eine Identitätsoperation verwendet wird, und der Einstellungswert kA als eine Vorspannung in dem NNA addiert wird.
  • Der Prozess 500 kann „Bereitstellen von de-skalierten Merkmalsvektoren für Audioverarbeitungseinheiten“ 562 beinhalten, und wobei die de-skalierten Merkmalsvektoren anderen ASR- oder KPD-Audioverarbeitungseinheiten oder anderen Audioverarbeitungseinheiten oder Anwendungen, die andere Audioverarbeitungsoperationen ausführen, bereitgestellt werden können.
  • Mit der Implementierung der oben beschriebenen neuronalen Netzwerkoperationen kann ein rein neuronaler Netzwerk-Schlüsselphrasenprozess implementiert werden, der die Verwendung eines DSP oder anderer Mehrzweckprozessoren eliminiert oder signifikant reduziert. Dies kann Operationen zur Bitgrößenkonvertierung, Merkmalsextraktion, akustischen Bewertung und Schlüsselphrasendecodierung beinhalten. Eine ähnliche NNA-Operation kann mit ASR mit großem Vokabular sowie mit anderen Audioverarbeitungsanwendungen ausgeführt werden.
  • Bezugnehmend auf 21, kann beispielhaftes Audioverarbeitungssystem 2100 den Prozess 400 oder 500 ausführen. Das System 2100 kann eine Schlüsselphrasenerkennung oder ASR ausführen, wie gemäß mindestens einer der Implementierungen der vorliegenden Offenbarung angeordnet. Das System 2100 kann einen oder mehrere neuronale Netzwerkbeschleuniger 2104 sowie andere(n) Prozessor(en) 2102, wie zum Beispiel Zentralprozessor 2128, und optional digitalen Signalprozessor 2130, Speicher 2108 und Mikrofon 2101 beinhalten. Das System 2100 kann auch Logikeinheit(en) oder Modul(e) 2110 beinhalten, einschließlich Front-End-/Vorverarbeitungseinheit 2132, Eingangsaudiobitgrößenkonvertierungseinheit 2106, ähnlich der Bitgrößenkonvertierungseinheit 300, Merkmalsextraktionseinheit 2134, akustische Bewertungseinheit 2136, KPD-Einheit 2138, die einen Schlüsselphrasenerkennungsdecoder beinhalten kann, und große Vokabulareinheit 2140, die ebenfalls einen Decoder für ASR beinhalten kann, und jegliche von diesen können durch den NNA 2104 wie hierin beschrieben implementiert werden. In einigen Implementierungen kann die Eingangsaudiobitgrößenkonvertierungseinheit 2106 die Sample-Splitting-Einheit 302, die Absolutwerteinheit 304, die Max-Pool-Einheit 306, die Verstärkungsschätzeinheit 308, die Skalierungseinheit 310 und die Verstärkungseinstellungseinheit 314, beinhalten, von denen jegliche oder alle durch den NNA 2104 wie hierin beschrieben betrieben werden können.
  • Der Speicher 2108 kann KPD/ASR-Modelle 2109 sowie externen neuronalen Netzwerk (NN) -Puffer 2111 speichern, der jegliche der hierin erwähnten Daten und ansonsten durch den NNA 2104 und vor oder nach Speicherung der Daten in Puffern auf dem NNA 2104 selbst verwendete Daten speichern kann.
  • Der NNA 2104, der mindestens ein NNA sein kann, kann eine Hardware mit speziell zugeordnetem spezifischen Zweck haben, um die hierin beschriebenen neuronalen Netzwerkoperationen zu implementieren, und kann Eingangspuffer 2112 zum Halten von Audiodaten (wie zum Beispiel Sample-Teilen in der Form von Vektoren oder Matrizen, die ein Eingangspuffer-Array füllen) für eine spezifische Schicht, die verarbeitet wird, Gewichtspuffer 2114 zum Halten von Werten, die als Gewichte behandelt werden, die wie oben beschrieben auf die Eingabedaten angewendet werden, und häufig in der Form eines Gewichtsvektors oder einer Matrix, beinhalten. Es versteht sich, dass diese lokalen Puffer physisch auf einer Platine oder einem Chip mit den anderen Verarbeitungskomponenten des NNA angeordnet sein können, oder physisch außerhalb des NNA, wie zum Beispiel an dem externen NN-Puffer 2111, sein könnten. Der NNA 2104 kann auch Datenpfadlogik 2116 haben, die Multiplikationsakkumulationsschaltung (Multiply-Accumulate-Circuit - MAC) 2118 hat, die hochparallele Operationen (wie zum Beispiel Multiplikation und Summen wie oben erwähnt) ausführt, um die Eingangsdaten zu verbreiten, Summeneinheit 2120, die zwischenzeitlich summierte Werte oder Werte, die zum Beispiel als Vorspannungswerte in den NNA eingegeben werden, summiert, Konstanten-/Vorspannungspuffer 2122, der Werte hält, die als Vorspannungswerte behandelt werden sollen, um der Summeneinheit 2120 bereitgestellt zu werden, Aktivierungsfunktionseinheit 2124, die jegliche anderen Operationen einer Aktivierungsfunktionseinheit ausführt, die nicht bereits an der Datenpfadlogik 2116 und wie oben beschrieben ausgeführt wurden, und Ausgangspuffer 2126. Es versteht sich, dass der NNA 2104 viele andere Komponenten (Einheiten, Module, Logik, Puffer, usw.) haben kann, um die neuronalen Netzwerkoperationen auszuführen, ob Hardware, Software oder eine Kombination von beiden. Solche anderen NNA-Komponenten, die in dem beispielhaften NNA 2104 enthalten sein können, und eine detailliertere Beschreibung des NNA werden durch die oben zitierte US-Patentveröffentlichung Nr.: 2018/0121796 offenbart.
  • Durch eine Form kann eine unterschiedliche Aktivierungsfunktionseinheit 2124 für eine einzelne oder jede oben beschriebene Aktivierungsgleichung, die dieselbe MAC auf einem NNA 2104 teilt, bereitgestellt werden. Durch andere Formen kann ein unterschiedlicher NNA 2104 bereitgestellt werden, um unterschiedliche Aktivierungsfunktionen oder unterschiedliche Typen von Aktivierungsfunktionen zu handhaben. Durch noch eine andere Form wird ein einzelner NNA 2110 verwendet, und hat eine anpassbare Aktivierungsfunktionseinheit 2120, wobei die Gleichung, die betrieben werden soll, in die Aktivierungsfunktion geladen werden kann. Alternativ können mehrere Operationen 2116 eine gemeinsame Aktivierungsfunktion 2124 teilen.
  • Andernfalls können der Zentralprozessor 2128 und der digitale Signalprozessor 2130, wenn bereitgestellt, jegliche Anzahl und jeglichen Typ von Verarbeitungseinheiten beinhalten, die die wie hierin diskutierten Operationen bereitstellen können, falls überhaupt bereitgestellt. Solche Operationen können über Software oder Hardware oder eine Kombination davon implementiert werden. Zum Beispiel kann der digitale Signalprozessor 2130 eine Schaltung beinhalten, die dem Manipulieren von Daten, die von dem Speicher 2108 oder einem fest zugeordneten Speicher erhalten wurden, fest zugeordnet ist. Darüber hinaus kann der Zentralprozessor 2128 jegliche Anzahl und jeglichen Typ von Verarbeitungseinheiten oder Modulen beinhalten, die Steuerungs- und andere Funktionen auf hoher Ebene für das System 2100 sowie die Operationen wie hierin diskutiert bereitstellen. Wie durch ein Beispiel erwähnt, kann ein DSP nur eine Hardware-Initiierung und Unterbrechungshandhabung für eine Anfang-zu-Ende-Verarbeitung eines neuronalen Netzwerks von KPD oder ASR einschließlich der hierin offenbarten Bitgrößenkonvertierung ausführen.
  • Der Speicher 2108 kann jeglicher Typ von Speicher sein, wie zum Beispiel flüchtiger Speicher (zum Beispiel Static-Random-Access-Memory (SRAM), Dynamic-Random-Access-Memory (DRAM), usw.) oder nichtflüchtiger Speicher (zum Beispiel Flash-Speicher, usw.), und so weiter. In einem nicht einschränkenden Beispiel kann der Speicher 2108 durch Cache-Speicher implementiert werden. In einer Implementierung können mindestens der NNA 2104 und der Speicher 2108 als ein System-on-a-Chip implementiert werden.
  • Es versteht sich, dass, während eine affine Schicht als die Schicht beschrieben wird, die verwendet wird, um die hierin beschriebenen Operationen an einem NNA auszuführen, diese Schichten wegen ihrer Einfachheit und Genauigkeit ausgewählt werden. Somit könnten andere Typen von neuronalen Netzwerkschichten verwendet werden, solange die Operationen durch Verwenden eines neuronalen Netzwerks ausgeführt werden können, und durch eine Implementierung auf einem neuronalen Netzwerkbeschleuniger oder einer anderen Hardwareschaltung oder -Logik ausgeführt werden können, die für den spezifischen Zweck des Betreibens eines oder mehrerer neuronaler Netzwerke angeordnet sind.
  • Es versteht sich auch, dass andere Endanwendungen von der oben beschriebenen durch das neuronale Netzwerk betriebenen Bitgrößenkonvertierung profitieren können, und nicht notwendigerweise auf ASR und KPD beschränkt sind.
  • Experimentelle Resultate
  • Ein vorgeschlagenes System der Merkmalsextraktion durch Verwenden des offenbarten Bitgrößenkonvertierungsprozesses wurde mit einem Referenzsystem verglichen, und die Resultate werden wie folgt bereitgestellt. Beide Systeme konvertieren 24-Bit-Audioeingangs-Samples in 16-Bit-Samples und speisen die 16-Bit-Samples in ein Front-End-Modul ein, das die Merkmalsextraktion durch Verwenden von 40 FIR-Filtern ausführt.
  • Bezug nehmend auf 12, hat Steuerungs- oder Referenz-Sample-Bitgrößenkonvertierungssystem 1200, das für den Vergleich verwendet wird, Konvertierungseinheit 1202, die einen 24-Bit-Sample-Eingang empfängt und eine feste Abschneidung der 24-Bit-Samples auf 16-Bit-Eingang durch Anwenden einer 2-8 Bitverschiebung, die eine Verschiebung nach rechts um acht Bits ausführt, um die acht niedrigeren Bits zu verwerfen. Die resultierenden 16-Bit-Samples, denen nun das wenigerwertige Byte von dem ursprünglichen Sample fehlt, werden Merkmalsextraktor 1204 bereitgestellt. Somit führt das Referenzsystem eine Tiefenkonvertierung von 24 Bit nach 16 Bit auf eine feste Weise aus.
  • Bezug nehmend auf 13, hat beispielhaftes Bitgrößenkonvertierungssystem 1300 (hier betitelt als ein Autoverstärkungssystem) zum Vergleich und gemäß mindestens einer der hierin offenbarten Implementierungen Skalierungs- oder Bitgrößenkonvertierungseinheit 1302, die die Operationen der oben beschriebenen Konvertierungseinheit 300 ausführt, Merkmalsextraktor 1304, und Einstelleinheit 1306, die auch wie oben beschrieben eine Verstärkungseinstellung anwendet, um mindestens einen Teil der durch die Konvertierungseinheit 1302 eingebrachten Verstärkung zu löschen. Das Bitgrößenkonvertierungssystem 1300 wurde auf einem rein neuronalen GNA-Beschleuniger wie oben beschrieben implementiert.
  • Das in dem Experiment verwendete Eingangssignal war eine Schlüsselphrase mit dem Befehl: „Alexa, wie spät ist es in Las Vegas, Nevada?“, geäußert durch eine Frau. Es wurden sowohl Nah- als auch Fernfeldszenarien einbezogen, um die Lösung durch Verwenden eines weiten dynamischen Bereichs des Signalpegels zu beurteilen. Die Eingangswellenform oder Signaldynamiken der für das Testen verwendeten Eingangsphrase ist in grafischer Darstellung 1400 (14A) gezeigt. Das Signal für das Fernfeldszenario wurde simuliert.
  • Bezug nehmend auf 14B, zeigt grafische Darstellung 1402 die Anzahl der Bits, die für jeden 24-Bit-Eingangs-Frame des getesteten Audioeingangs besetzt sind. Für jeden Frame wurde ein Sample mit maximaler Größe genommen. Die Pegel eines simulierten Signals werden für verschiedene Entfernungen bereitgestellt, ausgedrückt als durch Samples in der Zeit besetzte Bits, und für eine Sequenz von 160 Frames (oder 10ms für jedes Sample). In diesem Fall beinhaltet dies 0,9m, 2,7m geteilt durch drei und 10,8m geteilt durch zwölf, wobei sich die Teilung (Unterdrückung) auf die Simulation einer größeren Entfernung bezieht.
  • Der Front-End- oder Merkmalsextraktor 1304 transformiert Eingangsaudio-Samples in eine Frequenzdarstellung. Er berechnet 40-dimensionale Merkmalsvektoren, wobei die Merkmale dem Leistungspegel in aufeinanderfolgenden Bändern und einem den menschlichen hörbaren Bereich abdeckenden Spektrum entsprechen. Hier wurden zwei Merkmalsausgänge ausgewählt, einer von einem Teil mit niedrigem Spektrum (FIR #5) und einer von einer Mitte des Spektrums (FIR #20). Niedrigere Energie in einem höheren Band wird erwartet, da das Leistungsspektrum von Sprache mit höheren Frequenzen abnimmt.
  • Bezug nehmend auf die 15A-15B sind grafische Darstellungen 1500 und 1502 in dem Frequenzbereich, um einen Vergleich der Merkmalswerte zwischen denen des offenbarten Verfahrens (durchgezogene Linie) und dem Referenzsystem mit fester Verstärkung (gestrichelte Linien) an einem Teil mit niedrigem Spektrum (Merkmal #5 (FIR 5)) und für verschiedene Entfernungen 0,9m und 10,8m zu zeigen. Die Merkmalswerte des vorliegenden Systems sind viel höher als die des konventionellen festen Systems. Die Ausgangssignale des Referenzsystems mit fester Verstärkung (oder des konventionellen festen Systems ohne automatische Einstellung) haben hier signifikant niedrigere Pegel. Es gibt Perioden zwischen Wörtern, in denen das Signal konstant auf einem niedrigen Wert bleibt (zum Beispiel zwischen dem 100. und 200. Sample). Ein solcher Zustand ist nicht erwünscht, da er keine Informationen über eine Audioumgebung trägt. Im Vergleich dazu werden, wenn die offenbarte Sample-Bitgrößenkonvertierung mit automatischer Verstärkungserzeugung verwendet wird, signifikante Informationen von Rauschen mit niedrigem Pegel in derselben Zeitspanne extrahiert.
  • Bezug nehmend auf die 16A-16B sind grafische Darstellungen 1600 und 1602 in dem Frequenzbereich, um einen Vergleich der Merkmalswerte zwischen denen des offenbarten Verfahrens (durchgezogene Linie) und dem Referenzsystem mit fester Verstärkung (gestrichelte Linie) an einem Teil mit mittlerem Spektrum (Merkmal #20 (FIR 20)) und für verschiedene Entfernungen zu zeigen. Der Unterschied in den Merkmalswerten ist hier für Ausgang #20 noch offensichtlicher als für #5. Hier fehlt die Information, die durch das Signal von größerer Entfernung für das Referenzsystem mit fester Verstärkung getragen wird, in dem „festen“ Fall vollständig (die gestrichelte Linie ist flach).
  • Die Resultate des Experiments zeigen, dass die wie hierin offenbarte Bitgrößenkonvertierung mit automatischer Verstärkungserzeugung die gesamte Lösung gegenüber niedrigen Signalpegeln robust macht. Infolgedessen erhöht sich die Genauigkeit der Lösung in Fernfeldszenarien signifikant.
  • Es wurde auch beobachtet, dass der absolute Pegel eines Audiosignals mit der Entfernung von Mikrofon zu Audioquelle variiert. Um diesen Effekt abzumildern, wenden modernste ASR-Systeme vor der weiteren Verarbeitung Hochpassfilter auf extrahierte Merkmale an. Somit werden Merkmale, die sowohl durch das vorliegende Bitgrößenkonvertierungssystem als auch durch das konventionelle feste System nach dem Hochpassfiltern erzeugt werden, verglichen, um zu bestimmen, ob die Entfernung die Resultate beeinflusst.
  • Bezugnehmend auf die 17-20, zeigen grafische Darstellungen 1700, 1800, 1900 und 2000 jeweils Merkmale in zwei Entfernungen von 0,9m und 10,8m nach dem Hochpassfiltern. Die grafischen Darstellungen 1700 und 1800 zeigen die Merkmale des vorliegenden Bitgrößenkonvertierungssystems, das hierin und bei Merkmal #5 bzw. #20 offenbart wird. Die grafischen Darstellungen 1900 und 2000 zeigen die Merkmale des konventionellen festen Systems und bei Merkmal #5 bzw. #20.
  • Die grafischen Darstellungen 1700 und 1800 zeigen, dass die zwei Entfernungen sehr nahe beieinander liegende Resultate haben. Somit zeigen die Diagramme, dass die Entfernung mit dem offenbarten Bitgrößenkonvertierungssystem keinen signifikanten Einfluss auf berechnete Merkmale hat. Im Gegensatz dazu hat das konventionelle „feste“ System in den grafischen Darstellungen 1900 und 2000 einen verfälschten Ausgang und hängt von dem Eingangssignalpegel und damit von der Entfernung ab.
  • Während die Implementierung der hierin diskutierten Beispielprozesse das Durchführen aller in der veranschaulichten Reihenfolge gezeigten Operationen beinhalten kann, ist die vorliegende Offenbarung in dieser Hinsicht nicht beschränkt, und in verschiedenen Beispielen kann die Implementierung der beschriebenen Beispielprozesse hierin nur einen Untersatz der gezeigten Operationen, in einer unterschiedlichen Reihenfolge als veranschaulicht ausgeführte Operationen, oder zusätzliche Operationen beinhalten.
  • Zusätzlich können jegliche eine oder mehrere der hierin diskutierten Operationen als Reaktion auf durch ein oder mehrere Computerprogrammprodukte bereitgestellte Anweisungen durchgeführt werden. Solche Programmprodukte können signaltragende Medien beinhalten, die Anweisungen bereitstellen, die, wenn zum Beispiel durch einen Prozessor ausgeführt, die hierin beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in jeglicher Form eines oder mehrerer maschinenlesbarer Medien bereitgestellt werden. Somit kann zum Beispiel ein Prozessor, der eine oder mehrere Grafikverarbeitungseinheiten oder Prozessorkerne beinhaltet, einen oder mehrere der Blöcke der hierin beschriebenen Beispielprozesse als Reaktion auf Programmcode und/oder Anweisungen oder Anweisungssätze ausführen, die an den Prozessor durch ein oder mehrere maschinenlesbare Medien verteilt werden. Im Allgemeinen kann ein maschinenlesbares Medium Software in der Form von Programmcode und/oder Anweisungen oder Anweisungssätzen verteilen, die jegliches der hierin beschriebenen Geräte und/oder Systeme dazu veranlassen können, jegliche Systeme, Operationen, Module oder Komponenten wie hierin diskutiert zu implementieren. Das maschinen- oder computerlesbare Medium kann ein nicht flüchtiger Artikel oder ein nicht flüchtiges Medium sein, wie zum Beispiel ein nicht flüchtiges computerlesbares Medium, und kann mit jeglichem der oben genannten Beispiele oder anderen Beispielen verwendet werden, außer dass es kein flüchtiges Signal an sich beinhaltet. Es beinhaltet diejenigen Elemente neben einem Signal an sich, die Daten vorübergehend auf eine „flüchtige“ Weise halten können, wie zum Beispiel RAM und so weiter.
  • Wie in jeglicher hierin beschriebenen Implementierung verwendet, bezieht sich der Begriff „Modul“ oder „Einheit“ auf jegliche Kombination von Softwarelogik, Firmwarelogik, und/oder Hardwarelogik, die dazu ausgelegt ist, die hierin beschriebene Funktionalität bereitzustellen. Die Software kann als ein Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen verkörpert sein, und „Hardware“, wie in jeglicher hierin beschriebenen Implementierung verwendet, kann zum Beispiel einzeln oder in jeglicher Kombination festverdrahtete Schaltung, programmierbare Schaltung, Statusautomatikschaltung und/oder Firmware beinhalten, die durch programmierbare Schaltung ausgeführte Anweisungen speichert. Die Module können zusammen oder einzeln als Schaltung verkörpert sein, die einen Teil eines größeren Systems bildet, zum Beispiel eine integrierte Schaltung (Integrated Circuit - IC), ein System-on-Chip (SoC), und so weiter. Zum Beispiel kann ein Modul in einer Logikschaltung für die Implementierung der hierin diskutierten Codierungssysteme über Software, Firmware oder Hardware verkörpert sein.
  • Wie in jeglicher hierin beschriebenen Implementierung verwendet, bezieht sich der Begriff „Logikeinheit“ auf jegliche Kombination von Firmwarelogik und/oder Hardwarelogik, die dazu ausgelegt ist, die hierin beschriebene Funktionalität bereitzustellen. Die Logikeinheiten können zusammen oder einzeln als Schaltung verkörpert sein, die einen Teil eines größeren Systems bildet, zum Beispiel eine integrierte Schaltung (IC), ein System-on-Chip (SoC), und so weiter. Zum Beispiel kann eine Logikeinheit in einer Logikschaltung für die Implementierung der hierin diskutierten Codierungssysteme über Software oder Hardware verkörpert sein. Ein gewöhnlicher Fachmann wird erkennen, dass durch Hardware und/oder Firmware ausgeführte Operationen alternativ über Software implementiert werden können, die als ein Softwarepaket, Code und/oder Anweisungssatz oder Anweisungen ausgeführt sein kann, und wird auch erkennen, dass die Logikeinheit auch einen Abschnitt der Software verwenden kann, um ihre Funktionalität zu implementieren.
  • Wie in jeglicher hierin beschriebenen Implementierung verwendet, kann sich der Begriff „Komponente“ auf ein Modul oder eine Logikeinheit beziehen, wie diese Begriffe oben beschrieben sind. Dementsprechend kann sich der Begriff „Komponente“ auf jegliche Kombination von Softwarelogik, Firmwarelogik, und/oder Hardwarelogik beziehen, die dazu ausgelegt ist, die hierin beschriebene Funktionalität bereitzustellen. Zum Beispiel wird ein gewöhnlicher Fachmann erkennen, dass durch Hardware und/oder Firmware ausgeführte Operationen alternativ über ein Softwaremodul implementiert werden können, das als ein Softwarepaket, Code und/oder Anweisungssatz ausgeführt sein kann, und wird auch erkennen, dass eine Logikeinheit auch einen Abschnitt der Software verwenden kann, um ihre Funktionalität zu implementieren.
  • Bezug nehmend auf 22, wird beispielhaftes System 2200 gezeigt, das gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet ist. In verschiedenen Implementierungen kann das System 2200 ein Mediensystem sein, obwohl das System 2200 nicht auf diesen Zusammenhang beschränkt ist. Zum Beispiel kann das System 2200 in einem Personal-Computer (PC), Laptop-Computer, Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, intelligenten Gerät (zum Beispiel Smartphone, Smart-Tablet, intelligenter Lautsprecher oder Smart-Fernsehgerät), Mobile-Internet-Device (MID), Nachrichtenübermittlungsgerät, Datenkommunikationsgerät, Kameras (zum Beispiel Point-and-Shoot-Kameras, Super-Zoom-Kameras, Digital-Single-Lens-Reflex (DSLR) - Kameras), und so weiter, enthalten sein.
  • In verschiedenen Implementierungen beinhaltet das System 2200 Plattform 2202, die mit Anzeige 2220 gekoppelt ist. Die Plattform 2202 kann Inhalt von einem Inhaltsgerät, wie zum Beispiel Inhaltsdienstgerät(e) 2230 oder Inhaltsliefergerät(e) 2240, oder anderen ähnlichen Inhaltsquellen empfangen. Wie gezeigt, kann in einigen Beispielen das System 2200 Mikrofon 221 beinhalten, das über die Plattform 2202 oder separat von der Plattform implementiert ist. Die Plattform 2202 kann Eingangssprache über das Mikrofon 221 empfangen, wie hierin diskutiert. Ebenso kann Lautsprechersubsystem 2262 bereitgestellt werden, um Lautsprecher 2264 so zu steuern, dass sie Audioeingang als Ton emittieren. Navigationssteuerung 2250, die ein oder mehrere Navigationsmerkmale beinhaltet, kann verwendet werden, um zum Beispiel mit der Plattform 2202 und/oder der Anzeige 2220 zu interagieren. Jede dieser Komponenten wird unten detaillierter beschrieben. In verschiedenen Implementierungen kann das System 2200 eine Bitgrößenkonvertierung zur Audioverarbeitung wie beschrieben ausführen.
  • In verschiedenen Implementierungen kann die Plattform 2202 jegliche Kombination von Chipsatz 2205, Prozessor 2210, Speicher 2212, Antenne 2213, Speicherung 2214, Grafiksubsystem 2215, Anwendungen 2216, das Mikrofon 221 und/oder Funkgerät 2208 beinhalten. Der Chipsatz 2205 kann Interkommunikation zwischen dem Prozessor 2210, dem Speicher 2212, der Speicherung 2214, dem Grafiksubsystem 2215, den Anwendungen 2220 und/oder dem Funkgerät 2218 bereitstellen. Zum Beispiel kann der Chipsatz 2205 einen Speicherungsadapter (nicht dargestellt) beinhalten, der zum Bereitstellen von Interkommunikation mit der Speicherung 2214 geeignet ist.
  • Der Prozessor 2210 kann als ein oder mehrere neuronale Netzwerkbeschleuniger (NNA) implementiert sein, aber ansonsten, wo nicht auf einen NNA beschränkt, oder wenn eine solche Struktur einen NNA implementieren kann, als ein Complex-Instruction-Set-Computer (CISC) oder ein Reduced-Instruction-Set-Computer (RISC) -Prozessor, x86-Anweisungssatz-kompatible Prozessoren, Multi-Core- oder jegliche anderen Mikroprozessoren oder Central-Processing-Unit (CPU). In verschiedenen Implementierungen kann der Prozessor 2210 Dual-Core-Prozessor(en), Dual-Core-Mobile-Prozessor(en) und so weiter sein.
  • Der Speicher 2212 kann als ein flüchtiges Speichergerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf einen Random-Access-Memory (RAM), Dynamic-Random-Access-Memory (DRAM) oder Static-RAM (SRAM).
  • Die Speicherung 2214 kann als ein nichtflüchtiges Speicherungsgerät implementiert sein, wie zum Beispiel, aber nicht beschränkt auf ein Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk, ein internes Speicherungsgerät, ein verbundenes Speicherungsgerät, Flash-Speicher, batteriegesicherter SDRAM (synchroner DRAM) und/oder ein netzwerkzugängliches Speicherungsgerät. In verschiedenen Implementierungen kann die Speicherung 2214 Technologie beinhalten, um den speicherungsleistungsverbesserten Schutz für wertvolle digitale Medien zu erhöhen, wenn zum Beispiel mehrere Festplatten enthalten sind.
  • Das Grafiksubsystem 2215 kann das Verarbeiten von Bildern, wie zum Beispiel Standbild oder Video, zur Anzeige ausführen. Das Grafiksubsystem 2215 kann zum Beispiel eine Graphics-Processing-Unit (GPU) oder eine Visual-Processing-Unit (VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um das Grafiksubsystem 2215 und die Anzeige 2220 kommunizierend zu koppeln. Zum Beispiel kann die Schnittstelle jegliche einer High-Definition-Multimedia-Interface-, DisplayPort-, drahtlosen HDMI- und/oder drahtlosen HD-konformen Techniken sein. Das Grafiksubsystem 2215 kann in den Prozessor 2210 oder den Chipsatz 2205 integriert sein. In einigen Implementierungen kann das Grafiksubsystem 2215 ein eigenständiges Gerät sein, das kommunizierend mit dem Chipsatz 2205 gekoppelt ist.
  • Die hierin beschriebenen Grafik- und/oder Videoverarbeitungstechniken können in verschiedenen Hardware-Architekturen implementiert sein. Zum Beispiel können Grafik- und/oder Videofunktionalität in einem Chipsatz integriert sein. Alternativ kann ein spezieller Grafik- und/oder Videoprozessor verwendet werden. Als noch eine andere Implementierung können die Grafik- und/oder Videofunktionen durch einen Mehrzweck-Prozessor einschließlich eines Multicore-Prozessors implementiert werden. In weiteren Implementierungen können die Funktionen in einem Unterhaltungselektronikgerät implementiert sein.
  • Das Funkgerät 2218 kann eines oder mehrere Funkgeräte beinhalten, die zum Übertragen und Empfangen von Signalen durch Verwenden verschiedener geeigneter drahtloser Kommunikationstechniken geeignet sind. Solche Techniken können Kommunikationen über ein oder mehrere drahtlose Netzwerke hinweg einbeziehen. Beispielhafte drahtlose Netzwerke beinhalten (sind jedoch nicht beschränkt auf) Wireless-Local-Area-Networks (WLAN), Wireless-Personal-Area-Networks (WPAN), Wireless-Metropolitan-Area-Networks (WMAN), Mobilfunknetzwerke und Satellitennetzwerke. Beim Kommunizieren über solche Netzwerke hinweg kann das Funkgerät 2218 gemäß einem oder mehreren anwendbaren Standards in jeglicher Version arbeiten.
  • In verschiedenen Implementierungen kann die Anzeige 2220 jeglichen Typ von Fernsehbildschirm oder jegliche Anzeige beinhalten. Die Anzeige 2220 kann zum Beispiel einen Computerbildschirm, eine Berührungsbildschirmanzeige, einen Videomonitor, ein einem Fernsehgerät ähnliches Gerät und/oder ein Fernsehgerät beinhalten. Die Anzeige 2220 kann digital und/oder analog sein. In verschiedenen Ausführungsformen kann die Anzeige 2220 eine holographische Anzeige sein. Die Anzeige 2220 kann auch eine transparente Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern und/oder Objekten verteilen. Zum Beispiel können solche Projektionen eine visuelle Überlagerung für eine Mobile-Augmented-Reality (MAR) -Anwendung, sein Unter der Steuerung einer oder mehrerer Softwareanwendungen 2216 kann die Plattform 2202 Benutzerschnittstelle 2222 auf der Anzeige 2220 anzeigen.
  • In verschiedenen Implementierungen kann (können) das (die) Inhaltsdienstgerät(e) 2230 durch jeglichen nationalen, internationalen und/oder unabhängigen Dienst gehostet werden, und somit für die Plattform 2202 zum Beispiel über das Internet zugänglich sein. Das (die) Inhaltsdienstgerät(e) 2230 kann (können) mit der Plattform 2202 und/oder mit der Anzeige 2220 gekoppelt sein. Die Plattform 2202 und/oder das (die) Inhaltsdienstgerät(e) 2230 können mit Netzwerk 2260 gekoppelt sein, um Medieninformationen zu und von dem Netzwerk 2260 zu kommunizieren (zum Beispiel zu senden und/oder zu empfangen). Das (die) Inhaltsliefergerät(e) 2240 kann (können) auch mit der Plattform 2202 und/oder mit der Anzeige 2220 gekoppelt sein.
  • In verschiedenen Implementierungen kann (können) das (die) Inhaltsdienstgerät(e) 2230 eine Kabelfernsehgerätebox, ein Personalcomputer, Netzwerk, Telefon, internetfähige Geräte oder Haushaltsgeräte, die zum Liefern digitaler Informationen und/oder Inhalt geeignet sind, und jegliches andere ähnliche Gerät beinhalten, das geeignet ist, unidirektional oder bidirektional Inhalt zwischen Inhaltsanbietern und der Plattform 2202 und/oder der Anzeige 2220 über das Netzwerk 2260 oder direkt zu kommunizieren. Es wird darauf hingewiesen, dass der Inhalt unidirektional und/oder bidirektional zu und von jeglicher der Komponenten in dem System 2200 und einem Inhaltsanbieter über das Netzwerk 2260 kommuniziert werden kann. Beispiele von Inhalt können jegliche Medieninformationen beinhalten, einschließlich zum Beispiel Video, Musik, medizinische und Spiele-Informationen, und so weiter.
  • Das (die) Inhaltsdienstgerät(e) 2230 empfängt (empfangen) Inhalt, wie zum Beispiel Kabelfernsehprogramme einschließlich Medieninformationen, digitale Informationen und/oder anderer Inhalt. Beispiele von Inhaltsanbietern können jegliche Fernseh-, Radio- oder Internetinhaltsanbietern über Kabel oder Satellit sein. Die bereitgestellten Beispiele sollen Implementierungen gemäß der vorliegenden Offenbarung in keinster Weise beschränken.
  • In verschiedenen Implementierungen kann die Plattform 2202 Steuersignale von der Navigationssteuerung 2250 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale der Steuerung 2250 können verwendet werden, um beispielsweise mit der Benutzerschnittstelle 2222 zu interagieren. In verschiedenen Implementierungen kann die Navigationssteuerung 2250 ein Zeigegerät sein, das eine Computerhardwarekomponente (insbesondere ein menschliches Schnittstellengerät) sein kann, die es einem Benutzer erlaubt, räumliche (zum Beispiel kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie zum Beispiel grafische Benutzerschnittstellen (Graphical-User-Interfaces - GUI), und Fernsehgeräte und Monitore, ermöglichen es dem Benutzer, Daten für den Computer oder das Fernsehen durch Verwenden von physischen Gesten zu steuern und bereitzustellen.
  • Bewegungen der Navigationsmerkmale der Steuerung 2250 können auf einer Anzeige (zum Beispiel der Anzeige 2220) durch Bewegungen eines Zeigers, Cursors, Fokusrings oder anderer auf der Anzeige angezeigter visueller Indikatoren reproduziert werden. Zum Beispiel können unter der Steuerung der Softwareanwendungen 2216 die auf der Navigationssteuerung 2250 platzierten Navigationsmerkmale zu virtuellen Navigationsmerkmalen abgebildet werden, die zum Beispiel auf der Benutzerschnittstelle 2222 angezeigt werden. In einigen Implementierungen kann die Steuerung 2250 keine separate Komponente sein, sondern kann in die Plattform 2202 und/oder die Anzeige 2220 integriert sein. Die vorliegende Offenbarung ist jedoch nicht auf die Elemente oder in dem Zusammenhang wie hierin gezeigt oder beschrieben beschränkt.
  • In verschiedenen Implementierungen können Treiber (nicht gezeigt) eine Technologie beinhalten, um es Benutzern zu ermöglichen, die Plattform 2202 wie einen Fernseher mit der Berührung einer Taste nach dem ursprünglichen Hochfahren, wenn ermöglicht, zum Beispiel sofort ein- und auszuschalten. Programmlogik kann es der Plattform 2202 ermöglichen, Inhalte an Medienadapter oder andere Inhaltsdienstgerät(e) 2230 oder Inhaltsliefergerät(e) 2240 zu streamen, sogar wenn die Plattform „aus“ geschaltet ist. Zusätzlich kann der Chipsatz 2205 Hardware- und/oder Software-Unterstützung zum Beispiel für 5.1-Surround-Sound-Audio und/oder High-Definition 7.1-Surround-Sound-Audio beinhalten. Treiber können einen Grafiktreiber für integrierte Grafikplattformen beinhalten. In verschiedenen Implementierungen kann der Grafiktreiber eine Peripheral-Component-Interconnect (PCI) -Express-Grafikkarte umfassen.
  • In verschiedenen Implementierungen kann jegliche eine oder mehrere der in dem System 2200 gezeigten Komponenten integriert sein. Zum Beispiel können die Plattform 2202 und das (die) Inhaltsdienstgerät(e) 2230 integriert sein, oder die Plattform 2202 und das (die) Inhaltsliefergerät(e) 2240 können integriert sein, oder die Plattform 2202, das (die) Inhaltsdienstgerät(e) 2230 und das (die) Inhaltsliefergerät(e) 2240 können zum Beispiel integriert sein. In verschiedenen Implementierungen können die Plattform 2202 und die Anzeige 2220 eine integrierte Einheit sein. Die Anzeige 2222 und das (die) Inhaltsdienstgerät(e) 2230 können integriert sein, oder die Anzeige 2220 und das (die) Inhaltsliefergerät(e) 2240 können zum Beispiel integriert sein. Diese Beispiele sollen die vorliegende Offenbarung nicht beschränken.
  • In verschiedenen Implementierungen kann das System 2200 als ein drahtloses System, ein drahtgebundenes System, oder eine Kombination von beiden implementiert sein. Wenn als ein drahtloses System implementiert, kann das System 2200 Komponenten und Schnittstellen beinhalten, die geeignet sind, über ein drahtloses geteiltes Medium zu kommunizieren, wie zum Beispiel eine oder mehrere Antennen, Transmitter, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik, und so weiter. Ein Beispiel für drahtlose geteilte Medien kann Abschnitte eines drahtlosen Spektrums, wie zum Beispiel des RF-Spektrums, und so weiter, beinhalten. Wenn als ein drahtgebundenes System implementiert, kann das System 2200 Komponenten und Schnittstellen beinhalten, die geeignet sind, über drahtgebundene Kommunikationsmedien zu kommunizieren, wie zum Beispiel Eingabe/Ausgabe (I/O) -Adapter, physikalische Verbindungselemente, um den I/O-Adapter mit einem entsprechenden drahtgebundenen Kommunikationsmedium zu verbinden, eine Network-Interface-Card (NIC), Disk-Controller, Video-Controller, Audio-Controller, und so weiter. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metallleiter, ein Printed-Circuit-Board (PCB), eine Rückwandplatine, ein Schaltergewebe, Halbleitermaterial, verdrillten Doppelleiter, ein Koaxialkabel, eine Faseroptik, und so weiter, beinhalten.
  • Die Plattform 2202 kann einen oder mehrere logische oder physische Kanäle einrichten, um Informationen zu kommunizieren. Die Informationen können Medieninformationen und Steuerungsinformationen beinhalten. Medieninformationen können sich auf jegliche Daten beziehen, die für einen Benutzer bestimmten Inhalt repräsentieren. Beispiele für Inhalt können zum Beispiel Daten von einer Sprachkonversation, Videokonferenz, Video-Streaming, Electronic-Mail („E-Mail“) -Nachricht, Voicemail-Nachricht, alphanumerischen Symbolen, Grafiken, Bildern, Video, Text, und so weiter, beinhalten. Daten von einer Sprachkonversation können zum Beispiel Sprachinformationen, Perioden der Stille, Hintergrundgeräusche, Komfortgeräusche, Töne und so weiter sein. Steuerungsinformationen können sich auf jegliche Daten beziehen, die Befehle, Anweisungen oder Steuerungswörter, die für ein automatisiertes System bestimmt sind, repräsentieren. Zum Beispiel können Steuerungsinformationen dazu verwendet werden, Medieninformationen durch ein System zu leiten oder einen Knoten anzuweisen, die Medieninformationen auf eine vorgegebene Weise zu verarbeiten. Die Implementierungen sind jedoch nicht auf die Elemente oder in dem Zusammenhang wie in 22 gezeigt oder beschrieben beschränkt.
  • Bezug nehmend auf 23, und wie oben beschrieben, können die Systeme 2100 und 2200 in variierenden physischen Stilen oder Formfaktoren einschließlich Geräts mit kleinem Formfaktor 2300 verkörpert sein, die gemäß mindestens einigen Implementierungen der vorliegenden Offenbarung angeordnet sind. Somit können in einigen Beispielen die Systeme 2100 oder 2200 über das Gerät 2300 implementiert werden. In anderen Beispielen können andere Geräte oder Systeme oder Abschnitte davon über das Gerät 2300 implementiert werden. In verschiedenen Implementierungen kann das Gerät 2300 zum Beispiel als ein mobiles Datenverarbeitungsgerät mit drahtlosen Fähigkeiten implementiert werden. Ein mobiles Datenverarbeitungsgerät kann sich auf jegliches Gerät mit einem Verarbeitungssystem und einer mobilen Energiequelle oder - Versorgung, wie zum Beispiel einer oder mehreren Batterien, beziehen.
  • Beispiele eines mobilen Datenverarbeitungsgeräts können einen Personal-Computer (PC), Laptop-Computer, Ultra-Laptop-Computer, Tablet, Touchpad, tragbaren Computer, Handheld-Computer, Palmtop-Computer, Personal-Digital-Assistant (PDA), Mobiltelefon, Kombination Mobiltelefon/PDA, intelligentes Gerät (zum Beispiel Smartphone, Smart-Tablet oder smartes mobiles Fernsehgerät), Mobile-Internet-Device (MID), Nachrichtenübermittlungsgerät, Datenkommunikationsgerät, Kameras, und so weiter, beinhalten.
  • Beispiele eines mobilen Datenverarbeitungsgeräts können auch Computer beinhalten, die angeordnet sind, um von einer Person getragen zu werden, wie zum Beispiel Handgelenkcomputer, Fingercomputer, Ringcomputer, Brillencomputer, Gürtelclipcomputer, Armbandcomputer, Schuhcomputer, Bekleidungscomputer und andere tragbare Computer. In verschiedenen Implementierungen kann ein mobiles Datenverarbeitungsgerät zum Beispiel als ein Smartphone implementiert sein, das dazu geeignet ist, Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen auszuführen. Obwohl einige Implementierungen mit einem mobilen Datenverarbeitungsgerät, das als ein Smartphone implementiert ist, beispielhaft beschrieben sein können, versteht es sich, dass andere Implementierungen durch Verwenden anderer drahtloser mobiler Datenverarbeitungsgeräte ebenfalls implementiert werden können. Die Implementierungen sind in diesem Zusammenhang nicht beschränkt.
  • Wie in 23 gezeigt, kann das Gerät 2300 ein Gehäuse mit Vorderseite 2301 und Rückseite 2302 beinhalten. Das Gerät 2300 beinhaltet Anzeige 2304, Eingabe/Ausgabe (I/O) - Gerät 2306 und integrierte Antenne 2308. Das Gerät 2300 kann auch Navigationsmerkmale 2312 beinhalten. Das I/O-Gerät 2306 kann jegliches geeignete I/O-Gerät zum Eingeben von Informationen in ein mobiles Datenverarbeitungsgerät beinhalten. Beispiele für das I/O-Gerät 2306 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Knöpfe, Schalter, Mikrofone, Lautsprecher, Spracherkennungsgerät und Software, und so weiter, beinhalten. Informationen können auch über Mikrofon 204, in das Gerät 2300 eingegeben werden, oder können durch ein Spracherkennungsgerät digitalisiert werden. Wie gezeigt, kann das Gerät 2300 Kamera 2305 (zum Beispiel einschließlich einer Linse, einer Blende und eines Bildverarbeitungssensors) und Blitz 2310 beinhalten, die in die Rückseite 2302 (oder anderswo) des Geräts 2300 integriert sind.
  • Verschiedene Implementierungen können durch Verwenden von Hardwareelementen implementiert werden, und einschließlich der oben spezifizierten, die als neuronale Netzwerkbeschleuniger (NNA) implementiert werden. Andernfalls, wenn nicht spezifiziert, können die Implementierungen als Hardwareelemente, Softwareelemente oder eine Kombination von beiden implementiert werden. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (zum Beispiel Transistoren, Widerstände, Kondensatoren, Induktoren, und so weiter), integrierte Schaltungen, Application-Specific-Integrated-Circuits (ASIC), Programmable-Logic-Devices (PLD), Digitale Signalprozessoren (DSP), Field-Programmable-Gate-Arrays (FPGA), Logikgatter, Register, Halbleitergeräte, Chips, Mikrochips, Chipsätze, und so weiter, beinhalten. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Application-Program-Interfaces (API), Anweisungssätze, Datenverarbeitungscode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole, oder jegliche Kombination davon, beinhalten. Das Bestimmen, ob eine Implementierung durch Verwenden von Hardware-Elementen und/oder Software-Elementen implementiert wird, kann gemäß jeglicher Anzahl von Faktoren, wie zum Beispiel angestrebter Berechnungsrate, Leistungsniveaus, Wärmetoleranzen, Verarbeitungszyklus-Budget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderer Design- oder Leistungseinschränkungen, variieren.
  • Ein oder mehrere Aspekte mindestens einer Implementierung können durch repräsentative Anweisungen implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, das verschiedene Logik innerhalb des Prozessors darstellt, die, wenn durch eine Maschine gelesen, die Maschine dazu veranlasst, Logik zum Ausführen der hierin beschriebenen Techniken herzustellen. Solche Darstellungen, bekannt als „IP-Kerne“, können auf einem materiellen, maschinenlesbaren Medium gespeichert und an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, um sie in die Herstellungsmaschinen zu laden, die die Logik oder den Prozessor tatsächlich herstellen.
  • Während bestimmte hierin dargelegte Merkmale unter Bezugnahme auf verschiedene Implementierungen beschrieben wurden, ist diese Beschreibung nicht dazu beabsichtigt, in einem einschränkenden Sinne ausgelegt zu werden. Daher werden verschiedene Modifikationen der hierin beschriebenen Implementierungen sowie andere Implementierungen, die für Fachleute offensichtlich sind, auf die sich die vorliegende Offenbarung bezieht, als innerhalb dem Geist und Umfang der vorliegenden Offenbarung liegend erachtet.
  • Die folgenden Beispiele betreffen weitere Implementierungen.
  • Durch eine oder mehrere beispielhafte erste Implementierungen umfasst ein Audioverarbeitungsgerät einen Speicher zum Speichern von Audioeingängen einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; und mindestens einen Prozessor, der kommunizierend mit dem Speicher gekoppelt ist, um durch Folgendes zu arbeiten: Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung, die durch mindestens einen neuronalen Netzwerkbeschleuniger gebildet wird; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren mindestens von Abschnitten der mehreren Sample-Teile einschließlich des mindestens einen skalierten Sample-Teils umfasst.
  • Durch eine oder mehrere zweite Implementierungen, und zusätzlich zu der ersten Implementierung, wobei die Sample-Teile jeweils eine Größe haben, sodass die Sample-Teile kooperativ alle Bits von dem ursprünglichen Sample halten.
  • Durch eine oder mehrere dritte Implementierungen, und zusätzlich zu der ersten oder zweiten Implementierung, wobei die Sample-Teile die zweite Bitgröße haben.
  • Durch eine oder mehrere vierte Implementierungen, und zusätzlich zu jeglicher der ersten bis dritten Implementierung, wobei die Sample-Teile mindestens einen hohen Sample-Teil mit den höchstwertigen Bits von dem ursprünglichen Sample und einen niedrigen Sample-Teil mit den niedrigstwertigen Bits von dem ursprünglichen Sample umfassen.
  • Durch eine oder mehrere fünfte Implementierungen, und zusätzlich zu jeglicher der ersten bis dritten Implementierung, wobei die Sample-Teile mindestens einen hohen Sample-Teil mit den höchstwertigen Bits von dem ursprünglichen Sample und einen niedrigen Sample-Teil mit den niedrigstwertigen Bits von dem ursprünglichen Sample umfassen, und wobei das Teilen das Speichern des ursprünglichen Samples in einem Behälter eines Übergangs-Samples mit einer dritten Bitgröße umfasst, die größer als die erste Bitgröße des ursprünglichen Samples ist und ohne Rest in die Sample-Teile teilbar ist.
  • Durch eine oder mehrere sechste Implementierungen, und zusätzlich zu jeglicher der ersten bis dritten Implementierung, wobei die Sample-Teile mindestens einen hohen Sample-Teil mit den höchstwertigen Bits von dem ursprünglichen Sample und einen niedrigen Sample-Teil mit den niedrigstwertigen Bits von dem ursprünglichen Sample umfassen, und wobei das Teilen das Speichern des ursprünglichen Samples in einem Behälter eines Übergangs-Samples mit einer dritten Bitgröße umfasst, die größer als die erste Bitgröße des ursprünglichen Samples ist und ohne Rest in die Sample-Teile teilbar ist, und wobei die erste Bitgröße 24 Bit ist, die zweite Bitgröße 16 Bit ist, und die dritte Bitgröße 32 Bit ist.
  • Durch eine oder mehrere siebte Implementierungen, und zusätzlich zu jeglicher der ersten bis dritten Implementierung, wobei die Sample-Teile mindestens einen hohen Sample-Teil mit den höchstwertigen Bits von dem ursprünglichen Sample und einen niedrigen Sample-Teil mit den niedrigstwertigen Bits von dem ursprünglichen Sample umfassen, und wobei das Teilen das Speichern des ursprünglichen Samples in einem Behälter eines Übergangs-Samples mit einer dritten Bitgröße umfasst, die größer als die erste Bitgröße des ursprünglichen Samples ist und ohne Rest in die Sample-Teile teilbar ist, und wobei der mindestens eine Prozessor angeordnet ist, um durch Entschachteln einer Sequenz des Übergangs-Samples zu arbeiten, wobei jedes Übergangs-Sample einen hohen Sample-Teil und einen niedrigen Sample-Teil hat, und das Entschachteln einen hohen Sample-Vektor hoher Sample-Teile separat von einem niedrigen Sample-Vektor niedriger Sample-Teile erzeugen soll, um die hohen und niedrigen Sample-Vektoren separat in einen neuronalen Netzwerkbeschleuniger einzugeben.
  • Durch eine oder mehrere achte Implementierungen, und zusätzlich zu jeglicher der ersten bis siebten Implementierung, wobei der mindestens eine Prozessor niedrige Sample-Teile mit den niedrigstwertigen Bits (LSBs) der ursprünglichen Samples verschieben soll, um einen Bitraum in dem niedrigen Sample-Teil für ein Vorzeichenbit durch Verwenden von mindestens einem neuronalen Netzwerkbeschleuniger zu reservieren.
  • Durch eine oder mehrere neunte Implementierungen, und zusätzlich zu jeglicher der ersten bis achten Implementierung, wobei der mindestens eine Prozessor durch Bestimmen von Absolutwertversionen der Sample-Teile und eines separaten Vorzeichenvektors arbeitet, der das Vorzeichen von mindestens einem der Sample-Teile, die verwendet werden sollen, um das skalierte Ausgangs-Sample zu erzeugen, aufrechterhält.
  • Durch eine oder mehrere beispielhafte zehnte Implementierungen umfasst ein Verfahren der Audioverarbeitung Erhalten von Audioeingängen einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung durch mindestens einen neuronalen Netzwerkbeschleuniger; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren mindestens von Abschnitten der mehreren Sample-Teile und das Beinhalten des mindestens einen skalierten Sample-Teils umfasst.
  • Durch eine oder mehrere elfte Implementierungen, und zusätzlich zu der zehnten Implementierung, wobei die mindestens eine Verstärkung abhängig von den Sample-Teilen dynamisch berechnet wird.
  • Durch eine oder mehrere zwölfte Implementierungen, und zusätzlich zu der zehnten oder elften Implementierung, wobei die mindestens eine Verstärkung durch Verwenden einer Zählung der Anzahl der durch einen der Sample-Teile besetzten Biträume berechnet wird.
  • Durch eine beispielhafte dreizehnte Implementierung, und zusätzlich zu jeglicher der zehnten bis zwölften Implementierung, wobei dieselbe mindestens eine Verstärkung für mehrere Sample-Teile eines selben Sample-Satzes mehrerer Teile mehrerer ursprünglicher Samples verwendet wird, unabhängig davon, welcher Sample-Teil verwendet wurde, um die Verstärkung zu bilden.
  • Durch eine oder mehrere vierzehnte Implementierungen, und zusätzlich zu jeglicher der zehnten bis dreizehnten Implementierung, wobei mehrere ursprüngliche Samples eines Sample-Satzes von ursprünglichen Samples in Sample-Teile geteilt werden, und wobei die mindestens eine Verstärkung nur durch Verwenden der Daten eines hohen Sample-Teils mit dem höchsten Wert unter allen hohen Sample-Teilen des Satzes erzeugt wird.
  • Durch eine oder mehrere fünfzehnte Implementierungen, und zusätzlich zu jeglicher der zehnten bis dreizehnten Implementierung, wobei mehrere ursprüngliche Samples eines Sample-Satzes von ursprünglichen Samples in Sample-Teile geteilt werden, und wobei die mindestens eine Verstärkung nur durch Verwenden der Daten eines hohen Sample-Teils mit dem höchsten Wert unter allen hohen Sample-Teilen des Satzes erzeugt wird, und wobei der mindestens eine Prozessor angeordnet ist, um den hohen Sample-Teil mit dem höchsten Wert durch Verwenden von Max-Pooling-Schichten eines neuronalen Netzwerks zu bestimmen.
  • Durch eine oder mehrere beispielhafte sechzehnte Implementierungen umfasst ein computerimplementiertes System zur Audioverarbeitung mindestens ein Mikrofon zur Erfassung von Audioeingang einschließlich menschlicher Sprache; Speicher zum Speichern des Audioeingangs in der Form von ursprünglichen Samples mit einer ersten Bitgröße; mindestens einen Prozessor, der kommunizierend mit dem mindestens einen Mikrofon und dem mindestens einen Speicher gekoppelt ist, und um durch Folgendes zu arbeiten: Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung, die durch mindestens einen neuronalen Netzwerkbeschleuniger gebildet wird; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile und das Beinhalten des mindestens einen skalierten Sample-Teils umfasst.
  • Durch eine oder mehrere siebzehnte Implementierungen, und zusätzlich zu der sechzehnten Implementierung, wobei die mindestens eine Verstärkung angeordnet ist, sodass das Anwenden der mindestens einen Verstärkung eine Bitverschiebung in dem Sample-Teil veranlasst, um ein höchstwertiges Bit des Sample-Teils an dem höchsten verfügbaren Bitraum eines skalierten Sample-Teils, der zur Bildung des skalierten Ausgangs-Samples verwendet werden soll, zu platzieren.
  • Durch eine oder mehrere achtzehnte Implementierungen, und zusätzlich zu der sechzehnten Implementierung, wobei die mindestens eine Verstärkung angeordnet ist, sodass das Anwenden der mindestens einen Verstärkung eine Bitverschiebung in dem Sample-Teil veranlasst, um ein höchstwertiges Bit des Sample-Teils an dem höchsten verfügbaren Bitraum eines skalierten Sample-Teils, der zur Bildung des skalierten Ausgangs-Samples verwendet werden soll, zu platzieren, und wobei die Bitverschiebung leere Biträume auf dem skalierten Sample-Teil bereitstellt, um Bits eines skalierten niedrigen Sample-Teils zu empfangen, der den niedrigstwertigen Bits des ursprünglichen Samples zugeordnet ist.
  • Durch eine oder mehrere neunzehnte Implementierungen, und zusätzlich zu jeglicher der sechzehnten bis achtzehnten Implementierung, wobei das skalierte Ausgangs-Sample gebildet wird, indem mindestens Abschnitte eines skalierten hohen Sample-Teils und eines skalierten niedrigen Sample-Teils kombiniert werden.
  • Durch eine oder mehrere beispielhafte zwanzigste Implementierungen umfasst mindestens ein nicht flüchtiges maschinenlesbares Medium Anweisungen, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Erhalten von Audioeingang einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung durch mindestens einen neuronalen Netzwerkbeschleuniger; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile und das Einschließen des mindestens einen skalierten Sample-Teils umfasst.
  • Durch eine oder mehrere einundzwanzigste Implementierungen, und zusätzlich zu der zwanzigsten Implementierung, wobei mindestens eines des Teilens, des Anwendens der mindestens einen Verstärkung und des Erzeugens eines skalierten Ausgangs-Samples durch einen oder mehrere neuronale Netzwerkbeschleuniger ohne die Verwendung eines digitalen Signalprozessors (DSP) ausgeführt wird.
  • Durch eine oder mehrere zweiundzwanzigste Implementierungen, und zusätzlich zu der zwanzigsten oder einundzwanzigsten Implementierung, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Weglassen des Erzeugens und des Anwendens zu arbeiten, wenn mindestens einer der Sample-Teile Null ist, oder ein Bit in einer Bitposition in dem Sample-Teil hat, das durch Anwenden der Verstärkung nicht höher verschoben werden kann.
  • Durch eine oder mehrere dreiundzwanzigste Implementierungen, und zusätzlich zu jeglicher der zwanzigsten bis zweiundzwanzigsten Implementierung, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Ausführen einer Audioverarbeitungsoperation mit den skalierten Ausgangs-Samples; Anwenden einer Verstärkungseinstellung auf den Ausgang der Audioverarbeitungsoperation, die den Ausgang der Audioverarbeitungsoperation mindestens teilweise de-skaliert; und Verwenden der de-skalierten Ausgangs-Samples zur weiteren Audioverarbeitung.
  • Durch eine oder mehrere vierundzwanzigste Implementierungen, und zusätzlich zu jeglicher der zwanzigsten bis zweiundzwanzigsten Implementierung, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Ausführen einer Audioverarbeitungsoperation mit den skalierten Ausgangs-Samples; Anwenden einer Verstärkungseinstellung auf den Ausgang der Audioverarbeitungsoperation, die den Ausgang der Audioverarbeitungsoperation mindestens teilweise de-skaliert; und Verwenden der de-skalierten Ausgangs-Samples zur weiteren Audioverarbeitung, und wobei die Audioverarbeitungsoperation eine Merkmalsextraktion von automatischer Spracherkennung ist.
  • Durch eine oder mehrere fünfundzwanzigste Implementierungen, und zusätzlich zu jeglicher der zwanzigsten bis zweiundzwanzigsten Implementierung, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Ausführen einer Audioverarbeitungsoperation mit den skalierten Ausgangs-Samples; Anwenden einer Verstärkungseinstellung auf den Ausgang der Audioverarbeitungsoperation, die den Ausgang der Audioverarbeitungsoperation mindestens teilweise de-skaliert; und Verwenden der de-skalierten Ausgangs-Samples zur weiteren Audioverarbeitung, und wobei die Verstärkungseinstellung berechnet wird, indem ein Versatz in dem Sample-Wert, der durch mindestens eine der Verstärkungen verursacht wird, bestimmt wird.
  • In einer oder mehreren sechsundzwanzigsten Implementierungen beinhaltet ein Gerät oder ein System einen Speicher und einen Prozessor, um ein Verfahren gemäß irgendeiner der obigen Implementierungen auszuführen.
  • In einer oder mehreren siebenundzwanzigsten Implementierungen beinhaltet mindestens ein maschinenlesbares Medium mehrere Anweisungen, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, ein Verfahren gemäß irgendeiner der obigen Implementierungen auszuführen.
  • In einer oder mehreren achtundzwanzigsten Implementierungen kann eine Vorrichtung Mittel zum Ausführen eines Verfahrens gemäß irgendeiner der obigen Implementierungen beinhalten.
  • Die obigen Beispiele können eine spezifische Kombination von Merkmalen beinhalten. Die obigen Beispiele sind jedoch in dieser Hinsicht nicht beschränkt, und in verschiedenen Implementierungen können die obigen Beispiele das Durchführen nur eines Untersatzes solcher Merkmale, das Durchführen einer unterschiedlichen Reihenfolge solcher Merkmale, das Durchführen einer unterschiedlichen Kombination solcher Merkmale und/oder das Durchführen zusätzlicher Merkmale als der explizit aufgeführten Merkmale beinhalten. Zum Beispiel können alle Merkmale, die in Bezug auf jegliche beispielhafte Verfahren hierin beschrieben sind, in Bezug auf jegliche beispielhafte Vorrichtungen, beispielhafte Systeme und/oder beispielhafte Artikel implementiert werden und umgekehrt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2018/0121796 [0021]
    • US 2019/0043477 [0031]
    • US 10083689 [0036]
    • US 20180121796 [0125]

Claims (25)

  1. Audioverarbeitungsgerät, das Folgendes umfasst: Speicher zum Speichern von Audioeingang einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; und mindestens einen Prozessor, der kommunizierend mit dem Speicher gekoppelt ist, um durch Folgendes zu arbeiten: Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung, die durch mindestens einen neuronalen Netzwerkbeschleuniger gebildet wird; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile einschließlich des mindestens einen skalierten Sample-Teils umfasst.
  2. Gerät nach Anspruch 1, wobei die Sample-Teile jeweils eine Größe haben, sodass die Sample-Teile kooperativ alle Bits von dem ursprünglichen Sample halten.
  3. Gerät nach Anspruch 1 oder 2, wobei die Sample-Teile die zweite Bitgröße haben.
  4. Gerät nach einem der Ansprüche 1 bis 3, wobei die Sample-Teile mindestens einen hohen Sample-Teil mit den höchstwertigen Bits von dem ursprünglichen Sample und einen niedrigen Sample-Teil mit den niedrigstwertigen Bits von dem ursprünglichen Sample umfassen.
  5. Gerät nach Anspruch 4, wobei das Teilen das Speichern des ursprünglichen Samples in einem Behälter eines Übergangs-Samples mit einer dritten Bitgröße umfasst, die größer als die erste Bitgröße des ursprünglichen Samples ist und ohne Rest in die Sample-Teile teilbar ist.
  6. Gerät nach Anspruch 5, wobei die erste Bitgröße 24 Bit ist, die zweite Bitgröße 16 Bit ist, und die dritte Bitgröße 32 Bit ist.
  7. Gerät nach Anspruch 5, wobei der mindestens eine Prozessor angeordnet ist, um durch Entschachteln einer Sequenz des Übergangs-Samples zu arbeiten, wobei jedes Übergangs-Sample einen hohen Sample-Teil und einen niedrigen Sample-Teil hat, und das Entschachteln einen hohen Sample-Vektor hoher Sample-Teile separat von einem niedrigen Sample-Vektor niedriger Sample-Teile erzeugen soll, um die hohen und niedrigen Sample-Vektoren separat in einen neuronalen Netzwerkbeschleuniger einzugeben.
  8. Gerät nach einem der Ansprüche 1 bis 7, wobei der mindestens eine Prozessor niedrige Sample-Teile mit den niedrigstwertigen Bits (LSBs) der ursprünglichen Samples verschieben soll, um einen Bitraum in dem niedrigen Sample-Teil für ein Vorzeichenbit durch Verwenden mindestens eines neuronalen Netzwerkbeschleunigers zu reservieren.
  9. Gerät nach einem der Ansprüche 1 bis 8, wobei der mindestens eine Prozessor durch Bestimmen von Absolutwertversionen der Sample-Teile und eines separaten Vorzeichenvektors arbeitet, der das Vorzeichen von mindestens einem der Sample-Teile, die verwendet werden sollen, um das skalierte Ausgangs-Sample zu erzeugen, aufrechterhält.
  10. Verfahren zur Audioverarbeitung, das Folgendes umfasst Erhalten eines Audioeingangs einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung durch mindestens einen neuronalen Netzwerkbeschleuniger; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile und das Einschließen des mindestens einen skalierten Sample-Teils umfasst.
  11. Verfahren nach Anspruch 10, wobei die mindestens eine Verstärkung abhängig von den Sample-Teilen dynamisch berechnet wird.
  12. Verfahren nach Anspruch 10 oder 11, wobei die mindestens eine Verstärkung durch Verwenden einer Zählung der Anzahl der durch einen der Sample-Teile besetzten Biträume berechnet wird.
  13. Verfahren nach einem der Ansprüche 10 bis 12, wobei dieselbe mindestens eine Verstärkung für mehrere Sample-Teile eines selben Sample-Satzes mehrerer Teile mehrerer ursprünglicher Samples verwendet wird, unabhängig davon, welcher Sample-Teil verwendet wurde, um die Verstärkung zu bilden.
  14. Verfahren nach einem der Ansprüche 10 bis 13, wobei mehrere ursprüngliche Samples eines Sample-Satzes von ursprünglichen Samples in Sample-Teile geteilt werden, und wobei die mindestens eine Verstärkung nur durch Verwenden der Daten eines hohen Sample-Teils mit dem höchsten Wert unter allen hohen Sample-Teilen des Satzes erzeugt wird.
  15. Verfahren nach Anspruch 14, wobei der mindestens eine Prozessor angeordnet ist, um den hohen Sample-Teil mit dem höchsten Wert durch Verwenden von Max-Pooling-Schichten eines neuronalen Netzwerks zu bestimmen.
  16. Computerimplementiertes System zur Audioverarbeitung, das Folgendes umfasst: mindestens ein Mikrofon zur Erfassung von Audioeingängen einschließlich menschlicher Sprache; Speicher zum Speichern des Audioeingangs in der Form von ursprünglichen Samples mit einer ersten Bitgröße; mindestens einen Prozessor, der kommunizierend mit dem mindestens einen Mikrofon und mindestens einem Speicher gekoppelt ist, und um durch Folgendes zu arbeiten: Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung, die durch mindestens einen neuronalen Netzwerkbeschleuniger gebildet wird; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile und das Einschließen des mindestens einen skalierten Sample-Teils umfasst.
  17. System nach Anspruch 16, wobei die mindestens eine Verstärkung angeordnet ist, sodass das Anwenden der mindestens einen Verstärkung eine Bitverschiebung in dem Sample-Teil veranlasst, um ein höchstwertiges Bit des Sample-Teils an dem höchsten verfügbaren Bitraum eines skalierten Sample-Teils, der zur Bildung des skalierten Ausgangs-Samples verwendet werden soll, zu platzieren.
  18. System nach Anspruch 17, wobei die Bitverschiebung leere Biträume auf dem skalierten Sample-Teil bereitstellt, um Bits eines skalierten niedrigen Sample-Teils zu empfangen, der den niedrigstwertigen Bits des ursprünglichen Samples zugeordnet ist.
  19. System nach einem der Ansprüche 16 bis 18, wobei das skalierte Ausgangs-Sample gebildet wird, indem mindestens Abschnitte eines skalierten hohen Sample-Teils und eines skalierten niedrigen Sample-Teils kombiniert werden.
  20. Nicht flüchtiges maschinenlesbares Medium oder nicht flüchtige maschinenlesbare Medien, die Anweisungen umfassen, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Erhalten eines Audioeingangs einschließlich menschlicher Sprache und in der Form von ursprünglichen Samples mit einer ersten Bitgröße; Teilen mindestens eines der ursprünglichen Samples in mehrere Sample-Teile; Erzeugen mindestens einer Verstärkung durch mindestens einen neuronalen Netzwerkbeschleuniger; Anwenden der mindestens einen Verstärkung auf mindestens einen der Sample-Teile, um mindestens einen skalierten Sample-Teil zu bilden; und Erzeugen eines skalierten Ausgangs-Samples in einer zweiten Bitgröße, das das Kombinieren von mindestens Abschnitten der mehreren Sample-Teile und das Einschließen des mindestens einen skalierten Sample-Teils umfasst.
  21. Maschinenlesbares Medium nach Anspruch 20, wobei mindestens eines des Teilens, des Anwendens der mindestens einen Verstärkung und des Erzeugens eines skalierten Ausgangs-Samples durch einen oder mehrere neuronale Netzwerkbeschleuniger ohne die Verwendung eines digitalen Signalprozessors (DSP) ausgeführt wird.
  22. Maschinenlesbares Medium nach Anspruch 20 oder 21, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Weglassen des Erzeugens und des Anwendens zu arbeiten, wenn mindestens einer der Sample-Teile Null ist oder ein Bit in einer Bitposition in dem Sample-Teil hat, das durch Anwenden der Verstärkung nicht höher verschoben werden kann.
  23. Maschinenlesbares Medium nach einem der Ansprüche 20 bis 22, wobei die Anweisungen das Datenverarbeitungsgerät dazu veranlassen, durch Folgendes zu arbeiten: Ausführen einer Audioverarbeitungsoperation mit den skalierten Ausgangs-Samples; Anwenden einer Verstärkungseinstellung auf den Ausgang der Audioverarbeitungsoperation, die den Ausgang der Audioverarbeitungsoperation mindestens teilweise de-skaliert; und Verwenden der de-skalierten Ausgangs-Samples zur weiteren Audioverarbeitung; und
  24. Maschinenlesbares Medium oder maschinenlesbare Medien, die mehrere Anweisungen umfassen, die als Reaktion darauf, dass sie auf einem Datenverarbeitungsgerät ausgeführt werden, das Datenverarbeitungsgerät dazu veranlassen, das Verfahren gemäß einem der Ansprüche 10-15 auszuführen.
  25. Vorrichtung, die Mittel umfasst, um das Verfahren gemäß einem der Ansprüche 10-15 auszuführen.
DE102020131264.4A 2020-06-03 2020-11-25 Verfahren und System der Audioeingangsbitgrössenkonvertierung zur Audioverarbeitung Pending DE102020131264A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/892,080 US11875783B2 (en) 2020-06-03 2020-06-03 Method and system of audio input bit-size conversion for audio processing
US16/892,080 2020-06-03

Publications (1)

Publication Number Publication Date
DE102020131264A1 true DE102020131264A1 (de) 2021-12-09

Family

ID=72422696

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020131264.4A Pending DE102020131264A1 (de) 2020-06-03 2020-11-25 Verfahren und System der Audioeingangsbitgrössenkonvertierung zur Audioverarbeitung

Country Status (2)

Country Link
US (1) US11875783B2 (de)
DE (1) DE102020131264A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11948561B2 (en) * 2019-10-28 2024-04-02 Apple Inc. Automatic speech recognition imposter rejection on a headphone with an accelerometer
CN112397090B (zh) * 2020-11-09 2022-11-15 电子科技大学 一种基于fpga的实时声音分类方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180121796A1 (en) 2016-11-03 2018-05-03 Intel Corporation Flexible neural network accelerator and methods therefor
US10083689B2 (en) 2016-12-23 2018-09-25 Intel Corporation Linear scoring for low power wake on voice
US20190043477A1 (en) 2018-06-28 2019-02-07 Intel Corporation Method and system of temporal-domain feature extraction for automatic speech recognition

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8374858B2 (en) * 2010-03-09 2013-02-12 Dts, Inc. Scalable lossless audio codec and authoring tool
US10650807B2 (en) * 2018-09-18 2020-05-12 Intel Corporation Method and system of neural network keyphrase detection

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180121796A1 (en) 2016-11-03 2018-05-03 Intel Corporation Flexible neural network accelerator and methods therefor
US10083689B2 (en) 2016-12-23 2018-09-25 Intel Corporation Linear scoring for low power wake on voice
US20190043477A1 (en) 2018-06-28 2019-02-07 Intel Corporation Method and system of temporal-domain feature extraction for automatic speech recognition

Also Published As

Publication number Publication date
US20200294493A1 (en) 2020-09-17
US11875783B2 (en) 2024-01-16

Similar Documents

Publication Publication Date Title
DE102019122180B4 (de) Verfahren und system zur schlüsselausdruckserkennung auf der grundlage eines neuronalen netzes
DE102019113534B4 (de) Verfahren und System zur Zeitdomänen-Merkmalsextraktion für die automatische Spracherkennung
DE112017003563B4 (de) Verfahren und system einer automatischen spracherkennung unter verwendung von a-posteriori-vertrauenspunktzahlen
DE102019112380B4 (de) Verfahren und System zur robusten Sprechererkennungsaktivierung
DE102019112383B4 (de) Neuronalnetzwerk zur Sprachentrauschung, das mit tiefen Merkmalsverlusten trainiert wird
DE112017006486T5 (de) Online-enthallungsalgorithmus basierend auf gewichtetem vorhersagefehler für lärmbehaftete zeitvariante umgebungen
US11488019B2 (en) Lossless model compression by batch normalization layer pruning in deep neural networks
CN111488985B (zh) 深度神经网络模型压缩训练方法、装置、设备、介质
US20150199963A1 (en) Mobile speech recognition hardware accelerator
DE102020131264A1 (de) Verfahren und System der Audioeingangsbitgrössenkonvertierung zur Audioverarbeitung
US10863206B2 (en) Content-weighted deep residual learning for video in-loop filtering
CN112329922A (zh) 一种基于质谱数据集的神经网络模型压缩方法及系统
US20220124433A1 (en) Method and system of neural network dynamic noise suppression for audio processing
DE112016005482T5 (de) Objektdetektion mit adaptiven Kanalmerkmalen
CN116405823B (zh) 一种骨传导耳机音频智能去噪增强方法
CN113555032A (zh) 多说话人场景识别及网络训练方法、装置
CN114420135A (zh) 基于注意力机制的声纹识别方法及装置
DE102022128593A1 (de) Verfahren und system zur automatischen kontextgebundenen domänenspezifischen spracherkennung
CN111276134A (zh) 语音识别方法、装置和计算机可读存储介质
WO2023078051A1 (zh) 量化感知训练方法、装置、设备、介质及卷积神经网络
CN112418388A (zh) 一种实现深度卷积神经网络处理的方法及装置
WO2023086311A1 (en) Control of speech preservation in speech enhancement
CN116994564B (zh) 一种语音数据的处理方法及处理装置
US20230262390A1 (en) Audio denoising method and system
CN113255576B (zh) 人脸识别方法及装置