Merkmale der Sprachsynthese ändern
Der Service IBM Watson® Text to Speech enthält Abfrageparameter, mit deren Hilfe Sie die Merkmale der Sprachsynthese für eine gesamte Anforderung global ändern können: rate_percentage
, pitch_percentage
und spell_out_mode
.
Diese Parameter sind sowohl für die HTTP- als auch für die WebSocket-Schnittstelle verfügbar.
Jeder dieser Parameter interagiert mit Elementen der Speech Synthesis Markup Language (SSML). Die Beschreibungen der Parameter enthalten Informationen zu ihrer Interaktion mit zugehörigen SSML-Elementen und -Attributen.
Sprechgeschwindigkeit ändern
Der Parameter rate_percentage
ist eine Betafunktionalität.
Die Sprechgeschwindigkeit ist die Geschwindigkeit, mit der der Service den Text spricht, den er in Sprache synthetisiert. Eine höhere Rate führt dazu, dass der Text schneller gesprochen wird; eine niedrigere Rate bewirkt, dass der Text langsamer gesprochen wird.
Mit dem optionalen Abfrageparameter rate_percentage
können Sie die Rate der synthetisch erstellten Sprache für eine Stimme ändern. Jede Stimme hat eine Standardsprechrate, die optimiert ist, um eine normale Sprachrate darzustellen.
Der Parameter akzeptiert eine ganze Zahl, die die prozentuale Änderung gegenüber dem Standardwert der Stimme darstellt.
- Geben Sie eine negative Ganzzahl mit Vorzeichen an, um die Sprechgeschwindigkeit um diesen Prozentsatz zu reduzieren. Beispiel:
-10
reduziert die Rate um zehn Prozent. - Geben Sie eine positive ganze Zahl ohne Vorzeichen oder mit Vorzeichen an, um die Sprechgeschwindigkeit um diesen Prozentsatz zu erhöhen. Beispiel:
10
und+10
erhöhen die Rate um zehn Prozent. - Geben Sie
0
an oder lassen Sie den Parameter weg, um die Standardsprechrate für die Stimme abzurufen.
Die beste Methode, um festzustellen, wie sich der Parameter auf die Rate einer bestimmten Stimme auswirkt, ist, mit verschiedenen Werten zu experimentieren. Erhöhen oder verringern Sie die Rate inkrementell um fünf oder zehn Prozent, bevor Sie
größere Änderungen versuchen. Wenn die Rate verringert wird, können Werte, die kleiner als -50
sind, zu einer unzureichenden Aussprache führen. Wenn Sie die Rate erhöhen, können Werte größer als 100
zu Ergebnissen
führen, die sich nicht von 100
unterscheiden.
Tabelle 1 enthält Beispiele dafür, wie der Service die Sprechgeschwindigkeit mit unterschiedlichen Werten für den Parameter rate_percentage
ändert. In den Beispielen wird en-US_AllisonV3Voice
verwendet.
Spezifikation des Parameters rate_percentage |
Audiobeispiel |
---|---|
rate_percentage=0 Der Service verwendet die Standardsprechrate. Sie können den Parameter auch weglassen, um das Standardverhalten abzurufen. |
|
rate_percentage=-20 Der Service verwendet eine um 20 Prozent langsamere Sprachübertragungsrate. |
|
rate_percentage=20 Der Service verwendet eine Sprachübertragungsrate von 20 Prozent schneller. |
Interaktion mit SSML-Element <prosody>
Der Parameter rate_percentage
ändert die Sprechgeschwindigkeit für eine gesamte Anforderung. Sie können auch das Attribut rate
des SSML-Elements <prosody>
verwenden, um die Rate bestimmter Textwörter
zu ändern. Obwohl der Parameter rate_percentage
nur einen Prozentwert akzeptiert, akzeptiert das Attribut rate
Werte unterschiedlicher Formate. Weitere Informationen finden Sie unter Attribut rate
.
Wenn Sie den Parameter rate_percentage
und auch das Attribut rate
des Tags <prosody>
verwenden, um die Rate für bestimmten Text derselben Anforderung zu ändern, sind die Effekte multiplikativ. Angenommen,
Sie geben den Parameter rate_percentage
mit dem Wert -10
an, wodurch sich die Sprechgeschwindigkeit um 10 Prozent verringert. Wenn Sie auch das Element <prosody>
verwenden, um ein Äquivalent rate
von -10%
für bestimmten Text der Anforderung anzugeben, wird dieser Text mit einer Rate gesprochen, die 81 Prozent der Standardrate für die Stimme beträgt.
Beispiele für Sprechgeschwindigkeit
Die folgende HTTP POST /v1/synthesize
-Methode verwendet den rate_percentage
-Abfrageparameter mit dem Wert -5
. Die resultierende Audioausgabe wird mit einer Geschwindigkeit gesprochen, die fünf Prozent
langsamer als standardmäßig ist. Im Beispiel wird die Stimme für amerikanisches Englisch en-US_AllisonV3Voice
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output rate-percentage.wav \
--data "{\"text\":\"This text is spoken five percent slower than the default.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice&rate_percentage=-5"
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 rate-percentage.wav \
--data "{\"text\":\"This text is spoken five percent slower than the default.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice&rate_percentage=-5"
Das folgende WebSocket-Beispiel zeigt die Einbeziehung des Parameters mit demselben Wert in die Anforderung zum Herstellen einer Verbindung:
var access_token = '{access_token}';
var wsURI = '{ws_url}/v1/synthesize'
+ '?access_token=' + access_token
+ '&voice=en-US_AllisonV3Voice'
+ '&rate_percentage=-5';
var websocket = new WebSocket(wsURI);
Sprechabstand ändern
Der Parameter pitch_percentage
ist eine Betafunktionalität.
Die Tonhöhe stellt die Tonhöhe der Sprache dar, die der Dienst synthetisiert, was sich auch auf die Intonation auswirkt. Sie stellt dar, wie hoch oder niedrig der Ton der Stimme vom Hörer wahrgenommen wird. Eine höhere Tonhöhe führt zu einer Sprache, die in einem höheren Ton gesprochen wird und als höhere Stimme wahrgenommen wird; eine niedrigere Tonhöhe führt zu einer Sprache, die in einem niedrigeren Ton gesprochen wird und als niedrigere, tiefere Stimme wahrgenommen wird.
Mit dem optionalen Abfrageparameter pitch_percentage
können Sie die Tonhöhe der synthetisch erstellten Sprache für eine Stimme ändern. Jede Stimme hat einen Standardgrundton, der den beabsichtigten Ton dieser Stimme widerspiegelt.
Der Parameter akzeptiert eine ganze Zahl, die die prozentuale Änderung gegenüber dem Standardwert der Stimme darstellt.
- Geben Sie eine negative Ganzzahl mit Vorzeichen an, um die Zeichendichte um diesen Prozentsatz zu reduzieren. Beispiel:
-10
verringert die Tonhöhe um zehn Prozent. - Geben Sie eine positive ganze Zahl ohne Vorzeichen oder Vorzeichen an, um die Zeichendichte um diesen Prozentsatz zu erhöhen. Beispiel:
10
und+10
erhöhen die Teilung um zehn Prozent. - Geben Sie
0
an oder lassen Sie den Parameter weg, um die Standardtonhöhe für die Stimme abzurufen.
Das beste Mittel zur Bestimmung, wie sich der Parameter auf die Tonhöhe einer bestimmten Stimme auswirkt, besteht darin, mit verschiedenen Werten zu experimentieren. Erhöhen oder verringern Sie die Rate schrittweise um fünf oder zehn Prozent,
bevor Sie drastischere Änderungen versuchen. Beim Verringern der Steigung halbiert ein Wert von -50
die Grundsteigung; niedrigere Werte führen möglicherweise nicht zu nennenswerten oder positiven Ergebnissen. Wenn Sie die Tonhöhe
erhöhen, verdoppelt der Wert 100
die Tonhöhe. Höhere Werte können zu Ergebnissen führen, die sich nicht von 100
unterscheiden.
Tabelle 2 enthält Beispiele dafür, wie der Service die Sprechdichte mit unterschiedlichen Werten für den Parameter pitch_percentage
ändert. In den Beispielen wird en-US_AllisonV3Voice
verwendet.
Spezifikation des Parameters pitch_percentage |
Audiobeispiel |
---|---|
pitch_percentage=0 Der Service verwendet die Standardsprachtonhöhe. Sie können den Parameter auch weglassen, um das Standardverhalten abzurufen. |
|
pitch_percentage=-20 Der Service verwendet einen Sprachabstand von 20 Prozent. |
|
pitch-percentage=20 Der Service verwendet eine Sprachtonhöhe von 20 Prozent. |
Interaktion mit SSML-Element <prosody>
Der Parameter pitch_percentage
ändert die Zeichendichte für eine gesamte Anforderung. Sie können auch das Attribut pitch
des SSML-Elements <prosody>
verwenden, um die Tonhöhe bestimmter Textwörter
zu ändern. Obwohl der Parameter pitch_percentage
nur einen Prozentwert akzeptiert, akzeptiert das Attribut pitch
Werte unterschiedlicher Formate. Weitere Informationen finden Sie unter Attribut pitch
.
Wenn Sie den Parameter pitch_percentage
und auch das Attribut pitch
des Tags <prosody>
verwenden, um die Tonhöhe für bestimmten Text derselben Anforderung zu ändern, sind die Effekte multiplikativ.
Angenommen, Sie geben den Parameter pitch_percentage
mit dem Wert 10
an, wodurch die Steigung um 10 Prozent erhöht wird. Wenn Sie auch das Element <prosody>
verwenden, um ein Äquivalent pitch
von +10%
für bestimmten Text der Anforderung anzugeben, wird dieser Text mit einer Tonhöhe gesprochen, die 121 Prozent der Standardgrundtonhöhe für die Stimme beträgt.
Beispiele für Sprechpänge
Die folgende HTTP POST /v1/synthesize
-Methode verwendet den pitch_percentage
-Abfrageparameter mit dem Wert 5
. Die resultierende Audiodatei wird mit einer Tonhöhe gesprochen, die fünf Prozent höher ist
als standardmäßig. Im Beispiel wird die Stimme für amerikanisches Englisch en-US_AllisonV3Voice
verwendet.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output pitch-percentage.wav \
--data "{\"text\":\"This text is spoken five percent higher than the default.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice&pitch_percentage=5"
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 pitch-percentage.wav \
--data "{\"text\":\"This text is spoken five percent higher than the default.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice&pitch_percentage=5"
Das folgende WebSocket-Beispiel zeigt die Einbeziehung des Parameters mit demselben Wert in die Anforderung zum Herstellen einer Verbindung:
var access_token = '{access_token}';
var wsURI = '{ws_url}/v1/synthesize'
+ '?access_token=' + access_token
+ '&voice=en-US_AllisonV3Voice'
+ '&pitch_percentage=5';
var websocket = new WebSocket(wsURI);
Angeben, wie Zeichenfolgen geschrieben werden
Die Standardaussprache des Service für alphabetische, numerische und alphanumerische Zeichenfolgen variiert je nach Sprache, wobei jede Sprache ihre eigenen Regeln hat. Für jede Sprache hängt die Aussprache auch von der Länge und dem Kontext der Zeichenfolge sowie ihrer Zusammensetzung in Bezug auf die Positionen und Gruppierung ihrer Zeichen ab.
- Alphabetische Zeichenfolgen werden als Wörter ausgesprochen, wenn sie in der Sprache der Stimme aussprechbar sind. Andernfalls werden die Zeichen einzeln geschrieben. Ob eine Zeichenfolge ausgesprochen oder ausgeschrieben wird, kann auch von der Groß-/Kleinschreibung der Buchstaben abhängen.
- Numerische Zeichenfolgen können als Kardinalzahlen, Ordinalzahlen, Datumsangaben oder auf andere Weise ausgesprochen werden, auch als einzelne Ziffern.
- Alphanumerische Zeichenfolgen, die sowohl Buchstaben als auch Zahlen enthalten, können abhängig von den Merkmalen der Zeichenfolge unterschiedlich ausgesprochen werden. Sie können beispielsweise als Kombinationen von Wörtern, Kardinalzahlen oder Ziffern ausgesprochen werden. Aber wie bereits erwähnt, hängt die Aussprache weitgehend von der Saite und ihrer Zusammensetzung ab.
Die beste Möglichkeit, zu steuern, wie eine bestimmte Zeichenfolge ausgesprochen wird, ist die Verwendung des Elements <say-as>
der SSML. Mit dem Element können Sie genau angeben, wie eine Zeichenfolge synthetisch erstellt
wird. Sie verwenden das Attribut interpret-as
des Elements <say-as>
, um anzugeben, dass eine Zeichenfolge als letters
, digits
oder auf andere Weise ausgesprochen werden soll. Die verfügbaren
Werte variieren je nach Sprache.
Wenn Sie die Attribute letters
oder digits
verwenden, werden alle Buchstaben und Zahlen der Zeichenfolge einzeln ausgesprochen. Dies ist besonders nützlich für die Schreibweise der alphanumerischen Zeichen einer hexadezimalen
Zeichenfolge oder einer Identifikations-oder Kontonummer. Weitere Informationen, einschließlich sprachspezifischer Unterschiede, finden Sie unter Element say-as
.
Angeben der Geschwindigkeit, in der Zeichenfolgen ausgeschrieben werden
Der Parameter spell_out_mode
ist eine Betafunktionalität, die nur für deutsche Stimmen unterstützt wird.
Standardmäßig liest der Service Zeichen, die er ausspioniert, in derselben Geschwindigkeit, in der er Text für die Sprache liest, aus der synthetisch erstellt wird. Für deutsche Stimmen können Sie jedoch den optionalen Abfrageparameter spell_out_mode
verwenden, um anzugeben, wie der Service einzelne Zeichen ausschreiben soll: ein, zwei oder drei Zeichen gleichzeitig. Der Parameter wird global angewendet, um die Geschwindigkeit zu steuern, mit der der Service alle Zeichenfolgen liest,
die er aus einer Anforderung aussagt. Verwenden Sie den Parameter spell_out_mode
nur für längere Zeichenfolgen. Der Parameter hat keine Auswirkung auf eine Zeichenfolge, die weniger als drei Zeichen enthält.
Tabelle 3 enthält Beispiele dafür, wie der Service den folgenden Text mit unterschiedlichen Werten für den Parameter spell_out_mode
ausspricht:
Die Nummer ist <say-as interpret-as=‘digits’>AB7234987FFA</say-as>.
Spezifikation des Parameters spell_out_mode |
Audiobeispiel |
---|---|
spell_out_mode=default Der Service liest die Zeichen nacheinander, normalerweise ohne Pause zwischen ihnen, mit der Geschwindigkeit, mit der er Sprache für die Anforderung synthetisch erstellt. Sie können den Parameter auch weglassen, um das Standardverhalten abzurufen. |
|
spell_out_mode=singles Der Service liest die Zeichen nacheinander mit einer kurzen Pause zwischen den einzelnen Zeichen. |
|
spell_out_mode=pairs Der Service liest die Zeichen zwei gleichzeitig mit einer kurzen Pause zwischen jedem Paar. |
|
spell_out_mode=triplets Der Service liest die Zeichen drei gleichzeitig mit einer kurzen Pause zwischen den einzelnen Triplets. |
Alphanumerische Zeichenfolgen, die Buchstaben und Ziffern kombinieren, können unterschiedliche Gruppierungen von Zeichen ergeben. Wenn Sie das Element <say-as>
nicht verwenden, können Gruppen von Buchstaben und Ziffern so
ausgesprochen werden, dass sie nicht unbedingt dem angeforderten Modus entsprechen.
Beispiele für den Rechtschreibmodus
Die folgende HTTP POST /v1/synthesize
-Methode verwendet den spell_out_mode
-Abfrageparameter mit dem Wert singles
. Im Beispiel wird die deutsche Stimme de-DE_ErikaV3Voice
verwendet. Der zu
synthetisierte alphanumerische Text ist eine hexadezimale Zeichenfolge, die in ein <say-as>
-Element eingeschlossen und als digits
interpretiert wird.
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output spell-out-mode.wav \
--data "{\"text\":\"Die Nummer ist <say-as interpret-as=‘digits’>AB7234987FFA</say-as>.\"}" \
"{url}/v1/synthesize?voice=de-DE_ErikaV3Voice&spell_out_mode=singles"
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 spell-out-mode.wav \
--data "{\"text\":\"Die Nummer ist <say-as interpret-as=‘digits’>AB7234987FFA</say-as>.\"}" \
"{url}/v1/synthesize?voice=de-DE_ErikaV3Voice&spell_out_mode=singles"
Das folgende WebSocket-Beispiel zeigt die Einbeziehung des Parameters mit demselben Wert in die Anforderung zum Herstellen einer Verbindung:
var access_token = '{access_token}';
var wsURI = '{ws_url}/v1/synthesize'
+ '?access_token=' + access_token
+ '&voice=de-DE_ErikaV3Voice'
+ '&spell_out_mode=singles';
var websocket = new WebSocket(wsURI);