L'interfaccia HTTP

Per sintetizzare il testo in voce utilizzando l'interfaccia REST HTTP del servizio IBM Watson® Text to Speech, chiama il metodo GET o POST /v1/synthesize. Specifica il testo che deve essere sintetizzato e la voce e il formato per l'audio pronunciato. È inoltre possibile specificare un modello personalizzato da utilizzare con la richiesta.

Per ulteriori informazioni sull'interfaccia dell' HTTP, consultare il riferimento API e SDK.

Sintetizzazione del testo in audio

Per sintetizzare il testo in audio, chiama una delle due versioni del metodo /v1/synthesize del servizio:

  • Il metodo GET /v1/synthesize accetta il testo che deve essere sintetizzato come parametro di query text obbligatorio. La dimensione massima della richiesta è di 8 KB, che include il testo di input, qualsiasi SSML che specifichi, l'URL e le intestazioni.
  • Il metodo POST /v1/synthesize accetta il testo che deve essere sintetizzato come costrutto JSON nel corpo della richiesta. La dimensione massima della richiesta è di 8 KB per l'URL e le intestazioni e di 5 KB per il testo di input inviato nel corpo della richiesta. Il limite di 5 KB include qualsiasi SSML da te specificato.

Le due versioni del metodo /v1/synthesize hanno in comune i seguenti parametri:

accept (query parameter, opzionale string)

Specifica il formato audio richiesto, o tipo MIME, in cui il servizio deve restituire l'audio. È inoltre possibile specificare questo valore con l'intestazione della richiesta HTTP Accept. Codifica in URL l'argomento nel parametro di query accept. Per impostazione predefinita, il servizio restituisce l'audio nel formato audio/ogg;codecs=opus. Per ulteriori informazioni, vedere Utilizzo dei formati audio.

Il formato audio Ogg non è supportato dal browser Safari. Se si utilizza il servizio Text to Speech con il browser Safari, è necessario specificare un formato diverso in cui si desidera che il servizio restituisca l'audio.

voice (query parameter, opzionale string)

Specifica la voce in cui deve essere pronunciato il testo nell'audio. Utilizzare il metodo /v1/voices per ottenere l'elenco aggiornato delle voci supportate. Ometti il parametro per utilizzare la voce predefinita. Per ulteriori informazioni, vedere Lingue e voci e Uso della voce predefinita.

customization_id (query parameter, opzionale string)

Specifica un identificatore univoco globale (GUID) per un modello personalizzato da utilizzare per la sintesi. Un modello personalizzato specifico deve corrispondere alla lingua della voce utilizzata per la sintesi. Se includi un ID di personalizzazione, devi effettuare la richiesta con le credenziali per l'istanza del servizio proprietaria del modello personalizzato. Ometti il parametro per utilizzare la voce specificata senza alcuna personalizzazione. Per ulteriori informazioni, vedi Informazioni sulla personalizzazione.

rate_percentage (query parameter, opzionale integer)

Specifica il tasso di conversazione globale per l'intera richiesta di sintesi. La velocità di riproduzione è la velocità con cui il servizio pronuncia il testo che sintetizza nel parlato. Una velocità maggiore fa sì che il testo venga pronunciato più velocemente; una velocità minore fa sì che il testo venga pronunciato più lentamente. Il parametro modifica la velocità predefinita per voce per un'intera richiesta. Per ulteriori informazioni, vedere Modifica della velocità di parola.

pitch_percentage (query parameter, opzionale integer)

Specifica il tono di voce globale per l'intera richiesta di sintesi. Il tono di voce rappresenta il tono del discorso che il servizio sintetizza. Rappresenta il tono alto o basso della voce percepito dall'ascoltatore. Un'intonazione più alta si traduce in un discorso che viene pronunciato con un tono più alto; un'intonazione più bassa si traduce in un discorso che viene pronunciato con un tono più basso. Il parametro modifica l'intonazione predefinita per voce per un'intera richiesta. Per ulteriori informazioni, vedere Modifica dell'intonazione del parlato.

