Docker で音声コンテナーをインストールして実行する

コンテナーを使うと、独自の環境で音声サービス機能のサブセットを使用できます。 この記事では、Speech コンテナーをダウンロード、インストール、実行する方法について説明します。

Note

切断されたコンテナーの価格レベルとコミットメント レベルは、標準コンテナーとは異なります。 詳細については、「Speech Services の価格」を参照してください。

前提条件

Speech サービス コンテナーを使用する前に、次の前提条件を満たす必要があります。 Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。 必要なもの:

  • ホスト コンピューターに Docker がインストールされていること。 コンテナーが Azure に接続して課金データを送信できるように、Docker を構成する必要があります。
    • Windows では、Linux コンテナーをサポートするように Docker を構成することも必要です。
    • Docker の概念に関する基本的な知識が必要です。
  • 価格レベルが Free (F0) または Standard (S) の Speech サービス リソース

課金引数

音声コンテナーは、計測のために Azure に接続されていないと、実行のライセンスが許可されません。 コンテナーは、計測サービスに課金情報を常に伝えるように構成する必要があります。

すべての Azure AI コンテナーに対して 3 つの主要なパラメーターが必須です。 Microsoft ソフトウェア ライセンス条項について、値 accept が示される必要があります。 エンドポイント URI と API キーも必要です。

コンテナーへのクエリは、 ApiKeyパラメーターに使用される Azure リソースの価格レベルで課金 されます。

docker run コマンドは、次の 3 つのオプションのすべてで有効な値が指定されると、コンテナーを起動します。

オプション 説明
ApiKey 課金情報を追跡するために使用される音声リソースの API キー。
ApiKey の値はコンテナーを起動するために使用され、Azure portal の、対応する音声リソースの [キー] ページで入手できます。 [キー] ページに移動し、[クリップボードにコピー] アイコンを選択します。
Billing 課金情報を追跡するために使用される音声リソースのエンドポイント。
エンドポイントは、Azure portal の、対応する音声リソースの [概要] ページで入手できます。 [概要] ページに移動し、エンドポイントの上にマウスを合わせると、[クリップボードにコピー] アイコンが表示されます。 必要に応じて、エンドポイントをコピーして使用します。
Eula お客様がコンテナーのライセンスに同意したことを示します。
このオプションの値は accept に設定する必要があります。

重要

これらのサブスクリプション キーは、Azure AI サービス API にアクセスするために使用されます。 キーを共有しないでください。 安全に保管してください。 たとえば、Azure Key Vault を使用します。 また、これらのキーを定期的に再生成することをお勧めします。 API 呼び出しを行うために必要なキーは 1 つだけです。 最初のキーを再生成するときに、2 番目のキーを使用してサービスに継続的にアクセスすることができます。

コンテナーには、実行する課金引数の値が必要です。 これらの値により、コンテナーは課金エンドポイントに接続することができます。 コンテナーは、約 10 から 15 分ごとに使用状況を報告します。 許可された時間枠内でコンテナーが Azure に接続しなかった場合、コンテナーは引き続き実行されますが、課金エンドポイントが復元されるまでクエリには対応しません。 接続は、10 ~15 分の同じ時間間隔で、10 回試行されます。 10 回以内に課金エンドポイントに接続できなかった場合、コンテナーによる要求の処理は停止されます。 課金のために Microsoft に送信される情報の例については、Azure Cognitive Services ドキュメントの Azure AI サービス コンテナーに関する FAQ を参照してください。

これらのオプションの詳細については、「コンテナーの構成」を参照してください。

コンテナーの要件と推奨事項

次の表に、各 Speech コンテナーに割り当てるリソースの最小値と推奨値を示します。

コンテナー 最小値 推奨 音声モデル
音声テキスト変換 4 コア、4 GB メモリ 8 コア、8 GB のメモリ +4 から 8 GB のメモリ
カスタム音声テキスト変換 4 コア、4 GB メモリ 8 コア、8 GB のメモリ +4 から 8 GB のメモリ
音声言語識別 1 コア、1 GB のメモリ 1 コア、1 GB のメモリ N/A
ニューラル テキスト読み上げ 6 コア、12 GB のメモリ 8 コア、16 GB のメモリ N/A

各コアは少なくとも 2.6 ギガヘルツ (GHz) 以上にする必要があります。

コアとメモリは、docker run コマンドの一部として使用される --cpus--memory の設定に対応します。

注意

最小と推奨の割り当ては、Docker の制限に基づくもので、ホスト マシンのリソースに基づくものでは "ありません"。 たとえば、大規模な言語モデルの音声テキスト変換コンテナーのメモリ マップ部分です。 ファイル全体をメモリに収めることをお勧めします。 音声モデルを読み込むには、さらに 4 から 8 GB を追加する必要があります (上記の表を参照)。 また、モデルはメモリにページングされるため、いずれかのコンテナーの最初の実行にはより長い時間がかかる可能性があります。

ホスト コンピューターの要件と推奨事項

ホストとは、Docker コンテナーを実行する x64 ベースのコンピューターのことです。 お客様のオンプレミス上のコンピューターを使用できるほか、次のような Azure 内の Docker ホスティング サービスを使用することもできます。

注意

コンテナーでは、GStreamer を使用した Speech SDK への圧縮オーディオ入力がサポートされます。 コンテナーに GStreamer をインストールするには、「Speech SDK でコーデック圧縮オーディオを使用する」での GStreamer に関する Linux の手順に従ってください。

Advanced Vector Extension のサポート

