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 を追加して最新バージョンを取得します。

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

latest タグにより、en-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 でコンテナー イメージを取得する

必要なハードウェアを含む前提条件を満たす必要があります。 また、各音声コンテナーに対して推奨されるリソースの割り当ても参照してください。

Microsoft Container Registry からコンテナー イメージをダウンロードするには、docker pull コマンドを使用します。

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

重要

latest タグにより、en-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 を公開し、コンテナーに pseudo-TTY を割り当てます。
  • コンテナーの終了後にそれを自動的に削除します。 ホスト コンピューター上のコンテナー イメージは引き続き利用できます。

音声コンテナーでの docker run の詳細については、「Docker を使用して音声コンテナーをインストールして実行する」を参照してください。

コンテナーを使用する

音声コンテナーは、WebSocket ベースのクエリ エンドポイント API シリーズを提供します。これには、Speech SDK および Speech CLI を介してアクセスします。 既定では、Speech SDK と Speech 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")

コンテナーで Speech CLI を使用する場合は、--host http://localhost:5000/ オプションを含めます。 CLI が認証に音声キーを使用しないようにするには、--key none も指定する必要があります。 Speech CLI を構成する方法については、「Azure AI Speech 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>

次のステップ