Wie ist es möglich, die Stimme einer Person aus 100 anderen Stimmen herauszufiltern?

8

Ich habe gerade erfahren, dass die menschliche Stimme keine einzelne Sinuswelle ist, sondern eine Reihe unbegrenzter Sinuswellen mit jeweils unterschiedlichen Frequenzen.

Laut Wikipedia

Die Stimme besteht aus Geräuschen, die von einem Menschen erzeugt werden, der die Stimmlippen zum Sprechen, Singen, Lachen, Weinen, Schreien usw. verwendet. Ihre Frequenz reicht von etwa 60 bis 7000 Hz.

Wenn es sich bei der menschlichen Stimme also um ein zusammengesetztes Signal handelt, enthält sie verschiedene Frequenzbereiche zwischen 60 Hz und 7 kHz.

Angenommen, es gibt eine Gruppe von Personen, die alle zusammen dasselbe Lied singen. Jede Person hat ihre eigenen Sprachfrequenzbereiche.

Zum Beispiel,

Wenn eine Person A die folgenden Frequenzen hat: 100 Hz, 250 Hz, 6 kHz, 10 Hz, 87 Hz, 52 Hz, 2 kHz .......

und eine Person B hat die folgenden, 217Hz1, 11Hz, 12Hz, 2323Hz, 839Hz, 4KHz, 100Hz, 10Hz .....

Es muss so viele Frequenzen geben, die sowohl in der Person A als auch in der Person A ähnlich sind, wie im obigen Beispiel, dass die Frequenzen 100 Hz und 10 Hz zwischen zwei Personen gemeinsam sind.

Ich habe mir eine TV-Show mit dem Namen "Fringe" angesehen, in der die Stimme des jeweiligen Mannes aus einer Audiodatei herausgefiltert wurde, während dort auch andere Personen anwesend waren.

Wie filtern sie also genau die Stimme einer Person aus der Stimme von Hunderten von Menschen heraus, wenn es so viele Frequenzen gibt, die allen gemeinsam sind? Hat dies etwas mit den Amplituden der Frequenzen einer Person zu tun?

Sufiyan Ghori
quelle
Es gibt mehrere Möglichkeiten, wie dies erreicht werden kann. Sie müssen mehr Details darüber angeben, welche Methode sie in der TV-Show verwendet haben.
Endolith
10
Fernsehsendungen machen viele Spezialeffekte aus. Dies war wahrscheinlich ein anderer. Menschen glauben, dass sie dies tun können, aber es stellt sich heraus, dass diese Wahrnehmung normalerweise eine Menge unbewusster Vermutungen beinhaltet.
hotpaw2

Antworten:

6

Wenn das Signal mit nur einem Mikrofon aufgezeichnet wird, können Sie Methoden wie die spektrale Subtraktion verwenden. Diese Methode eignet sich besser für "konstante" Geräusche wie die Geräusche eines Lüfters oder eines Leerlaufmotors. Andere Methoden beruhen auf Statistiken und Wahrnehmungsmodellen der Sprache. Wenn das Signal mit mehreren Mikrofonen aufgezeichnet wird, können Sie die Blindquellentrennung zum Trennen der (Sprach-) Signale verwenden. Nach dem heutigen Stand werden Sie keine perfekten Ergebnisse erzielen. Das typische Endergebnis ist immer ein Kompromiss zwischen "Rauschen" und Klarheit des interessierenden Sprachsignals. Mehr "Rauschunterdrückung" -> mehr Verschlechterung des interessierenden Signals.

dspGuru
quelle
1
Willkommen bei dsp.se :) Ich möchte einige freundliche Ratschläge und Anregungen geben: Ihre erste Antwort ist gut, Glückwunsch, nicht jeder bietet auf Anhieb gute Antworten. Wenn Sie hier mehr teilnehmen möchten, möchte ich Ihnen einige Tipps geben, wie Sie gute Antworten großartig machen können : Sie enthalten normalerweise Links und Verweise und / oder ein oder zwei Sätze Erklärungen zu den vorgeschlagenen Methoden (und warum sie gut passen für das Problem). Gute Antworten nutzen auch die Formatierung am besten: Es gibt Listen und Aufzählungszeichen, Absätze und Zitate, und wenn es gut aussieht, ist es einfacher zu lesen. Viel Spaß hier!
Penelope
Was mein Anliegen ist, jeder hat eine ähnliche Frequenz. Wie würden wir dann wissen, welche Frequenz zu wem gehört? Was ist die allgemeine Idee dahinter?
Sufiyan Ghori
1
Wenn Sie zwei Sprecher gleichzeitig sprechen, würden Sie es nicht wissen - aber Sie könnten eine Vermutung anstellen. Wenn Sie eine Frequenzanalyse durchführen, werden Sie feststellen, dass Frequenzen im gesamten Spektrum getroffen werden, und Sie können nicht einfach einen bestimmten Satz von Frequenzen herausnehmen und sagen, dies ist Lautsprecher1 und ein anderer Satz von Frequenzen, und sagen, dies ist Lautsprecher2. Wenn Sie entscheiden möchten, wer wann spricht, müssen Sie einen Code implementieren, der diese Entscheidung trifft. Höchstwahrscheinlich basiert es auf einem Modell der Sprecher (dh der Personen, die sprechen).
dspGuru
1
Sie können dann die Entscheidung verwenden, um Audio
stummzuschalten
Meinst du, das ist nicht möglich?
Sufiyan Ghori
-1

Okay, nehmen wir an, wir haben eine Audiodatei von zwei Personen, die miteinander sprechen. Wenn sie nicht gleichzeitig sprechen würden, wäre es möglich, das tonale Element ihrer Rede zu trennen. Es mag schwieriger sein, die Geräuschelemente ihrer Sprache (ssss oder fffff-Töne) zu trennen, aber wenn sie nicht gleichzeitig sprechen, ist dies möglicherweise möglich. Dies wäre viel einfacher, wenn wir eine Spektralanalyse des Schalls durchführen könnten, ohne die Phaseninformationen zu verlieren.

Grundsätzlich nimmt die Spektralanalyse eine Wellenform (Klang als einzelne Welle oder Linie) und trennt alle einzelnen Töne, sodass Sie sie rechtzeitig von niedrig nach hoch und von links nach rechts sehen können. Dabei gehen die meisten Informationen, die den Anstieg und Abfall der einzelnen Wellenform anzeigen, verloren. Wenn wir die Phaseninformationen beibehalten könnten, wäre dies viel einfacher, da alle einzelnen Komponentenfrequenzen einer Stimme harmonisch miteinander in Beziehung stehen würden und somit ihre Phase ausgerichtet wäre.

Derzeit kenne ich keinen Algorithmus, der dies erreicht, aber ich glaube, dass dies theoretisch möglich ist. Ich erinnere mich, dass ich einen Artikel über Melodynes Creater Peter Neubäcker gelesen habe, der daran arbeitet, dies zu tun, damit zwei zusammen singende Sänger getrennt werden können, aber ich weiß nicht, wie ich diesen Artikel wiederfinden würde

Kamalmanzukie
quelle