spell_out_mode (query parameter, opzionale string)

Per le voci tedesche, specifica come devono essere scritti i singoli caratteri di una stringa. Per impostazione predefinita, il servizio scrive i singoli caratteri alla stessa velocità con cui sintetizza il testo per una lingua. È possibile utilizzare il parametro per indicare al servizio di scrivere i singoli caratteri più lentamente, a gruppi di uno singles), due pairs) o tre triples). Per ulteriori informazioni, consultare la sezione Specificare l'ortografia delle stringhe.

X-Watson-Metadata (request header, opzionale string)

Associa un ID cliente ai dati trasmessi con una richiesta. Per ulteriori informazioni, vedi Sicurezza delle informazioni.

X-Watson-Learning-Opt-Out (request header, opzionale boolean)

IBM Cloud Indica se il servizio registra i dati di richiesta e risposta per migliorare il servizio per gli utenti futuri. Per impedire che IBM acceda ai tuoi dati per miglioramenti del servizio generali, specifica true per il parametro. L'opt-out indirizza IBM a scrivere su disco no i dati dell'utente (testo o audio) per la richiesta dell'utente. È inoltre possibile rinunciare al servizio a livello di account. Per ulteriori informazioni, vedi Registrazione delle richieste.

Se specifichi un parametro di query o un campo JSON non valido come parte dell'input al metodo /v1/synthesize, il servizio restituisce un'intestazione di risposta Warnings che descrive ed elenca ogni argomento non valido. La richiesta ha esito positivo nonostante le avvertenze.

Specifica del testo di input

Sia il metodo " POST " che il metodo " GET /v1/synthesize " accettano testo in chiaro o testo annotato con SSML. Le due versioni differiscono principalmente nel modo in cui si specifica il testo che deve essere sintetizzato. Gli esempi seguenti passano entrambi il testo normale Hello world.

  • Il metodo POST /v1/synthesize accetta il testo di input nel corpo della richiesta. L'input viene specificato con un semplice costrutto JSON che include testo normale o SSML. Devi anche specificare un valore di application/json per l'intestazione Content-Type.

    IBM Cloud

    curl -X POST -u "apikey:{apikey}" \
    --header "Content-Type: application/json" \
    --header "Accept: audio/wav" \
    --output hello_world.wav \
    --data "{\"text\":\"Hello world\"}" \
    "{url}/v1/synthesize?voice=en-US_MichaelV3Voice"
    

    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 hello_world.wav \
    --data "{\"text\":\"Hello world\"}" \
    "{url}/v1/synthesize?voice=en-US_MichaelV3Voice"
    
  • Il metodo GET /v1/synthesize accetta il testo di input specificato dal parametro di query text. L'input può essere specificato come testo normale o SSML, entrambi devono essere codificati con l' URL.

    IBM Cloud

    curl -X GET -u "apikey:{apikey}" \
    --header "Accept: audio/wav" \
    --output hello_world.wav \
    "{url}/v1/synthesize?text=Hello%20world&voice=en-US_MichaelV3Voice"
    

    IBM Cloud Pak for Data IBM Software Hub

    curl -X GET \
    --header "Authorization: Bearer {token}" \
    --header "Accept: audio/wav" \
    --output hello_world.wav \
    "{url}/v1/synthesize?text=Hello%20world&voice=en-US_MichaelV3Voice"""
    

Sebbene i metodi " POST " e " GET " offrano funzionalità equivalenti, è sempre più sicuro passare il testo di input al servizio con il metodo " POST ". Una richiesta POST passa l'input nel corpo della richiesta. Una richiesta di tipo " GET " espone i dati nel " URL ".

Punteggiatura del testo in ingresso

Scrivete il testo per la sintesi con la punteggiatura che usereste normalmente. Ad esempio, includete le virgole, i punti, i punti esclamativi e i punti interrogativi come in una normale scrittura.

