Audiodaten | Audiodatenanalyse / Stimme durch Deep Learning

Teilen auf Facebook
Teilen auf twittern
Teilen auf verlinktin
Teilen auf Telegramm
Teilen auf WhatsApp

Inhalt

Einführung

Wenn es mit Data Science beginnt, fängt einfach an. Du gehst durch einfache Projekte wie Problem mit der Kreditvorhersage Ö Big Mart-Verkaufsprognose. Diese Probleme haben strukturierte Daten, die sauber in einem Tabellenformat angeordnet sind. Mit anderen Worten, Sie werden mit dem schwierigsten Teil in der Data Science-Pipeline gefüttert.

i-excel-300x288-8129836

Datensätze im wirklichen Leben sind viel komplexer.

Du musst es zuerst verstehen, Sammeln Sie es aus verschiedenen Quellen und organisieren Sie es in einem Format, das zur Verarbeitung bereit ist. Dies ist noch schwieriger, wenn die Daten in einem unstrukturierten Format vorliegen, als Bild oder Ton. Dies liegt daran, dass es Bilddaten darstellen müsste / Audio auf Standard-Weise, um für die Analyse nützlich zu sein.

Die Fülle an unstrukturierten Daten

neugierig, unstrukturierte Daten stellen eine große ungenutzte Chance dar. Es ist näher an der Art und Weise, wie wir als Menschen kommunizieren und interagieren. Es enthält auch viele nützliche und leistungsstarke Informationen. Zum Beispiel, wenn eine Person spricht; du verstehst nicht nur was es sagt, aber auch was waren die Emotionen der Person aus der Stimme.

Was ist mehr, Die Körpersprache der Person kann dir viele weitere Eigenschaften einer Person zeigen, Denn Taten sagen mehr als Worte! Zusammenfassend, unstrukturierte Daten sind komplex, aber ihre Verarbeitung kann leichte Belohnungen bringen.

In diesem Artikel, Ich beabsichtige, einen Überblick über die Audioverarbeitung zu geben / Stimme mit einer Fallstudie, damit Sie eine praktische Einführung in die Fehlerbehebung bei der Audioverarbeitung erhalten.

Lass uns weitermachen!

Inhaltsverzeichnis

  • Was meinst du mit Audiodaten??
    • Audioverarbeitungsanwendungen
  • Datenhandling im Audiobereich
  • Lassen Sie uns die UrbanSound-Herausforderung lösen!!
  • Dazwischenliegend: unsere erste Präsentation
  • Lass uns die Herausforderung lösen! Teil 2: Bessere Modelle bauen
  • Zukünftige Schritte zum Erkunden

Was meinst du mit Audiodaten??

Direkt oder indirekt, du bist immer in kontakt mit dem audio. Dein Gehirn verarbeitet und versteht kontinuierlich Audiodaten und liefert dir Informationen über die Umgebung. Ein einfaches Beispiel können Ihre täglichen Gespräche mit Menschen sein.. Diese Rede wird von der anderen Person wahrgenommen, um die Diskussionen fortzusetzen. Auch wenn Sie denken, dass Sie sich in einer ruhigen Umgebung befinden, neigt dazu, viel subtilere Geräusche aufzunehmen, wie das Rascheln von Blättern oder das Spritzen von Regen. Dies ist der Umfang Ihrer Verbindung zu Audio.

Dann, Kannst du dieses Audio irgendwie fangen, das um dich herum schwebt, um etwas Konstruktives zu tun?? Jawohl, Natürlich! Es gibt eingebaute Geräte, mit denen Sie diese Geräusche aufnehmen und in einem computerlesbaren Format darstellen können.. Beispiele für diese Formate sind

  • wav-Format (Waveform-Audiodatei)
  • format mp3 (MPEG-1-Audioebene 3)
  • WMA-Format (Windows Media-Audio)

Wenn Sie darüber nachdenken, wie ein Audio aussieht, es ist nichts anderes als ein Wellenform-Datenformat, wo sich die Amplitude des Audios in Bezug auf die Zeit ändert. Dies lässt sich bildlich wie folgt darstellen.Ton-2107339

Audioverarbeitungsanwendungen

Obwohl wir anmerken, dass die Audiodaten für die Analyse nützlich sein können. Aber, Was sind die möglichen Anwendungen der Audioverarbeitung?? Hier würde ich einige davon auflisten.

  • Indizierung von Musiksammlungen anhand ihrer Audioeigenschaften.
  • Empfehlen Sie Musik für Radiosender
  • Finden von Ähnlichkeiten für Audiodateien (auch bekannt als Shazam)
  • Sprachverarbeitung und -synthese: künstliche Spracherzeugung für Konversationsagenten

