Installare ed eseguire contenitori voce con Docker

Usando i contenitori, è possibile usare un subset delle funzionalità del servizio Voce nel proprio ambiente. In questo articolo si apprende come scaricare, installare ed eseguire un contenitore del servizio Voce.

Nota

I prezzi e i livelli di impegno dei contenitori disconnessi variano a seconda dei contenitori standard. Per altre informazioni, vedere Prezzi di Voce di Azure AI.

Prerequisiti

Prima di usare i contenitori del servizio Voce, è necessario soddisfare i prerequisiti seguenti. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare. È necessario:

  • Docker installato in un computer host. Docker deve essere configurato per consentire ai contenitori di connettersi ai dati di fatturazione e inviarli ad Azure.
    • In Windows, è anche necessario configurare Docker per supportare i contenitori Linux.
    • È necessaria una conoscenza basilare dei concetti di Docker.
  • Una risorsa del servizio Voce con il piano tariffario gratuito (0) o standard (S).

Argomenti di fatturazione

I contenitori voce non sono concessi in licenza per l'esecuzione senza una connessione ad Azure per la misurazione. È necessario configurare il contenitore per comunicare sempre le informazioni di fatturazione con il servizio di misurazione.

Sono necessari tre parametri principali per tutti i contenitori di Intelligenza artificiale di Azure. Le condizioni di licenza per il software Microsoft devono essere presenti con un valore di accettazione. Sono necessari anche un URI endpoint e una chiave API.

Le query sul contenitore vengono fatturate secondo il piano tariffario della risorsa di Azure usata per il parametro ApiKey.

Il comando docker run avvia il contenitore quando vengono forniti valori validi per tutte e tre le opzioni seguenti:

Opzione Descrizione
ApiKey Chiave API della risorsa Voce usata per tenere traccia delle informazioni di fatturazione.
Il valore ApiKey viene usato per avviare il contenitore ed è disponibile nella pagina Chiavi del portale di Azure per la risorsa Voce corrispondente. Accedere alla pagina Chiavi e selezionare l'icona Copia negli Appunti.
Billing Endpoint della risorsa Voce usata per tenere traccia delle informazioni di fatturazione.
L'endpoint è disponibile nella pagina Panoramica del portale di Azure della risorsa Voce corrispondente. Accedere alla pagina Panoramica e passare il puntatore del mouse sull'endpoint. Verrà visualizzata un'icona Copia negli Appunti. Copiare e usare l'endpoint ove necessario.
Eula Indica che è la licenza per il contenitore è stata accettata.
Il valore di questa opzione deve essere impostato su accept.

Importante

Queste chiavi di sottoscrizione vengono usate per accedere all'API Servizi di Azure AI. Non condividere le chiavi. Archiviarle in modo sicuro. Usare, ad esempio, Azure Key Vault. È preferibile, inoltre, rigenerare queste chiavi regolarmente. Per effettuare una chiamata API è necessaria una sola chiave. Quando si rigenera la prima chiave, è possibile usare la seconda chiave per mantenere l'accesso al servizio.

Per eseguire il contenitore, sono necessari i valori dell'argomento di fatturazione. Questi valori consentono al contenitore di connettersi all'endpoint di fatturazione. Il contenitore segnala l'utilizzo ogni 10-15 minuti. Se il contenitore non si connette ad Azure entro la finestra temporale consentita, continuerà a essere eseguito ma non fornirà query finché l'endpoint di fatturazione non verrà ripristinato. Il tentativo di connessione viene effettuato 10 volte nello stesso intervallo di tempo di 10-15 minuti. Se non è possibile stabilire la connessione con l'endpoint di fatturazione entro 10 tentativi, il contenitore interromperà la gestione delle richieste. Per un esempio delle informazioni inviate a Microsoft per la fatturazione, vedere domande frequenti sul contenitore di Intelligenza artificiale di Azure nella documentazione dei servizi di intelligenza artificiale di Azure.

Per altre informazioni su queste opzioni, vedere Configurare i contenitori.

Indicazioni e requisiti per i contenitori

La tabella seguente descrive l'allocazione minima e consigliata di risorse per ogni contenitore Voce:

