Speech Synthesis Markup Language (SSML)

Für Ihre Anfrage mit der Text-to-Speech API können Sie die Speech Synthesis Markup Language (SSML) nutzen, um die Audio-Antwort benutzerdefiniert anzupassen. So können Sie z. B. Details zu Pausen angeben und Audio-Formatierungen für Akronyme, Daten, Uhrzeiten, Abkürzungen oder zu zensierenden Text festlegen. Weitere Informationen und Codebeispiele finden Sie in der SSML-Anleitung zu Text-to-Speech.

Nachfolgend sehen Sie ein Beispiel für SSML-Markup und den damit durch die Funktion "Text-to-Speech" synthetisierten Text:

<speak>
  Here are <say-as interpret-as="characters">SSML</say-as> samples.
  I can pause <break time="3s"/>.
  I can play a sound
  <audio src="https://www.example.com/MY_MP3_FILE.mp3">didn't get your MP3 audio file</audio>.
  I can speak in cardinals. Your number is <say-as interpret-as="cardinal">10</say-as>.
  Or I can speak in ordinals. You are <say-as interpret-as="ordinal">10</say-as> in line.
  Or I can even speak in digits. The digits for ten are <say-as interpret-as="characters">10</say-as>.
  I can also substitute phrases, like the <sub alias="World Wide Web Consortium">W3C</sub>.
  Finally, I can speak a paragraph with two sentences.
  <p><s>This is sentence one.</s><s>This is sentence two.</s></p>
</speak>

Durch dieses SSML-Dokument wird folgender Text synthetisiert:

Here are S S M L samples. I can pause [3 second pause]. I can play a sound [audio file plays].
I can speak in cardinals. Your number is ten.
Or I can speak in ordinals. You are tenth in line.
Or I can even speak in digits. The digits for ten are one oh.
I can also substitute phrases, like the World Wide Web Consortium.
Finally, I can speak a paragraph with two sentences. This is sentence one. This is sentence two.

Die Text-to-Speech API unterstützt einen Teil der zur Verfügung stehenden SSML-Tags. Sie werden in diesem Thema beschrieben.

Weitere Informationen zum Erstellen von Audiodaten aus SSML-Eingaben mithilfe von Text-to-Speech finden Sie unter Sprach-Audiodateien erstellen.

Jetzt testen

Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie einfach ein Konto, um die Leistung von Text-to-Speech in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.

Text-to-Speech kostenlos testen

Tipps zur Verwendung von SSML

Je nach Implementierung kann es sein, dass Sie Anführungszeichen in der SSML-Nutzlast mit einem Escapezeichen maskieren müssen, die Sie an Text-to-Speech senden. In dem folgenden Beispiel zeigen wir Ihnen, wie die in einem JSON-Objekt enthaltene SSML-Eingabe formatiert wird.

"{
    'input':{
     'ssml':'<speak>The <say-as interpret-as=\"characters\">SSML</say-as>
          standard <break time=\"1s\"/>is defined by the
          <sub alias=\"World Wide Web Consortium\">W3C</sub>.</speak>'
    },
    'voice':{
      'languageCode':'en-us',
      'name':'en-US-Standard-B',
      'ssmlGender':'MALE'
    },
    'audioConfig':{
      'audioEncoding':'MP3'
    }
  }"

Zeichen reservieren

Vermeiden Sie die Verwendung von SSML-Reservierungszeichen in dem Text, der in Audio umgewandelt werden soll. Wenn Sie ein SSML-Reservierungszeichen verwenden müssen, sollten Sie mithilfe seines Escapecodes verhindern, dass das Zeichen als Code gelesen wird. Die folgende Tabelle enthält reservierte SSML-Zeichen und die zugehörigen Escapecodes.

Zeichen Escapecode
" &quot;
& &amp;
' &apos;
< &lt;
> &gt;

Stimme auswählen

Wenn Sie SSML verwenden, kann die gesamte SSML-Eingabe nur mit einer einzigen Stimme gelesen werden. Sie können die Stimme im Objekt VoiceSelectionParams festlegen. In der SSML-Anleitung zu Text-to-Speech finden Sie ein Codebeispiel, das die Verwendung des VoiceSelectionParams-Objekts veranschaulicht.

Unterstützung für SSML-Elemente

In den folgenden Abschnitten werden die SSML-Elemente und -Optionen beschrieben, die auf Ihrer Actions on Google-Plattform verwendet werden können.

<speak>

Das Stammelement der SSML-Antwort.

Weitere Informationen zum Element speak finden Sie in der W3-Spezifikation.

Beispiel

<speak>
  my SSML content
</speak>

<break>

