Contenitori di sintesi vocale con Docker

Il contenitore di sintesi vocale neurale converte il testo in una sintesi vocale naturale usando una tecnologia di rete neurale profonda, che consente un parlato sintetizzato più naturale. In questo articolo si apprenderà come scaricare, installare ed eseguire un contenitore di sintesi vocale.

Per altre informazioni sui prerequisiti, verificare che un contenitore sia in esecuzione, che esegua più contenitori nello stesso host e che esegua contenitori disconnessi, vedere Installare ed eseguire contenitori di Voce con Docker.

Immagini del contenitore

L'immagine del contenitore di sintesi vocale neurale per tutte le versioni e le impostazioni locali supportate è disponibile nel syndicate Registro Container di Microsoft (MCR). Si trova all'interno del repository azure-cognitive-services/speechservices/ ed è denominata neural-text-to-speech.

Screenshot della finestra di dialogo dei connettori di ricerca e dei trigger.

Il nome completo dell'immagine del contenitore è mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech. Aggiungere una versione specifica o accodare :latest per ottenere la versione più recente.

Versione Percorso
Più recente mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

Il tag latest esegue il pull delle impostazioni locali en-US e della voce en-us-arianeural.
3.5.0 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:3.5.0-amd64-en-us-arianeural

Tutti i tag, ad eccezione di latest, sono nel formato seguente e fanno distinzione tra maiuscole e minuscole:

<major>.<minor>.<patch>-<platform>-<voice>-<preview>

I tag sono disponibili anche in formato JSON per praticità. Il corpo include il percorso del contenitore e l'elenco di tag. I tag non vengono ordinati in base alla versione, ma "latest" viene sempre incluso alla fine dell'elenco, come illustrato in questo frammento di codice:

{
  "name": "azure-cognitive-services/speechservices/neural-text-to-speech",
  "tags": [
    <--redacted for brevity-->
    "3.5.0-amd64-uk-ua-ostapneural",
    "3.5.0-amd64-zh-cn-xiaochenneural-preview",
    "3.5.0-amd64-zh-cn-xiaohanneural",
    "3.5.0-amd64-zh-cn-xiaomoneural",
    "3.5.0-amd64-zh-cn-xiaoqiuneural-preview",
    "3.5.0-amd64-zh-cn-xiaoruineural",
    "3.5.0-amd64-zh-cn-xiaoshuangneural-preview",
    "3.5.0-amd64-zh-cn-xiaoxiaoneural",
    "3.5.0-amd64-zh-cn-xiaoyanneural-preview",
    "3.5.0-amd64-zh-cn-xiaoyouneural",
    "3.5.0-amd64-zh-cn-yunxineural",
    "3.5.0-amd64-zh-cn-yunyangneural",
    "3.5.0-amd64-zh-cn-yunyeneural",
    "latest"
  ]
}

Importante

Il 31 agosto 2021 sono state ritirate le voci di sintesi vocale standard e il contenitore di sintesi vocale standard. È invece consigliabile usare le voci neurali con la versione 3.0 e successive del contenitore di sintesi vocale neurale.

A partire dal 29 febbraio 2024, la versione 2.19 e precedenti dei contenitori di sintesi vocale e sintesi vocale neurale non sono supportati. Per altre informazioni sull'aggiornamento dell'applicazione, vedere Eseguire la migrazione dalla voce standard alla voce neurale predefinita.

Ottenere l'immagine del contenitore con il comando docker pull

Sono necessari i prerequisiti incluso l'hardware necessario. Vedere anche l'allocazione consigliata delle risorse per ogni contenitore di Voce.

Usare il comando docker pull per scaricare un'immagine del contenitore da Registro Container di Microsoft:

docker pull mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

Importante

Il tag latest esegue il pull delle impostazioni locali en-US e della voce en-us-arianeural. Per altre impostazioni locali e voci, vedere Immagini contenitore di sintesi vocale.

Eseguire il contenitore con il comando docker run

Usare il comando docker run per eseguire il contenitore.

La tabella seguente rappresenta i vari parametri docker run e le descrizioni corrispondenti:

Parametro Descrizione
{ENDPOINT_URI} L'endpoint è necessario per la misurazione e la fatturazione. Per altre informazioni, vedere argomenti di fatturazione.
{API_KEY} La chiave API è obbligatoria. Per altre informazioni, vedere argomenti di fatturazione.

Quando si esegue il contenitore di sintesi vocale, configurare la porta, la memoria e la CPU in base ai requisiti e alle raccomandazioni per il contenitore di sintesi vocale.

Ecco un esempio del comando docker run con valori segnaposto. È necessario specificare i valori ENDPOINT_URI e API_KEY:

