So ändern Sie die Sprachsynthese
Die ausdrucksstarken neuronalen Stimmen, die mit dem Service IBM Watson® Text to Speech verfügbar sind, bieten einige zusätzliche Funktionen, die bei anderen Arten von Stimmen nicht verfügbar sind: Verwendung von Sprechstilen, Hervorhebung von Interjektionenund Hervorhebung von Wörtern. Diese Funktionen sind sowohl für die HTTP- als auch für die WebSocket-Schnittstelle verfügbar.
Die Features beinhalten die Verwendung von Elementen der Speech Synthesis Markup Language (SSML). Die Beschreibungen der Features enthalten Informationen zur Interaktion mit zugehörigen SSML-Elementen und -Attributen.
Sprechstile verwenden
Die expressiven neuronalen Stimmen bestimmen die Stimmung des Textes aus dem Kontext seiner Wörter und Phrasen. Die Rede, die sie produzieren, spiegelt neben einem sehr dialogorientierten Stil die Stimmung des Textes wider. Die expressiven Stimmen drücken natürlich standardmäßig Dankbarkeit, Dankbarkeit, Glück, Empathie, Verwirrung und andere Gefühle aus, ohne explizites zusätzliches Tagging.
Sie können jedoch die natürlichen Tendenzen der Stimmen verschönern, indem Sie das Element <express-as>
mit dem erforderlichen Attribut style
verwenden, um anzugeben, dass der Text ganz oder teilweise bestimmte
Merkmale hervorheben soll. Diese Merkmale werden als Sprechstile bezeichnet:
cheerful
-Äußert Glück und gute Nachrichten. Der Stil ist optimistisch, einladend und vermittelt eine positive Botschaft.empathetic
-drückt Empathie und Mitgefühl aus. Der Stil hat sympathische Untertöne, aber es ist nicht übermäßig traurig.neutral
-Äußert Objektivität und Ebenheit. Der Stil strebt nach weniger Emotionen und vermittelt stattdessen einen gleichmäßigeren und unterrichtenden Ton.uncertain
-Äußert Unsicherheit und Verwirrung. Der Stil vermittelt das Gefühl, unsicher oder im Zweifel zu sein.
In vielen Fällen ist die Wirkung der Stile sehr subtil. In solchen Fällen sind die Unterschiede möglicherweise nicht ohne weiteres aus dem ausdrucksstarken Standardton zu erkennen. Es gibt jedoch Fälle, in denen der Stil die inhärente Fähigkeit der Stimmen, Emotionen zu erkennen und auszudrücken, hörbar verbessern kann. Die Unterschiede sind oft nur bei bestimmten Wörtern oder Phrasen erkennbar.
Sprechstile mit SSML ausdrücken
Die folgende HTTP-Anfrage verwendet das <express-as>
-Element mit einem style
von cheerful
, um den Sprechstil des gesamten Eingabetextes zu ändern. Im Beispiel wird die Stimme en-US_EmmaExpressive
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output full-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news! I am very happy for you!</express-as>\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output full-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news! I am very happy for you!</express-as>\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
Das folgende Beispiel für eine Anfrage an HTTP verwendet den Stil von cheerful
nur für den ersten Satz der Anfrage. Der zweite Satz wird mit der Standardstimme gesprochen. Im Beispiel wird erneut die Stimme en-US_EmmaExpressive
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output partial-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news!</express-as> Do you need any further help?\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output partial-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news!</express-as> Do you need any further help?\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
Hervorhebung von Interjektionen
Wenn Sie expressive neuronale Stimmen verwenden, erkennt der Service automatisch eine Reihe allgemeiner Interjektionen basierend auf dem Kontext. In der resultierenden Audio, es gibt ihnen die natürliche Betonung, dass ein Mensch würde in normalen Gespräch verwenden. Expressive Stimmen unterstützen eine andere Gruppe von Interjektionen basierend auf der Sprache. Weitere Informationen zu den unterstützten Interjektionen finden Sie auf den sprachspezifischen Seiten.
Interjektionen mit SSML aktivieren oder inaktivieren
Der Service interpretiert und spricht die meisten Interjektionen wie erwartet aus. Es gibt jedoch einige Interjektionen, die in einem anderen Kontext verwendet werden können. In solchen Fällen ist das Standardverhalten des Service, solche
Interjektionen standardmäßig zu inaktivieren. Sie können SSML verwenden, um solche Interjektionen zu aktivieren oder inaktivieren. Das Attribut interpret-as
des SSML-Elements <say-as>
akzeptiert den zusätzlichen
Wert interjection
. Wenn Sie das Attribut interpret-as
mit dem Wert interjection
verwenden, schließen Sie das zusätzliche Attribut enabled
mit dem Wert true
oder false
ein, um anzugeben, ob das Wort als Interjektion ausgesprochen werden soll. Jede Sprache verfügt über eine andere Untergruppe von Interjektionen, die über SSML aktiviert/inaktiviert werden können. Weitere Informationen dazu, welche Interjektionen
mit SSML aktiviert/inaktiviert werden können, finden Sie auf den sprachspezifischen Seiten.
Die folgende Beispielanforderung für HTTP weist den Dienst an, oh
und aha
nicht als Interjektionen auszusprechen. Im Beispiel wird die Stimme en-US_AllisonExpressive
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output disabled-interjections.wav \
--data "{\"text\":\"<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonExpesssive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output disabled-interjections.wav \
--data "{\"text\":\"<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonExpesssive"
Wörter hervorheben
Alle expressiven Stimmen verwenden einen interaktiven Stil, der natürlich die richtige Intonation aus dem Kontext anwendet. Sie können das SSML-Element <emphasis>
jedoch verwenden, um anzugeben, dass mindestens ein Wort in
der synthetisch erstellten Audioausgabe mehr oder weniger hervorgehoben werden soll. Die Spannungsänderung kann durch eine Erhöhung oder Abnahme der Tonhöhe, des Zeitpunkts, der Lautstärke oder anderer akustischer Attribute angezeigt werden.
Das Element <emphasis>
unterstützt ein optionales Attribut level
, das einen der folgenden Werte akzeptiert:
none
-Verhindert, dass der Service Text hervorhebt, der andernfalls hervorgehoben werden könntemoderate
-Stellt eine auffällige Hervorhebung des Textes bereit Dieser Wert ist der Standardwert, wenn Sie das Attributlevel
nicht angeben.strong
-Stellt eine größere Gewichtung für den Text bereit als diemoderate
-Ebene.reduced
-Der Text wird hervorgehoben, indem die Signifikanz in den Audiodaten reduziert wird. Diese Ebene ist das Gegenteil von der Betonung des Textes.
Tabelle 3 enthält Beispiele für jede verfügbare level
für das Element emphasis
. Die Beispiele verwenden die Stimme en-US_MichaelExpressive
. Eine Anforderung, die das Element emphasis
verwendet,
schlägt fehl, wenn eine angegebene Ebene nicht einer der unterstützten Werte ist.
Betonungsgrad | Beispielsatz | Audiobeispiel |
---|---|---|
Keine Hervorhebung | "I am going to give her the book." |
|
none |
"I am going to give her the <emphasis level='none'>book</emphasis>." |
|
moderate |
"I am going to <emphasis level='moderate'>give</emphasis> her the book." |
|
strong |
"I am going to <emphasis level='strong'>give</emphasis> her the book." |
|
reduced |
"I <emphasis level='reduced'>am going to give</emphasis> her the book." |
Wort mit SSML hervorheben
Im folgenden Beispiel wird für die Anfrage HTTP das Element <emphasis>
mit einem level
von moderate
(Standard) verwendet, um das Wort give
im Satz hervorzuheben. Im Beispiel wird die
Stimme en-US_MichaelExpressive
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output strong-emphasis.wav \
--data "{\"text\":\"I am going to <emphasis level='moderate'>give</emphasis> her the book.\"}" \
"{url}/v1/synthesize?voice=en-US_MichaelExpesssive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output strong-emphasis.wav \
--data "{\"text\":\"I am going to <emphasis level='moderate'>give</emphasis> her the book.\"}" \
"{url}/v1/synthesize?voice=en-US_MichaelExpesssive"