Hier ist eine Übung; Können Sie sich eine Audioverarbeitungs-App vorstellen, die potenziell Tausenden von Leben helfen kann??

Datenhandling im Audiobereich

Wie bei allen unstrukturierten Datenformaten, Audiodaten haben einige Vorverarbeitungsschritte, die befolgt werden müssen, bevor sie zur Analyse präsentiert werden. Wir werden dies in einem späteren Artikel ausführlich behandeln., hier bekommen wir einen Einblick, warum das so gemacht wird.

Der erste Schritt besteht darin, die Daten in einem maschinenverständlichen Format zu laden. Dafür, wir nehmen nur Werte nach jedem bestimmten Zeitschritt. Zum Beispiel; in einer Audiodatei von 2 Sekunden, wir extrahieren Werte in einer halben Sekunde. Benannt Audiodaten-Sampling, und die Rate, mit der es abgetastet wird, heißt Abtastrate.

Ton-2107339

Eine andere Möglichkeit, Audiodaten darzustellen, besteht darin, sie in eine andere Datendarstellungsdomäne zu konvertieren, nämlich, der Frequenzbereich. Wenn wir Audiodaten abtasten, wir brauchen viel mehr Datenpunkte, um alle Daten darzustellen und, was ist mehr, die Abtastfrequenz sollte so hoch wie möglich sein.

Zweitens, wenn wir Audiodaten darstellen in Frequenzbereich, viel weniger Rechenplatz benötigt. Eine Intuition haben, schau dir das Bild unten an.

time_freq-9494591

Quelle

Hier, Wir trennen ein Audiosignal in 3 verschiedene reine Signale, die sich nun als drei eindeutige Werte im Frequenzbereich darstellen lassen.

Es gibt noch einige weitere Möglichkeiten, wie Audiodaten dargestellt werden können, zum Beispiel. mit MFC (Honigfrequenz-Kepstrume. PD: Wir werden dies im späteren Artikel behandeln.). Dies sind nur verschiedene Arten der Darstellung der Daten.

Jetzt, Der nächste Schritt besteht darin, Funktionen aus diesen Audiodarstellungen zu extrahieren, damit unser Algorithmus an diesen Eigenschaften arbeiten und die Aufgabe erfüllen kann, für die er entwickelt wurde. Dann, eine visuelle Darstellung der Kategorien von Audiofunktionen, die extrahiert werden können, wird angezeigt.

Audiofunktionen-1819126

Nach dem Extrahieren dieser Funktionen, zur weiteren Analyse an das Machine-Learning-Modell gesendet.

Lassen Sie uns die UrbanSound-Herausforderung lösen!!

Verschaffen wir uns einen besseren praktischen Überblick über ein reales Projekt, das Urban Sound Challenge. Diese Übungsaufgabe soll Sie in die Audioverarbeitung im typischen Klassifikationsszenario einführen.

Der Datensatz enthält 8732 Tonausschnitte (<= 4 S) von urbanen Klängen von 10 Lektionen, nämlich:

  • Klimaanlage,
  • Horn,
  • Kinder spielen,
  • Hundebellen,
  • Bohren,
  • Motorleerlauf,
  • Gewehrschuss
  • Drucklufthammer,
  • Meerjungfrau und
  • Straßenmusik

Hier ist ein Soundauszug aus dem Datensatz. Kannst du erraten, zu welcher Klasse es gehört??


Um dies in Jupyters Notizbuch zu reproduzieren, du kannst einfach dem Code folgen.

IPython.display als ipd importieren
ipd.Audio('../data/Train/2022.wav')

Jetzt laden wir dieses Audio als große Matrix in unseren Laptop. Dafür verwenden wir Bücher Python-Bibliothek. Bücher installieren, Geben Sie dies einfach in die Befehlszeile ein

pip install librosa

Jetzt können wir den folgenden Code ausführen, um die Daten zu laden.

Daten, Abtastrate = librosa.load('../data/Train/2022.wav')

Wenn Sie die Daten laden, gibt dir zwei Objekte; ein großes Array einer Audiodatei und die entsprechende Samplerate, mit der sie extrahiert wurde. Jetzt, um dies als Wellenform darzustellen (was ist ursprünglich), Verwenden Sie den folgenden Code