Il servizio considera la punteggiatura quando sintetizza il testo. Ad esempio, le virgole e la punteggiatura di fine frase influiscono sull'audio inserendo pause in punti appropriati del parlato sintetizzato. Anche la punteggiatura di fine frase, come i punti, i punti esclamativi e i punti interrogativi, modifica l'intonazione e l'inflessione del discorso. È possibile utilizzare anche elementi SSML per influenzare questi aspetti del discorso.

Specifica dell'input SSML

SSML (Speech Synthesis Markup Language) è un linguaggio di markup basato su XML progettato per fornire annotazioni di testo per le applicazioni di sintesi vocale come il servizio Text to Speech. Puoi utilizzare gli elementi SSML e i loro attributi per ottenere un maggiore controllo sulla sintesi e sull'output audio risultante.

Per ulteriori informazioni sull'utilizzo di SSML per annotare il testo inserito, vedere Informazioni su SSML. Per un elenco di tutti gli elementi e gli attributi supportati, vedere Elementi SSML.

Escape dei caratteri di controllo XML

Dal momento che puoi inoltrare il testo di input che include annotazioni SSML basate su XML, il servizio convalida tutto l'input per garantire che qualsiasi SSML sia corretto e ben formato. Pertanto, devi eseguire l'escape di tutti i caratteri di controllo XML presenti nel testo di input, a prescindere che l'input includa o meno SSML. Utilizza le stringhe di escape o le codifiche di caratteri equivalenti della Tabella 1 anziché i caratteri indicati.

Escape dei caratteri di controllo XML
Carattere Stringhe di escape Codifica dei caratteri
"
(double quotes)
" "
'
(apostrofo o virgoletta singola)
' '
&
(ampersand)
& &
<
(parentesi angolare sinistra)
&lt; &#60;
>
(staffa ad angolo retto)
&gt; &#62;
/
(forward slash)
Nessuno &#47;

Per ulteriori informazioni su come il servizio convalida il testo di input, vedi Convalida SSML.

Esempi di testo di input

I seguenti esempi mostrano come specificare il testo di input con entrambi i metodi dell'interfaccia HTTP. Mostrano anche come eseguire l'escape dei caratteri di controllo XML. Gli esempi includono interruzioni di riga per la leggibilità. Non includere le interruzioni di riga nell'input effettivo.

Input di esempio con una richiesta GET

I seguenti esempi passano l'input codificato in URL con il parametro di query text del metodo GET /v1/synthesize:

  • Input di testo semplice:

    text=This&20is&20the&20first&20sentence&20of&20the&20paragraph.&20Here
    &20is&20another&20sentence.&20Finally,&20this&20is&20the&20last&20sentence.
    
  • Input SSML:

    text=%22%3Cp%3E%3Cs%3EThis%20is%20the%20first%20sentence%20of%20the%20%3C
    break%20time=%225s%22/%3E%20paragraph.%3C/s%3E%3Cs%3EHere%20is%20another
    %20sentence.%3C/s%3E%3Cs%3EFinally,%20this%20is%20the%20last%20sentence.
    %3C/s%3E%3C/p%3E%22
    

Input di esempio con una richiesta POST

I seguenti esempi passano l'input nel corpo del metodo POST /v1/synthesize:

  • Input di testo semplice:

    {
      "text": "This is the first sentence of the paragraph. Here is another
        sentence. Finally, this is the last sentence."
    }
    
  • Input SSML:

    {
      "text": "<p><s>This is the first sentence of the <break time=\"5s\"/>
        paragraph.</s><s>Here is another sentence.</s><s>Finally, this is
        the last sentence.</s></p>"
    }
    

Input di esempio con i caratteri di controllo XML

I seguenti esempi inviano due frasi al metodo POST /v1/synthesize. Gli esempi eseguono correttamente l'escape dei caratteri XML incorporati.

"What have I learned?" he asked. "Everything!"
  • Input di testo semplice:

    {
      "text": ""What have I learned?" he asked. "Everything!""
    }
    
  • Input SSML:

    {
      "text": "<s>"What have I learned?" he asked.
        "<prodody rate=\"50\">Everything!</prosody>"</s>"
    }