音声認識のために音声と文字起こしをログに記録する方法

音声テキスト変換または音声翻訳を使用する場合に、音声入力と認識された音声の両方のログを有効にできます。 音声翻訳の場合、元の音声の音声と文字起こしのみがログに記録されます。 翻訳はログに記録されません。 この記事では、音声と文字起こしのログを有効にし、アクセスし、削除する方法について説明します。

オーディオと文字起こしのログは、Custom Speech モデル トレーニングの入力として使用できます。 その他のユース ケースがある場合があります。

警告

入力音声の正確なレコードが必要な場合は、音声と文字起こしのログに依存しないでください。 ピーク負荷の期間中は、このサービスにより文字起こしタスクのハードウェア リソースに優先順位が付けられます。 これにより、音声のささいな部分がログに記録されない可能性があります。 このようなことはめったにありませんが、可能性はあります。

ログは、基本とカスタムの両方のモデル エンドポイントに対して非同期的に実行されます。 音声と文字起こしのログは、Speech サービスによって内部ストレージに格納され、ローカルには書き込まれません。 ログは 30 日間保持されます。 この期間が経過すると、ログは自動的に削除されます。 ただし、特定のログまたは使用可能なログの範囲はいつでも削除できます。

また、Bring Your Own-Storage (BYOS) テクノロジーを使用して、Speech サービス プレミスではなく、自分が所有および制御する Azure Storage アカウント内にオーディオログと文字起こしログを格納することもできます。 BYOS 対応 Speech リソースの使用方法の詳細については、この記事を参照してください。

音声と文字起こしのログを有効にする

ログは既定では無効になっています。 ログは、認識セッションごとまたはカスタム モデル エンドポイントごとに有効にできます。

1 つの認識セッションのログを有効にする

既定の基本モデルまたはカスタム モデル エンドポイントのどちらを使用しているかに関係なく、1 つの認識セッションに対してログを有効にできます。

警告

カスタム モデル エンドポイントの場合、デプロイされたエンドポイントのログ設定は、セッション レベルの設定 (SDK または REST API) よりも優先されます。 カスタム モデル エンドポイントに対してログが有効になっている場合、セッション レベルの設定 (true または false に設定されているかどうか) は無視されます。 カスタム モデル エンドポイントに対してログが有効になっていない場合、セッション レベルの設定によってログ記録がアクティブかどうかが決まります。

Speech SDK を使用して音声テキスト変換のログを有効にする

Speech SDK で音声と文字起こしのログを有効にするには、SpeechConfig クラス インスタンスのメソッド EnableAudioLogging() を実行します。

speechConfig.EnableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

string isAudioLoggingEnabled = speechConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechConfig を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechConfig クラス インスタンスのメソッド EnableAudioLogging を実行します。

speechConfig->EnableAudioLogging();

ログが有効になっているかどうかをチェックするには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

string isAudioLoggingEnabled = speechConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);

この speechConfig を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechConfig クラス インスタンスのメソッド enableAudioLogging() を実行します。

speechConfig.enableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

String isAudioLoggingEnabled = speechConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechConfig を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechConfig クラス インスタンスのメソッド enableAudioLogging() を実行します。

speechConfig.enableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechConfig を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechConfig クラス インスタンスのメソッド enable_audio_logging を実行します。

speech_config.enable_audio_logging()

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

import azure.cognitiveservices.speech as speechsdk
# <...>
is_audio_logging_enabled = speech_config.get_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_EnableAudioLogging)

この speech_config を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SPXSpeechConfiguration クラス インスタンスのメソッド enableAudioLogging を実行します。

[speechConfig enableAudioLogging];

ログが有効になっているかどうかを確認するには、SPXSpeechServiceConnectionEnableAudioLogging プロパティの値を取得します。

NSString *isAudioLoggingEnabled = [speechConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];

この speechConfig を使用する各 SpeechRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK を使用して音声翻訳のログを有効にする

音声翻訳の場合、元の音声の音声と文字起こしのみがログに記録されます。 翻訳はログに記録されません。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechTranslationConfig クラス インスタンスのメソッド EnableAudioLogging() を実行します。

speechTranslationConfig.EnableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

string isAudioLoggingEnabled = speechTranslationConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechTranslationConfig を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechTranslationConfig クラス インスタンスのメソッド EnableAudioLogging を実行します。

speechTranslationConfig->EnableAudioLogging();

ログが有効になっているかどうかをチェックするには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

string isAudioLoggingEnabled = speechTranslationConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);

この speechTranslationConfig を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechTranslationConfig クラス インスタンスのメソッド enableAudioLogging() を実行します。

speechTranslationConfig.enableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

String isAudioLoggingEnabled = speechTranslationConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechTranslationConfig を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechTranslationConfig クラス インスタンスのメソッド enableAudioLogging() を実行します。

speechTranslationConfig.enableAudioLogging();

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechTranslationConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);

この speechTranslationConfig を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SpeechTranslationConfig クラス インスタンスのメソッド enable_audio_logging を実行します。

speech_translation_config.enable_audio_logging()

