Algorithmus für den Sprachvergleich

8

Gibt es zwei aufgezeichnete Stimmen in digitalem Format, gibt es einen Algorithmus, um die beiden zu vergleichen und einen Koeffizienten der Ähnlichkeit zurückzugeben?

    
ohho 11.05.2010, 07:46
quelle

4 Antworten

4

Ich empfehle, einen Blick in das HTK-Toolkit für die Spracherkennung Ссылка zu werfen, insbesondere den Teil der Feature-Extraktion.

Merkmale, die ich als gute Indikatoren ansehe:

  • Mel-Cepstrum-Koeffizienten (allgemeines Timbre)
  • LPC (für die Oberschwingungen)
miquelramirez 11.05.2010 09:45
quelle
4

Angesichts Ihrer Klarstellung denke ich, wonach Sie suchen Spracherkennungsalgorithmen .

Obwohl Sie nur nach dem Maß der Ähnlichkeit suchen und nicht versuchen, Sprache in Text zu verwandeln, sind die Konzepte immer noch dieselben und ich wäre nicht überrascht, wenn ein großer Teil der Algorithmen sehr nützlich wäre.

>

Allerdings müssen Sie diesen Ähnlichkeitskoeffizienten formeller und präziser definieren, um irgendwo hin zu kommen.

BEARBEITEN: Ich glaube, Spracherkennungsalgorithmen wären nützlich, weil sie Abstraktion des Klangs und Vergleich mit einigen bekannten Formen machen. Konzeptionell ist das vielleicht nicht anders als zwei Aufnahmen zu machen, sie zu abstrahieren und zu vergleichen.

Aus Wikipedia-Artikel über HMM

  

"In der Spracherkennung, das Versteckte   Das Markov-Modell würde eine Sequenz ausgeben   von n-dimensionalen reellwertigen Vektoren   (wobei n eine kleine ganze Zahl ist, wie z   10), eine von diesen alle 10 auszugeben   Millisekunden. Die Vektoren würden   bestehen aus Cepstralkoeffizienten,   welche erhalten werden, indem ein Fourier genommen wird   Transformation eines kurzen Zeitfensters von   Rede und Dekorrelation des Spektrums   mit einer Cosinus-Transformation, dann nehmen   der erste (wichtigste)   Koeffizienten. "

Wenn Sie also einen solchen Algorithmus für beide Aufzeichnungen verwenden, erhalten Sie Koeffizienten, die die Aufzeichnungen repräsentieren, und es könnte viel einfacher sein, Ähnlichkeiten zwischen den beiden zu messen und festzustellen.

Aber jetzt kommst du wieder zur Frage der Definition des "Ähnlichkeitskoeffizienten" und die Einführung von Hunden und Pferden hat nicht wirklich geholfen.

(Nun, es ist ein bisschen, aber in Bezug auf die Auswertung Algorithmen und die Auswahl einer anderen, müssen Sie es besser machen).

    
Unreason 11.05.2010 09:01
quelle
3

Es gibt viele verschiedene Algorithmen - der allgemeine Name für diese Aufgabe ist Speaker Identification - fange mit dieser Wikipedia Seite an und arbeite von dort: Ссылка

    
Paul R 11.05.2010 07:52
quelle
0

Ich bin mir nicht sicher, ob das für Sounddateien funktioniert, aber es gibt dir eine Idee, wie ich weitermachen soll, hoffe ich. Das ist ein grundlegender Weg, um ein Muster (Bild) in einem anderen Bild zu finden.

Sie müssen zuerst das fft der beiden Soundfiles berechnen und dann eine Korrelation machen. In formular würde es wie (Pseudocode) aussehen:

%Vor%

Wobei fft = schnelle Fourier-Transformation, ifft = invers, conj = konjugierter Komplex. Das fft wird an den Abtastwerten der Soundfiles durchgeführt. Die Spitzen im result_corr-Vektor geben Ihnen dann die Positionen mit hoher Korrelation. Beachten Sie, dass beide Sounddateien in diesem Fall die gleiche Größe haben müssen - andernfalls müssen Sie den kürzeren in eine Datei mit dem max (soundFileLength) -Vektor einfügen.

Grüße

Edit:. * bedeutet (in Matlab-Stil) eine komponentenweise mult, du darfst keinen Vektor mult machen! Weiter Edit: Beachten Sie, dass Sie mit komplexen Zahlen arbeiten müssen - aber es gibt einige komplexe Klassen da draußen, also denke ich, dass Sie sich nicht darum kümmern müssen.

    
InsertNickHere 11.05.2010 08:03
quelle