Ein leeres Element, mit dem Pausen oder andere prosodische Abgrenzungen zwischen Wörtern gesteuert werden. Die Verwendung von <break> zwischen Tokenpaaren ist optional. Wenn dieses Element nicht zwischen Wörtern eingefügt ist, wird die Pause automatisch basierend auf dem linguistischen Kontext festgestellt.

Weitere Informationen zum Element break finden Sie in der W3-Spezifikation.

Attribute

Attribut Beschreibung
time

Legt die Länge der Pause in Sekunden oder Millisekunden fest, z. B. "3s" oder "250ms".

strength

Legt die Stärke der prosodischen Pause mit relativen Werten fest. Gültige Werte sind: "x-weak", "weak", "medium", "strong" und "x-strong". Der Wert "none" gibt an, dass keine prosodische Pause eingefügt werden soll. Sie können damit vom Prozessor generierte prosodische Pausen vermeiden. Die anderen Werte geben eine kontinuierlich nicht abnehmende (konzeptuell zunehmende) Pausenstärke zwischen Tokens an. Stärkere Abgrenzungen werden typischerweise von Pausen begleitet.

Beispiel

Das folgende Beispiel verdeutlicht, wie Sie mit dem Element <break> eine Pause zwischen Schritten einfügen:

<speak>
  Step 1, take a deep breath. <break time="200ms"/>
  Step 2, exhale.
  Step 3, take a deep breath again. <break strength="weak"/>
  Step 4, exhale.
</speak>

<say‑as>

Mit diesem Element können Sie Informationen zur Art des im Element enthaltenen Textkonstrukts angeben. Damit lässt sich auch die Detailgenauigkeit für das Rendering des enthaltenen Texts festlegen.

Das Element <say‑as> hat das erforderliche Attribut interpret-as, das die Aussprache des Werts bestimmt. Je nach dem Wert in interpret-as können Sie die optionalen Attribute format und detail verwenden.

Beispiele

Das Attribut interpret-as unterstützt die folgenden Werte:

  • cardinal

    Das folgende Beispiel wird als "Twelve thousand three hundred forty five" (US-Englisch) oder "Twelve thousand three hundred and forty five" (UK-Englisch) gesprochen:

    <speak>
      <say-as interpret-as="cardinal">12345</say-as>
    </speak>
        
  • ordinal

    Das folgende Beispiel wird als "First" gesprochen:

    <speak>
      <say-as interpret-as="ordinal">1</say-as>
    </speak>
        
  • characters

    Das folgende Beispiel wird als "C A N" (Englisch) gesprochen:

    <speak>
      <say-as interpret-as="characters">can</say-as>
    </speak>
        
  • fraction

    Das folgende Beispiel wird als "five and a half" gesprochen:

    <speak>
      <say-as interpret-as="fraction">5+1/2</say-as>
    </speak>
        
  • expletive oder bleep

    Im folgenden Beispiel wird ein Signalton ausgegeben wie bei einer Zensierung:

    <speak>
      <say-as interpret-as="expletive">censor this</say-as>
    </speak>
        
  • unit

    Passt Einheiten an die Zahl an, wenn zwischen Singular oder Plural unterschieden wird. Das folgende Beispiel wird als "10 feet" gesprochen:

    <speak>
      <say-as interpret-as="unit">10 foot</say-as>
    </speak>
        
  • verbatim oder spell-out

    Das folgende Beispiel wird Buchstabe für Buchstabe (auf Englisch) gesprochen:

    <speak>
      <say-as interpret-as="verbatim">abcdefg</say-as>
    </speak>
        
  • date

    Das Attribut format enthält eine Reihe von Zeichencodes für Datumsfelder. Die in format unterstützten Feldzeichencodes sind {y, m, d} für Jahr, Monat und Tag (des Monats). Wenn die Feldcodes für Jahr, Monat und Tag jeweils einmal angegeben sind, werden 4, 2 und 2 Ziffern erwartet. Wird ein Feldcode wiederholt, entspricht die Anzahl der erwarteten Ziffern der Anzahl der Codewiederholungen. Die Felder im Datumstext können durch Satzzeichen und/oder Leerzeichen getrennt sein.

    Das Attribut detail legt die Aussprache des Datums fest. Für detail='1' ist nur das Tagesfeld und entweder ein Monats- oder ein Jahresfeld erforderlich, wobei es trotzdem möglich ist, alle drei Felder anzugeben. Dies ist der Standard, wenn nicht alle drei Felder angegeben sind. Gesprochen wird es als "The {Ordinaltag} of {Monat}, {Jahr}".

    Das folgende Beispiel wird als "The tenth of September, nineteen sixty" gesprochen:

    <speak>
      <say-as interpret-as="date" format="yyyymmdd" detail="1">
        1960-09-10
      </say-as>
    </speak>
        

    Das folgende Beispiel wird als "The tenth of September" gesprochen:

    <speak>
      <say-as interpret-as="date" format="dm">10-9</say-as>
    </speak>
        

    Für detail='2' sind die Felder für Tag, Monat und Jahr erforderlich. Das ist der Standard, wenn alle drei Felder angegeben sind. Die gesprochene Form lautet "{Monat} {Ordinaltag}, {Jahr}".

    Das folgende Beispiel wird als "September tenth, nineteen sixty" gesprochen:

    <speak>
      <say-as interpret-as="date" format="dmy" detail="2">
        10-9-1960
      </say-as>
    </speak>
        
  • time

    Das folgende Beispiel wird als "Two thirty P.M." gesprochen:

    <speak>
      <say-as interpret-as="time" format="hms12">2:30pm</say-as>
    </speak>
        

    Das Attribut format enthält eine Reihe von Zeichencodes für Uhrzeitfelder. Die in format unterstützten Feldzeichencodes sind {h, m, s, Z, 12, 24} für Stunde, Minute (der Stunde), Sekunde (der Minute), Zeitzone und 12- oder 24-Stunden-Format. Wenn die Feldcodes für Stunde, Minute und Sekunde jeweils einmal angegeben sind, werden 1, 2 und 2 Ziffern erwartet. Wird ein Feldcode wiederholt, entspricht die Anzahl der erwarteten Ziffern der Anzahl der Codewiederholungen. Die Felder im Uhrzeittext können durch Satzzeichen und/oder Leerzeichen getrennt sein. Wenn im Format keine Stunde, Minute oder Sekunde angegeben ist oder keine übereinstimmenden Ziffern vorhanden sind, wird das Feld als Nullwert behandelt. Der Standardwert für format lautet "hms12".

    Mit dem Attribut detail steuern Sie, ob die Uhrzeit im 12- oder 24-Stunden-Format gesprochen wird. Bei Angabe von detail='1' oder wenn beim 24-Stunden-Format detail weggelassen wird, wird das 24-Stunden-Format gesprochen. Bei Angabe von detail='2' oder wenn beim 12-Stunden-Format detail weggelassen wird, wird das 12-Stunden-Format gesprochen.

  • telephone

    Informationen hierzu finden Sie in der W3C Working Group Note SSML 1.0 say-as-Attributwerte in der Beschreibung zu interpret-as='telephone'.