ログが有効になっているかどうかを確認するには、SpeechServiceConnection_EnableAudioLogging プロパティの値を取得します。

import azure.cognitiveservices.speech as speechsdk
# <...>
is_audio_logging_enabled = speech_translation_config.get_property(property_id=speechsdk.PropertyId.SpeechServiceConnection_EnableAudioLogging)

この speech_translation_config を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

Speech SDK で音声と文字起こしのログを有効にするには、SPXSpeechTranslationConfiguration クラス インスタンスのメソッド enableAudioLogging を実行します。

[speechTranslationConfig enableAudioLogging];

ログが有効になっているかどうかを確認するには、SPXSpeechServiceConnectionEnableAudioLogging プロパティの値を取得します。

NSString *isAudioLoggingEnabled = [speechTranslationConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];

この speechTranslationConfig を使用する各 TranslationRecognizer では、音声と文字起こしのログが有効になっています。

短い音声用に Speech to text REST API のログを有効にする

短い音声用に Speech to text REST API を使用し、音声と文字起こしのログを有効にする場合は、REST 要求の一部としてクエリ パラメーターと値 storeAudio=true を使用する必要があります。 サンプルの要求は次のようになります。

https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&storeAudio=true

カスタム モデル エンドポイント用に音声と文字起こしのログを有効にする

この方法は、Custom Speech エンドポイントにのみ適用できます。

ログは、永続的なカスタム モデル エンドポイント設定で有効または無効にすることができます。 カスタム モデル エンドポイントのログが有効 (オン) になっている場合は、SDK または REST API を使用して認識セッション レベルでログを有効にする必要はありません。 カスタム モデル エンドポイントに対してログが有効になっていない場合でも、SDK または REST API を使用して認識セッション レベルで一時的にログを有効にできます。

警告

カスタム モデル エンドポイントの場合、デプロイされたエンドポイントのログ設定は、セッション レベルの設定 (SDK または REST API) よりも優先されます。 カスタム モデル エンドポイントに対してログが有効になっている場合、セッション レベルの設定 (true または false に設定されているかどうか) は無視されます。 カスタム モデル エンドポイントに対してログが有効になっていない場合、セッション レベルの設定によってログ記録がアクティブかどうかが決まります。

次の場合にカスタム モデル エンドポイント用に音声と文字起こしのログを有効にすることができます。

  • Speech Studio、REST API、Speech CLI のいずれかを使用してエンドポイントを作成する場合。 Custom Speech エンドポイントのログを有効にする方法の詳細については、「Custom Speech モデルのデプロイ」を参照してください。
  • Speech to text REST API を使用してエンドポイント (Endpoints_Update) を更新する場合。 エンドポイントのログ設定を更新する方法の例については、カスタム モデル エンドポイントのログをオフにするに関するページを参照してください。 ただし、contentLoggingEnabled プロパティを false に設定する代わりに、true に設定してエンドポイントのログを有効にします。

カスタム モデル エンドポイントのログをオフにする

カスタム モデル エンドポイントの音声と文字起こしのログを無効にするには、Speech to text REST API を使用して永続的なエンドポイント ログ設定を更新する必要があります。 Speech Studio を使用して既存のカスタム モデル エンドポイントのログを無効にする方法はありません。

カスタム エンドポイントのログを無効にするには、Speech to text REST APIEndpoints_Update 操作を使用します。 次の手順に従って要求本文を作成します。

  • properties 内で contentLoggingEnabled プロパティを設定します。 エンドポイントのトラフィックのログを有効にするには、このプロパティを true に設定します。 エンドポイントのトラフィックのログを無効にするには、このプロパティを false に設定します。

HTTP PATCH 要求は、次の例に示すように URI を使って行います。 YourSubscriptionKey を Speech リソースキーに置き換え、YourServiceRegion を Speech リソース領域に置き換え、YourEndpointId をエンドポイント ID に置き換え、前述のようにリクエスト本文のプロパティを設定します。

curl -v -X PATCH -H "Ocp-Apim-Subscription-Key: YourSubscriptionKey" -H "Content-Type: application/json" -d '{
  "properties": {
    "contentLoggingEnabled": false
  },
}'  "https://YourServiceRegion.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/YourEndpointId"

次の形式で応答本文を受け取る必要があります。

{
  "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
  "model": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/models/71b46720-995d-4038-a331-0317e9e7a02f"
  },
  "links": {
    "logs": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2/files/logs",
    "restInteractive": "https://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "restConversation": "https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "restDictation": "https://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketInteractive": "wss://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketConversation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2",
    "webSocketDictation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=4ef91f9b-7ac9-4c3b-a238-581ef0f8b7e2"
  },
  "project": {
    "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/projects/122fd2f7-1d3a-4404-885d-2b24a2a187e8"
  },
  "properties": {
    "loggingEnabled": false
  },
  "lastActionDateTime": "2023-03-28T23:03:15Z",
  "status": "Succeeded",
  "createdDateTime": "2023-03-28T23:02:40Z",
  "locale": "en-US",
  "displayName": "My Endpoint",
  "description": "My Endpoint Description"
}

