Share via


使用 Docker 的文字轉換語音容器

類神經文字到語音容器會使用深度神經網路技術,將文字轉換成自然語音,以允許更自然的合成語音。 在本文中,您將瞭解如何下載、安裝及執行文字到語音轉換容器。

如需必要條件、驗證容器正在執行、在相同主機上執行多個容器,以及執行中斷連線容器的詳細資訊,請參閱使用 Docker 安裝及執行語音容器

容器映像

您可以在 Microsoft Container Registry (MCR) 同步發行中找到所有支援版本和地區設定的神經文字轉換語音容器映像。 它位於存放庫內 azure-cognitive-services/speechservices/ ,並命名為 neural-text-to-speech

A screenshot of the search connectors and triggers dialog.

完整容器映像名稱為 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech 附加特定版本或附加 :latest 以取得最新版本。

版本 Path
Latest mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:latest

標籤 latesten-US 提取地區設定和 en-us-arianeural 語音。
3.1.0 mcr.microsoft.com/azure-cognitive-services/speechservices/neural-text-to-speech:3.1.0-amd64-en-us-arianeural

除了 latest以外的所有標籤都使用下列格式,且區分大小寫:

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

為了方便起見,標籤也以 JSON 格式提供。 本文包含容器路徑和標籤清單。 標籤不會依版本排序,但 "latest" 一律會包含在清單結尾,如下列程式碼片段所示:

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

重要

我們已於 2021 年 8月 31 日淘汰標準語音合成語音和標準文字轉換語音容器。 您應該改用類神經語音搭配 類神經文字到語音 容器 3.0 版和更新版本。

從 2024 年 2 月 29 日起,不支援語音轉換文字和類神經文字到語音容器 2.19 版和更早版本。 如需更新應用程式的詳細資訊,請參閱 從標準語音遷移至預先建置的神經語音

使用 docker pull 取得容器映像

您需要必要條件,包括必要的硬體。 另請參閱 每個語音容器的建議資源 配置。

使用 docker pull 命令從 Microsoft Container Registry 下載容器映射:

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

重要

標籤 latesten-US 提取地區設定和 en-us-arianeural 語音。 如需其他地區設定和語音,請參閱文字轉換語音容器映像

使用 docker run 執行容器

使用 docker run 命令來執行容器。

下表代表各種 docker run 參數及其對應的描述:

參數 描述
{ENDPOINT_URI} 計量和計費需要端點。 如需詳細資訊,請參閱計費引數
{API_KEY} 需要 API 金鑰。 如需詳細資訊,請參閱計費引數

當您執行文字轉換語音容器時,請根據文字轉換語音容器需求和建議,設定連接埠、記憶體和 CPU。

以下為具有預留位置值的範例 docker run 命令。 您必須指定 ENDPOINT_URIAPI_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}

此命令:

  • 從容器映像執行神經文字轉換語音容器。
  • 配置 6 個 CPU 核心和 12 GB 的記憶體。
  • 公開 TCP 連接埠 5000,並為容器配置虛擬 TTY。
  • 在容器結束時自動移除容器。 主計算機上仍可使用容器映像。

如需關於搭配語音容器執行 docker run 的詳細資訊,請參閱使用 Docker 安裝及執行語音容器

使用該容器

語音容器會提供 Websocket 型查詢端點 API,其可透過語音 SDK 和語音 CLI 來存取。 根據預設,語音 SDK 和語音 CLI 會使用公用語音服務。 若要使用容器,您必須變更初始化方法。

重要

當您搭配容器使用語音服務時,請務必使用主機驗證。 如果您設定金鑰和區域,則要求會移至公用語音服務。 來自語音服務的結果可能並非如您預期的結果。 來自已中斷連線容器的要求將會失敗。

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器主機使用此設定:

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

不要使用此 Azure 雲端初始化設定:

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

搭配容器端點使用此設定:

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

當您在容器中使用語音 CLI 時,請包含 --host http://localhost:5000/ 選項。 您也必須指定 --key none 來確保 CLI 不會嘗試使用語音金鑰進行驗證。 如需如何設定語音 CLI 的詳細資訊,請參閱開始使用 Azure AI 語音 CLI

使用主機驗證而非金鑰和區域,嘗試文字轉換語音快速入門

SSML 語音元素

當您建構神經文字轉換語音 HTTP POST 時,SSML 訊息需要具有 name 屬性的 voice 元素。 語音的地區設定必須對應至容器模型的地區設定。

例如,透過 latest 標籤 (預設為「en-US」) 下載的模型會有 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>

下一步