如何記錄語音辨識的音訊和謄寫
您可以在使用語音轉換文字或語音翻譯時,啟用音訊輸入和辨識的語音記錄。 針對語音翻譯,只有原始音訊的音訊和謄寫會被記錄下來。 翻譯不會被記錄下來。 本文說明如何啟用、存取和刪除音訊和謄寫記錄。
音訊和謄寫記錄可用來作為自訂語音模型訓練的輸入。 您可能有其他使用案例。
警告
在需要輸入音訊的確切記錄時,請勿依賴音訊和謄寫記錄。 在尖峰負載期間,服務會優先分配處理謄寫工作的硬體資源。 這可能導致一小部分的音訊未被記錄。 這類情況很罕見,但仍可能發生。
記錄是針對基本和自訂模型端點以非同步方式完成。 語音服務會在內部儲存體儲存音訊和謄寫記錄,而不會在本機寫入。 該記錄將保留 30 天。 在此期間之後,記錄會自動刪除。 不過,您可以隨時刪除特定記錄或一系列可用記錄。
您也可以使用 自備儲存體 (BYOS) 技術,將音訊和謄寫記錄儲存在您自己擁有和控制的 Azure 儲存體帳戶內,而不是語音服務內部部署。 請參閱本文中如何使用 BYOS 啟用語音資源的詳細資料。
啟用音訊和謄寫記錄
記錄依預設會停用。 記錄可以依辨識工作階段或依自訂模型端點來啟用。
為單一辨識工作階段啟用記錄
您可以使用預設基礎模型或自訂模型端點,以為單一辨識工作階段啟用記錄。
警告
針對自訂模型端點,已部署端點的記錄設定的優先順序會高於工作階段層級設定 (SDK 或 REST API)。 如果自訂模型端點的記錄已啟用,則工作階段層級設定 (無論是設定為 true 或 false) 會被忽略。 如果自訂模型端點的記錄未啟用,則工作階段層級設定會判斷記錄是否為使用中。
使用語音 SDK 為語音轉換文字啟用記錄
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechConfig 類別執行個體的 EnableAudioLogging()
方法。
speechConfig.EnableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
string isAudioLoggingEnabled = speechConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechConfig
功能的 SpeechRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechConfig 類別執行個體的 EnableAudioLogging
方法。
speechConfig->EnableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
string isAudioLoggingEnabled = speechConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechConfig
功能的 SpeechRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechConfig 類別執行個體的 enableAudioLogging()
方法。
speechConfig.enableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
String isAudioLoggingEnabled = speechConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechConfig
功能的 SpeechRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechConfig 類別執行個體的 enableAudioLogging()
方法。
speechConfig.enableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechConfig
功能的 SpeechRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 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 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SPXSpeechConfiguration 類別執行個體的 enableAudioLogging
方法。
[speechConfig enableAudioLogging];
若要檢查記錄是否已啟用,請取得 SPXSpeechServiceConnectionEnableAudioLogging
屬性的值:
NSString *isAudioLoggingEnabled = [speechConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];
每個使用此 speechConfig
功能的 SpeechRecognizer 都已啟用音訊和謄寫記錄。
使用語音 SDK 為語音翻譯啟用記錄
針對語音翻譯,只有原始音訊的音訊和謄寫會被記錄下來。 翻譯不會被記錄下來。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechTranslationConfig 類別執行個體的 EnableAudioLogging()
方法。
speechTranslationConfig.EnableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
string isAudioLoggingEnabled = speechTranslationConfig.GetProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechTranslationConfig
功能的 TranslationRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechTranslationConfig 類別執行個體的 EnableAudioLogging
方法。
speechTranslationConfig->EnableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
string isAudioLoggingEnabled = speechTranslationConfig->GetProperty(PropertyId::SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechTranslationConfig
功能的 TranslationRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechTranslationConfig 類別執行個體的 enableAudioLogging()
方法。
speechTranslationConfig.enableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
String isAudioLoggingEnabled = speechTranslationConfig.getProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechTranslationConfig
功能的 TranslationRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SpeechTranslationConfig 類別執行個體的 enableAudioLogging()
方法。
speechTranslationConfig.enableAudioLogging();
若要檢查記錄是否已啟用,請取得 SpeechServiceConnection_EnableAudioLogging
屬性的值:
var SpeechSDK;
SpeechSDK = speechSdk;
// <...>
string isAudioLoggingEnabled = speechTranslationConfig.getProperty(SpeechSDK.PropertyId.SpeechServiceConnection_EnableAudioLogging);
每個使用此 speechTranslationConfig
功能的 TranslationRecognizer 都已啟用音訊和謄寫記錄。
若要使用語音 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 都已啟用音訊和謄寫記錄。
若要使用語音 SDK 啟用音訊和謄寫記錄,請執行 SPXSpeechTranslationConfiguration 類別執行個體的 enableAudioLogging
方法。
[speechTranslationConfig enableAudioLogging];
若要檢查記錄是否已啟用,請取得 SPXSpeechServiceConnectionEnableAudioLogging
屬性的值:
NSString *isAudioLoggingEnabled = [speechTranslationConfig getPropertyById:SPXSpeechServiceConnectionEnableAudioLogging];
每個使用此 speechTranslationConfig
功能的 TranslationRecognizer 都已啟用音訊和謄寫記錄。
為簡短音訊語音轉換文字 REST API 啟用記錄
如果您使用簡短音訊語音轉換文字 REST API,而且想要啟用音訊和謄寫記錄,則必須使用查詢參數和值 storeAudio=true
作為 REST 要求的一部分。 樣本要求看起來會像這樣:
https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US&storeAudio=true
啟用自訂模型端點的音訊和謄寫記錄
此方法僅適用於自訂語音端點。
記錄可以在持續性自訂模型端點設定中啟用或停用。 當自訂模型端點的記錄啟用 (開啟) 時,則您不需要使用 SDK 或 REST API 在 辨識工作階段層級啟用記錄。 即使自訂模型端點未啟用記錄,您也可以使用 SDK 或 REST API 在辨識工作階段層級暫時啟用記錄。
警告
針對自訂模型端點,已部署端點的記錄設定的優先順序會高於工作階段層級設定 (SDK 或 REST API)。 如果自訂模型端點的記錄已啟用,則工作階段層級設定 (無論是設定為 true 或 false) 會被忽略。 如果自訂模型端點的記錄未啟用,則工作階段層級設定會判斷記錄是否為使用中。
您可以啟用自訂模型端點的音訊和謄寫記錄:
- 在您使用 Speech Studio、REST API 或語音 CLI 建立端點時。 如需如何啟用自訂語音端點記錄的詳細資訊,請參閱 部署自訂語音模型。
- 在您使用語音轉換文字 REST API 更新端點 (Endpoints_Update) 時。 如需如何更新端點記錄設定的範例,請參閱 關閉自訂模型端點的記錄。 但不是將
contentLoggingEnabled
屬性設定為false
,而是將它設定為true
,以為端點啟用記錄。
關閉自訂模型端點的記錄
若要停用自訂模型端點的音訊和謄寫記錄,您必須使用 語音轉換文字 REST API 來更新持續性端點記錄設定。 沒有任何方法可以使用 Speech Studio 停用現有自訂模型端點的記錄。
若要關閉自訂端點的記錄,請使用語音轉換文字 REST API的 Endpoints_Update 作業。 根據下列指示來建構要求本文:
- 在
properties
內設定contentLoggingEnabled
屬性。 將此屬性設為true
,以啟用端點流量的記錄。 將此屬性設為false
,以停用端點流量的記錄。
使用 URI 提出 HTTP PATCH 要求,如下列範例所示。 以您的語音資源金鑰取代 YourSubscriptionKey
、以語音資源區域取代 YourServiceRegion
、以端點識別碼取代 YourEndpointId
,然後設定要求本文屬性,如前所述。
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.2/endpoints/YourEndpointId"
您應該會收到下列格式的回應本文:
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/endpoints/a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"model": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/models/9e240dc1-3d2d-4ac9-98ec-1be05ba0e9dd"
},
"links": {
"logs": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/endpoints/a07164e8-22d1-4eb7-aa31-bf6bb1097f37/files/logs",
"restInteractive": "https://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"restConversation": "https://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"restDictation": "https://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"webSocketInteractive": "wss://eastus.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"webSocketConversation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37",
"webSocketDictation": "wss://eastus.stt.speech.microsoft.com/speech/recognition/dictation/cognitiveservices/v1?cid=a07164e8-22d1-4eb7-aa31-bf6bb1097f37"
},
"project": {
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/projects/0198f569-cc11-4099-a0e8-9d55bc3d0c52"
},
"properties": {
"loggingEnabled": false
},
"lastActionDateTime": "2024-07-15T16:30:12Z",
"status": "Succeeded",
"createdDateTime": "2024-07-15T16:29:36Z",
"locale": "en-US",
"displayName": "My Endpoint",
"description": "My Endpoint Description"
}
回應本文應該反映新的設定。 回應 (loggingEnabled
) 中的記錄屬性名稱與您在要求 (contentLoggingEnabled
) 中設定的記錄屬性名稱不同。
取得音訊和謄寫記錄
您可以使用語音轉換文字 REST API 來存取音訊和謄寫記錄。 針對 自訂模型 端點,您也可以使用 Speech Studio。 請參閱下列各節中的詳細資料。
注意
記錄資料會保留 30 天。 在此期間之後,記錄會自動刪除。 不過,您可以隨時刪除特定記錄或一系列可用記錄。
使用 Speech Studio 取得音訊和謄寫記錄
此方法僅適用於自訂模型端點。
若要下載端點記錄:
- 登入 Speech Studio。
- 選取自訂語音>您的專案名稱>部署模型。
- 依端點名稱選取連結。
- 在 [內容記錄] 下方,選取 [下載記錄]。
透過此方法,您可以一次下載所有可用的記錄集。 在 Speech Studio 中無法下載選取的記錄集。
使用語音轉換文字 REST API 取得音訊和謄寫記錄
您可以下載所有或一部分可用的記錄集。
此方法僅適用於基本與自訂模型端點。 如要列出並下載音訊和謄寫記錄:
- 基本模型:使用語音轉換文字 REST API 的 Endpoints_ListBaseModelLogs 作業。 此作業會取得使用指定語言的預設基本模型時所儲存的音訊和謄寫記錄清單。
- 自訂模型端點:使用語音轉換文字 REST API 的 Endpoints_ListLogs 作業。 此作業會取得針對指定端點儲存的音訊和謄寫記錄清單。
使用語音轉換文字 REST API 取得記錄識別碼
在某些情況下,您可能需要取得可用記錄的識別碼。 例如,您可能想要刪除特定記錄,如本文稍後所述。
若要取得可用記錄的識別碼:
- 基本模型:使用語音轉換文字 REST API 的 Endpoints_ListBaseModelLogs 作業。 此作業會取得使用指定語言的預設基本模型時所儲存的音訊和謄寫記錄清單。
- 自訂模型端點:使用語音轉換文字 REST API 的 Endpoints_ListLogs 作業。 此作業會取得針對指定端點儲存的音訊和謄寫記錄清單。
此處是 Endpoints_ListLogs 的範例輸出。 為了簡單起見,此處只會顯示一個記錄集:
{
"values": [
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/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": "2024-07-15T16:29:36Z",
"links": {
"contentUrl": "<Link to download log file>"
}
},
{
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/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": "2024-07-15T16:29:36Z",
"links": {
"contentUrl": "<Link to download log file>"
}
}
]
}
每個音訊和謄寫記錄檔的位置都會在回應本文中傳回。 請參閱對應的 kind
屬性,以判斷檔案是否包含音訊 ("kind": "Audio"
) 或謄寫 ("kind": "Transcription"
)。
每個記錄檔的記錄識別碼都是 "self"
元素值中 URL 的最後一個部分。 下列範例中的記錄識別碼為 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json
。
"self": "https://eastus.api.cognitive.microsoft.com/speechtotext/v3.2/endpoints/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/files/logs/2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json"
刪除音訊和謄寫記錄
記錄資料會保留 30 天。 在此期間之後,記錄會自動刪除。 不過,您可以隨時刪除特定記錄或一系列可用記錄。
對於任何基本或自訂模型端點,您可以刪除所有可用的記錄、指定時間範圍的記錄,或根據其記錄識別碼的特定記錄檔。 刪除程序是以非同步方式進行,視記錄檔數目而定,可能需要幾分鐘、小時、一天或更長的時間。
若要刪除音訊和謄寫記錄,您必須使用語音轉換文字 REST API。 您無法使用 Speech Studio 刪除記錄。
刪除指定時間範圍的記錄或所有記錄
如要刪除指定時間範圍的記錄或所有記錄:
- 基本模型:使用語音轉換文字 REST API 的 Endpoints_DeleteBaseModelLogs 作業。
- 自訂模型端點:使用語音轉換文字 REST API 的 Endpoints_DeleteLogs 作業。
選擇性地設定音訊記錄檔刪除的 endDate
(特定日期 UTC)。 預期格式:「yyyy-mm-dd」。 例如,「2023-03-15」會導致在 2023 年 3 月 15 日 (含) 之前的所有記錄遭刪除。
刪除特定記錄
若要依識別碼刪除特定記錄:
- 基本模型:使用語音轉換文字 REST API 的 Endpoints_DeleteBaseModelLog 作業。
- 自訂模型端點:使用語音轉換文字 REST API 的 Endpoints_DeleteLog 作業。
如需如何取得記錄識別碼的詳細資訊,請參閱上一節使用語音轉換文字 REST API 取得記錄識別碼。
由於音訊和謄寫記錄有個別的識別碼 (例如本文先前範例的識別碼 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_v2_json
和 2023-03-13_163715__0420c53d-e6ac-4857-bce0-f39c3f9f5ff9_wav
),因此當您想要刪除音訊和謄寫記錄時,您會執行個別的依識別碼刪除要求。