Akzente zur Spracherzeugung hinzufügen

8

Der erste Teil dieser Frage ist nun sein eigener, hier: Text für Akzente analysieren

Frage: Wie können der generierten Sprache Akzente hinzugefügt werden?

Was ich mir ausgedacht habe:

Ich meine nicht nur Akzentzeichen, oder Beugung, oder irgendetwas Singular so. Ich meine etwas wie einen vollen britischen Akzent oder einen schottischen Akzent, oder Russisch usw.

Ich würde denken, dass dies auch außerhalb der Sprache geschehen könnte. Ex : Etwas auf Russisch könnte mit einem britischen Akzent erzeugt werden, oder etwas auf Mandarin könnte einen russischen Akzent haben.

Ich denke, der grundlegende Prozess wäre dies:

  1. Analysiere den Text
    • Vergleiche mit einer Datenbank (oder etwas Ähnlichem), um festzustellen, was einen Akzent braucht, wie stark er sein sollte, usw.
  2. Erzeugen Sie die Sprache in der angegebenen Sprache
    • Einfach mit normalen Text-to-Speech-Prozessoren.
  3. Ermitteln Sie den angegebenen Akzent basierend auf dem analysierten Text.
    • Dies ist der fragliche Teil.
    • Ich denke, eine Reihe von Amplituden und Filtern würde am besten für den nächsten Schritt funktionieren.
  4. Maschensprache und Akzent.
    • Das wäre der einfache Teil.
    • Es könnte wahrscheinlich durch Multiplizieren der Sprache mit dem Akzent geschehen, wie es bei vielen anderen DSP-Methoden der Fall ist.

Das ist wirklich eher eine allgemeine DSP-Frage, aber ich würde lieber einen programmatischen Algorithmus dafür entwickeln, anstatt eine allgemeine Idee.

    
Jon 15.03.2012, 01:42
quelle

2 Antworten

2

Was ist ein Akzent?

Ein Akzent ist kein Soundfilter; Es ist ein Muster der akustischen Umsetzung von Text in einer Sprache. Sie können keine Aufnahme von amerikanischem Englisch machen, es durch "Array von Amplituden und Filtern" laufen lassen und britisches Englisch herausspringen lassen. Was für DSP nützlich ist, ist Prosodie , nicht Akzent.

Grundsätzlich (und am einfachsten zu modellieren) besteht ein Akzent aus Regeln für die phonetische Realisierung einer Folge von Phonemen. Wahrnehmung von Akzent wird weiter beeinflusst durch Prosodie und durch welche Phoneme ein Sprecher. wählt beim Lesen von Text.

Sprachgenerierung

Der Prozess der Sprachgenerierung hat zwei grundlegende Schritte:

  1. Text-zu-Phoneme: Konvertiert geschriebenen Text in eine Sequenz von Phonemen (plus Suprasegmentale wie Stress und prosodische Informationen wie Äußerungsgrenzen). Dies ist etwas akzentabhängig (z.B. variiert die Ausgabe für "Labor" zwischen amerikanischen und britischen Sprechern).

  2. Phonem-zu-Sprache: Bei der Reihenfolge der Phoneme wird Audio gemäß den Regeln des Dialekts für phonetische Realisierungen von Phonemen erzeugt. (In der Regel kombinieren Sie dann Diphone und stellen dann akustisch die Prosodie ein). Dies ist sehr akzentabhängig und es ist dieser Schritt, der die Hauptqualität des Akzents vermittelt. Ein bestimmtes Phonem, selbst wenn es zwischen zwei Akzenten geteilt wird, kann auffallend unterschiedliche akustische Realisierungen haben.

Normalerweise sind diese gepaart. Während Sie könnten haben einen britischen Akzent Sprachgenerator, der amerikanische Aussprache verwendet, würde das seltsam klingen.

Erzeugen von Sprache mit einem bestimmten Akzent

Das Schreiben eines Text-in-Sprache-Programms ist eine enorme Menge an Arbeit (insbesondere um ein gemeinsames Schema zu implementieren, müssen Sie einen Muttersprachler aufnehmen, der jedes mögliche Diphon in der Sprache spricht), so dass es Ihnen besser geht Verwenden eines vorhandenen.

Kurz gesagt, wenn Sie einen britischen Akzent haben möchten, verwenden Sie eine englische englische Text-zu-Phonem-Engine zusammen mit einer englischen englischen Phonem-Sprache-Engine.