Weitere Informationen zum Element say-as finden Sie in der W3-Spezifikation.

<audio>

Unterstützt das Einfügen aufgezeichneter Audiodateien und anderer Audioformate in Verbindung mit synthetisierter Sprachausgabe.

Attribute

Attribut Erforderlich Standardeinstellung Werte
src Ja URI der Audiomedienquelle. Als Protokoll wird https unterstützt.
clipBegin Nein 0 Eine Zeitangabe, die für den Start der Wiedergabe den Versatz ab dem Start der Audioquelle festlegt. Wenn dieser Wert größer oder gleich der tatsächlichen Dauer der Audioquelle ist, wird kein Audio eingefügt.
clipEnd Nein Unendlich Eine Zeitangabe, die für das Ende der Wiedergabe den Versatz ab dem Start der Audioquelle festlegt. Wenn die tatsächliche Dauer der Audioquelle unter diesem Wert liegt, endet die Wiedergabe zu diesem Zeitpunkt. Wenn clipBegin größer oder gleich clipEnd ist, wird kein Audio eingefügt.
speed Nein 100% Das Verhältnis zwischen Wiedergabegeschwindigkeit der Ausgabe und normaler Eingabegeschwindigkeit als Prozentwert. Das Format ist eine positive reelle Zahl gefolgt von "%". Aktuell wird der Bereich [50% (langsam – halbe Geschwindigkeit), 200% (schnell – doppelte Geschwindigkeit)] unterstützt. Wenn Werte außerhalb dieses Bereichs angegeben werden, kann es eventuell sein, dass sie zu Werten innerhalb des Bereichs abgeändert werden.
repeatCount Nein 1; oder wenn repeatDur festgelegt ist: 10 Eine reelle Zahl, die angibt, wie oft die Audioinhalte eingefügt werden, gegebenenfalls nach Zuschneiden mit clipBegin und/oder clipEnd. Teilwiederholungen werden nicht unterstützt, weshalb der Wert auf die nächste Ganzzahl gerundet wird. Null ist kein gültiger Wert und wird daher als nicht angegeben behandelt. Stattdessen wird dann der Standardwert verwendet.
repeatDur Nein Unendlich Eine Zeitangabe, die als Begrenzung der Dauer der eingefügten Audiowiedergabe dient, nachdem die Attribute clipBegin, clipEnd, repeatCount und speed auf die Quelle angewendet wurden (anstelle der normalen Wiedergabedauer). Wenn die Dauer der bearbeiteten Audiowiedergabe unter diesem Wert liegt, endet die Wiedergabe zu diesem Zeitpunkt.
soundLevel Nein +0dB Hiermit passen Sie die Lautstärke der Audiowiedergabe an. soundLevel gibt den Wert in Dezibel an. Der maximale Bereich ist +/-40dB, wobei der tatsächliche Bereich geringer sein kann. Auch die Ausgabequalität kann innerhalb des Bereichs schwanken.

