音声モデルをデプロイして使用する

音声モデルを正常に作成してトレーニングしたら、それをカスタム ニューラル音声エンドポイントにデプロイします。

Speech Studio を使用して、カスタム ニューラル音声のデプロイ エンドポイントを追加します。 Speech Studio または Text to Speech REST API のいずれかを使用して、カスタム ニューラル音声エンドポイントを中断または再開できます。

Note

標準 (S0) Speech リソースを使用して最大 50 個のエンドポイントを作成でき、それぞれに独自のカスタム ニューラル音声を使用できます。

カスタム ニューラル音声を使用するには、音声モデルの名前を指定し、HTTP 要求にカスタム URI を直接使用し、同じ Speech リソースを使用してテキスト読み上げサービスの認証をパススルーする必要があります。

デプロイメント エンドポイントの追加

カスタム ニューラル音声エンドポイントを作成するには、次の手順を実行します。

  1. Speech Studio にサインインします。

  2. [Custom Voice]> [プロジェクト名] >[モデルのデプロイ]>[モデルのデプロイ] の順に選択します。

  3. このエンドポイントに関連付ける音声モデルを選択します。

  4. カスタム エンドポイントの [名前][説明] を入力します。

  5. シナリオに応じて エンドポイントの種類 を選択します。 リソースがサポートされているリージョンにある場合、エンドポイントの種類の既定の設定は 高パフォーマンス です。 それ以外の場合、リソースがサポートされていないリージョンにある場合、使用可能な唯一のオプションは [高速再開] です。

    • 高パフォーマンス: 会話型 AI、コール センター ボットなど、リアルタイムおよび大量の合成要求を使用するシナリオに最適化されています。 エンドポイントのデプロイまたは再開には約 5 分かかります。 ハイ パフォーマンス エンドポイントの種類がサポートされているリージョンの詳細については、リージョン の表の脚注を参照してください。
    • 高速再開: 合成要求の頻度が低いオーディオ コンテンツ作成シナリオに最適化されています。 1 分未満でエンドポイントを簡単かつ迅速にデプロイまたは再開できます。 高速再開 エンドポイントの種類は、テキスト読み上げが利用可能なすべてのリージョンでサポートされています。
  6. [デプロイ] を選択してエンドポイントを作成します。

ご自分のエンドポイントがデプロイされると、エンドポイント名はリンクとして表示されます。 リンクを選択すると、エンドポイント キー、エンドポイントの URL、サンプル コードなどの、ご使用のエンドポイントに固有の情報が表示されます。 デプロイの状態が [Succeeded](成功) の場合、エンドポイントを使用する準備ができています。

アプリケーションの設定

REST API の要求パラメーターとして使用するアプリケーション設定は、Speech Studio[Deploy model] (モデルのデプロイ) タブから入手できます。

Speech Studio のカスタム エンドポイント アプリ設定のスクリーンショット。

  • [エンドポイント キー] は、エンドポイントが関連付けられている Speech リソース キーを示します。 Ocp-Apim-Subscription-Key 要求ヘッダーの値としてエンドポイント キーを使用します。
  • [Endpoint URL] (エンドポイント URL) には、サービス リージョンが表示されます。 voice.speech.microsoft.com の前にある値をサービス リージョン要求パラメーターとして使用します。 たとえば、エンドポイント URL が https://eastus.voice.speech.microsoft.com/cognitiveservices/v1 の場合は eastus を使用します。
  • [Endpoint URL] (エンドポイント URL) には、エンドポイント ID が表示されます。 エンドポイント ID 要求パラメーターの値として、?deploymentId= クエリ パラメーターに追加された値を使用します。

カスタム音声を使用する

カスタム エンドポイントの機能は、テキスト読み上げ要求に使用される標準のエンドポイントと同じです。

1 つ違うのは、Speech SDK を介してカスタム音声を使用するには、EndpointId を指定する必要があることです。 テキスト読み上げのクイックスタートから始めて、EndpointIdSpeechSynthesisVoiceName でコードを更新できます。

var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);     
speechConfig.SpeechSynthesisVoiceName = "YourCustomVoiceName";
speechConfig.EndpointId = "YourEndpointId";
auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
speechConfig->SetSpeechSynthesisVoiceName("YourCustomVoiceName");
speechConfig->SetEndpointId("YourEndpointId");
SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
speechConfig.setSpeechSynthesisVoiceName("YourCustomVoiceName");
speechConfig.setEndpointId("YourEndpointId");
SPXSpeechConfiguration *speechConfig = [[SPXSpeechConfiguration alloc] initWithSubscription:speechKey region:speechRegion];
speechConfig.speechSynthesisVoiceName = @"YourCustomVoiceName";
speechConfig.EndpointId = @"YourEndpointId";
speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
speech_config.endpoint_id = "YourEndpointId"
speech_config.speech_synthesis_voice_name = "YourCustomVoiceName"

音声合成マークアップ言語 (SSML) を介してカスタム ニューラル音声を使用するには、音声名としてモデル名を指定します。 この例では、YourCustomVoiceName 音声を使用します。