% pylab inline
Importieren von OS
Pandas als pd importieren
Librosa importieren
Globus importieren

plt.figur(Feigengröße=(12, 4))
librosa.display.waveplot(Daten, sr=sampling_rate)

Die Ausgabe sieht wie folgt aus

02-8624174

Lassen Sie uns nun unsere Daten visuell untersuchen und sehen, ob wir Muster in den Daten finden können..

Klasse:  Presslufthammer
Buchse-3592648

Klasse: Bohren
Bohrer-1108357
Klasse: Hundebellen
Hund-4490110

Wir sehen, dass es schwierig sein kann, zwischen Drucklufthammer und Bohren zu unterscheiden, aber es ist immer noch leicht zwischen Hundegebell und Piercing zu unterscheiden. Um weitere Beispiele dieses Typs zu sehen, Sie können diesen Code verwenden

i = random.choice(train.index)

audio_name = train.ID[ich]
path = os.path.join(data_dir, 'Bahn', str(audio_name) + '.wav')

drucken('Klasse: ', train.Klasse[ich])
x, sr = librosa.load('../daten/Zug/' + str(Zug.ID[ich]) + '.wav')

plt.figur(Feigengröße=(12, 4))
librosa.display.waveplot(x, sr=sr)

Dazwischenliegend: unsere erste Präsentation

Wir werden einen ähnlichen Ansatz wie für das Problem der Alterserkennung anwenden, um die Klassenverteilungen zu sehen und nur das maximale Auftreten aller Testfälle als diese Klasse vorherzusagen.

Schauen wir uns die Verteilungen für dieses Problem an.

train.Class.value_counts()
aus[10]:

Presslufthammer 0.122907
Motor im Leerlauf 0.114811
Sirene 0.111684
dog_bark 0.110396
Klimaanlage 0.110396
Kinder spielen 0.110396
Straßenmusik 0.110396
Bohren 0.110396
auto_horn 0.056302
Schuss 0.042318

Wir sehen, dass die Klasse der Drucklufthammer mehr Werte hat als jede andere Klasse. Lassen Sie uns also unsere erste Präsentation mit dieser Idee erstellen.

test = pd.read_csv('../data/test.csv')
Prüfung['Klasse'] = 'Presslufthammer'
test.to_csv('sub01.csv', index=Falsch)

Dies scheint eine gute Idee als Maßstab für jede Herausforderung zu sein, aber für dieses problem, scheint ein bisschen unfair. Dies liegt daran, dass der Datensatz nicht sehr unausgewogen ist.

Lass uns die Herausforderung lösen! Teil 2: Bessere Modelle bauen

Sehen wir uns nun an, wie wir die zuvor erlernten Konzepte nutzen können, um das Problem zu lösen.. Wir werden diese Schritte befolgen, um das Problem zu beheben.

Paso 1: Audiodateien hochladen
Paso 2: Funktionen aus Audio extrahieren
Paso 3: Konvertieren von Daten, um sie in unser Deep-Learning-Modell zu übertragen
Paso 4: Führen Sie ein Deep-Learning-Modell aus und erhalten Sie Ergebnisse

Unten ist ein Code, wie ich diese Schritte implementiert habe

Paso 1 Ja 2 kombiniert: Audiodateien laden und Funktionen extrahieren

def Parser(Reihe):
   # function to load files and extract features
   file_name = os.path.join(os.path.abspath(data_dir), 'Bahn', str(Zeilen.ID) + '.wav')

   # handle exception to check if there isn't a file which is corrupted
   try:
      # here kaiser_fast is a technique used for faster extraction
      X, sample_rate = librosa.load(Dateiname, res_type="kaiser_fast") 
      # we extract mfcc feature from data
      mfccs = np.mean(librosa.feature.mfcc(y = X, sr=sample_rate, n_mfcc=40).T,Achse=0) 
   außer Ausnahme als e:
      drucken("Beim Parsen der Datei ist ein Fehler aufgetreten: ", Datei)
      return Keine, None
 
   feature = mfccs
   label = row.Class
 
   return [Besonderheit, Etikett]

temp = train.apply(Parser, Achse=1)
temp.spalten = ['Besonderheit', 'Etikett']

Paso 3: Konvertieren von Daten, um sie in unser Deep-Learning-Modell zu übertragen

aus sklearn.preprocessing import LabelEncoder

X = np.array(temp.feature.tolist())
y = np.array(temp.label.tolist())