Die folgenden Einstellungen werden derzeit für die Audiowiedergabe unterstützt:

  • Format: MP3 (MPEG v2)
    • 24.000 Samples pro Sekunde
    • 24.000~96.000 Bit pro Sekunde, feste Abtastrate
  • Format: Opus in Ogg
    • 24.000 Samples pro Sekunde (Super-Breitband)
    • 24.000–96.000 Bit pro Sekunde, feste Abtastrate
  • Format (verworfen): WAV (RIFF)
    • PCM 16-Bit mit Vorzeichen, Little Endian
    • 24.000 Samples pro Sekunde
  • Alle Formate:
    • Einzelner Kanal bevorzugt, Stereo aber akzeptabel
    • Maximale Dauer: 240 Sekunden, für längere Audiowiedergaben gegebenenfalls Medienantworten implementieren
    • Maximale Dateigröße: 5 MB
    • Quell-URL muss HTTPS-Protokoll verwenden
    • Unser User-Agent beim Abrufen der Audiowiedergabe: "Google-Speech-Actions"

Der Inhalt des Elements <audio> ist optional und wird verwendet, wenn die Audiodatei nicht wiedergegeben werden kann, oder das Ausgabegerät kein Audio unterstützt. Wenn im Inhalt das Element <desc> vorkommt, wird für die Anzeige der Textinhalt dieses Elements verwendet. Weitere Informationen finden Sie in der Checkliste für Antworten im Abschnitt über aufgezeichnete Audioinhalte.

Die URL src muss ebenfalls eine HTTPS-URL sein. In Google Cloud Storage können Ihre Audiodateien unter einer HTTPS-URL gehostet werden.

Weitere Informationen zu Medienantworten finden Sie im Leitfaden für Antworten im Abschnitt zu Medienantworten.

Weitere Informationen zum Element audio finden Sie in der W3-Spezifikation.

Beispiel

