Echtzeit-Erkennung von Nicht-Sprache, Nicht-Musik-Sound aus einem kontinuierlichen Mikrofon-Stream

8

Ich möchte Ereignisse protokollieren, die einem bestimmten Geräusch entsprechen, z. B. wenn eine Autotür knallt oder ein Toaster Toast auswirft.

Das System muss ausgefeilter sein als ein "lauter Geräuschdetektor"; es muss in der Lage sein, diesen spezifischen Ton von anderen lauten Geräuschen zu unterscheiden.

Die Identifikation muss keine Null-Latenz sein, aber der Prozessor muss mit einem kontinuierlichen Strom von eingehenden Daten von einem Mikrofon, das immer eingeschaltet ist, mithalten.

  • Ist diese Aufgabe wesentlich anders als die Spracherkennung, oder könnte ich Spracherkennungsbibliotheken / Toolkits verwenden, um diese Nichtsprachlaute zu identifizieren?
  • Angesichts der Anforderung, dass ich nur einen Ton zuordnen muss (im Gegensatz zum Abgleich zwischen einer Klangbibliothek), gibt es spezielle Optimierungen, die ich vornehmen kann?

Diese Antwort zeigt an, dass ein angepasster Filter wäre angemessen, aber ich bin verschwommen auf die Details. Ich glaube nicht, dass eine einfache Kreuzkorrelation der Audiowellenformdaten zwischen einem Sample des Zieltons und dem Mikrofonstrom aufgrund von Variationen des Zieltons effektiv wäre.

Meine Frage ist auch ähnlich wie diese , die nicht t viel Aufmerksamkeit bekommen.

    
kostmo 27.11.2011, 09:54
quelle

2 Antworten

3

Ich habe eine interessante Arbeit zu diesem Thema gefunden

Es sollte auch für Ihre Anwendung funktionieren, wenn nicht besser als für Fahrzeuggeräusche.

Wenn Sie die Trainingsdaten analysieren, ...

  1. Nimmt Proben von 200ms
  2. Führt eine Fourier-Transformation (FFT) für jede Probe durch
  3. Führt eine Hauptkomponentenanalyse zu den Häufigkeitsvektoren

    durch
    • Berechnet den Mittelwert aller Beispiele dieser Klasse
    • Subtrahiert den Mittelwert von den Beispielen
    • Berechnet die Eigenvektoren der mittleren Kovarianzmatrix (Mittelwert der äußeren Produkte jedes Vektors mit sich selbst)
    • Speichert die mittleren und die wichtigsten Eigenvektoren.

Dann, um einen Sound zu klassifizieren, ...

  1. Nimmt Proben von 200ms (S).
  2. Führt eine Fourier-Transformation für jede Probe durch.
  3. Subtrahiert den Mittelwert der Klasse (C) vom Frequenzvektor (F).
  4. Multipliziert den Frequenzvektor mit jedem Eigenvektor von C und gibt jeweils eine Zahl an.
  5. Subtrahiert das Produkt jeder Zahl und den entsprechenden Eigenvektor von F.
  6. Nimmt die Länge des resultierenden Vektors an.
  7. Wenn dieser Wert unter einer bestimmten Konstante liegt, wird S als zur Klasse C gehörend erkannt.
Markus Jarderot 27.11.2011 12:50
quelle
3

Diese Doktorarbeit, Nicht-Sprach-Umgebungsgeräuschklassifizierung System für autonome Überwachung , von Cowling (2004), hat experimentelle Ergebnisse zu verschiedenen Techniken zur Audio-Merkmalsextraktion, sowie Klassifizierung. Er verwendet Umgebungsgeräusche wie klirrende Tasten und Schritte und konnte eine Genauigkeit von 70% erreichen:

  

Die beste Technik ist entweder die kontinuierliche Wavelet-Transformation   Merkmalsextraktion mit Dynamic Time Warping oder Mel-Frequency Cepstral   Koeffizienten mit dynamischem Time Warping. Beide dieser Techniken   erreichen Sie eine Erkennungsrate von 70%.

Wenn Sie sich auf einen Ton beschränken, können Sie vielleicht eine höhere Erkennungsrate erreichen?

Der Autor erwähnt auch, dass Techniken, die mit der Spracherkennung ziemlich gut funktionieren (Lernvektorquantisierung und neuronale Netze), mit Umgebungsgeräuschen nicht so gut funktionieren.

Ich habe auch einen neueren Artikel hier gefunden: Erkennung von Audio-Ereignissen für die semantische Videosuche , von Bugalho et al. (2009), wo sie Tonereignisse in Filmen entdecken (wie Gewehrschüsse, Explosionen usw.).

Ich habe keine Erfahrung in diesem Bereich. Ich bin nur auf dieses Material gestoßen, weil Ihre Frage mein Interesse geweckt hat. Ich poste meine Funde hier in der Hoffnung, dass es bei Ihrer Recherche hilft.

    
Emile Cormier 27.11.2011 11:41
quelle