プライベート エンドポイントを経由したインデクサー接続
Azure Private Link を利用すると、プライベート エンドポイントを使用して Azure のサービスに接続できます。 プライベート エンドポイントは、特定の仮想ネットワークおよびサブネット内でのみアクセス可能なプライベート IP アドレスです。
この記事では、音声サービスで Private Link とプライベート エンドポイントを設定して使用する方法について説明します。 その後、この記事では、後でプライベート エンドポイントを削除しても引き続き Speech リソースを使用する方法について説明します。
Note
続行する前に、Azure AI サービスで仮想ネットワークを使用する方法に関する記事を確認してください。
プライベート エンドポイントのシナリオで Speech リソースを設定にするには、次のタスクを実行する必要があります。
プライベート エンドポイントと仮想ネットワーク サービス エンドポイント
Azure では、プライベート Azure バックボーン ネットワーク経由でトンネリングするトラフィックに対して、プライベート エンドポイントと仮想ネットワーク サービス エンドポイントを提供します。 これらの種類のエンドポイントは、目的と、基になるテクノロジが似ています。 しかし、2 つのテクノロジには違いがあります。 ネットワークを設計する前に、両方の長所と短所について学習することをお勧めします。
使用するテクノロジを決定する際には、以下の点を考慮する必要があります。
- どちらのテクノロジでも、仮想ネットワークと Speech リソース間のトラフィックはパブリック インターネットを経由しません。
- プライベート エンドポイントには、音声リソースに専用のプライベート IP アドレスがあります。 この IP アドレスには、特定の仮想ネットワークとサブネット内でのみアクセスできます。 ネットワーク インフラストラクチャ内でこの IP アドレスへのアクセスを完全に制御できます。
- 仮想ネットワーク サービス エンドポイントでは、Speech リソース専用のプライベート IP アドレスは提供されません。 代わりに、Speech リソースに送信されたすべてのパケットはカプセル化され、Azure バックボーン ネットワーク経由で直接配信されます。
- どちらのテクノロジでも、オンプレミスのシナリオをサポートしています。 既定では、仮想ネットワーク サービス エンドポイントを使用する場合、仮想ネットワークでセキュリティ保護された Azure サービス リソースには、オンプレミス ネットワークからはアクセスできません。 しかし、その動作を変更できます。
- 仮想ネットワーク サービス エンドポイントは、トラフィックの発信元の仮想ネットワークに基づいて Speech リソースへのアクセスを制限するために、よく使用されます。
- Azure AI サービスの場合、仮想ネットワーク サービス エンドポイントを有効にすると、すべての Azure AI サービス リソースのトラフィックがプライベート バックボーン ネットワークを経由します。 これには、明示的なネットワーク アクセス構成が必要です。 (詳細については、「仮想ネットワークと Speech リソースのネットワーク設定を構成する」のセクションを参照してください。) プライベート エンドポイントにはこの制限はないので、ネットワーク構成をより柔軟に行うことができます。 同じ仮想ネットワークの同じサブネットを使用し、1 つのリソースにはプライベート バックボーンを介してアクセスし、もう 1 つにはパブリック インターネットを介してアクセスすることができます。
- プライベート エンドポイントには追加コストが発生します。 仮想ネットワーク サービス エンドポイントは、無料です。
- プライベート エンドポイントには、追加の DNS 構成が必要です。
- 1 つの Speech リソースが、プライベート エンドポイントと仮想ネットワーク サービス エンドポイントの両方で同時に動作する場合があります。
運用環境の設計を決定する前に、両方の種類のエンドポイントを試してみることをお勧めします。
詳細については、次のリソースを参照してください。
この記事では、Speech サービスでのプライベート エンドポイントの使用方法について説明します。 VNet サービス エンドポイントの使用方法については、こちらを参照してください。
カスタム ドメイン名を作成する
注意事項
カスタム ドメイン名が有効になっている Speech リソースでは、Speech サービスとのやり取りに別の方法が使用されます。 プライベート エンドポイントを使用するシナリオと、プライベート エンドポイントを使用 "しない" シナリオの両方に対して、アプリケーションのコードを調整することが必要になる場合があります。
こちらの手順に従って、Speech リソースの Azure AI サービスのカスタム サブドメイン名を作成します。
注意事項
カスタム ドメイン名をオンにした場合、この操作を元に戻すことはできません。 リージョン名に戻る唯一の方法は、新しい Speech リソースを作成することです。
Speech Studio を使用して作成された多数のカスタム モデルおよびプロジェクトが Speech リソースに関連付けられている場合は、運用環境で使用されているリソースを変更する前に、テスト リソースで構成を試してみることを強くお勧めします。
Azure portal を使用してカスタム ドメイン名を作成するには、次の手順に従います。
Azure portal に移動し、ご自分の Azure アカウントにサインインします。
必要な Speech リソースを選択します。
左側のペインの [リソース管理] グループで、 [ネットワーク] を選択します。
[ファイアウォールと仮想ネットワーク] タブで、 [カスタム ドメイン名を生成します] を選択します。 新しい右パネルが開き、リソースの一意のカスタム サブドメインを作成する手順が示されます。
[カスタム ドメイン名の生成] パネルで、カスタム ドメイン名を入力します。 完全なカスタム ドメインは、
https://{your custom name}.cognitiveservices.azure.com
のようになります。作成したカスタム ドメイン名は後で変更 "できない" ことに注意してください。
カスタム ドメイン名を入力した後、 [保存] を選択します。
操作が終わったら、 [リソース管理] グループで [Keys and Endpoint](キーとエンドポイント) を選択します。 リソースの新しいエンドポイント名が次のように始まっていることを確認します:
https://{your custom name}.cognitiveservices.azure.com
。
プライベート エンドポイントをオンにする
プライベート エンドポイント用に必要な更新が行われた仮想ネットワークにアタッチされているプライベート DNS ゾーンを使用することをお勧めします。 プロビジョニング プロセス中に、プライベート DNS ゾーンを作成できます。 独自の DNS サーバーを使用している場合は、DNS の構成の変更が必要になることもあります。
運用環境の Speech リソース用にプライベート エンドポイントをプロビジョニングする "前に"、DNS 戦略を決定します。 また、DNS の変更をテストします (特に、独自の DNS サーバーを使用する場合)。
以下の記事のいずれかを使用して、プライベート エンドポイントを作成します。 こちらの記事では、プライベート エンドポイントで使用できるようにするため、サンプル リソースとして Web アプリが使用されています。
- Azure portal を使用してプライベート エンドポイントを作成する
- Azure PowerShell を使用してプライベート エンドポイントを作成する
- Azure CLI を使用してプライベート エンドポイントを作成する
選択した記事のパラメーターの代わりに、次のパラメーターを使用します。
設定 | 値 |
---|---|
リソースの種類 | Microsoft.CognitiveServices/accounts |
リソース | <your-speech-resource-name> |
ターゲット サブリソース | アカウント |
プライベート エンドポイントの DNS:Azure AI サービス リソースでのプライベート エンドポイントの DNS の一般原則を確認します。 次に、以下のセクションで説明するチェックを実行して、DNS の構成が正常に機能していることを確認します。
仮想ネットワークから DNS を解決する
このチェックは "必須" です。
仮想ネットワークからカスタム DNS エントリをテストするには、次の手順のようにします。
プライベート エンドポイントをアタッチした仮想ネットワーク内にある仮想マシンにサインインします。
Windows コマンド プロンプトまたは Bash シェルを開いて
nslookup
を実行し、リソースのカスタム ドメイン名が正しく解決されることを確認します。C:\>nslookup my-private-link-speech.cognitiveservices.azure.com Server: UnKnown Address: 168.63.129.16 Non-authoritative answer: Name: my-private-link-speech.privatelink.cognitiveservices.azure.com Address: 172.28.0.10 Aliases: my-private-link-speech.cognitiveservices.azure.com
IP アドレスがプライベート エンドポイントの IP アドレスと一致していることを確認します。
他のネットワークから DNS を解決する
このチェックは、リソースの [ネットワーク] セクションで [すべてのネットワーク] オプションまたは [Selected Networks and Private Endpoints](選択したネットワークとプライベート エンドポイント) アクセス オプションを有効にした場合にのみ実行します。
プライベート エンドポイントのみを使用してリソースにアクセスする予定の場合は、このセクションを省略できます。
リソースへのアクセスが許可されているネットワークにアタッチされたコンピューターにサインインします。
Windows コマンド プロンプトまたは Bash シェルを開いて
nslookup
を実行し、リソースのカスタム ドメイン名が正しく解決されることを確認します。C:\>nslookup my-private-link-speech.cognitiveservices.azure.com Server: UnKnown Address: fe80::1 Non-authoritative answer: Name: vnetproxyv1-weu-prod.westeurope.cloudapp.azure.com Address: 13.69.67.71 Aliases: my-private-link-speech.cognitiveservices.azure.com my-private-link-speech.privatelink.cognitiveservices.azure.com westeurope.prod.vnet.cog.trafficmanager.net
注意
解決された IP アドレスは、仮想ネットワーク プロキシ エンドポイントを指しています。これにより、ネットワーク トラフィックが音声リソースのプライベート エンドポイントにディスパッチされます。 この動作は、カスタム ドメイン名が有効になっていても、プライベート エンドポイントが有効になっていないリソースでは異なります。 詳細については、このセクションを参照してください。
プライベート エンドポイントを持つ Speech リソースを使用するよう、アプリケーションを調整する
カスタム ドメインを持つ音声リソースは、音声サービスと別の方法でやり取りします。 これは、プライベート エンドポイントの有無に関係なく、カスタム ドメインが有効になっている Speech リソースに当てはまります。 このセクションの情報は、両方のシナリオに該当します。
このセクションの手順に従って、カスタム ドメイン名とプライベート エンドポイントを有効にした Speech リソースを使用するよう、既存のアプリケーションとソリューションを調整します。
音声リソースでカスタム ドメイン名とプライベート エンドポイントが有効になっている場合は、音声サービスとのやり取りに別の方法が使用されます。 このセクションでは、音声サービス REST API および Speech SDK でこのようなリソースを使用する方法について説明します。
Note
プライベート エンドポイントを持たない音声リソースがカスタム ドメイン名を使用する場合も、音声サービスとやり取りする特別な方法があります。 この方法は、プライベート エンドポイントを使用する Speech リソースのシナリオとは異なります。 これを考慮することが重要な理由は、プライベート エンドポイントを後で削除する可能性があるためです。 この記事で後述する「プライベート エンドポイントを持たない Speech リソースを使用するようにアプリケーションを調整する」を参照してください。
カスタム ドメイン名とプライベート エンドポイントが有効な Speech リソース: REST API での使用
このセクションでは、音声リソースの DNS 名 (カスタム ドメイン) のサンプルとして my-private-link-speech.cognitiveservices.azure.com
を使用します。
Speech サービスには、音声テキスト変換およびテキスト読み上げ用の REST API があります。 プライベート エンドポイントが有効なシナリオでは、次の情報を考慮します。
音声テキスト変換には、2 つの REST API があります。 各 API は、異なる目的に対応し、使用するエンドポイントが異なり、プライベート エンドポイントが有効なシナリオで使用するときは異なるアプローチを必要とします。
Speech to text REST API は次のとおりです。
- Speech to text REST API は、バッチ文字起こしと Custom Speech に使用されます。
- Speech to text REST API for short audio は、リアルタイムの音声テキスト変換に使用されます。
プライベート エンドポイントのシナリオでは、Speech to Text REST API for short audio および Text to Speech REST API の使用方法は同じです。 これは、この記事で後ほど説明する Speech SDK の場合と同じです。
Speech to Text REST API により使用されるエンドポイント セットが異なるため、プライベート エンドポイントが有効になっているシナリオには別のアプローチが必要になります。
次のサブセクションでは、両方のケースについて説明します。
Speech to text REST API
通常、Speech リソースでは、Speech to Text REST API と通信するために、Azure AI サービス リージョン エンドポイントが使用されます。 これらのリソースの名前付け形式は次のとおりです。
{region}.api.cognitive.microsoft.com
要求 URL のサンプルを次に示します。
https://westeurope.api.cognitive.microsoft.com/speechtotext/v3.1/transcriptions
Note
21Vianet エンドポイントによって運営される Azure Government および Microsoft Azure については、この記事を参照してください。
Speech リソースのカスタム ドメインを有効にした後 (プライベート エンドポイントに必要)、そのリソースでは基本的な REST API エンドポイントに次の DNS 名パターンが使用されます。
{your custom name}.cognitiveservices.azure.com
つまり、この例の REST API エンドポイント名は次のようになります:
my-private-link-speech.cognitiveservices.azure.com
また、要求 URL の例は次のように変換する必要があります。
https://my-private-link-speech.cognitiveservices.azure.com/speechtotext/v3.1/transcriptions
この URL には、プライベート エンドポイントがアタッチされている仮想ネットワークからアクセスできる (正しい DNS 解決が提供されている) 必要があります。
Speech リソースのカスタム ドメイン名を有効にした後は、通常、すべての要求 URL のホスト名を新しいカスタム ドメインのホスト名に置き換えます。 要求の他のすべての部分 (上の例でのパス /speechtotext/v3.1/transcriptions
など) は同じままです。
ヒント
お客様は、リージョンのエンドポイント DNS 名のリージョン部分を使用するアプリケーションを開発する場合があります (たとえば、特定の Azure リージョンにデプロイされた Speech リソースに要求を送信するため)。
Speech リソースのカスタム ドメインには、リソースがデプロイされるリージョンに関する情報は含まれて "いません"。 そのため、上で説明したアプリケーション ロジックは機能 "しない" ので、変更する必要があります。
Speech to Text REST API for short audio および Text to Speech REST API
Speech to Text REST API for short audio と Text to Speech REST API には、次の 2 種類のエンドポイントが使用されます。
- 認証トークンを取得するために Azure AI サービス REST API と通信するための Azure AI サービス リージョン エンドポイント
- 他のすべての操作のための特別なエンドポイント
Note
21Vianet エンドポイントによって運営される Azure Government および Azure については、この記事を参照してください。
特別なエンドポイントの詳細と、プライベート エンドポイントが有効になっている Speech リソースに応じて URL を変換する方法の詳細については、Speech SDK での使用方法に関するこちらのサブセクションを参照してください。 SDK について説明されているものと同じ原則が、Speech to Text REST API for short audio および Text to Speech REST API に適用されます。
前の段落で説明したサブセクションの資料を理解し、次の例をご覧ください。 この例では、Text to Speech REST API について説明します。 Speech to Text REST API for short audio の使用方法はまったく同じです。
注意
プライベート エンドポイントのシナリオで Speech to Text REST API for short audio および Text to Speech REST API を使用している場合は、Ocp-Apim-Subscription-Key
ヘッダーを介して渡されたリソース キーを使用します。 (詳細は、Speech to Text REST API for short audio および Text to Speech REST API を参照)
認証トークンを使用してそれを Authorization
ヘッダーを介して特殊なエンドポイントに渡すことは、音声リソースの [ネットワーク] セクションで [すべてのネットワーク] アクセス オプションを有効にした場合に "のみ" 機能します。 それ以外の場合は、認証トークンを取得しようとすると、Forbidden
または BadRequest
エラーが発生します。
Text to Speech REST API の使用例
Azure リージョンのサンプルとして西ヨーロッパを、音声リソースの DNS 名 (カスタム ドメイン) のサンプルとして my-private-link-speech.cognitiveservices.azure.com
を使用します。 この例のカスタム ドメイン名 my-private-link-speech.cognitiveservices.azure.com
は、西ヨーロッパ リージョンに作成された Speech リソースに属しています。
リージョンでサポートされている音声の一覧を取得するには、次の要求を実行します。
https://westeurope.tts.speech.microsoft.com/cognitiveservices/voices/list
詳細については、「Text to Speech REST API のドキュメント」を参照してください。
プライベート エンドポイントが有効になっている Speech リソースの場合、同じ操作のエンドポイント URL を変更する必要があります。 同じ要求は次のようになります。
https://my-private-link-speech.cognitiveservices.azure.com/tts/cognitiveservices/voices/list
Speech SDK については、「エンドポイント URL の構築」サブセクションの詳細な説明を参照してください。
カスタム ドメイン名とプライベート エンドポイントが有効な Speech リソース: Speech SDK での使用方法
カスタム ドメイン名とプライベート エンドポイントが有効になっている Speech リソースで Speech SDK を使用する場合は、アプリケーション コードを確認し、おそらくは変更することが必要になります。
このセクションでは、音声リソースの DNS 名 (カスタム ドメイン) のサンプルとして my-private-link-speech.cognitiveservices.azure.com
を使用します。
エンドポイント URL の構築
通常、SDK のシナリオ (および speech to text REST API for short audio と text to speech REST API のシナリオ) では、音声リソースは異なるサービス内容ごとに専用のリージョン エンドポイントを使用します。 これらのエンドポイントの DNS 名の形式は次のとおりです。
{region}.{speech service offering}.speech.microsoft.com
DNS 名の例を次に示します。
westeurope.stt.speech.microsoft.com
リージョン (DNS 名の最初の要素) に使用可能なすべての値は、「Speech サービスがサポートされているリージョン」の一覧に示されています。 21Vianet エンドポイントによって運営される Azure Government と Azure については、こちらの記事を参照してください。次の表では、Speech サービス オファリング (DNS 名の 2 番目の要素) に使用できる値を示します。
DNS 名値 | Speech Services オファリング |
---|---|
commands |
カスタム コマンド |
convai |
会議の文字起こし |
s2s |
音声翻訳 |
stt |
音声テキスト変換 |
tts |
テキスト読み上げ |
voice |
Custom Voice |
そのため、前の例 (westeurope.stt.speech.microsoft.com
) は、西ヨーロッパの音声テキスト変換エンドポイントを表しています。
プライベート エンドポイントが有効になっているエンドポイントと Speech サービスの通信は、特殊なプロキシを介して行われます。 そのため、"エンドポイント接続 URL を変更する必要があります"。
"標準的な" エンドポイント URL は次のようになります。
{region}.{speech service offering}.speech.microsoft.com/{URL path}
プライベート エンドポイント URL は次のようになります。
{your custom name}.cognitiveservices.azure.com/{speech service offering}/{URL path}
例 1. アプリケーションの通信には、次の URL が使用されています (西ヨーロッパでの米国英語用の基本モデルを使用する音声認識)。
wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US
Speech リソースのカスタム ドメイン名が my-private-link-speech.cognitiveservices.azure.com
のときにプライベート エンドポイントが有効になっているシナリオでこれを使用するには、この URL を次のように変更する必要があります。
wss://my-private-link-speech.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
次の詳細に注目します。
- ホスト名
westeurope.stt.speech.microsoft.com
は、カスタム ドメインのホスト名my-private-link-speech.cognitiveservices.azure.com
に置き換えられます。 - 元の DNS 名の 2 番目の要素 (
stt
) は URL パスの最初の要素になり、元のパスの前に置かれます。 つまり、元の URL/speech/recognition/conversation/cognitiveservices/v1?language=en-US
は/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
になります。
例 2. アプリケーションでは、次の URL を使用して、西ヨーロッパで音声を合成しています。
wss://westeurope.tts.speech.microsoft.com/cognitiveservices/websocket/v1
次の同等の URL ではプライベート エンドポイントを使用しており、Speech リソースのカスタム ドメイン名は my-private-link-speech.cognitiveservices.azure.com
です。
wss://my-private-link-speech.cognitiveservices.azure.com/tts/cognitiveservices/websocket/v1
例 1 と同じ原則が適用されますが、この場合の主要要素は tts
になります。
アプリケーションの変更
コードを変更するには、次の手順に従います。
アプリケーション エンドポイントの URL を特定します。
- アプリケーションのログ記録を有効にし、アプリケーションを実行してアクティビティをログに記録します。
- ログ ファイルで
SPEECH-ConnectionUrl
を検索します。 一致する行のvalue
パラメーターには、音声サービスに接続するために使用したアプリケーションの完全な URL が含まれています。
例:
(114917): 41ms SPX_DBG_TRACE_VERBOSE: property_bag_impl.cpp:138 ISpxPropertyBagImpl::LogPropertyAndValue: this=0x0000028FE4809D78; name='SPEECH-ConnectionUrl'; value='wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?traffictype=spx&language=en-US'
そのため、この例でアプリケーションによって使用される URL は次のようになります。
wss://westeurope.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US
エンドポイントの完全な URL を使用して、
SpeechConfig
インスタンスを作成します。前の「エンドポイント URL を構築する」セクションの説明に従って、特定したエンドポイントを変更します。
SpeechConfig
のインスタンスの作成方法を変更します。 通常、アプリケーションでは次のようなものが使用されています。var config = SpeechConfig.FromSubscription(speechKey, azureRegion);
前のセクションで説明したホスト名と URL が変化するため、この例はプライベート エンドポイントが有効な音声リソースに対しては機能しません。 プライベート エンドポイントが有効なリソースのキーを使用して、既存のアプリケーションを変更なしで実行しようとすると、認証エラー (401) が発生します。
機能させるには、
SpeechConfig
クラスのインスタンス化方法を変更し、"エンドポイントから" および "エンドポイントで" の初期化を使用します。 次の 2 つの変数が定義されているとします。speechKey
には、プライベート エンドポイントが有効な Speech リソースのキーが含まれます。endPoint
には、完全な "変更された" エンドポイント URL が含まれます (対応するプログラミング言語で必要な型を使用)。 この例では、この変数には次の内容が含まれている必要がありますwss://my-private-link-speech.cognitiveservices.azure.com/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
SpeechConfig
インスタンスを作成します。var config = SpeechConfig.FromEndpoint(endPoint, speechKey);
auto config = SpeechConfig::FromEndpoint(endPoint, speechKey);
SpeechConfig config = SpeechConfig.fromEndpoint(endPoint, speechKey);
import azure.cognitiveservices.speech as speechsdk config = speechsdk.SpeechConfig(endpoint=endPoint, subscription=speechKey)
SPXSpeechConfiguration *config = [[SPXSpeechConfiguration alloc] initWithEndpoint:endPoint subscription:speechKey];
import * as sdk from "microsoft.cognitiveservices.speech.sdk"; config: sdk.SpeechConfig = sdk.SpeechConfig.fromEndpoint(new URL(endPoint), speechKey);
ヒント
エンドポイント URI で指定されたクエリ パラメーターは、他の API によって設定されている場合でも変更されません。 たとえば、認識言語がクエリ パラメーター language=en-US
として URI で定義されていて、対応するプロパティにより ru-RU
にも設定されている場合は、URI での言語設定が使用されます。 有効な言語は en-US
になります。
エンドポイント URI で設定されたパラメーターが常に優先されます。 他の API でオーバーライドできるのは、エンドポイント URI で指定されていないパラメーターのみです。
この変更を行った後、アプリケーションで、プライベート エンドポイントが有効になっている Speech リソースを操作する必要があります。 プライベート エンドポイントのシナリオのサポートをいっそうシームレスにするための作業が行われています。
Speech Studio の使用
Speech Studio は、アプリケーションで Azure AI 音声サービスをビルドして統合するためのツールを備えた Web ポータルです。 Speech Studio プロジェクトで作業するときは、対応する Speech リソースへのネットワーク接続と API 呼び出しが自動的に行われます。 プライベート エンドポイント、仮想ネットワーク サービス エンドポイント、およびその他のネットワーク セキュリティ オプションを使用すると、Speech Studio 機能の可用性が制限される可能性があります。 通常は、Custom Speech、カスタム ニューラル音声、Audio Content Creation などの機能を操作するときに Speech Studio を使用します。
仮想ネットワークからの Speech Studio web ポータルへの到達
Azure 仮想ネットワーク内の仮想マシンから Speech Studio を使用するには、この仮想ネットワークに必要なサービス タグのセットへの発信接続を許可する必要があります。 詳細については、こちらを参照してください。
Speech リソース エンドポイントへのアクセスは、Speech Studio web ポータルへのアクセスと同じではありません。 プライベートまたは仮想ネットワーク サービス エンドポイント経由の Speech Studio web ポータルへのアクセスはサポートされていません。
Speech Studio プロジェクトの使用
このセクションでは、Speech リソースのさまざまなネットワーク セキュリティ オプションについて、さまざまな種類の Speech Studio プロジェクトを使用する方法について説明します。 Speech Studio への Web ブラウザーの接続が確立されていることが前提となります。 Speech リソースのネットワーク セキュリティ設定は Azure portal 上で設定されます。
- Azure portal に移動し、ご自分の Azure アカウントにサインインします。
- Speech リソースを選択します。
- 左側のウィンドウの [リソース管理] グループで、[ネットワーク]>[ファイアウォールと仮想ネットワーク] を選択します。
- [すべてのネットワーク]、[選択したネットワークとプライベート エンドポイント]、または [無効] のいずかのオプションを選択します。
Custom Speech、Custom Voice および Audio Content Creation
次の表は、Speech リソースの [ネットワーク]>[ファイアウォールおよび仮想ネットワーク] セキュリティ設定ごとの Custom Speech/Custom Voice/Audio Content Creation プロジェクトのアクセシビリティを説明したものです。
Note
[ネットワーク]>[プライベート エンドポイント接続] タブを通じてプライベート エンドポイントのみを許可する場合、Speech リソースで Speech Studio を使用することはできません。 Speech Studio の外部でも Speech リソースを使用できます。
Speech リソースのネットワーク セキュリティ設定 | Speech Studio プロジェクトのアクセシビリティ |
---|---|
すべてのネットワーク | 制限事項なし |
選択されたネットワークとプライベート エンドポイント | 許可されたパブリック IP アドレスからアクセス可能 |
無効 | アクセス不可 |
[選択したネットワークとプライベート エンドポイント] を選択すると、[仮想ネットワーク] と [ファイアウォール] のアクセスの構成オプション付きのタブが表示されます。 [ファイアウォール] セクションで、少なくとも 1 つのパブリック IP アドレスを許可し、このアドレスを Speech Studio とのブラウザー接続に使用する必要があります。
仮想ネットワーク経由のアクセスのみを許可する場合は、実際には、Speech Studio を介した Speech リソースへのアクセスは許可されません。 Speech Studio の外部でも Speech リソースを使用できます。
実稼働音声リソースに対するネットワーク アクセス制限を緩和せずに Custom Speech を使用するには、次のいずれかの回避策を検討してください。
- パブリック ネットワークで使用できる開発用の別の Speech リソースを作成します。 開発リソースの Speech Studio でカスタムモデルを準備し、そのモデルを実稼働リソースにコピーします。 Speech to text REST API を使用した Models_CopyTo REST 要求を参照してください。
- Speech Studio を Custom Speech に使用しないようにするオプションがあります。 すべての Custom Speech 操作に対して、Speech to text REST API を使用します。
運用 Speech リソースのネットワーク アクセス制限を緩和せずに Custom Voice を使う場合は、すべての Custom Voice 操作に対して Custom Voice REST API を使用することを検討してください。
プライベート エンドポイントを持たない Speech リソースを使用するようにアプリケーションを調整する
この記事では、音声リソースに対してカスタム ドメインを有効にすると元に戻すことができないと何度か指摘しています。 そのようなリソースは、リージョンのエンドポイント名を使用しているリソースとは異なる方法を使用して音声サービスとやり取りを行います。
このセクションでは、カスタム ドメイン名は持っていてもプライベート エンドポイントは持たない音声リソースを、音声サービスの REST API と Speech SDK で使用する方法について説明します。 これは、プライベート エンドポイント シナリオで 1 回使用されたが、そのプライベート エンドポイントが削除されたリソースである場合があります。
DNS の構成
プライベート エンドポイントが有効になっている Speech リソースのカスタム ドメイン DNS 名が、パブリック ネットワークから解決される方法を思い出してください。 この場合、解決された IP アドレスは、仮想ネットワークのプロキシ エンドポイントを指しています。 そのエンドポイントは、プライベート エンドポイントが有効になっている Azure AI サービス リソースにネットワーク トラフィックをディスパッチするために使用されます。
ただし、"すべて" のリソース プライベート エンドポイントが削除されるときに (またはカスタム ドメイン名を有効にした直後に)、Speech リソースの CNAME レコードは再プロビジョニングされます。 そして、対応する Azure AI サービス リージョン エンドポイントの IP アドレスを指すようになります。
そのため nslookup
コマンドの出力は次のようになります。
C:\>nslookup my-private-link-speech.cognitiveservices.azure.com
Server: UnKnown
Address: fe80::1
Non-authoritative answer:
Name: apimgmthskquihpkz6d90kmhvnabrx3ms3pdubscpdfk1tsx3a.cloudapp.net
Address: 13.93.122.1
Aliases: my-private-link-speech.cognitiveservices.azure.com
westeurope.api.cognitive.microsoft.com
cognitiveweprod.trafficmanager.net
cognitiveweprod.azure-api.net
apimgmttmdjylckcx6clmh2isu2wr38uqzm63s8n4ub2y3e6xs.trafficmanager.net
cognitiveweprod-westeurope-01.regional.azure-api.net
このセクションの出力と比較します。
カスタム ドメイン名は有効だがプライベート エンドポイントは有効でない Speech リソースREST API での使用
Speech to text REST API
Speech to Text REST API の使用方法は、プライベート エンドポイントが有効になっている Speech リソースの場合と完全に同じです。
Speech to Text REST API for short audio および Text to Speech REST API
この場合、Speech to Text REST API for short audio および Text to Speech REST API の使用方法は、一般的な場合では違いはありませんが、例外が 1 つあります。 (下記の注を参照)。どちらの API も、Speech to Text REST API for short audio および Text to Speech REST API のドキュメントで説明されているように使用する必要があります。
注意
カスタム ドメインのシナリオで Speech to Text REST API for short audio および Text to Speech REST API を使用している場合は、Ocp-Apim-Subscription-Key
ヘッダーを介して渡された Speech リソース キーを使用します。 (詳細は、Speech to Text REST API for short audio および Text to Speech REST API を参照)
認証トークンを使用してそれを Authorization
ヘッダーを介して特殊なエンドポイントに渡すことは、音声リソースの [ネットワーク] セクションで [すべてのネットワーク] アクセス オプションを有効にした場合に "のみ" 機能します。 それ以外の場合は、認証トークンを取得しようとすると、Forbidden
または BadRequest
エラーが発生します。
カスタム ドメイン名は有効だがプライベート エンドポイントは有効でない Speech リソースSpeech SDK での使用方法
プライベート エンドポイントを "使用せずに"、カスタム ドメイン対応の音声リソースで Speech SDK を使用することは、Speech SDK ドキュメントに記載されている一般的なケースと同じです。
プライベート エンドポイント対応の音声リソースと一緒に使用するようにコードを変更した場合は、次の点を考慮してください。
プライベート エンドポイントが有効になっている Speech リソースに関するセクションでは、エンドポイント URL を特定し、それを変更して、SpeechConfig
クラス インスタンスの "エンドポイントから" および "エンドポイントで" の初期化を通じて機能させる方法について説明しました。
ただし、すべてのプライベート エンドポイントが削除された後で同じアプリケーションを実行しようとすると (対応する DNS レコードが再プロビジョニングされるまでしばらく時間をおきます)、内部サービス エラー (404) が発生します。 この理由は、DNS レコードが仮想ネットワーク プロキシではなく、Azure AI サービス エンドポイントを指すようになったため、/stt/speech/recognition/conversation/cognitiveservices/v1?language=en-US
のような URL パスが見つからないためです。
次のコードのスタイルで SpeechConfig
の標準のインスタンス化にアプリケーションをロールバックする必要があります。
var config = SpeechConfig.FromSubscription(speechKey, azureRegion);
プライベート エンドポイントと Virtual Network サービス エンドポイントを同時に使用する
プライベート エンドポイントと Virtual Network サービス エンドポイントを使用して、同じ Speech リソースに同時にアクセスすることができます。 この同時使用を有効にするには、Azure portal の Speech リソースのネットワーク設定で [Selected Networks and Private Endpoints](選択したネットワークとプライベート エンドポイント) オプションを使用する必要があります。 このシナリオでは、他のオプションはサポートされていません。
価格
料金の詳細については、「Azure Private Link の料金」をご覧ください。