lb = LabelEncoder()

y = np_utils.to_categorical(lb.fit_transform(Ja))

Paso 4: Führen Sie ein Deep-Learning-Modell aus und erhalten Sie Ergebnisse

numpy als np importieren
von keras.models importieren Sequential
aus keras.layers importieren dicht, Aussteigen, Aktivierung, Ebnen
aus keras.layers importieren Sie Convolution2D, MaxPooling2D
von keras.optimizers importieren Adam
aus keras.utils importieren np_utils
von sklearn Importmetriken

num_labels = y.shape[1]
filter_size = 2

# Modell bauen
Modell = Sequentiell()

model.add(Dicht(256, input_shape=(40,)))
model.add(Aktivierung('relu'))
model.add(Aussteigen(0.5))

model.add(Dicht(256))
model.add(Aktivierung('relu'))
model.add(Aussteigen(0.5))

model.add(Dicht(num_labels))
model.add(Aktivierung('softmax'))

model.compile(Verlust="kategoriale_Kreuzentropie", Metriken=['Richtigkeit'], Optimierer="Adam")

Jetzt trainieren wir unser Modell

model.fit(x, Ja, batch_size=32, Epochen=5, Validation_data=(val_x, val_y))

Das ist das Ergebnis, das ich während des Trainings bekommen habe 5 Epochen

Trainieren auf 5435 Proben, validieren an 1359 Proben
Epoche 1/10
5435/5435 [==============================] - 2S - Verlust: 12.0145 - acc: 0.1799 - Wertverlust: 8.3553 - val_acc: 0.2958
Epoche 2/10
5435/5435 [==============================] - 0S - Verlust: 7.6847 - acc: 0.2925 - Wertverlust: 2.1265 - val_acc: 0.5026
Epoche 3/10
5435/5435 [==============================] - 0S - Verlust: 2.5338 - acc: 0.3553 - Wertverlust: 1.7296 - val_acc: 0.5033
Epoche 4/10
5435/5435 [==============================] - 0S - Verlust: 1.8101 - acc: 0.4039 - Wertverlust: 1.4127 - val_acc: 0.6144
Epoche 5/10
5435/5435 [==============================] - 0S - Verlust: 1.5522 - acc: 0.4822 - Wertverlust: 1.2489 - val_acc: 0.6637

Scheint in Ordnung zu sein, aber natürlich kannst du die Punktzahl erhöhen. (PD: könnte Präzision von 80% in meinem Validierungsdatensatz). Jetzt bist du dran, Können Sie diese Punktzahl erhöhen?? Wenn ja, Lass es mich in den Kommentaren unten wissen!!

Zukünftige Schritte zum Erkunden

Nachdem wir nun einfache Anwendungen gesehen haben, wir können uns weitere Methoden einfallen lassen, die uns helfen können, unsere Punktzahl zu verbessern.

  1. Wir wenden ein einfaches neuronales Netzmodell auf das Problem an. Unser nächster unmittelbarer Schritt sollte sein verstehen, wo das Modell versagt und warum. Mit diesem, Wir möchten unser Verständnis von Algorithmusfehlern konzeptualisieren, damit wir das nächste Mal ein Modell erstellen, mach nicht die gleichen fehler.
  2. Wir können bauen effizientere Modelle dass unsere “beste Modelle”, wie konvolutionelle neuronale Netze oder rekurrente neuronale Netze. Es hat sich gezeigt, dass diese Modelle diese Art von Problemen leichter lösen.
  3. Wir haben das Konzept von berührt Datenerweiterung, aber wir wenden sie hier nicht an. Sie können es versuchen, um zu sehen, ob es für das Problem funktioniert.

Abschließende Anmerkungen

In diesem Artikel, Ich habe einen kurzen Überblick über die Audioverarbeitung mit einer Fallstudie zur UrbanSound-Challenge gegeben. Ich habe auch die Schritte gezeigt, die Sie beim Umgang mit Audiodaten in Python mit den Paketbüchern ausführen. Mit diesem “shastra” in deiner Hand, Ich hoffe, Sie können Ihre eigenen Algorithmen in der Urban Sound Challenge testen, oder versuchen Sie, Ihre eigenen Audioprobleme im täglichen Leben zu lösen. Wenn Sie Vorschläge haben / Idee, lass es mich in den Kommentaren unten wissen.

Lernen, anheuern , hacken und angestellt werden!

black-1600149play_video-3095086

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.