プライベート エンドポイントを経由したインデクサー接続

Azure Private Link を利用すると、プライベート エンドポイントを使用して Azure のサービスに接続できます。 プライベート エンドポイントは、特定の仮想ネットワークおよびサブネット内でのみアクセス可能なプライベート IP アドレスです。

この記事では、音声サービスで Private Link とプライベート エンドポイントを設定して使用する方法について説明します。 その後、この記事では、後でプライベート エンドポイントを削除しても引き続き Speech リソースを使用する方法について説明します。

Note

続行する前に、Azure AI サービスで仮想ネットワークを使用する方法に関する記事を確認してください。

プライベート エンドポイントのシナリオで Speech リソースを設定にするには、次のタスクを実行する必要があります。

  1. カスタム ドメイン名を作成する
  2. プライベート エンドポイントをオンにする
  3. 既存のアプリケーションとソリューションを調整する

プライベート エンドポイントと仮想ネットワーク サービス エンドポイント

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 を使用してカスタム ドメイン名を作成するには、次の手順に従います。

  1. Azure portal に移動し、ご自分の Azure アカウントにサインインします。

  2. 必要な Speech リソースを選択します。

  3. 左側のペインの [リソース管理] グループで、 [ネットワーク] を選択します。

  4. [ファイアウォールと仮想ネットワーク] タブで、 [カスタム ドメイン名を生成します] を選択します。 新しい右パネルが開き、リソースの一意のカスタム サブドメインを作成する手順が示されます。

  5. [カスタム ドメイン名の生成] パネルで、カスタム ドメイン名を入力します。 完全なカスタム ドメインは、https://{your custom name}.cognitiveservices.azure.com のようになります。

    作成したカスタム ドメイン名は後で変更 "できない" ことに注意してください。

    カスタム ドメイン名を入力した後、 [保存] を選択します。

  6. 操作が終わったら、 [リソース管理] グループで [Keys and Endpoint](キーとエンドポイント) を選択します。 リソースの新しいエンドポイント名が次のように始まっていることを確認します: https://{your custom name}.cognitiveservices.azure.com

プライベート エンドポイントをオンにする

プライベート エンドポイント用に必要な更新が行われた仮想ネットワークにアタッチされているプライベート DNS ゾーンを使用することをお勧めします。 プロビジョニング プロセス中に、プライベート DNS ゾーンを作成できます。 独自の DNS サーバーを使用している場合は、DNS の構成の変更が必要になることもあります。

運用環境の Speech リソース用にプライベート エンドポイントをプロビジョニングする "前に"、DNS 戦略を決定します。 また、DNS の変更をテストします (特に、独自の DNS サーバーを使用する場合)。

以下の記事のいずれかを使用して、プライベート エンドポイントを作成します。 こちらの記事では、プライベート エンドポイントで使用できるようにするため、サンプル リソースとして Web アプリが使用されています。

選択した記事のパラメーターの代わりに、次のパラメーターを使用します。

設定
リソースの種類 Microsoft.CognitiveServices/accounts
リソース <your-speech-resource-name>
ターゲット サブリソース アカウント

プライベート エンドポイントの DNS:Azure AI サービス リソースでのプライベート エンドポイントの DNS の一般原則を確認します。 次に、以下のセクションで説明するチェックを実行して、DNS の構成が正常に機能していることを確認します。

仮想ネットワークから DNS を解決する

このチェックは "必須" です。

仮想ネットワークからカスタム DNS エントリをテストするには、次の手順のようにします。

  1. プライベート エンドポイントをアタッチした仮想ネットワーク内にある仮想マシンにサインインします。

  2. 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
    
  3. IP アドレスがプライベート エンドポイントの IP アドレスと一致していることを確認します。

他のネットワークから DNS を解決する

このチェックは、リソースの [ネットワーク] セクションで [すべてのネットワーク] オプションまたは [Selected Networks and Private Endpoints](選択したネットワークとプライベート エンドポイント) アクセス オプションを有効にした場合にのみ実行します。

プライベート エンドポイントのみを使用してリソースにアクセスする予定の場合は、このセクションを省略できます。

  1. リソースへのアクセスが許可されているネットワークにアタッチされたコンピューターにサインインします。

  2. 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 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 audioText to Speech REST API には、次の 2 種類のエンドポイントが使用されます。

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 になります。

アプリケーションの変更

コードを変更するには、次の手順に従います。

  1. アプリケーション エンドポイントの 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
    
  2. エンドポイントの完全な URL を使用して、SpeechConfig インスタンスを作成します。

    1. 前の「エンドポイント URL を構築する」セクションの説明に従って、特定したエンドポイントを変更します。

    2. 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 上で設定されます。

  1. Azure portal に移動し、ご自分の Azure アカウントにサインインします。
  2. Speech リソースを選択します。
  3. 左側のウィンドウの [リソース管理] グループで、[ネットワーク]>[ファイアウォールと仮想ネットワーク] を選択します。
  4. [すべてのネットワーク][選択したネットワークとプライベート エンドポイント]、または [無効] のいずかのオプションを選択します。

Custom Speech

次の表は、Speech リソースの [ネットワーク]>[ファイアウォールおよび仮想ネットワーク] のセキュリティ設定ごとの Custom Speech プロジェクトのアクセシビリティを説明しています。

注意

[ネットワーク]>[プライベート エンドポイント接続] タブを通じてプライベート エンドポイントのみを許可する場合、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 を使用します。

Custom Voice および Audio Content Creation

Speech リソースのネットワーク セキュリティ設定が [すべてのネットワーク] である場合にのみ、Custom Voice および Audio Content Creation の Speech Studio プロジェクトを使用できます。

プライベート エンドポイントを持たない 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 の料金」をご覧ください。

詳細情報