IBM Cloud Docs
Come modificare la sintesi vocale

Come modificare la sintesi vocale

Le voci neurali espressive che sono disponibili con il servizio IBM Watson® Text to Speech offrono alcune funzionalità aggiuntive che non sono disponibili con gli altri tipi di voci: utilizzando gli stili di conversazione, enfatizzando le interiezionie enfatizzando le parole. Queste funzioni sono disponibili sia per l'interfaccia dell' HTTP, sia per quella dell' WebSocket.

Le caratteristiche includono l'uso di elementi del linguaggio di markup di sintesi vocale (SSML). Le descrizioni delle funzioni forniscono informazioni su come interagiscono con gli elementi e attributi SSML correlati.

Utilizzo degli stili di conversazione

Le voci neurali espressive determinano il sentimento del testo dal contesto delle parole e delle frasi. Il discorso che producono, oltre ad avere uno stile molto colloquiale, riflette l'umore del testo. Le voci espressive esprimono naturalmente gratitudine, gratitudine, felicità, empatia, confusione e altri sentimenti per impostazione predefinita, senza ulteriori espliciti tag.

Tuttavia, è possibile abbellire le tendenze naturali delle voci utilizzando l'elemento <express-as> con l'attributo style richiesto per indicare che tutto o parte del testo deve enfatizzare caratteristiche specifiche. Queste caratteristiche sono indicate come stili parlanti:

  • cheerful- Esprime felicità e buone notizie. Lo stile è ottimista, accogliente e trasmette un messaggio positivo.
  • empathetic- Espone empatia e compassione. Lo stile ha sottotoni simpatici, ma non è eccessivamente doloroso.
  • neutral- Esprima obiettività e uniformità. Lo stile si sforza di meno emozione, e invece trasmette un tono più uniforme e istruttivo.
  • uncertain- Esprime incertezza e confusione. Lo stile trasmette la sensazione di essere insicuri o in dubbio.

In molti casi, l'effetto degli stili è molto sottile. In questi casi, le differenze potrebbero non essere facilmente distinguibili dal tono espressivo predefinito. Ma ci sono casi in cui lo stile può migliorare in modo udibile la capacità intrinseca delle voci di rilevare ed esprimere le emozioni. Le differenze sono spesso rilevabili solo su determinate parole e frasi.

Esprimere stili di conversazione con SSML

La seguente richiesta di HTTP utilizza l'elemento <express-as> con un style di cheerful per modificare lo stile di pronuncia dell'intero testo di input. L'esempio utilizza la voce en-US_EmmaExpressive.

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"

La seguente richiesta di esempio HTTP utilizza lo stile " cheerful " solo per la prima frase della richiesta. La seconda frase è pronunciata con la voce predefinita. L'esempio utilizza nuovamente la voce en-US_EmmaExpressive.

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"

Enfatizzare le interiezioni

Quando utilizzi le voci neurali espressive, il servizio rileva automaticamente un numero di interiezioni comuni in base al contesto. Nell'audio risultante, dà loro l'enfasi naturale che un essere umano userebbe nella normale conversazione. Le voci espressive supportano un diverso insieme di interiezioni basate sulla lingua. Fare riferimento alle pagine specifiche della lingua per ulteriori dettagli su quali iniezioni sono supportate.

Abilitazione o disabilitazione di interiezioni con SSML

Il servizio interpreta e pronuncia sempre la maggior parte delle interiezioni come previsto. Tuttavia, ci sono alcune interiezioni che potrebbero essere utilizzate in un contesto diverso. In questi casi, il comportamento predefinito del servizio è quello di disabilitare tali interezioni per impostazione predefinita. È possibile utilizzare SSML per abilitare o disabilitare tali interiezioni. L'attributo interpret-as dell'elemento SSML <say-as> accetta un valore aggiuntivo, interjection. Quando si utilizza l'attributo interpret-as con il valore interjection, si include l'attributo enabled aggiuntivo con il valore true o false per indicare se la parola deve essere pronunciata come un'intersezione. Ogni lingua ha un sottoinsieme diverso di interiezioni che possono essere abilitate / disabilitate tramite SSML. Fare riferimento alle pagine specifiche della lingua per ulteriori dettagli su quali interiezioni possono essere abilitate / disabilitate utilizzando SSML.

La seguente richiesta di esempi di " HTTP " ordina al servizio di non pronunciare " oh " e " aha " come interiezioni. L'esempio utilizza la voce en-US_AllisonExpressive.

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"

Enfatizzare le parole

Tutte le voci espressive utilizzano uno stile conversazionale che applica naturalmente la corretta intonazione dal contesto. Ma puoi utilizzare l'elemento <emphasis> SSML per indicare che una o più parole devono essere date più o meno enfasi nell'audio sintetizzato. La variazione dello stress può essere indicata da un aumento o una diminuzione dell'altezza, del tempo, del volume o di altri attributi acustici.

L'elemento <emphasis> supporta un attributo level facoltativo che accetta uno dei seguenti valori:

  • none- impedisce al servizio di enfatizzare il testo che potrebbe altrimenti essere enfatizzato.
  • moderate- Fornisce una notevole quantità di enfasi sul testo. Questo valore è il valore predefinito se si omette l'attributo level.
  • strong- Fornisce una quantità più significativa di enfasi sul testo rispetto al livello moderate fornito.
  • reduced- De - enfatizza il testo tendendo a ridurre il suo significato nell'audio. Questo livello è l'opposto di sottolineare il testo.

La Tabella 3 fornisce esempi di ogni level disponibile per l'elemento emphasis. Gli esempi utilizzano la voce en-US_MichaelExpressive. Una richiesta che utilizza l'elemento emphasis non riesce se un livello specificato non è uno dei valori supportati.

Enfatizzare le parole
Livello di enfasi Frase di esempio Esempio audio
Nessuna enfasi "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."

Enfatizzare una parola con SSML

La seguente richiesta di esempio dell' HTTP, utilizza l'elemento " <emphasis> " con un " level " di " moderate " (il valore predefinito) per enfatizzare la parola " give " nella frase. L'esempio utilizza la voce en-US_MichaelExpressive.

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"