Sprachsynthese-Container mit Docker

Der Container für neuronale Sprachsynthese konvertiert Text in natürlich klingende Sprache, indem er Deep Neural Network-Technologie verwendet, die eine natürlichere synthetisierte Sprache ermöglicht. In diesem Artikel erfahren Sie, wie Sie einen Sprachsynthesecontainer herunterladen, installieren und ausführen.

Weitere Informationen zu den Voraussetzungen, zum Überprüfen, ob ein Container ausgeführt wird, Ausführen mehrerer Container auf demselben Host und Ausführen nicht verbundener Container finden Sie unter Installieren und Ausführen von Docker-Containern für die APIs des Speech-Diensts.

Containerimages

Das neuronale Sprachsynthese-Containerimage für alle unterstützten Versionen und Gebietsschemata finden Sie im Microsoft Container Registry (MCR)-Syndikat. Es befindet sich im Repository azure-cognitive-services/speechservices/ und trägt den Namen neural-text-to-speech.

Screenshot des Dialogfelds „Connectors und Triggers suchen“.

Der vollqualifizierte Containerimagename lautet mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech. Fügen Sie entweder eine bestimmte Version oder zum Abrufen der aktuellen Version :latest an.

Version `Path`
Neueste Version mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

Das Tag latest pullt das Gebietsschema en-US und die Stimme en-us-arianeural.
3.5.0 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:3.5.0-amd64-en-us-arianeural

Alle Tags, mit Ausnahme von latest, haben das folgende Format und beachten die Groß-/Kleinschreibung:

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

Die Tags sind der Einfachheit halber auch im JSON-Format verfügbar. Der Text enthält den Containerpfad und eine Liste mit Tags. Die Tags sind nicht nach Version sortiert, "latest" ist jedoch wie im folgenden Codeschnipsel gezeigt immer am Ende der Liste enthalten:

{
  "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"
  ]
}

Wichtig

Die Standardstimmen für die Sprachsynthese und der Standard-Sprachsynthese-Container wurden am 31. August 2021 eingestellt. Verwenden Sie stattdessen neuronale Stimmen mit dem neuronalen Sprachsynthese-Container, Version 3.0 und höher.

Ab dem 29. Februar 2024 werden die Sprachsynthese und der neuralen Sprachsynthese-Container, Versionen 2.19 und früher nicht mehr unterstützt. Weitere Informationen zum Aktualisieren Ihrer Anwendung finden Sie unter Migrieren von der Standardstimme zur vordefinierten neuronalen Stimme.

Abrufen des Containerimages mit dem Befehl „docker pull“

Sie müssen die Voraussetzungen erfüllen (einschließlich der Hardwareanforderungen). Sehen Sie sich auch die empfohlene Zuordnung von Ressourcen für die einzelnen Speech-Container an.

Verwenden Sie den Befehl docker pull, um ein Containerimage aus Microsoft Container Registry herunterzuladen:

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

Wichtig

Das Tag latest pullt das Gebietsschema en-US und die Stimme en-us-arianeural. Weitere Gebietsschemata und Stimmen finden Sie unter Sprachsynthese-Containerimages.

Ausführen des Containers mit „docker run“

Verwenden Sie den Befehl docker run, um den Container auszuführen.

Die folgende Tabelle zeigt die verschiedenen docker run-Parameter und die entsprechenden Beschreibungen:

Parameter BESCHREIBUNG
{ENDPOINT_URI} Der Endpunkt ist zur Messung und Abrechnung erforderlich. Weitere Informationen finden Sie unter Abrechnungsargumente.
{API_KEY} Der API-Schlüssel ist erforderlich. Weitere Informationen finden Sie unter Abrechnungsargumente.

Wenn Sie den Sprachsynthese-Container ausführen, konfigurieren Sie Port, Arbeitsspeicher und CPU gemäß den Anforderungen und Empfehlungen für Sprachsynthese-Container.

Hier sehen Sie einen Beispielbefehl docker run mit Platzhalterwerten. Sie müssen die Werte ENDPOINT_URI und API_KEY angeben:

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}

Dieser Befehl:

  • Führt einen neuronalen Sprachsynthese-Container aus dem Containerimage aus.
  • Ordnet 6 CPU-Kerne und 12 GB Arbeitsspeicher zu.
  • Macht den TCP-Port 5000 verfügbar und ordnet eine Pseudo-TTY-Verbindung für den Container zu.
  • Entfernt den Container automatisch, nachdem er beendet wurde. Das Containerimage ist auf dem Hostcomputer weiterhin verfügbar.

Weitere Informationen zur Verwendung von docker run mit Speech-Containern finden Sie unter Installieren und Ausführen von Docker-Containern für die APIs des Speech-Diensts.

Verwenden des Containers

Speech-Container bieten websocketbasierte Abfrageendpunkt-APIs, auf die über das Speech SDK und die Speech-Befehlszeilenschnittstelle (Command Line Interface, CLI) zugegriffen wird. Standardmäßig verwenden das Speech SDK und die Speech-CLI den öffentlichen Speech-Dienst. Um den Container verwenden zu können, müssen Sie die Initialisierungsmethode ändern.

Wichtig

Wenn Sie den Speech-Dienst mit Containern verwenden, müssen Sie die Hostauthentifizierung verwenden. Wenn Sie den Schlüssel und die Region konfigurieren, werden Anforderungen an den öffentlichen Speech-Dienst gesendet. Die Ergebnisse des Speech-Diensts sind möglicherweise nicht wie erwartet. Anforderungen von nicht verbundenen Containern schlagen fehl.

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container host:

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

Verwenden Sie anstelle dieser Konfiguration für die Azure-Cloudinitialisierung:

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

Die folgende Konfiguration mit dem Container endpoint:

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

Wenn Sie die Speech CLI in einem Container verwenden, schließen Sie die Option --host http://localhost:5000/ ein. Sie müssen auch --key none angeben, um sicherzustellen, dass die CLI nicht versucht, einen Speech-Schlüssel für die Authentifizierung zu verwenden. Informationen zum Konfigurieren der Speech-CLI finden Sie unter Erste Schritte mit der Azure KI Speech-CLI.

Testen Sie den Schnellstart zur Sprachsynthese mithilfe der Hostauthentifizierung anstelle von Schlüssel und Region.

SSML-Voice-Element

Wenn Sie eine HTTP POST-Anforderung für neuronale Sprachsynthese erstellen, benötigt die SSML-Nachricht ein voice-Element mit einem name-Attribut. Das Gebietsschema der Stimme muss dem Gebietsschema des Containermodells entsprechen. Der Support für SSML-Tag ist für jede Sprachsynthese-Sprache sowohl in der Azure-Cloud als auch in der Containerumgebung konsistent.

Für ein Modell, das über das latest-Tag heruntergeladen wurde (standardmäßig „en-US“), lautet der Name der Stimme beispielsweise 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>

Nächste Schritte