docker run --rm -it -p 5000:5000 --memory 12g --cpus 6 \
mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech \
Eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Questo comando:

  • Esegue un contenitore di sintesi vocale neurale dall'immagine del contenitore.
  • Alloca 6 core della CPU e 12 GB di memoria.
  • Espone la porta TCP 5000 e alloca un pseudo terminale TTY per il contenitore.
  • Rimuove automaticamente il contenitore dopo la chiusura. L'immagine del contenitore rimane disponibile nel computer host.

Per altre informazioni su docker run con i contenitori di Voce, vedere Installare ed eseguire contenitori di Voce con Docker.

Usare il contenitore

I contenitori voce forniscono API endpoint di query basate su websocket a cui si accede tramite Speech SDK e interfaccia della riga di comando di Voce. Per impostazione predefinita, l'SDK e l'interfaccia della riga di comando di Voce usano il servizio Voce pubblico. Per usare il contenitore, è necessario modificare il metodo di inizializzazione.

Importante

Quando si usa il servizio Voce con contenitori, assicurarsi di usare l’autenticazione host. Se si configura la chiave e l'area, le richieste verranno inviate al servizio Voce pubblico. I risultati del servizio Voce potrebbero non essere quelli previsti. Le richieste provenienti da contenitori disconnessi avranno esito negativo.

Anziché usare questa configurazione di inizializzazione cloud di Azure:

var config = SpeechConfig.FromSubscription(...);

Usare questa configurazione con l’host del contenitore:

var config = SpeechConfig.FromHost(
    new Uri("http://localhost:5000"));

Anziché usare questa configurazione di inizializzazione cloud di Azure:

auto speechConfig = SpeechConfig::FromSubscription(...);

Usare questa configurazione con l’host del contenitore:

auto speechConfig = SpeechConfig::FromHost("http://localhost:5000");

Anziché usare questa configurazione di inizializzazione cloud di Azure:

speechConfig, err := speech.NewSpeechConfigFromSubscription(...)

Usare questa configurazione con l’host del contenitore:

speechConfig, err := speech.NewSpeechConfigFromHost("http://localhost:5000")

Anziché usare questa configurazione di inizializzazione cloud di Azure:

SpeechConfig speechConfig = SpeechConfig.fromSubscription(...);

Usare questa configurazione con l’host del contenitore:

SpeechConfig speechConfig = SpeechConfig.fromHost("http://localhost:5000");

Anziché usare questa configurazione di inizializzazione cloud di Azure:

const speechConfig = sdk.SpeechConfig.fromSubscription(...);

Usare questa configurazione con l’host del contenitore:

const speechConfig = sdk.SpeechConfig.fromHost("http://localhost:5000");

Anziché usare questa configurazione di inizializzazione cloud di Azure:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:...];

Usare questa configurazione con l’host del contenitore:

SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithHost:"http://localhost:5000"];

Anziché usare questa configurazione di inizializzazione cloud di Azure:

let speechConfig = SPXSpeechConfiguration(subscription: "", region: "");

Usare questa configurazione con l’host del contenitore:

let speechConfig = SPXSpeechConfiguration(host: "http://localhost:5000");

Anziché usare questa configurazione di inizializzazione cloud di Azure:

speech_config = speechsdk.SpeechConfig(
    subscription=speech_key, region=service_region)

Usare questa configurazione con l’endpoint del contenitore:

speech_config = speechsdk.SpeechConfig(
    host="http://localhost:5000")

Quando si usa l'interfaccia della riga di comando di Voce in un contenitore, includere l'opzione --host http://localhost:5000/. È inoltre necessario specificare --key none per assicurarsi che l'interfaccia della riga di comando non tenti di usare una chiave di Voce per l'autenticazione. Per informazioni su come configurare l'interfaccia della riga di comando di Voce, vedere Introduzione all'interfaccia della riga di comando di Voce di Azure AI.

Provare la guida di avvio rapido alla sintesi vocale usando l'autenticazione host anziché la chiave e l'area.

Elemento voce SSML

Quando si costruisce un POST HTTP di sintesi vocale neurale, il messaggio SSML richiede un elemento voice con un attributo name. Le impostazioni locali voce devono corrispondere alle impostazioni locali del modello contenitore. Il supporto per i tag SSML è coerente per ogni voce di sintesi vocale nel cloud di Azure e nell'ambiente contenitore.

Ad esempio, un modello scaricato tramite il tag latest (per impostazione predefinita "en-US") avrà un nome voce di en-US-AriaNeural.

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="en-US-AriaNeural">
        This is the text that is spoken.
    </voice>
</speak>

Passaggi successivi