使用 Paraformer 非即時語音識別 HarmonyOS SDK 將音視訊檔案轉換為文字。
使用者指南: 參見非即時語音識別。
快速開始
-
取得 API Key: 參見獲取與配置 API Key。建議將 API Key 設定到環境變數中。
說明當需要為第三方應用程式或使用者提供臨時存取權限,或者希望嚴格控制敏感資料存取、刪除等高風險操作時,建議使用臨時 API Key。臨時 API Key 預設有效期為 60 秒,過期後需重新取得。
-
下載 SDK 並執行範例程式碼:
- 下載最新 SDK 整合套件。
- 解壓縮 TAR 套件。在
neonui目錄中取得 HAR 格式 SDK,並新增至專案相依性。 若需以 C++ 接入,請使用 TAR 套件內的native/libs與native/include取得動態連結庫和標頭檔。 - 使用 DevEco Studio 開啟專案。範例程式碼位於
DashParaformerFileTranscriberPage.ets中,替換 API Key 後即可體驗功能。
呼叫步驟
同步模式
- 初始化 SDK。
- 按業務需求配置相關參數。
- 呼叫
startFileTranscriber啟動辨識任務,並將async_request設為false。 - 在
onFileTransEventCallback回呼中監聽EVENT_FILE_TRANS_RESULT事件,以取得最終辨識結果。 - 呼叫
release釋放 SDK 資源。
非同步模式
- 初始化 SDK。
- 按業務需求配置相關參數。
- 呼叫
startFileTranscriber啟動辨識任務,並將async_request設為true。 - 呼叫
queryFileTranscriber主動查詢辨識進度或結果。 - 在
onFileTransEventCallback回呼中監聽EVENT_FILE_TRANS_QUERY_RESULT事件,以取得目前查詢結果。 - 在
onFileTransEventCallback回呼中監聽EVENT_FILE_TRANS_RESULT事件,以取得最終辨識結果。 - 呼叫
release釋放 SDK 資源。
請求參數
連接與控制參數
在 initializeFileTrans 介面的 parameters 參數中傳入 JSON 字串進行設定。 參數範例:以下為 JSON 字串範例,參數未完整列出。請按實際需求在編碼時補充:
{
"url": "wss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcription",
"apikey": "st-****",
"device_id": "my_device_id",
"service_mode": "1"
}
- 參數說明
| 參數 | 類型 | 是否必須 | 說明 |
|---|---|---|---|
url | string | 是 | 服務位址,固定為 |
apikey | string | 是 | API Key。建議使用時效性短、安全性更高的 臨時 API Key,以降低長期有效金鑰洩露的風險。 |
service_mode | string | 是 | 執行模式。非即時語音辨識固定為 |
device_id | string | 是 | 用於標識終端使用者的唯一字串,可設為應用程式內使用者 ID 或用戶端產生的裝置唯一識別碼。此 ID 主要用於日誌追蹤和問題排查。 |
debug_path | string | 否 | 日誌檔案的儲存路徑。此參數僅在呼叫 initializeFileTrans 介面時將 |
max_log_file_size | number | 否 | 設定日誌檔案的最大位元組數。此參數僅在呼叫 initializeFileTrans 介面時將 |
語音識別效果參數
透過 setParams 介面設定 nls_config 參數,或者透過 startFileTranscriber 介面設定所有語音識別效果參數。 參數範例:以下為 JSON 字串範例,參數未完整列出。請按實際需求在編碼時補充:
{
"file_urls": [
"{YOUR_AUDIO_URL}"
],
"async_request": false,
"nls_config": {
"model":"paraformer-v2",
"disfluency_removal_enabled":false,
"timestamp_alignment_enabled": false
}
}
- 參數說明
| 參數 | 類型 | 是否必須 | 說明 |
|---|---|---|---|
file_urls | array[string] | 是 | 音視訊檔案轉寫的 URL 清單,支援 HTTP / HTTPS 協定,單次請求僅支援1個 URL。 若錄音檔案儲存在阿里雲 OSS,使用 SDK 方式不支援使用以 oss:// 為前綴的臨時 URL。 - 音訊格式: 重要由於音視訊格式及其變體眾多,技術上無法窮盡測試,API 不能保證所有格式均能夠被正確識別。請透過測試驗證您所提供的檔案能夠獲得正常的語音識別結果。 - 音訊取樣率 因模型而異: - paraformer-v2 支援任意取樣率 - paraformer-8k-v2 僅支援8kHz 取樣率 - 音訊檔案大小和時長:音訊檔案不超過2GB;時長在12小時以內。 如果希望處理的檔案超過了上述限制,可嘗試對檔案進行預處理以降低檔案尺寸。有關檔案預處理的最佳實踐可以查閱預處理視訊檔案以提高檔案轉寫效率(針對錄音檔案識別場景)。 |
async_request | boolean | 否 | 語音辨識是否為非同步請求。預設值: |
apikey | string | 否 | 如果 連線與控制參數 的 |
nls_config | object | 是 | 語音識別核心設定物件,包含模型選擇、識別效果控制等關鍵參數。 |
nls_config.model | string | 是 | 語音識別 模型。 |
nls_config.language_hints | array[string] | 否 | 指定待識別語音的語言代碼。該參數僅適用於 paraformer-v2 模型。 預設值: |
nls_config.disfluency_removal_enabled | boolean | 否 | 是否過濾語氣詞,如「嗯」、「啊」等。 預設值:false。 取值範圍: - true:過濾 - false:不過濾 |
nls_config.timestamp_alignment_enabled | boolean | 否 | 是否啟用時間戳記校正功能。 預設值:false。 取值範圍: - true:開啟 - false:關閉 |
nls_config.special_word_filter | object | 否 | 指定在語音識別過程中需要處理的敏感詞,並支援對不同敏感詞設定不同的處理方式。 若未傳入該參數,系統將啟用系統內建的敏感詞過濾邏輯,識別結果中與阿里雲百煉敏感詞表匹配的詞語將被替換為等長的 |
nls_config.channel_id | array[integer] | 否 | 指定在多音軌音訊檔案中需要辨識的音軌索引,索引從 0 開始。例如, 重要指定的每一個音軌都將獨立計費。例如,為單一檔案請求 預設值: |
nls_config.diarization_enabled | boolean | 否 | 自動說話人分離,預設关闭。僅適用於單聲道音訊,多聲道音訊不支援說話人分離。啟用該功能後,識別結果中將顯示 說明如果啟用說話人分離功能,建議音訊時長不超過2小時,否則可能導致識別失敗或逾時。 有關 |
nls_config.speaker_count | integer | 否 | 說話人數量參考值。若要使用該功能,需將 |
nls_config.vocabulary_id | string | 否 | 熱詞詞表 ID,用於提升特定詞彙的識別準確率。該參數適用於 v2 及更高版本模型。熱詞的使用方法請參見 定制热词。 |
關鍵介面
NativeNui
initializeFileTrans
初始化語音轉錄 SDK 實例。在呼叫 release 前禁止重複初始化。
說明與即時語音辨識不同,非即時(錄音檔案)轉錄必須使用 initializeFileTrans 方法並傳入 INativeFileTransCallback 回呼,而不是 initialize。
此介面會阻塞呼叫執行緒,請在非 UI 執行緒中呼叫。
- 方法簽章
public initializeFileTrans(callback: INativeFileTransCallback,
parameters: string,
level: number,
save_log: boolean = false): number
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
callback | INativeFileTransCallback | 檔案轉錄事件和資料回呼介面的實作。 |
parameters | string | JSON 字串,包含鑑權、連線和除錯參數。參見連線與控制參數。 |
level | number | 控制 SDK 自身日誌的列印層級,取值為 Constants.LogLevel 列舉。 |
save_log | boolean | 是否儲存本機日誌。若為 |
- 傳回值說明
setParams
此介面用於獨立設定或更新 nls_config 參數。如果所有參數都在 startFileTranscriber 中一次性提供,則無需呼叫此方法。
- 方法簽章
public setParams(params: string): number
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
params | string | 語音辨識效果參數中的 |
- 傳回值說明
startFileTranscriber
開始識別。
- 方法簽章
public startFileTranscriber(params: string, task_id: ArrayBuffer): number
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
params | string | 語音辨識效果參數。範例: |
task_id | ArrayBuffer | 任務 ID 緩衝區。SDK 會將內部產生的隨機任務 ID 字串寫入該緩衝區,要求緩衝區位元組長度必須大於或等於 33 位元組(範例中使用 |
- 傳回值說明
queryFileTranscriber
此介面用於主動查詢一個非同步任務的目前狀態和結果。呼叫成功後,結果將透過 onFileTransEventCallback 回呼中的 EVENT_FILE_TRANS_QUERY_RESULT 事件返回。
- 方法簽章
public queryFileTranscriber(task_id: string): number
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
task_id | string | 待查詢的任務 ID(由 |
- 傳回值說明
cancelFileTranscriber
立即取消目前任務。
- 方法簽章
public cancelFileTranscriber(task_id: string): number
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
task_id | string | 待取消的任務 ID。 |
- 傳回值說明
release
釋放 SDK 的所有內部資源。呼叫後,SDK 實例將無法使用;如需再次使用,必須重新呼叫 initializeFileTrans 進行初始化。
- 方法簽章
public release(): number
- 傳回值說明
GetVersion
取得當前 SDK 版本資訊。
- 方法簽章
public GetVersion(): string
- 傳回值說明
當前 SDK 版本資訊。
INativeFileTransCallback
定義檔案轉錄過程中的事件與辨識結果回呼。
onFileTransEventCallback
監聽檔案轉錄事件並取得語音識別結果。
- 方法簽章
onFileTransEventCallback: (event: Constants.NuiEvent, resultCode: number, finish: number,
asrResult: AsrResult, taskId: string) => void;
- 參數說明
| 參數 | 類型 | 說明 |
|---|---|---|
event | Constants.NuiEvent | 回呼事件。 |
resultCode | number | 僅在出現 |
finish | number | 任務是否結束標記。 |
asrResult | AsrResult | 語音識別結果。 |
taskId | string | 任務 ID。 |
Constants.NuiEvent
HarmonyOS SDK 中事件類型透過 Constants.NuiEvent 列舉定義,以下列出錄音檔案轉錄相關的事件:
| 事件 | 說明 |
|---|---|
EVENT_FILE_TRANS_CONNECTED | 成功連線至服務。 |
EVENT_FILE_TRANS_UPLOADED | 成功上傳待辨識音訊檔案。 |
EVENT_FILE_TRANS_QUERY_RESULT | 查詢任務結果。 |
EVENT_FILE_TRANS_RESULT | 辨識最終結果。 |
EVENT_ASR_ERROR | 語音識別過程中發生錯誤。 |
輔助類型
Constants.LogLevel
level 參數的取值列舉:
| 值 | 說明 |
|---|---|
LOG_LEVEL_VERBOSE | 最詳細日誌。 |
LOG_LEVEL_DEBUG | 偵錯日誌。 |
LOG_LEVEL_INFO | 一般資訊日誌(預設)。 |
LOG_LEVEL_WARNING | 警告日誌。 |
LOG_LEVEL_ERROR | 錯誤日誌。 |
LOG_LEVEL_NONE | 關閉日誌。 |
結果下載
非即時語音辨識結果為非同步產生,EVENT_FILE_TRANS_RESULT 事件返回的回應中包含 transcription_url,辨識文本需透過該 URL 下載取得(JSON 格式)。請注意該 URL 具有有效期間,應及時下載。