Contenitore Requisiti minimi Requisiti consigliati Modello di riconoscimento vocale
Riconoscimento vocale 4 core, 4 GB di memoria 8 core, 8 GB di memoria Da oltre 4 a 8 GB di memoria
Riconoscimento vocale personalizzato 4 core, 4 GB di memoria 8 core, 8 GB di memoria Da oltre 4 a 8 GB di memoria
Identificazione della lingua per il Servizio cognitivo di Azure per la voce 1 core, 1 GB di memoria 1 core, 1 GB di memoria n/d
Sintesi vocale neurale 6 core, 12 GB di memoria 8 core, 16 GB di memoria n/d

Ogni core deve essere di almeno 2,6 gigahertz (GHz) o superiore.

Core e memoria corrispondono alle impostazioni --cpus e --memory che vengono usate come parte del comando docker run.

Nota

Le allocazioni minime e consigliate sono basate sui limiti di Docker, non sulle risorse del computer host. Ad esempio, parti della mappa di memoria dei contenitori di riconoscimento vocale di un modello linguistico di grandi dimensioni. È consigliabile che l'intero file sia contenuto nella memoria. È necessario aggiungere altri 4-8 GB per caricare i modelli conversione voce/testo (vedere la tabella precedente). Inoltre, la prima esecuzione di uno dei contenitori potrebbe richiedere più tempo perché i modelli vengono inseriti in memoria.

Requisiti e consigli sul computer host

L'host è un computer con architettura x64 che esegue il contenitore Docker. Può essere un computer dell'ambiente locale o un servizio di hosting Docker in Azure, tra cui:

Nota

I contenitori supportano l'input audio compresso per Speech SDK usando GStreamer. Per installare GStreamer in un contenitore, seguire le istruzioni linux per GStreamer in Usare l'input audio compresso codec con Speech SDK.

Supporto per Advanced Vector Extension

L'host è il computer che esegue il contenitore Docker. L'host deve supportareAdvanced Vector Extensions (AVX2). È possibile verificare il supporto di AVX2 negli host Linux con il comando seguente:

grep -q avx2 /proc/cpuinfo && echo AVX2 supported || echo No AVX2 support detected

Avviso

Il supporto di AVX2 nel computer host è obbligatorio. Il contenitore non funzionerà correttamente senza il supporto di AVX2.

Eseguire il contenitore

Usare il comando docker run per eseguire il contenitore. Quando è in esecuzione, il contenitore continua l'esecuzione finché non si arresta il contenitore.

Prendere nota delle procedure consigliate seguenti con il comando docker run:

  • Carattere di continuazione della riga: i comandi Docker nelle sezioni seguenti usano la barra rovesciata, \, come carattere di continuazione della riga. Sostituire o rimuovere questo carattere in base ai requisiti del sistema operativo host.
  • Ordine degli argomenti: Non cambiare l'ordine degli argomenti se non si ha dimestichezza con i contenitori Docker.

È possibile usare il comando docker images per visualizzare l'elenco delle immagini dei contenitori scaricate. Il comando seguente visualizza l'ID, il repository e il tag di ogni immagine del contenitore scaricata, in formato tabella:

docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

Ecco un risultato di esempio:

IMAGE ID         REPOSITORY                TAG
<image-id>       <repository-path/name>    <tag-name>

Verificare che il contenitore sia in esecuzione

Per verificare se il contenitore è in esecuzione, sono disponibili diverse opzioni. Individuare l'indirizzo IP esterno e la porta esposta del contenitore in questione, quindi aprire il Web browser preferito. Usare i vari URL di richiesta seguenti per accertarsi che il contenitore sia in esecuzione.

Gli URL di richiesta di esempio elencati qui sono http://localhost:5000, ma il contenitore specifico può variare. Usare l'indirizzo IP esterno e la porta esposta del proprio contenitore.