Für gängige Akzente wie amerikanisches und britisches Englisch, Standard-Mandarin, Metropolitan-Französisch usw. gibt es mehrere Optionen, einschließlich Open-Source-Optionen, die Sie ändern können (wie unten). Schauen Sie sich zum Beispiel FreeTTS und an eSpeak . Für weniger gebräuchliche Akzente können existierende Engines leider nicht existieren.

Sprechen von Text mit einem ausländischen Akzent

Englisch-mit-fremd-Akzent ist gesellschaftlich nicht sehr repräsentativ, daher gibt es wahrscheinlich keine vollständigen Systeme.

Eine Strategie wäre, eine Standard-Text-zu-Phonem-Engine für einen nativen Akzent mit einer Phonem-zu-Sprache-Engine für die Fremdsprache zu kombinieren. Zum Beispiel würde ein gebürtiger Russe, der Englisch in den USA gelernt hat, plausibel amerikanische Aussprachen von Wörtern wie Labor verwenden und seine Phoneme auf seine einheimischen russischen Phoneme abbilden, indem er sie wie auf Russisch ausspricht. (Ich glaube, es gibt eine Website, die dies für Englisch und Japanisch tut, aber ich habe den Link nicht.)

Das Problem ist, dass das Ergebnis zu extrem ist. Ein echter Englischlerner würde versuchen, Phoneme zu erkennen und zu erzeugen, die nicht in seiner Muttersprache existieren, und würde auch seine Realisierung seiner einheimischen Phoneme ändern, um die ursprüngliche Aussprache zu approximieren. Wie stark das Ergebnis einem Muttersprachler entspricht, variiert natürlich, aber die Verwendung der reinen fremden Extremlaute ist lächerlich (und meist unverständlich).

Um plausiblen Amerikanisch-Englisch-mit-einem-Russisch-Akzent (zum Beispiel) zu erzeugen, müßten Sie eine Text-zu-Phonem-Engine schreiben. Sie könnten vorhandene amerikanische Englisch und Russisch Text-to-Phonem-Motoren als Ausgangspunkt verwenden. Wenn Sie einen solchen Lautsprecher nicht finden und aufzeichnen möchten, könnten Sie wahrscheinlich immer noch eine vernünftige Approximation mit DSP erhalten, um die Samples dieser beiden Engines zu kombinieren. Bei eSpeak werden Formantensynthesen anstelle von aufgezeichneten Samples verwendet, sodass es einfacher ist, Informationen aus mehreren Sprachen zu kombinieren.

Eine andere Sache, die man beachten sollte, ist, dass ausländische Sprecher oft die Phonotaktik ihrer Muttersprache modifizieren, typischerweise indem sie Konsonantencluster vereinfachen, epenthetische Vokale einfügen oder Vokalsequenzen diphthongieren oder brechen.

Es gibt einige Literatur zu diesem Thema.

>     
Mechanical snail 24.03.2012, 02:06
quelle
4

Diese Frage ist nicht wirklich "Programmierung" per se: Es ist Linguistik. Die Programmierung ist vergleichsweise einfach. Für die Analyse wird das wirklich schwierig, und in Wahrheit ist es wahrscheinlich besser, wenn der Benutzer den Akzent angibt; Oder gehst du für einen automatisierten Geschichtenleser?

Mit modernem Text-to-Speech ist jedoch ein grundlegender Akzent möglich. Kennen Sie das internationale phonetische Alphabet? Ссылка Es listet im Grunde alle Töne auf, die eine menschliche Stimme möglicherweise erzeugen kann. Ein Akzent ist dann nur eine Zuordnung (A-Funktion) vom Alphabet zu sich selbst. Zum Beispiel, um einen amerikanischen Akzent zu einer amerikanischen Person britisch klingen zu lassen (obwohl nicht ausreichend, um es einer britischen Person britisch klingen zu lassen), können Sie alle "r" Töne in der Mitte eines Wortes de-rhotacise. So würde beispielsweise der alveoläre Triller durch den stimmhaften Uvularfrikativ ersetzt werden. (Viele Eckfälle, um nur dafür zu arbeiten).

Lang und kurz: Es ist nicht einfach, weshalb wahrscheinlich niemand es getan hat. Ich bin mir sicher, ein paar Linguistikprofessoren würden sagen, es sei unmöglich. Aber das machen Linguistikprofessoren. Aber Sie müssen im Grunde mehrere dicke Lehrbücher über Akzente und Aussprache lesen, um mit diesem Problem voranzukommen. Viel Glück!

    
DanielOfTaebl 21.03.2012 10:10
quelle