<speak version="1.0" xmlns="http://www.w3.org/2001/10/synthesis" xml:lang="en-US">
    <voice name="YourCustomVoiceName">
        This is the text that is spoken. 
    </voice>
</speak>

製品上で新しい音声モデルに切り替える

音声モデルを最新のエンジン バージョンに更新した後、または製品の新しい音声に切り替える場合、新しい音声モデルを新しいエンドポイントに再デプロイする必要があります。 既存のエンドポイントに新しい音声モデルを再デプロイすることはサポートされていません。 デプロイ後、新しく作成したエンドポイントにトラフィックを切り替えます。 最初に、テスト環境の新しいエンドポイントにトラフィックを転送し、トラフィックが正常に動作するのを確認してから、運用環境の新しいエンドポイントにトラフィックを転送することをお勧めします。 切り替え中は、以前のエンドポイントを保持する必要があります。 切り替え中に新しいエンドポイントで問題が発生した場合は、以前のエンドポイントに再び切り替えることができます。 新しいエンドポイントでトラフィックが約 24 時間 (推奨値) 正常に実行された場合は、以前のエンドポイントを削除してかまいません。

注意

音声名が変更され、音声合成マークアップ言語 (SSML) を使用する場合は、SSML で新しい音声名を使用する必要があります。

エンドポイントを中断して再開する

エンドポイントの中断と再開により、使用を制限し、使用されていないリソースを節約できます。 エンドポイントが中断されている間は課金されません。 エンドポイントを再開すると、アプリケーションで引き続き同じエンドポイント URL を使用して音声を合成できます。

エンドポイントの中断と再開は、Speech Studio または REST API 経由で実行できます。

注意

中断操作はほぼ即座に完了します。 再開操作の完了には、新しいデプロイとほぼ同じ時間がかかります。

Speech Studio でエンドポイントを中断して再開する

このセクションでは、Speech Studio ポータルでカスタム ニューラル音声エンドポイントを中断または再開する方法について説明します。

エンドポイントを中断する

  1. エンドポイントを中断して非アクティブにするには、Speech Studio[Deploy model] (モデルのデプロイ) タブから [Suspend] (中断) を選択します。

    エンドポイントの選択中断エンドポイントオプションのスクリーンショット

  2. 表示されるダイアログ ボックスで、[Submit] (送信) を選択します。 エンドポイントが中断されると、Speech Studio に [Successfully suspended endpoint] (エンドポイントが正常に中断されました) という通知が表示されます。

エンドポイントを再開する

  1. エンドポイントを再開してアクティブにするには、Speech Studio[Deploy model] (モデルのデプロイ) タブから [Resume] (再開) を選択します。

    エンドポイントの選択再開エンドポイントオプションのスクリーンショット

  2. 表示されるダイアログ ボックスで、[Submit] (送信) を選択します。 エンドポイントを正常に再アクティブ化すると、状態が [Suspended] (中断) から [Succeeded] (成功) に変わります。

REST API 経由でエンドポイントを中断して再開する

このセクションでは、REST API を使用してカスタム ニューラル音声エンドポイントを取得中断、または再開する方法について説明します。

エンドポイントを取得する

エンドポイント ID を指定してエンドポイントを取得します。 この操作では、モデル ID、プロジェクト ID、状態などのエンドポイントに関する詳細が返されます。

たとえば、中断再開の操作の状態の進行を追跡できます。 応答ペイロードの status プロパティを使用して、エンドポイントの状態を確認します。

status プロパティ値は次のいずれかになります。

Status 説明
NotStarted エンドポイントはまだデプロイされていません。音声合成には使用できません。
Running エンドポイントはデプロイまたは再開のプロセス中です。音声合成には使用できません。
Succeeded エンドポイントはアクティブであり、音声合成に使用できます。 エンドポイントがデプロイされたか、正常に再開が操作されました。
Failed エンドポイントのデプロイまたは中断の操作に失敗しました。 エンドポイントの表示や削除は Speech Studio のみで実行できます。
Disabling エンドポイントは中断のプロセス中です。音声合成には使用できません。
Disabled エンドポイントは非アクティブです。音声合成には使用できません。 中断が正常に操作されたか、再開が操作されませんでした。

ヒント

状態が Failed または Disabled の場合は、properties.error で詳細なエラー メッセージを確認してください。 ただし、中断が操作されて状態が Disabled になっている場合、エラーの詳細はありません。

エンドポイントの取得の例

エンドポイント ID、リージョン、Speech リソース キーのパラメーターについては、要求パラメーターに関するページを参照してください。

HTTP の例:

GET api/texttospeech/v3.0/endpoints/<YourEndpointId> HTTP/1.1
Ocp-Apim-Subscription-Key: YourResourceKey
Host: <YourResourceRegion>.customvoice.api.speech.microsoft.com

cURL の例:

curl -v -X GET "https://<YourResourceRegion>.customvoice.api.speech.microsoft.com/api/texttospeech/v3.0/endpoints/<YourEndpointId>" -H "Ocp-Apim-Subscription-Key: <YourResourceKey >"

応答ヘッダーの例:

Status code: 200 OK

応答本文の例:

{
  "model": {
    "id": "a92aa4b5-30f5-40db-820c-d2d57353de44"
  },
  "project": {
    "id": "ffc87aba-9f5f-4bfa-9923-b98186591a79"
  },
  "properties": {},
  "status": "Succeeded",
  "lastActionDateTime": "2019-01-07T11:36:07Z",
  "id": "e7ffdf12-17c7-4421-9428-a7235931a653",
  "createdDateTime": "2019-01-07T11:34:12Z",
  "locale": "en-US",
  "name": "Voice endpoint",
  "description": "Example for voice endpoint"
}

エンドポイントを中断する

エンドポイントの中断により、使用を制限し、使用されていないリソースを節約できます。 エンドポイントが中断されている間は課金されません。 エンドポイントを再開したときは、アプリケーションで同じエンドポイント URL を使用して音声を合成できます。

エンドポイントを中断するには、一意のデプロイ ID を使用します。 エンドポイントを中断するには、その状態が Succeeded である必要があります。

エンドポイントの取得操作を使用して、Succeeded から Disabling に、最後に Disabled に状態が進行するようすをポーリングして追跡します。

エンドポイントの中断の例

エンドポイント ID、リージョン、Speech リソース キーのパラメーターについては、要求パラメーターに関するページを参照してください。

HTTP の例:

POST api/texttospeech/v3.0/endpoints/<YourEndpointId>/suspend HTTP/1.1
Ocp-Apim-Subscription-Key: YourResourceKey
Host: <YourResourceRegion>.customvoice.api.speech.microsoft.com
Content-Type: application/json
Content-Length: 0

cURL の例:

curl -v -X POST "https://<YourResourceRegion>.customvoice.api.speech.microsoft.com/api/texttospeech/v3.0/endpoints/<YourEndpointId>/suspend" -H "Ocp-Apim-Subscription-Key: <YourResourceKey >" -H "content-type: application/json" -H "content-length: 0"

応答ヘッダーの例:

Status code: 202 Accepted

詳細については、応答ヘッダーに関するページを参照してください。

エンドポイントを再開する

エンドポイントを再開したときに、中断前に使用したのと同じエンドポイント URL を使用できます。

エンドポイントを再開するには、一意のデプロイ ID を使用します。 エンドポイントを再開するには、その状態が Disabled である必要があります。

エンドポイントの取得操作を使用して、Disabled から Running に、最後に Succeeded に状態が進行するようすをポーリングして追跡します。 再開操作に失敗した場合、エンドポイントの状態は Disabled になります。

エンドポイントの再開の例

エンドポイント ID、リージョン、Speech リソース キーのパラメーターについては、要求パラメーターに関するページを参照してください。

HTTP の例:

POST api/texttospeech/v3.0/endpoints/<YourEndpointId>/resume HTTP/1.1
Ocp-Apim-Subscription-Key: YourResourceKey
Host: <YourResourceRegion>.customvoice.api.speech.microsoft.com
Content-Type: application/json
Content-Length: 0

cURL の例:

curl -v -X POST "https://<YourResourceRegion>.customvoice.api.speech.microsoft.com/api/texttospeech/v3.0/endpoints/<YourEndpointId>/resume" -H "Ocp-Apim-Subscription-Key: <YourResourceKey >" -H "content-type: application/json" -H "content-length: 0"

応答ヘッダーの例:

Status code: 202 Accepted

詳細については、応答ヘッダーに関するページを参照してください。

パラメーターと応答コード

要求パラメーター

これらの要求パラメーターは、REST API への呼び出しで使用します。 Speech Studio のどこでリージョン、エンドポイント ID、Speech リソース キーを取得するかについては、アプリケーション設定に関するページを参照してください。

名前 場所 必須 Type 説明
YourResourceRegion パス True string エンドポイントが関連付けられている Azure リージョン。
YourEndpointId パス True string エンドポイントの識別子。
Ocp-Apim-Subscription-Key ヘッダー True 文字列 エンドポイントが関連付けられている Speech リソース キー。
応答ヘッダー

状態コード: 202 Accepted

名前 Type 説明
Location string エンドポイントを取得する詳細な URL として使用できるエンドポイントの場所。
Retry-After string エンドポイントの状態を取得するために再試行する推奨間隔の秒数。
HTTP 状態コード

各応答の HTTP 状態コードは、成功または一般的なエラーを示します。

HTTP 状態コード 説明 考えられる理由
200 OK 要求は成功しました。
202 承認済み 要求が受け入れられ、処理されています。
400 正しくない要求 パラメーターの値が無効であるか、必須パラメーターがないか、空、または null です。 よくある問題として、ヘッダーが長すぎることがあります。
401 権限がありません 要求は承認されません。 Speech リソース キーまたはトークンが有効であり、正しいリージョンにあることを確認してください。
429 要求が多すぎます 使用中の Speech リソースで許可されている要求のクォータまたは速度を超えています。
502 無効なゲートウェイ ネットワークまたはサーバー側の問題です。 無効なヘッダーを示す場合もあります。

次のステップ