<speak>
  <audio src="cat_purr_close.ogg">
    <desc>a cat purring</desc>
    PURR (sound didn't load)
  </audio>
</speak>

<p>,<s>

Satz- und Absatzelemente.

Weitere Informationen zu den Elementen p und s finden Sie in der W3-Spezifikation.

Beispiel

<p><s>This is sentence one.</s><s>This is sentence two.</s></p>

Best Practices

  • Verwenden Sie <s>...</s>-Tags, um ganze Sätze einzuschließen. Das gilt vor allem, wenn sie SSML-Elemente enthalten, welche die Prosodie ändern, also <audio>, <break>, <emphasis>, <par>, <prosody>, <say-as>, <seq> und <sub>.
  • Wenn eine Sprachunterbrechung so lang sein soll, dass Sie diese hören können, verwenden Sie <s>...</s>-Tags und fügen Sie die entsprechende Pause zwischen den Sätzen ein.

<sub>

Gibt an, dass der enthaltene Text bei Aussprache durch den Text im Attributwert "alias" ersetzt wird.

Sie können mit dem Element sub auch eine vereinfachte Aussprache eines schwer lesbaren Worts angeben. Im letzten Beispiel unten wird das anhand eines japanischen Texts gezeigt:

Weitere Informationen zum Element sub finden Sie in der W3-Spezifikation.

Beispiele

<sub alias="World Wide Web Consortium">W3C</sub>
<sub alias="にっぽんばし">日本橋</sub>

<mark>

Ein leeres Element, das eine Markierung in die Text- oder Tag-Sequenz einfügt. Die Markierung kann dazu verwendet werden, auf eine bestimmte Position in der Sequenz zu verweisen oder eine Markierung für asynchrone Benachrichtigungen in einen Ausgabestream einzufügen.

Weitere Informationen zum Element mark finden Sie in der W3-Spezifikation.

Beispiel


<speak>
Go from <mark name="here"/> here, to <mark name="there"/> there!
</speak>

<prosody>

Hiermit werden die Tonhöhe, die Sprechgeschwindigkeit und die Lautstärke für den Text im Element angepasst. Unterstützt werden derzeit die Attribute rate, pitch und volume.

Die Attribute rate und volume können gemäß den W3-Spezifikationen festgelegt werden. Den Wert des Attributs pitch können Sie auf drei Arten angeben:

Attribut Beschreibung
name

Die String-ID für jede Markierung.

Option Beschreibung
Relativ Geben Sie einen relativen Wert an (z. B. "low", "medium", "high" usw.), wobei "medium" die Standardtonhöhe ist.
Halbtöne Erhöhen oder verringern Sie die Tonhöhe um "N" Halbtöne mit "+Nst" oder "-Nst". Die Angabe von "+/-" und "st" ist erforderlich.
Prozentsatz Erhöhen oder verringern Sie die Tonhöhe um "N" Prozent mit "+N%" oder "-N%". Die Angabe von "%" ist erforderlich, "+/-" ist optional.

Weitere Informationen zum Element prosody finden Sie in der W3-Spezifikation.

Beispiel

Im folgenden Beispiel wird mit dem Element <prosody> die Sprechgeschwindigkeit verlangsamt und die Sprache zwei Halbtöne tiefer als normal ausgegeben:

<prosody rate="slow" pitch="-2st">Can you hear me now?</prosody>

<emphasis>

Hiermit wird der Text des Elements betont oder die Betonung entfernt. Mit dem Element <emphasis> ändern Sie die Sprache ähnlich wie mit <prosody>, ohne jedoch einzelne Sprachattribute festlegen zu müssen.

Dieses Element unterstützt das optionale Attribut "level" mit den folgenden gültigen Werten:

  • strong
  • moderate
  • none
  • reduced

Weitere Informationen zum Element emphasis finden Sie in der W3-Spezifikation.

Beispiel

Im folgenden Beispiel wird der Text durch das Element <emphasis> als Ankündigung gesprochen:

<emphasis level="moderate">This is an important announcement</emphasis>

<par>

Ein paralleler Mediencontainer, mit dem Sie mehrere Medienelemente gleichzeitig wiedergeben können. Als Inhalt sind nur ein oder mehrere der Elemente <par>, <seq> und <media> zulässig. Elemente vom Typ <media> können in beliebiger Reihenfolge angeordnet sein.

Sofern nicht durch ein untergeordnetes Element eine andere Startzeit angegeben wird, entspricht die implizite Startzeit des Elements der Startzeit des Containers <par>. Wenn für das Attribut begin oder end eines untergeordneten Elements ein Versatzwert angegeben ist, wird der Start des Elements relativ zur Startzeit des Containers <par> verschoben. Das Attribut "begin" des Stammelements <par> wird ignoriert. Der Start erfolgt mit Beginn der Ausgabe des SSML-Sprachsyntheseprozesses für das Stammelement <par>, d. h. effektiv zum Zeitpunkt "null".

Beispiel

<speak>
  <par>
    <media xml:id="question" begin="0.5s">
      <speak>Who invented the Internet?</speak>
    </media>
    <media xml:id="answer" begin="question.end+2.0s">
      <speak>The Internet was invented by cats.</speak>
    </media>
    <media begin="answer.end-0.2s" soundLevel="-6dB">
      <audio
        src="https://actions.google.com/.../cartoon_boing.ogg"/>
    </media>
    <media repeatCount="3" soundLevel="+2.28dB"
      fadeInDur="2s" fadeOutDur="0.2s">
      <audio
        src="https://actions.google.com/.../cat_purr_close.ogg"/>
    </media>
  </par>
</speak>

<seq>

Ein sequenzieller Mediencontainer, mit dem Sie Medienelemente nacheinander wiedergeben können. Als Inhalt sind nur ein oder mehrere der Elemente <seq>, <par> und <media> zulässig. Die Medienelemente werden in der Rendering-Reihenfolge angegeben.

Für die Attribute begin und end untergeordneter Elemente können Versatzwerte festgelegt werden. Weitere Informationen erhalten Sie nachfolgend unter Zeitangabe. Die Versatzwerte dieser untergeordneten Elemente gelten relativ zum Ende des vorherigen Elements in der Sequenz oder relativ zum Beginn des Containers <seq>, wenn es sich um das erste Element handelt.

Beispiel

<speak>
  <seq>
    <media begin="0.5s">
      <speak>Who invented the Internet?</speak>
    </media>
    <media begin="2.0s">
      <speak>The Internet was invented by cats.</speak>
    </media>
    <media soundLevel="-6dB">
      <audio
        src="https://actions.google.com/.../cartoon_boing.ogg"/>
    </media>
    <media repeatCount="3" soundLevel="+2.28dB"
      fadeInDur="2s" fadeOutDur="0.2s">
      <audio
        src="https://actions.google.com/.../cat_purr_close.ogg"/>
    </media>
  </seq>
</speak>

<media>

Steht für eine Medienebene innerhalb des Elements <par> oder <seq>. Als Inhalt für das Element <media> ist ein SSML-Element <speak> oder <audio> zulässig. In der folgenden Tabelle werden die für das Element <media> gültigen Attribute beschrieben.

Attribute

Attribut Erforderlich Standardeinstellung Werte
xml:id Nein Eine eindeutige XML-Kennzeichnung für dieses Element. Codierte Entitäten werden nicht unterstützt. Die erlaubten Kennzeichnungswerte entsprechen dem regulären Ausdruck "([-_#]|\p{L}|\p{D})+". Weitere Informationen finden Sie in der Referenz zu "xml:id".
begin Nein 0 Die Startzeit des Mediencontainers. Wird ignoriert, wenn dies das Stammelement des Mediencontainers ist, das wie der Standardwert "0" behandelt wird. Gültige Stringwerte sind unten im Abschnitt Zeitangabe aufgeführt.
end Nein Die Endzeit des Mediencontainers. Gültige Stringwerte sind unten im Abschnitt Zeitangabe aufgeführt.
repeatCount Nein 1 Eine reelle Zahl, die angibt, wie oft das Medium eingefügt wird. Teilwiederholungen werden nicht unterstützt, weshalb der Wert auf die nächste Ganzzahl gerundet wird. Null ist kein gültiger Wert und wird daher als nicht angegeben behandelt. Stattdessen wird dann der Standardwert verwendet.
repeatDur Nein Eine Zeitangabe, welche die Dauer des eingefügten Mediums begrenzt. Wenn die Dauer des Mediums unter diesem Wert liegt, endet die Wiedergabe zu diesem Zeitpunkt.
soundLevel Nein +0dB Hiermit passen Sie die Lautstärke der Audiowiedergabe an. soundLevel gibt den Wert in Dezibel an. Der maximale Bereich ist +/-40dB, wobei der tatsächliche Bereich geringer sein kann. Auch die Ausgabequalität kann innerhalb des Bereichs schwanken.
fadeInDur Nein 0s Eine Zeitangabe für das Einblenden des Mediums von lautlos bis zum optional angegebenen soundLevel. Wenn die Dauer des Mediums unter diesem Wert liegt, stoppt das Einblenden am Ende der Wiedergabe und der Ton erreicht nicht die angegebene Lautstärke.
fadeOutDur Nein 0s Eine Zeitangabe für das Ausblenden des Mediums vom optional angegebenen soundLevel bis zu lautlos. Wenn die Dauer des Mediums unter diesem Wert liegt, wird die Lautstärke auf einen niedrigeren Wert gesetzt, um sicherzustellen, dass die Stummschaltung am Ende der Wiedergabe erreicht wird.

Zeitangabe

Eine Zeitangabe, die für die Attributwerte "begin" und "end" des Elements <media> und der Mediencontainer (Elemente <par> und <seq>) verwendet wird, ist entweder ein Versatzwert (z. B. +2.5s) oder ein Syncbase-Wert (z. B. foo_id.end-250ms).

  • Versatzwert: Der Zeitversatzwert ist ein SMIL-Timecount-Wert. Zulässige Werte müssen dem folgenden regulären Ausdruck entsprechen: "\s\*(+|-)?\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    Der erste Ziffernstring ist der ganze Teil der Dezimalzahl und der zweite Ziffernstring der Dezimalbruchteil. Das Standardvorzeichen (d. h. "(+|-)?") ist "+". Die Einheitenwerte entsprechen Stunden, Minuten, Sekunden bzw. Millisekunden. Der Standardwert für die Einheiten ist "s" (Sekunden).

  • Syncbase-Wert: Ein Syncbase-Wert ist ein SMIL-Syncbase-Wert. Zulässige Werte müssen dem folgenden regulären Ausdruck entsprechen: "([-_#]|\p{L}|\p{D})+\.(begin|end)\s\*(+|-)\s\*(\d+)(\.\d+)?(h|min|s|ms)?\s\*"

    Die Ziffern und Einheiten werden so wie Versatzwerte interpretiert.

<phoneme>

Sie können das Tag <phoneme> verwenden, um benutzerdefinierte Aussprache von Wörtern inline zu erzeugen. Text-to-Speech akzeptiert die phonetischen Alphabete für IPA und X-SAMPA. Eine Liste der unterstützten Sprachen und Phoneme finden Sie auf der Seite "Phoneme".

Jede Anwendung des Tags <phoneme> leitet die Aussprache eines einzelnen Worts weiter:

  <phoneme alphabet="ipa" ph="ˌmænɪˈtoʊbə">manitoba</phoneme>
  <phoneme alphabet="x-sampa" ph='m@"hA:g@%ni:'>mahogany</phoneme>

Betonungsmarkierungen

Es gibt bis zu drei Betonungsstufen, die in eine Transkription eingebunden werden können:

  1. Primäre Betonung: Diese werden mit /ˈ/ in IPA und /"/ in X-SAMPA gekennzeichnet.
  2. Sekundäre Betonung: Diese werden mit /ˌ/ in IPA und /%/ in X-SAMPA gekennzeichnet.
  3. Ohne Betonung: Wird nicht mit einem Symbol (in einer der beiden Notationen) gekennzeichnet.

Einige Sprachen haben möglicherweise weniger als drei Ebenen oder kennzeichnen überhaupt keine Betonungsplatzierung. Auf der Seite "Phoneme" finden Sie die für Ihre Sprache verfügbaren Betonungsstufen. Betonungsmarkierungen werden am Anfang jeder betonten Silbe platziert. Zum Beispiel im amerikanischen Englisch:

Beispielwort IPA X-SAMPA
water ˈwɑːtɚ "wA:t@`
underwater ˌʌndɚˈwɑːtɚ %Vnd@"wA:t@

Weitgehend passende und verfeinerte Transkriptionen im Vergleich

In der Regel sollten die Transkriptionen eher breit und phonemisch gehalten werden. Im amerikanischen Englisch zum Beispiel transkribieren Sie das intervokalische /t/ (anstatt einen Tap zu verwenden):

Beispielwort IPA X-SAMPA
Butter ˈbʌtɚ anstelle von ˈbʌɾɚ "bVt@` anstelle von "bV4@`

Es gibt einige Fälle, in denen die Verwendung der phonemischen Darstellung dazu führt, dass Ihre TTS-Ergebnisse unnatürlich klingen (z. B. wenn die Phonemfolge anatomisch schwer auszusprechen ist).

Ein Beispiel dafür ist die Stimmanpassung für /s/ im Englischen. In diesem Fall sollte sich die Anpassung in der Transkription widerspiegeln:

Beispielwort IPA X-SAMPA
cats ˈkæts "k{ts
dogs ˈdɑːgz anstelle von ˈdɑːgs "dA:gz anstelle von "dA:gs

um 50 %

Jede Silbe muss einen (und nur einen) Vokal enthalten. Das bedeutet, dass Sie syllabische Konsonanten vermeiden und sie stattdessen mit einem reduzierten Vokal transkribieren sollten. Beispiel:

Beispielwort IPA X-SAMPA
kitten ˈkɪtən anstelle von ˈkɪtn "kIt@n anstelle von "kitn
kettle ˈkɛtəl anstelle von ˈkɛtl "kEt@l anstelle von "kEtl

Auszug

Sie können optional mit /./ Silbengrenzen angeben. Jede Silbe muss einen (und nur einen) Vokal enthalten. Beispiel:

Beispielwort IPA X-SAMPA
readability ˌɹiː.də.ˈbɪ.lə.tiː %r\i:.d@."bI.l@.ti:

Dauer

Text-to-Speech unterstützt <say-as interpret-as="duration">, um Zeitangaben korrekt zu erkennen. Das folgende Beispiel wird als "fünf Stunden und dreißig Minuten" ausgesprochen:

<say-as interpret-as="duration" format="h:m">5:30</say-as>

Der Formatstring unterstützt die folgenden Werte:

Abkürzungen Wert
H Stunde
m Minute
s Sekunden
ms Millisekunden

<voice>

Mit dem Tag <voice> können Sie mehr als eine Stimme in einer einzelnen SSML-Anfrage verwenden. Im folgenden Beispiel ist die Standardstimme eine englische Männerstimme. Alle Wörter werden in dieser Stimme synthetisiert, mit Ausnahme von "qu'est-ce qui t'amène ici", das auf Französisch mit einer weiblichen Stimme anstelle der Standardsprache (Englisch) und des Standardgeschlechts (männlich) verbalisiert wird.

<speak>And then she asked, <voice language="fr-FR" gender="female">qu'est-ce qui
t'amène ici</voice><break time="250ms"/> in her sweet and gentle voice.</speak>

Alternativ können Sie auch den Tag <voice> verwenden, um eine einzelne Stimme (den Namen der Stimme auf der Seite für unterstützte Stimmen) anzugeben, anstatt eine language und/oder ein gender zu spezifizieren:

<speak>The dog is friendly<voice name="fr-CA-Wavenet-B">mais la chat est
mignon</voice><break time="250ms"/> said a pet shop
owner</speak>

Wenn Sie den Tag <voice> verwenden, erwartet Text-to-Speech entweder einen name (den Namen der zu verwendenden Stimme) oder eine Kombination der folgenden Attribute. Alle drei Attribute sind optional, aber Sie müssen mindestens eines angeben, wenn Sie keinen name angeben.

  • gender: Entweder "male", "female" oder "neutral".
  • variant: Wird als Tiebreaker verwendet, wenn es basierend auf Ihrer Konfiguration mehrere Möglichkeiten gibt, welche Stimme zu verwenden ist.
  • language: Die gewünschte Sprache. In einem bestimmten <voice>-Tag kann nur eine Sprache angegeben werden. Geben Sie Ihre Sprache im BCP-47-Format an. Sie finden den BCP-47-Code für Ihre Sprache in der Spalte Sprachcode auf der Seite Unterstützte Stimmen und Sprachen.

Sie können auch die relative Priorität der einzelnen Attribute gender, variant und language steuern. Verwenden Sie dazu zwei zusätzliche Tags: required und ordering.

  • required: Wenn ein Attribut als required gekennzeichnet und nicht ordnungsgemäß konfiguriert ist, schlägt die Anfrage fehl.
  • ordering: Alle Attribute, die nach einem ordering-Tag aufgeführt werden, werden als bevorzugte Attribute und nicht als erforderlich betrachtet. Die Text-to-Speech API berücksichtigt bevorzugte Attribute auf Best-Effort-Basis in der Reihenfolge, in der sie nach dem Tag ordering aufgeführt sind. Wenn bevorzugte Attribute falsch konfiguriert sind, gibt Text-to-Speech möglicherweise eine gültige Stimme zurück, jedoch mit der falschen Konfiguration.

Beispiele für Konfigurationen mit den Tags required und ordering:

<speak>And there it was <voice language="en-GB" gender="male" required="gender"
ordering="gender language">a flying bird </voice>roaring in the skies for the
first time.</speak>
<speak>Today is supposed to be <voice language="en-GB" gender="female"
ordering="language gender">Sunday Funday.</voice></speak>

<lang>

Sie können <lang> verwenden, um Text in mehreren Sprachen in dieselbe SSML-Anfrage aufzunehmen. Alle Sprachen werden in derselben Stimme synthetisiert, sofern Sie die Stimme nicht mit dem Tag <voice> explizit ändern. Der String xml:lang muss die Zielsprache im BCP-47-Format enthalten. Dieser Wert wird in der Tabelle Unterstützte Stimmen als "Sprachcode" aufgeführt. Im folgenden Beispiel wird "chat" in Französisch statt in der Standardsprache (Englisch) verbalisiert:

<speak>The french word for cat is <lang xml:lang="fr-FR">chat</lang></speak>

Text-to-Speech unterstützt das Tag <lang> auf Best-Effort-Basis. Nicht alle Sprachkombinationen liefern die gleichen Qualitätsergebnisse, wenn sie in derselben SSML-Anfrage angegeben wurden. In manchen Fällen kann eine Sprachkombination einen Effekt haben, der zwar nachweisbar, aber subtil ist oder als negativ empfunden wird. Bekannte Probleme:

  • Japanisch mit Kanji-Zeichen wird vom Tag <lang> nicht unterstützt. Die Eingabe wird transliteriert und als chinesische Zeichen gelesen.
  • Semitische Sprachen wie Arabisch, Hebräisch und Persisch werden vom Tag <lang> nicht unterstützt und es gibt keine Sprachwiedergabe. Wenn Sie eine dieser Sprachen verwenden möchten, empfehlen wir Ihnen, das Tag <voice> zu verwenden, um zu einer Stimme zu wechseln, die Ihre gewünschte Sprache spricht (sofern verfügbar).

SSML-Zeitpunkte

Die Text-to-Speech API unterstützt die Verwendung von Zeitpunkten in den erstellten Audiodaten. Ein Zeitpunkt ist ein Zeitstempel (in Sekunden, gemessen ab dem Beginn des generierten Audios), der einem bestimmten Punkt im Skript entspricht. Mit dem Tag <mark> können Sie einen Zeitpunkt in Ihrem Skript festlegen. Wenn die Audiodaten generiert werden, gibt die API den Zeitversatz zwischen dem Beginn des Audiosignals und dem Zeitpunkt zurück.

Das Festlegen eines Zeitpunkts erfolgt in zwei Schritten:

  1. Fügen Sie dem Punkt im Skript, für den Sie einen Zeitstempel benötigen, ein <mark>-SSML-Tag hinzu.
  2. Setzen Sie TimepointType auf SSML_MARK. Wenn dieses Feld nicht festgelegt ist, werden standardmäßig keine Zeitstempel zurückgegeben.

Im folgenden Beispiel werden zwei Zeitpunkte zurückgegeben:

  • timepoint_1: Gibt die Zeit in Sekunden an, zu der das Wort "Mark" im erzeugten Audioinhalt auftaucht.
  • timepoint_2: Gibt die Zeit in Sekunden an, zu der das Wort "see" im generierten Audioinhalt auftaucht.
<speak>Hello <mark name="timepoint_1"/> Mark. Good to <mark
name="timepoint_2"/> see you.</speak>