応答本文に、新しい設定が反映されている必要があります。 応答のログ プロパティの名前 (loggingEnabled) は、要求で設定したログ プロパティの名前 (contentLoggingEnabled) とは異なります。

音声と文字起こしのログを取得する

Speech to text REST API を使用して、音声と文字起こしのログにアクセスできます。 カスタム モデル エンドポイントの場合は、Speech Studio を使用することもできます。 次のセクションで詳細を確認してください。

注意

ログ データは 30 日間保持されます。 この期間が経過すると、ログは自動的に削除されます。 ただし、特定のログまたは使用可能なログの範囲はいつでも削除できます。

Speech Studio を使用して音声と文字起こしのログを取得する

この方法は、カスタム モデル エンドポイントにのみ適用されます。

エンドポイント ログをダウンロードするには:

  1. Speech Studio にサインインします。
  2. [Custom Speech]> プロジェクト名 >[モデルをデプロイする] を選択します。
  3. リンクをエンドポイント名で選択します。
  4. [コンテンツ ログ] で、[ログのダウンロード] を選択します。

この方法を使用すると、使用可能なすべてのログ セットを一度にダウンロードできます。 Speech Studio で選択したログ セットをダウンロードする方法はありません。

Speech to text REST API を使用して音声と文字起こしのログを取得する

使用可能なログ セットのすべてまたはサブセットをダウンロードできます。

この方法は、基本およびカスタムのモデル エンドポイントにのみ適用されます。 音声と文字起こしのログを一覧表示してダウンロードするには:

  • 基本モデル: Speech to text REST APIEndpoints_ListBaseModelLogs 操作を使用します。 この操作により、特定の言語の既定の基本モデルを使用するときに格納されている音声と文字起こしのログのリストが取得されます。
  • カスタム モデル エンドポイント: Speech to text REST APIEndpoints_ListLogs 操作を使用します。 この操作により、特定のエンドポイントに格納されている音声と文字起こしのログのリストが取得されます。

Speech to text REST API を使用してログ ID を取得する

シナリオによっては、使用可能なログの ID を取得することが必要になる場合があります。 たとえば、この記事で後述するように、特定のログを削除したい場合があります。

使用可能なログの ID を取得するには:

  • 基本モデル: Speech to text REST APIEndpoints_ListBaseModelLogs 操作を使用します。 この操作により、特定の言語の既定の基本モデルを使用するときに格納されている音声と文字起こしのログのリストが取得されます。
  • カスタム モデル エンドポイント: Speech to text REST APIEndpoints_ListLogs 操作を使用します。 この操作により、特定のエンドポイントに格納されている音声と文字起こしのログのリストが取得されます。

Endpoints_ListLogs のサンプル出力を次に示します。 わかりやすくするために、1 つのログ セットのみが表示されています。

{
  "values": [
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json",
      "name": "163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9.v2.json",
      "kind": "Transcription",
      "properties": {
        "size": 79920
      },
      "createdDateTime": "2023-03-13T16:37:15Z",
      "links": {
        "contentUrl": "<Link to download log file>"
      }
    },
    {
      "self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_wav",
      "name": "163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9.wav",
      "kind": "Audio",
      "properties": {
        "size": 932966
      },
      "createdDateTime": "2023-03-13T16:37:15Z",
      "links": {
        "contentUrl": "<Link to download log file>"
      }
    }
  ]
}

音声と文字起こしの各ログ ファイルの場所は、応答本文で返されます。 ファイルに音声 ("kind": "Audio") または文字起こし ("kind": "Transcription") が含まれているかどうかを判断するには、対応する kind プロパティを確認してください。

各ログ ファイルのログ ID は、"self" 要素値の URL の最後の部分です。 次の例のログ ID は 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json です。

"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.1/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json"

音声と文字起こしのログを削除する

ログ データは 30 日間保持されます。 この期間が経過すると、ログは自動的に削除されます。 ただし、特定のログまたは使用可能なログの範囲はいつでも削除できます。

基本またはカスタムのモデル エンドポイントの場合は、使用可能なすべてのログ、特定の期間のログ、またはそのログ ID に基づいて特定のログを削除できます。 削除プロセスは非同期的に実行され、ログ ファイルの数に応じて数分、数時間、1 日以上かかる場合があります。

音声と文字起こしのログを削除するには、Speech to text REST API を使用する必要があります。 Speech Studio を使用してログを削除する方法はありません。

特定の期間のすべてのログまたはログを削除する

特定の期間のすべてのログまたはログを削除するには:

必要に応じて、音声ログの削除の endDate (特定の日、UTC) を設定します。 想定される形式は "yyyy-mm-dd" です。 たとえば、"2023-03-15" の場合、2023 年 3 月 15 日以前のすべてのログが削除されます。

特定のログを削除する

ID で特定のログを削除するには:

ログ ID を取得する方法の詳細については、前のセクション 「Speech to text REST API を使用してログ ID を取得する」をご覧ください。

音声と文字起こしのログには個別の ID (この記事の前述の例の ID 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_wav など) があるため、音声と文字起こしの両方のログを削除する場合は、ID 要求ごとに個別に削除を実行します。

次の手順