このガイドでは、Paraformer非リアルタイム音声認識HarmonyOS SDKを使用して音声をテキストに変換する方法について説明します。
クイックスタート
-
APIキーの取得: APIキーの取得と設定。セキュリティのため、APIキーは環境変数として設定することをお勧めします。
サードパーティアプリケーションまたはユーザーに一時的なアクセス権を付与する場合、あるいは機密データへのアクセスや削除などの高リスク操作を厳密に制御する場合は、一時的なAPIキーを使用します。一時的なAPIキーは、デフォルトで60秒間有効です。有効期限が切れた後は、新しいものを取得してください。
-
SDKをダウンロードしてサンプルコードを実行します:
- 最新のSDKパッケージをダウンロードします。
- TARパッケージを展開します。
neonuiディレクトリからHAR形式のSDKを取得し、プロジェクトの依存関係に追加します。 C++統合の場合、TARパッケージのnative/libsおよびnative/includeから動的ライブラリとヘッダーファイルを取得します。 - DevEco Studioでプロジェクトを開きます。サンプルコードは
DashParaformerFileTranscriberPage.etsにあります。APIキーを置き換えて、機能を試してください。
呼び出し手順
同期モード
- 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 | string | はい | エンドポイント。これはwss://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/audio/asr/transcriptionに固定されています。{WorkspaceId}を実際のワークスペースIDに置き換えます。 |
apikey | string | はい | APIキー。長期キーの漏洩リスクを軽減するため、有効期間の短い、より安全な一時的なAPIキーを使用することをお勧めします。 |
service_mode | string | はい | 動作モード。非リアルタイム音声認識の場合、これは"1"に固定されています。 |
device_id | string | はい | エンドユーザーを識別する一意の文字列。アプリ内のユーザーIDまたはクライアントによって生成された一意のデバイス識別子に設定できます。このIDは主にログの追跡とトラブルシューティングに使用されます。 |
debug_path | string | いいえ | ログファイルの保存パス。このパラメータは、initializeFileTransを呼び出す際にsave_logをtrueに設定した場合にのみ有効になります。この場合、ログファイルのパスを指定する必要があります。指定しないとエラーが発生します。ローカルには最大2つのログファイルが保持されます。 |
max_log_file_size | number | いいえ | ログファイルの最大サイズをバイト単位で設定します。このパラメータは、initializeFileTransを呼び出すときにsave_logをtrueに設定した場合にのみ有効になります。デフォルト値:104857600(100 * 1024 * 1024バイト、または100 MiB)。 |
音声認識効果パラメータ
setParamsを使用してnls_configパラメータを設定するか、startFileTranscriberを使用してすべての音声認識効果パラメータを設定します。 例:以下のJSON文字列は例であり、すべてのパラメータを含んでいるわけではありません。必要に応じてパラメータを追加してください。
- パラメータの説明
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
file_urls | array[string] | はい | 文字起こしする音声ファイルまたは動画ファイルのURLのリスト。HTTPおよびHTTPSがサポートされています。1つのリクエストでサポートされるURLは1つのみです。音声ファイルがAlibaba Cloud OSSに保存されている場合、SDKは - 音声サンプリングレートはモデルによって異なります:- paraformer-v2は任意のサンプリングレートをサポートします。- は任意のサンプリングレートをサポートします。- paraformer-8k-v2は8 kHzのみをサポートします。- は8 kHzのみをサポートします。- は16 kHz以上をサポートします。- 音声ファイルのサイズと長さ:ファイルは2 GBを超えることができず、長さは12時間を超えることができません。これらの制限を超えるファイルを処理するには、前処理を行ってファイルサイズを縮小してください。ベストプラクティスについては、「音声ファイル認識の文字起こし効率を向上させるための動画ファイルの前処理」を参照してください。 |
async_request | boolean | いいえ | 非同期リクエストを使用するかどうかを指定します。デフォルト値:false。有効な値:- true:非同期リクエスト - false:同期リクエスト。 |
apikey | string | いいえ | 接続および制御パラメータのapikeyが一時的なAPIキーである場合、有効期限が切れる前にここで更新します。 |
nls_config | object | はい | コア音声認識設定オブジェクト。モデル選択および認識効果制御の主要なパラメータが含まれています。 |
nls_config.model | string | はい | 音声認識モデル。 |
nls_config.language_hints | array[string] | いいえ | 認識するオーディオの言語コードを指定します。このパラメータはparaformer-v2にのみ適用されます。デフォルト値:["zh", "en"]。サポートされている言語コード:- zh:中国語 - en:英語 - ja:日本語 - yue:広東語 - ko:韓国語 - de:ドイツ語 - fr:フランス語 - ru:ロシア語。 |
nls_config.disfluency_removal_enabled | boolean | いいえ | フィラーワードなどのディスフルエンシーを削除するかどうかを指定します。デフォルト値:false。有効な値:- true:ディスフルエンシーを削除 - false:ディスフルエンシーを保持。 |
nls_config.timestamp_alignment_enabled | boolean | いいえ | タイムスタンプアライメントを有効にするかどうかを指定します。デフォルト値:false。有効な値:- true:有効 - false:無効。 |
nls_config.special_word_filter | object | いいえ | 音声認識中に処理するセンシティブワードを指定し、単語ごとに異なる処理方法をサポートします。このパラメータを省略すると、組み込みのセンシティブワードフィルタリングロジックが有効になります。Alibaba Cloud Model Studioセンシティブワードリストに一致する単語は、同じ数の*文字に置換されます。このパラメータを指定すると、一致した単語を*文字に置換するか、削除することができます。値は以下の形式のJSONオブジェクトです:{ "filter_with_signed": { "word_list": ["测试"] }, "filter_with_empty": { "word_list": ["开始", "发生"] }, "system_reserved_filter": true }。JSONフィールドの説明:- filter_with_signed:同じ数の*文字に置換する単語を指定するオプションのオブジェクト。前述の例では、「帮我测试一下这段代码」の結果は「帮我**一下这段代码」となります。そのword_listフィールドは、置換する文字列の配列です。- filter_with_empty:結果から削除する単語を指定するオプションのオブジェクト。前述の例では、「比赛这就要开始了吗?」の結果は「比赛这就要了吗」となります。そのword_listフィールドは、削除する文字列の配列です。- system_reserved_filter:オプションのブール値。デフォルト値:true。組み込みのセンシティブワードルールを有効にするかどうかを指定します。trueに設定すると、Alibaba Cloud Model Studioセンシティブワードリストに一致する単語が同じ数の*文字に置換されます。 |
nls_config.channel_id | array[integer] | いいえ | マルチトラックオーディオファイルで認識するオーディオトラックのインデックスを指定します。インデックスは0から始まります。たとえば、 デフォルト値: |
nls_config.diarization_enabled | boolean | いいえ | 話者分離を有効にするかどうかを指定します。この機能はデフォルトで無効になっています。モノラルオーディオにのみ適用されます。マルチチャンネルオーディオは話者分離をサポートしていません。有効にすると、認識結果に 話者分離が有効になっている場合、認識の失敗やタイムアウトを回避するために、オーディオの長さを2時間以内に制限することをお勧めします。
|
nls_config.speaker_count | integer | いいえ | 話者数の参照値。この機能を使用するには、diarization_enabledをtrueに設定します。デフォルトでは、話者数は自動的に判定されます。このパラメータが設定されている場合、アルゴリズムが指定された数を出力するように誘導するだけであり、その数を保証するものではありません。有効範囲:[2, 100]。この機能は複数の話者を識別するため、最小値は2です。 |
nls_config.vocabulary_id | string | いいえ | 特定の単語の認識精度を向上させるホットワード語彙ID。このパラメータはv2以降のモデルに適用されます。詳細については、カスタムホットワードを参照してください。 |
主要インターフェース
NativeNui
initializeFileTrans
音声転写SDKインスタンスを初期化します。releaseを呼び出す前に、インスタンスを再度初期化しないでください。
initializeFileTransを使用し、initializeの代わりにINativeFileTransCallbackコールバックを渡す必要があります。- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
callback | INativeFileTransCallback | ファイル転写イベントおよびデータコールバックインターフェースの実装。 |
parameters | string | 認証、接続、およびデバッグパラメータを含む JSON 文字列。接続および制御パラメータを参照してください。 |
level | number | SDKログレベルを制御します。有効な値はConstants.LogLevel列挙型で定義されています。 |
save_log | boolean | ローカルログを保存するかどうかを指定します。このパラメータがtrueの場合、接続および制御パラメータのdebug_pathを使用してパスを指定します。max_log_file_sizeを使用してファイルサイズを設定することもできます。 |
- 戻り値
setParams
nls_configパラメータのみを設定または更新します。すべてのパラメータがstartFileTranscriberで提供されている場合、このメソッドを呼び出す必要はありません。
- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
params | string | 音声認識効果パラメータ内のnls_configパラメータ。nls_config以外のパラメータは、このメソッドを使用して設定できません。例:{ "nls_config": { "model":"paraformer-v2", "disfluency_removal_enabled":false, "timestamp_alignment_enabled": false } } |
- 戻り値
startFileTranscriber
認識を開始します。
- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
params | string | 音声認識効果パラメータ。例:{ "file_urls": [ "{YOUR_AUDIO_URL}" ], "async_request": false, "nls_config": { "model":"paraformer-v2", "disfluency_removal_enabled":false, "timestamp_alignment_enabled": false } } |
task_id | ArrayBuffer | タスクIDバッファ。SDKは内部で生成されたランダムなタスクID文字列をこのバッファに書き込みます。バッファの長さは少なくとも33バイトである必要があります。例ではnew ArrayBuffer(64)を使用しています。呼び出しが成功した後、バッファをデコードしてタスクのtask_idを取得します。 |
- 戻り値
queryFileTranscriber
非同期タスクの現在のステータスと結果をクエリします。呼び出しが成功すると、結果はonFileTransEventCallbackコールバック内のEVENT_FILE_TRANS_QUERY_RESULTイベントによって返されます。
- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
task_id | string | クエリするタスクのID。startFileTranscriberによって書き込まれたバッファから取得します。 |
- 戻り値
cancelFileTranscriber
現在のタスクを即座にキャンセルします。
- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
task_id | string | キャンセルするタスクのID。 |
- 戻り値
release
すべての内部SDKリソースを解放します。このメソッドが呼び出されると、SDKインスタンスは使用できなくなります。再度使用するには、initializeFileTransを呼び出して再初期化します。
- メソッドシグネチャ
- 戻り値
GetVersion
現在のSDKバージョン情報を取得します。
- メソッドシグネチャ
- 戻り値
INativeFileTransCallback
ファイル転写イベントおよび認識結果のコールバックを定義します。
onFileTransEventCallback
ファイル転写イベントをリッスンし、音声認識結果を取得します。
- メソッドシグネチャ
- パラメータの説明
| パラメータ | 型 | 説明 |
|---|---|---|
event | Constants.NuiEvent | コールバックイベント。 |
resultCode | number | EVENT_ASR_ERROR イベントが発生した場合にのみ有効です。 |
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には有効期間があります。結果を速やかにダウンロードしてください。