Unser neuronales Netzwerk kann dies tun, indem es eine Person an einer ausgesprochenen Silbe erkennt. Das Thema dieses Artikels steht jedoch nicht in direktem Zusammenhang mit der Sprachidentifikation, obwohl es sich darauf bezieht. Wir werden über neuronale Netzwerkmerkmale sprechen, den sogenannten d-Vektor, der bei Tonverarbeitungsaufgaben verwendet werden kann: von der Verifizierung über die Spracherkennung bis hin zu Emotionen.
Materiel
Abhängig von der Abtastrate kann eine Sekunde Ton 8 bis 48 Tausend Zahlen enthalten. Sie können als Abweichungen von der Gleichgewichtsposition der Lautsprechermembran oder des Mikrofons dargestellt werden. Tatsächlich ist eine solche Beschreibung des Tons redundant: Die Amplitude des Signals zum nächsten Zeitpunkt hängt stark von der vorherigen ab, was darauf hindeutet, dass dieses Signal ohne großen Informationsverlust effektiv komprimiert werden kann. Es gibt eine Vielzahl von Möglichkeiten, die Dimension eines Signals zu verringern. Die meisten davon basieren auf den physikalischen Eigenschaften des Klangs und den Eigenschaften des menschlichen Gehörs.
Meme 1.Bevor die neuronalen Netze (im weitesten Sinne) gut funktionierten, arbeitete die Community mit den sogenannten handgefertigten Attributen. Die bekanntesten und am weitesten verbreiteten sind
Pitch und
MFCC . Die erste hat eine physikalische Bedeutung für die Frequenz der Schwingungen der Stimmbänder, die sich beispielsweise für verschiedene Personen unterscheiden und auch von der Intonation abhängen. Die Idee der Cepstralkoeffizienten (MFCC) basiert auf der Nichtlinearität der menschlichen Wahrnehmung von Schall, nämlich Frequenz und Lautstärke. Es scheint einer Person, dass ein Ton um einen gewissen Betrag höher ist als ein anderer, wenn sich ihre Frequenzen in Wirklichkeit um eine bestimmte Anzahl von Malen unterscheiden.
Diese und andere manuell berechnete Merkmale sind in dem Sinne irreversibel, dass ein Teil des Signals für immer verloren geht. Bei einigen Aufgaben ist dies nicht kritisch, aber ich möchte einen universelleren und funktionierenderen Ansatz entwickeln.
Der Schlüssel zur Lösung dieses Problems ist die Fourier-Transformation. Mit ihm können Sie sich ein Audiosignal als die Summe von Wellen mit unterschiedlichen Frequenzen und Amplituden vorstellen. Tatsächlich ist Sprache nicht stationär in dem Sinne, dass ihr Spektrum zu verschiedenen Zeitpunkten qualitativ unterschiedlich sein wird. Dies ermöglicht es uns, es in der Zeit-Frequenz-Darstellung unter Verwendung von
Spektrogrammen zu berücksichtigen.
Um ein Spektrogramm zu erstellen, müssen Sie den Ton in sich überschneidende Abschnitte (überlappende Frames) mit einer Länge von mehreren zehn Millisekunden aufteilen. Berechnen Sie für jeden von ihnen die Fourier-Transformation und schreiben Sie ihre Module in Spalten in die Spektrogramme. Darüber hinaus ist eine solche Transformation nahezu invers, dh mit der inversen Fourier-Transformation und
dem Griffin-Lim-Algorithmus können Sie das ursprüngliche Tonsignal wiederherstellen (tatsächlich tritt ein Informationsverlust auf, da die Fourier-Transformation im allgemeinen Fall komplex ist und das Spektrogramm einen reellen Wert hat, und Zur Annäherung an die Phasenwiederherstellung wird normalerweise der iterative Griffin-Lim-Algorithmus verwendet. Insgesamt erhalten wir, wenn wir den Logarithmus der Amplituden nehmen, diese Bilder:
Spektrogramm 5 Sekunden Sprache.Und sie werden bequem von Faltungsnetzen verarbeitet.
Ein solcher Hack wird häufig bei Bildverarbeitungsaufgaben verwendet: Es gibt große Datenbanken mit Beispielen für verschiedene Objekte (z. B. ImageNet). Sie können ein großes Raster trainieren, um sie zu erkennen, und es dann für unsere spezifische Aufgabe neu trainieren oder das Ausgabeergebnis von einer der inneren, vollständig verbundenen Ebenen übernehmen. Es wird angenommen, dass eine solche Architektur gute informative Merkmale für Eingabebilder berechnet. Die Erfahrung zeigt, dass die Ergebnisse fast immer besser sind, als wenn wir das neuronale Netzwerk von Grund auf neu trainiert hätten.
Die Idee von d-Vektoren (im Allgemeinen d-Vektoren, aber manchmal auch als x-Vektoren bezeichnet) ähnelt der Verwendung von vorab trainierten Gittern in ImageNet, mit der Ausnahme, dass es keine ähnlichen Grundlagen für Spektrogramme gibt. Als möglicher Ausweg können Auto-Encoder in Betracht gezogen werden, die jedoch a priori nicht wissen, wonach sie im Spektrogramm suchen sollen, weshalb sie unbefriedigend arbeiten.
Wir müssen tiefer gehen
Achtung, der Hauptteil dieses Artikels beginnt.
Die Aufgabe, eine Person durch Stimme zu verifizieren, ist allgemein bekannt, wobei es notwendig ist, durch das eingegebene Sprachsegment zu bestimmen, welche der Personen in der Datenbank dies gesagt hat. Tatsächlich ist der Aufbau solcher Systeme eine separate Wissenschaft, und es gibt viele verschiedene Add-Ons (Sprechdauer; muss jeder den gleichen Text sprechen; Inszenierung von eins gegen eins oder eins gegen alle), die unter verschiedenen Bedingungen kritisch sind, aber für uns Sie müssen auf etwas anderes achten.
Nämlich: Wie gut die Funktionen sind, wenn wir das Raster vorab trainieren, um eine Person zu erkennen. Alles wird zum Wohle der Zeichen getan.
Dies wird uns helfen, Intuition und
Artikel von 2015. Darin lehren die Autoren das Gitter, eine Person am Gesicht zu erkennen (Gesichtserkennung). Der Schlüssel zu dieser Arbeit ist die Verwendung von Triplet Loss.
Seine Idee ist sehr einfach: Wir normalisieren Merkmale aus der vorletzten Ebene so, dass sie auf einer Einheitskugel liegen, und verlangen, dass Punkte einer Klasse nahe und weit entfernt von verschiedenen liegen. Dies kann wie folgt erreicht werden: Für jedes Trainingsbeispiel (Anker) finden wir zwei weitere aus derselben und einer anderen Klasse in der Stichprobe - positiv und negativ. Dann bilden wir für diese Dreifachpunkte einen Verlust:
\ begin {Gleichung}
\ Big [\ Vert f (x ^ a) - f (x ^ p) \ Vert - \ Vert f (x ^ a) - f (x ^ n) \ Vert + \ alpha \ Big] _ +,
\ end {Gleichung}
Dabei ist x das Eingabebild, f die Rasterausgabe nach der Normalisierung, Alpha der manuell ausgewählte Parameter, [] _ {+} die ReLU-Funktion. Qualitativ ist der Wert dieses Verlusts Null, wenn der Abstand zwischen Anker und positiven Punkten um mindestens Alpha größer als der Abstand zwischen Anker und Negativ ist und je größer der Unterschied zwischen zwei verschiedenen Klassen ist.
Eine Illustration dessen, was nach dem Training mit Triplet Loss mit Funktionen passiert.Übrigens können Sie auf intelligente Weise Tripel bilden. Irgendwann wird das Ausmaß des Verlusts gering, und um das Lernen zu beschleunigen, können Sie nicht unter allen anderen Klassen nach negativen Beispielen suchen, sondern nur diejenigen, die sich in der Nähe des Ankers befinden. Bei großen Datenmengen ist dies jedoch schwierig, da Sie paarweise Abstände zwischen Klassen berücksichtigen müssen, die sich nach jeder Iteration des Netzwerklernens ändern.
Der Triplettverlust hat einen Vorteil gegenüber der kategorialen Kreuzentropie, die bei der herkömmlichen Klassifizierung verwendet wird. Ein mit Cross-Entropy trainiertes Modell versucht, alle Punkte einer Klasse in einem immer kleineren Bereich zusammenzufassen, und Informationen, die für eine bestimmte Aufgabe überflüssig sind, können verloren gehen. Dies möchten wir jedoch nicht, da wir das neuronale Netzwerk als Feature-Generator und nicht zur Überprüfung verwenden werden. Triplettverlust hat diese Eigenschaft in viel geringerem Maße: Es ist wichtiger, verschiedene Klassen in verschiedenen Bereichen auf einer einzigen Kugel zu verteilen, als eine Klasse zu tragen.
Meme 2.Bevor Sie den Feature-Generator auf Spektrogramme trainieren, müssen Sie zunächst deren Größe bestimmen. Offensichtlich ist die Genauigkeit der Klassifizierung umso höher, je länger der von uns betrachtete Zeitraum ist, aber desto mehr „gemittelte“ Zeichen werden sich herausstellen. Daher ist es sinnvoll, eine solche Signallänge so zu verwenden, dass 1-3 Phoneme (Silben) hineinfallen - eine halbe Sekunde erscheint angemessen.
Für das Training nehmen wir den
VoxCeleb2- Datensatz, in dem für jeden der 6300 Lautsprecher mehrere separate Audioaufnahmen von jeweils mehreren Minuten (unter verschiedenen Bedingungen erstellt) vorhanden sind. Wir verwenden einen Teil der Audiodateien für das Training und den Rest für die Validierung, wählen die Faltungsnetzwerkarchitektur aus, fügen Triplet Loss hinzu und lernen.
Die Ergebnisse waren sehr cool. In fast 2 Wochen Training bei 1080Ti (ja, so lange) erreichte die Klassifizierungsgenauigkeit 55%. Es scheint nicht sehr viel zu sein, aber die Genauigkeit der Top-5 beträgt 78%. Wenn wir nur die lauteste Hälfte der Fragmente betrachten, bei denen es sich hauptsächlich um betonte Vokale handelt, steigt die Genauigkeit der Top-5 auf 91%. Wir können sagen, dass wir eine Person anhand einer ihrer Phrasen mit angemessener Genauigkeit identifizieren können. Aber es spielt keine Rolle.
Meme 3.Schließlich wurde alles für Merkmale gestartet, die als Ausweg aus dem vorletzten erhalten werden können, bevor die neuronale Netzwerkschicht klassifiziert wird. Wir haben sie auf unsere Aufgaben getestet und überall waren die Ergebnisse besser als bei der Berechnung von Attributen mit klassischen Ansätzen. Beim Problem der Emotionserkennung konnten wir beispielsweise durch die Verwendung von d-Vektoren den Stand der Technik um 4% umgehen, und der entsprechende Artikel wurde auf der FICC 2019-Konferenz angenommen. Die Erkennung von Emotionen ist jedoch eine völlig andere Geschichte, über die wir später sprechen werden.
Gepostet von
Gregory Sterling sterling239 , Deep Learning-Experte, Neurodata Lab.