Android SDK
注意:
複数のSDKを同時に統合する場合、ファイルの競合が発生することがありますが、圧縮ソフト(7-zipなど)を使ってaarパッケージを開き、競合するsoファイルを削除してください。 Android 5.0以上のバージョンに対応しています。
インターネット接続でのアクティベーションのみサポート
1 統合手順
注意:オフライン認識機能を体験したい場合は、事前にビジネス連絡先まで連絡し、APPIDを取得してください。また、体験したい言語種別についてもお知らせください。連絡先:voice.contact@dolphin-ai.jp。
1.1 モデルファイルを追加する
モデルファイルを解凍した後、assets/model/asr/ フォルダに置きます。例えば、assets/model/asr/zh-cmn-Hans-CN/ です。
1.2 aar依存追加
asr-sdk.aar をプロジェクトの libs ディレクトリに配置し、app モジュールの build.gradle を修正して、aarファイルとokhttpを依存として追加します。
implementation fileTree(dir: "libs", include: ["*.jar","*.aar"])
implementation 'com.squareup.okhttp3:okhttp:4.10.0'//ここでokhttpを追加します。古いプロジェクトの場合は3.14.2バージョンを使用することができます
implementation 'com.google.code.gson:gson:2.10.1'もし32ビットSDKを使用する場合は、以下のコードを追加する必要があります:
defaultConfig {
//Add the following code
externalNativeBuild {
ndk {
abiFilters "armeabi-v7a"
}
}
}1.3 アプリ関連の権限を追加
AndroidManifest.xmlファイルを修正します
<!--Recording permission-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--Network permission-->
<uses-permission android:name="android.permission.INTERNET" />1.4 呼び出し手順/サンプルコード
1.4.1 録音権限を取得する
registerForActivityResult(new ActivityResultContracts.RequestPermission(), success -> {
tip(success);
}).launch(Manifest.permission.RECORD_AUDIO);1.4.2 認識クラスを作成する
private Transcriber transcriber;
private Recognizer recognizer;
private BaseAsr getAsr() {
if (type == Asr.Type.RECOGNIZER) {
return recognizer;
}
return transcriber;
}
//Initialize the SDK in onCreate
transcriber = Transcriber.getInstance(activity);
recognizer = Recognizer.getInstance(activity);1.4.3 マイクを初期化します
getAsr().initRecorder();//Initializes the microphone when creating the identification class 1.4.4 コールバックを設定します
(1)コールバックパラメータの説明
| 名前 | タイプ | 説明 | 戻り値のパラメータ |
|---|---|---|---|
| onStart | Function | エンジン接続開始のコールバックメソッド | String型 現在のタスクのID |
| onResult | Function | エンジンが返す内容の結果のコールバックメソッド | String型の結果データ |
| onIntermediateResult | Function | エンジンが中間結果を返すコールバックメソッド | String型の中間結果データ |
| onWarning | Function | エンジンが結果の警告を返すコールバックメソッド | タスクIDとエラー型の状態コード |
| onError | Function | エンジンが結果のエラーを返すコールバックメソッド | タスクIDとエラー型の状態コード |
| onGetAudio | Function | エンジンが識別音声データを返すコールバックメソッド | byte[]型の音声データ |
| onStop | Function | エンジンが終了すると返すコールバックメソッド | 何もない |
(2)パラメータの例
getAsr().setListener(new Asr.Listener() {
@Override
public void onStart(String taskId) {
}
@Override
public void onError(String taskId, Errors.Err err) {
}
@Override
public void onResult(String msg) {
}
@Override
public void onIntermediateResult(String msg) {
}
@Override
public void onWarning(String taskId, Errors.Err err) {
}
@Override
public void onGetAudio(byte[] data) {
}
@Override
public void onStop() {
}
}); 1.4.5 承認アクティブ化(インターネット、インターネットなし)
(1)設定パラメータ
| 名前 | タイプ | 説明 | デフォルト値 |
|---|---|---|---|
| onSuccess | Function | 初期化成功時のコールバックメソッド | 何もない |
| onFail | Function | 初期化失敗時のコールバックメソック | 何もない |
(2)パラメータの例
@NonNull
private Asr.InitListener getInitListener() {
return new Asr.InitListener() {
@Override
public void onSuccess() {
tip("onSuccess");
}
@Override
public void onFail(Errors.Err err) {
}
};
}オフライン・インターネット承認
getAsr().initOffline_OnlineAuth(appId, getCurrLang(), getInitListener());1.4.6 设置参数
1.4.7 パラメータの設定
インターフェースパラメータの説明
| パラメータ | タイプ | 必須 | 説明 | デフォルト値 |
|---|---|---|---|---|
| lang_type | String | はい | 言語オプション | 必須 |
| format | String | いいえ | 音声エンコード形式 | pcm |
| sample_rate | Integer | いいえ | 音声サンプルレート | 16000 |
| enable_intermediate_result | Boolean | いいえ | 中間認識結果を返すかどうか | false |
| enable_punctuation_prediction | Boolean | いいえ | 後処理で句読点を追加するかどうか | false |
| enable_inverse_text_normalization | Boolean | いいえ | 後処理でITNを実行するかどうか | false |
| max_sentence_silence | Integer | いいえ | 音声センテンスのサイレンス検出しきい値、サイレンス時間がこのしきい値を超えるとセンテンスが切り替えられます。有効なパラメータ範囲は200~1200で、単位はミリ秒です | 450 |
| enable_words | Boolean | いいえ | 単語情報を返すかどうか | false |
| enable_modal_particle_filter | Boolean | いいえ | 語気詞フィルタを有効にするかどうか | false |
| hotwords_id | String | いいえ | 単語ID | 無し |
| hotwords_weight | Float | いいえ | 単語ウェイト、値の範囲[0.1, 1.0] | 0.4 |
JsonObject params = new JsonObject();
params.addProperty("lang_type", langType);
params.addProperty("format", "pcm");
params.addProperty("sample_rate", 16000);
params.addProperty("enable_intermediate_result", true);
params.addProperty("enable_punctuation_prediction", true);
params.addProperty("enable_inverse_text_normalization", true);
params.addProperty("max_sentence_silence", 800);
params.addProperty("enable_words", true);1.4.8 開始/停止識別
| 名前 | タイプ | 説明 | デフォルト値 |
|---|---|---|---|
| autoRecording | boolean | マイクの初期化後はtrue | true |
| onlineAsr | boolean | オンライン時はtrue、オフライン時はfalse | true |
| params | JsonObject | パラメータjson | 何もない |
識別を開始します
getAsr().start(autoRecording, onlineAsr, params);識別を開始します(SDK外部転送音声)
1. 外部録画の送信モード
1.1 start
getAsr().start(false, onlineAsr, params);
1.2 feed audio
getAsr().feed(data, false);
1.3 end
getAsr().stop();
2. オーディオを転送するためのファイルの外部読み込み
2.1 start
getAsr().start(false, onlineAsr, params);
2.2 feed audio
getAsr().feed(data, false);
2.3 end(終了データはテールパケットのデータを渡す必要がある)
getAsr().feed(data, true);認識開始(ファイル認識方式)
getAsr().startPath(onlineAsr,params,"ローカル・オーディオ・アドレス");
//No need to manually stop, automatically stops and calls back the onstop method when the file transfer is complete.強制的に文を区切ります
getAsr().sentenceEnd();カスタムの話者番号を設定します
getAsr().speakerStart("speaker_name")識別を停止します
getAsr().stop();オフラインモデルの解放
@Override
protected void onDestroy() {
super.onDestroy();
getAsr().finish("zh-cmn-Hans-CN");
getAsr().finishAll();
}ログ生成をキャンセルする
model/asr/ja-JP/configにパラメータを設定する:
log-level = 6
log-rotate-days=02 状態コード表
| エラーコード | エラーメッセージ | 説明 | 解決策 |
|---|---|---|---|
| 110100 | Unauthorized | 認証されてない | パラメータを承認された能力に変更またはビジネス担当者に連絡してAI能力を追加します |
| 110101 | Invalid Activation Code | アクティベーションキーが正しくありません | 正しいアクティベーションキーを入力します |
| 110103 | Authorization Expired | 承認が期限切れです | ビジネス担当者に連絡して承認期間を延長します |
| 230400 | Invalid Calling Sequence | 呼び出し順序が正しくありません | 正しい順序で呼び出します |
| 230200 | Recognition Failed | 識別に失敗しました | ビジネス担当者に連絡してください |
3 SDKダウンロード&リソースキット
3.1 SDKダウンロード
Android音声認識モバイルSDKパッケージのダウンロードリンクは以下の通りです: Android SDK & Demo