"ホスト" とは、Docker コンテナーを実行するコンピューターのことです。 ホストは、高度なベクター拡張機能 (AVX2) を サポートしている必要があります。 次のコマンドを使用して、Linux ホストでの AVX2 サポートを確認できます。

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

警告

AVX2 をサポートするにはホスト コンピューターが必須です。 AVX2 サポートがないと、コンテナーは正しく機能しません

コンテナーを実行する

コンテナーを実行するには、docker run コマンドを使用します。 コンテナーは一度実行すると、お客様が停止するまで動作し続けます。

docker run コマンドについての次のベスト プラクティスを確認してください。

  • 行連結文字: 以降のセクションの Docker コマンドには、行連結文字としてバック スラッシュ (\) が使用されています。 ホスト オペレーティング システムの要件に基づいて、この文字を置換または削除してください。
  • 引数の順序: Docker コンテナーについて知識がある場合を除き、引数の順序は変更しないでください。

docker images コマンドを使用して、ダウンロードしたコンテナー イメージを一覧表示できます。 次のコマンドでは、ダウンロードした各コンテナー イメージの ID、リポジトリ、およびタグが表として書式設定されて表示されます。

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

次が結果の例です。

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

コンテナーが実行されていることを検証する

コンテナーが実行されていることを検証する方法は複数あります。 問題になっているコンテナーの "外部 IP" アドレスと公開ポートを特定し、任意の Web ブラウザーを開きます。 次の各種の要求 URL を使用して、コンテナーが実行中であることを確認します。

ここに示す要求例の URL は http://localhost:5000 ですが、実際のコンテナーは異なる可能性があります。 使用するコンテナーの外部 IP アドレスと公開ポートを基にしてください。

要求 URL 目的
http://localhost:5000/ コンテナーには、ホーム ページが用意されています。
http://localhost:5000/ready GET で要求することで、この URL により、コンテナーがモデルに対するクエリを受け取る準備ができていることを確認できます。 この要求は Kubernetes の liveness probe と readiness probe に対して使用できます。
http://localhost:5000/status これも GET で要求することで、この URL により、コンテナーを起動するために使用された API キーが有効であるかどうかを、エンドポイント クエリを発生させずに確認できます。 この要求は Kubernetes の liveness probe と readiness probe に対して使用できます。
http://localhost:5000/swagger コンテナーには、エンドポイントの完全なドキュメント一式と、 [Try it out](試してみる) の機能が用意されています。 この機能を使用すると、コードを一切記述することなく、お客様の設定を Web ベースの HTML フォームに入力したりクエリを実行したりできます。 クエリから戻った後、HTTP ヘッダーと HTTP 本文の必要な形式を示すサンプル CURL コマンドが得られます。

コンテナーの停止

コンテナーをシャットダウンするには、コンテナーが実行されているコマンドライン環境で、Ctrl + C キーを押します。

同じホスト上で複数のコンテナーを実行する

公開されているポートを使って複数のコンテナーを実行する予定の場合、必ず各コンテナーを別の公開されているポートで実行してください。 たとえば、最初のコンテナーをポート 5000 上で、2 番目のコンテナーを 5001 上で実行します。

このコンテナーと、別の Azure AI コンテナーを HOST 上で同時に実行することができます。 同じ Azure AI コンテナーの複数のコンテナーを実行することもできます。

ホスト URL

注意

複数のコンテナーを実行している場合は、一意のポート番号を使用します。

Protocol ホスト URL Containers
WS ws://localhost:5000 音声テキスト変換

カスタム音声テキスト変換
HTTP http://localhost:5000 ニューラル テキスト読み上げ

音声言語識別

WSS プロトコルと HTTPS プロトコルの使用の詳細については、Azure AI サービス ドキュメントの コンテナーのセキュリティ に関する記事を参照してください。

トラブルシューティング

コンテナーを起動または実行したときに問題が発生することがあります。 出力マウントを使用し、ログ記録を有効にします。 こうすることにより、問題をトラブルシューティングするときに役立つログ ファイルをコンテナーで生成できます。

ヒント

トラブルシューティング情報とガイダンスの詳細については、Azure AI サービス ドキュメントの Azure AI コンテナーについてのよくあるご質問 (FAQ) に関する記事を参照してください。

Logging の設定

音声コンテナーには、ASP.NET Core のログ記録のサポートが付属しています。 コンソールへの既定のログ記録で開始された neural-text-to-speech container の例を次に示します。

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

ログ記録の詳細については、Azure AI サービス ドキュメントの 音声コンテナーの構成 に関する記事と、使用状況レコード を参照してください。

Microsoft 診断コンテナー

Azure AI サービス コンテナーの実行で問題が発生している場合は、Microsoft 診断コンテナーを使用してみることができます。 このコンテナーを使用して、Azure AI コンテナーが想定どおりに機能しなくなる可能性がある、展開環境での一般的なエラーを診断します。

コンテナーを取得するには、次の docker pull コマンドを使用します。

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

その後で、コンテナーを実行します。 {ENDPOINT_URI} をエンドポイントに置き換え、{API_KEY} をリソースへのキーに置き換えます。

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

課金エンドポイントへのネットワーク接続がコンテナーでテストされます。

切断されたコンテナーを実行する

切断された (インターネットに接続されていない) コンテナーを実行するには、こちらの要求フォームを送信し、承認を待つ必要があります。 切断された環境でコンテナーを使用するためのコミットメント プランの申請と購入の詳細については、Azure AI サービス ドキュメントの「切断された環境での Docker コンテナーの使用」を参照してください。

次のステップ