Richiesta URL Scopo
http://localhost:5000/ Il contenitore fornisce un home page.
http://localhost:5000/ready Questo URL, richiesto con un'operazione GET, verifica che il contenitore sia pronto per accettare una query sul modello. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes.
http://localhost:5000/status Questo URL, anch'esso richiesto con un'operazione GET, verifica se la chiave API usata per avviare il contenitore è valida senza che sia necessaria una query sull'endpoint. Questa richiesta può essere usata per i probe di attività e di idoneità di Kubernetes.
http://localhost:5000/swagger Il contenitore fornisce un set completo di documentazione per gli endpoint e una funzionalità Prova. Con questa funzionalità, è possibile immettere le impostazioni in un modulo HTML basato sul Web ed eseguire la query senza scrivere codice. Dopo che la query restituisce il risultato, viene fornito un comando CURL di esempio per illustrare il formato richiesto per il corpo e le intestazioni HTTP.

Arrestare il contenitore

Per arrestare il contenitore, nell'ambiente della riga di comando in cui è in esecuzione il contenitore premere CTRL+C.

Eseguire più contenitori nello stesso host

Se si intende eseguire più contenitori con porte esposte, assicurarsi di eseguire ogni contenitore con una porta esposta diversa. Eseguire ad esempio il primo contenitore sulla porta 5000 e il secondo sulla porta 5001.

È possibile avere questo contenitore e un contenitore di Azure per intelligenza artificiale diverso in esecuzione insieme nell'host. È anche possibile avere più contenitori di Azure per intelligenza artificiale in esecuzione.

URL host

Nota

Usare un numero di porta univoco se si eseguono più contenitori.

Protocollo URL dell'host Contenitori
WS ws://localhost:5000 Riconoscimento vocale

Riconoscimento vocale personalizzato
HTTP http://localhost:5000 Sintesi vocale neurale

Identificazione della lingua per la sintesi vocale

Per altre informazioni sull'uso dei protocolli WSS e HTTPS, vedere Sicurezza dei contenitori nella documentazione dei servizi di intelligenza artificiale di Azure.

Risoluzione dei problemi

Quando si avvia o si esegue il contenitore, è possibile che si verifichino dei problemi. Usare un montaggio di output e abilitare la registrazione. In questo modo il contenitore può generare file di log utili quando si risolvono i problemi.

Suggerimento

Per altre informazioni sulla risoluzione dei problemi e indicazioni, vedere Domande frequenti sui contenitori di Intelligenza artificiale di Azure nella documentazione dei servizi di intelligenza artificiale di Azure.

Impostazioni di registrazione

I contenitori Voce sono dotati di supporto per la registrazione di ASP.NET Core. Di seguito è riportato un esempio di neural-text-to-speech container avviata con la registrazione predefinita nella console:

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} \
Logging:Console:LogLevel:Default=Information

Per altre informazioni sulla registrazione, vedere Configurare i contenitori voce e record di utilizzo nella documentazione dei servizi di intelligenza artificiale di Azure.

Contenitore di diagnostica Microsoft

Se si verificano problemi durante l'esecuzione di un contenitore di Azure AI, è possibile provare a usare il contenitore per la diagnostica di Microsoft. Usare questo contenitore per diagnosticare gli errori comuni nell'ambiente di distribuzione che potrebbero impedire il funzionamento previsto dei contenitori di Azure per intelligenza artificiale.

Per ottenere il contenitore, usare il comando docker pull seguente:

docker pull mcr.microsoft.com/azure-cognitive-services/diagnostic

Quindi eseguire il contenitore. Sostituire {ENDPOINT_URI} con l'endpoint e {API_KEY} con la chiave per la risorsa:

docker run --rm mcr.microsoft.com/azure-cognitive-services/diagnostic \
eula=accept \
Billing={ENDPOINT_URI} \
ApiKey={API_KEY}

Il contenitore esegue il test della connettività di rete per l’endpoint di fatturazione.

Eseguire contenitori disconnessi

Per eseguire contenitori disconnessi (non connessi a Internet), è necessario inviare il modulo di richiesta e attendere l'approvazione. Per altre informazioni sull'applicazione e l'acquisto di un piano di impegno per l'uso di contenitori in ambienti disconnessi, vedere Usare i contenitori in ambienti disconnessi nella documentazione sui Servizi di Azure AI.

Passaggi successivi