Contenitori di sintesi vocale con Docker

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

Per altre informazioni sui prerequisiti, convalidare l'esecuzione di un contenitore, l'esecuzione di più contenitori nello stesso host e l'esecuzione di contenitori disconnessi, vedere Installare ed eseguire contenitori 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 di Registro Contenitori Microsoft. Si trova all'interno del azure-cognitive-services/speechservices/ repository ed è denominato neural-text-to-speech.

A screenshot of the search connectors and triggers dialog.

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 latest tag esegue il pull delle impostazioni locali e en-us-arianeural della en-US voce.
3.1.0 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:3.1.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" vengono sempre inclusi 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.1.0-amd64-en-us-arianeural",
    "3.1.0-amd64-en-us-guyneural",
    "3.1.0-amd64-en-us-jennymultilingualneural",
    "3.1.0-amd64-en-us-jennyneural",
    "3.1.0-amd64-en-us-michelleneural",
    "3.1.0-amd64-es-es-alvaroneural",
    "3.1.0-amd64-es-es-elviraneural",
    "3.1.0-amd64-es-mx-candelaneural",
    "3.1.0-amd64-es-mx-dalianeural",
    "3.1.0-amd64-es-mx-jorgeneural",
    <--redacted for brevity-->
    "latest"
  ]
}

Importante

Il 31 agosto 2021 sono stati ritirati le voci di sintesi vocale standard e il testo standard. È consigliabile usare le voci neurali con il contenitore neurale da testo a voce versione 3.0 e successive.

A partire dal 29 febbraio 2024, il testo per la sintesi vocale e il testo neurale nelle versioni 2.19 e precedenti 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 docker pull

Sono necessari i prerequisiti, incluso l'hardware richiesto. Vedere anche l'allocazione consigliata di risorse per ogni contenitore voce.

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

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

Importante

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

Eseguire il contenitore con docker run

Usare il comando docker run per eseguire il contenitore.

La tabella seguente rappresenta i vari docker run parametri e le relative 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 testo nel contenitore di riconoscimento vocale, configurare la porta, la memoria e la CPU in base ai requisiti e alle raccomandazioni del contenitore voce.

Ecco un comando di esempio docker run con valori segnaposto. È necessario specificare i ENDPOINT_URI valori 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 testo neurale nel contenitore di riconoscimento vocale dall'immagine del contenitore.
  • Alloca 6 core 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 sui docker run contenitori voce, vedere Installare ed eseguire contenitori 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 l'interfaccia della riga di comando di Voce. Per impostazione predefinita, Speech 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 quello previsto. 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 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 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 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 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 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 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 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 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/ . È anche necessario specificare --key none per assicurarsi che l'interfaccia della riga di comando non tenti di usare una chiave di riconoscimento vocale 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 Riconoscimento vocale di Azure per intelligenza artificiale.

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

Elemento voce SSML

Quando si costruisce un testo neurale per la sintesi vocale HTTP POST, il messaggio SSML richiede un voice elemento con un name attributo . Le impostazioni locali della voce devono corrispondere alle impostazioni locali del modello di contenitore.

Ad esempio, un modello scaricato tramite il latest tag (per impostazione predefinita "en-US") avrà un nome vocale 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