Logo
一発話認識

Android SDK

  • 複数のSDKを同時に統合する場合、ファイルの競合が発生することがありますが、解凍ソフト(7-zipなど)を使ってaarパッケージを解凍し、競合するsoファイルを削除してください。
  • Android 5.0以上のバージョンに対応しています。
  • SDKを使用する前に、まずインターフェイスプロトコルを読んでください。詳細についてはインターフェイスプロトコルを参照してください。

1 統合手順

1.1 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 'org.java-websocket:Java-WebSocket:1.5.3'
implementation 'com.google.code.gson:gson:2.10.1'

もし32ビットSDKを使用する場合は、以下のコードを追加する必要があります:

defaultConfig {
    //以下のコードを追加します
    externalNativeBuild {
        ndk {
            abiFilters  "armeabi-v7a" 
        }
    }
}

1.2 アプリ関連の権限を追加

AndroidManifest.xmlファイルを修正します

<!--録音の権限は必ず追加する必要があります-->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--ネットワークの権限は必ず追加する必要があります。-->
<uses-permission android:name="android.permission.INTERNET" />

1.3 呼び出し手順/サンプルコード

1.3.1 録音権限の取得

registerForActivityResult(new ActivityResultContracts.RequestPermission(), success -> {
         String msg = "録音の権限を取得する" + (success ? "success" : "error");
         tip(msg);
     }).launch(Manifest.permission.RECORD_AUDIO);

1.3.2 識別クラスを作成します

private Recognizer recognizer;//一発話認識
private BaseAsr getAsr() {
    if (type == Asr.Type.RECOGNIZER) {
         return recognizer;
        }
         return transcriber;
    }

//onCreateでSDKを初期化する
transcriber = Transcriber.getInstance(activity);
recognizer = Recognizer.getInstance(activity);

1.3.3 マイクを初期化します

getAsr().initRecorder();//マイクを初期化すると同時に認識クラスを作成する        

1.3.4 コールバックを設定します

(1)コールバックパラメータの説明

名前説明戻り値のパラメータ
onStartFunctionエンジン接続開始のコールバックメソッドString型 現在のタスクのID
onResultFunctionエンジンが返す内容の結果のコールバックメソッドString型の結果データ
onIntermediateResultFunctionエンジンが中間結果を返すコールバックメソッドString型の中間結果データ
onWarningFunctionエンジンが結果の警告を返すコールバックメソッドタスクIDとエラー型の状態コード
onErrorFunctionエンジンが結果のエラーを返すコールバックメソッドタスクIDとエラー型の状態コード
onGetAudioFunctionエンジンが識別音声データを返すコールバックメソッドbyte[]型の音声データ
onStopFunctionエンジンが終了すると返すコールバックメソッドなし

(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.3.5 権限のアクティブ化

(1)構成パラメータ

名前説明デフォルト値
onSuccessFunction初期化成功時のコールバックメソッドなし
onFailFunction初期化失敗時のコールバックメソックなし

(2)パラメータの例

@NonNull
private Asr.InitListener getInitListener() {
    return new Asr.InitListener() {
        @Override
        public void onSuccess() {
            tip("初期化成功");
        }
        @Override
        public void onFail(Errors.Err err) {
          
        }
    };
}

オンライン認証

getAsr().initOnline(appId, appSecret, getInitListener());

1.3.6 パラメータの設定

インターフェースパラメータの説明

パラメータ必須か説明デフォルト値
lang_typeStringはい言語オプション必須
formatStringいいえ音声エンコード形式mp3
sample_rateIntegerいいえオーディオサンプリングレート16000
enable_intermediate_resultBooleanいいえ中間の識別結果を返すかどうかtrue
enable_punctuation_predictionBooleanいいえ後処理にポイントを追加するかどうかtrue
enable_inverse_text_normalizationBooleanいいえITNは後処理で実行するかどうかtrue
max_sentence_silenceIntegerいいえ音声セグメンター検出閾値です。サイレンス時間がこの閾値を超えるとセグメンターとみなされます。
合法的パラメータ範囲は200~1200です。単位:ミリ秒
450
enable_wordsBooleanいいえ返す単語情報を有効にするかどうかfalse
enable_modal_particle_filterBooleanいいえ言い回しの単語フィルターを有効にするかどうかtrue
hotwords_idStringいいえ熱詞IDなし
hotwords_weightFloatいいえ熱詞の重み、取りうる範囲は[0.1, 1.0]です0.4
correction_words_idStringいいえ強制的に置換する単語リストのID
複数の強制的に置換する単語リストのIDを使用できます。各IDは縦線で区切ります。
allはすべての強制置換用語リポジトリIDを使用することを示します
なし
forbidden_words_idStringいいえ敏感詞ID
複数の敏感詞IDを使用することをサポートし、各IDは竖線で区切られます。
allはすべての敏感詞IDを使用することを示します
なし
//4.1認識パラメータを設定する
JsonObject params = new JsonObject();
params.addProperty("lang_type", langType);//認識する言語(必須)
params.addProperty("sample_rate", 16000);//音声サンプリングレート
params.addProperty("enable_intermediate_result", true);//中間の認識結果を返すかどうか
params.addProperty("enable_punctuation_prediction", true);//後処理で句読点を追加するかどうか
params.addProperty("enable_inverse_text_normalization", true);//後処理でITNを実行するかどうか
params.addProperty("max_sentence_silence", 800);//音声の区切り検出閾値、マルチメディアの長さがこの閾値を超えると区切りとみなされます。有効なパラメータ範囲は200〜2000(ms)、デフォルト値は800msです
params.addProperty("enable_words", true);//単語情報を返す機能をオンにするかどうか

1.3.7 開始/停止

名前説明デフォルト値
autoRecordingbooleanマイクの初期化後はtruetrue
onlineAsrbooleanオンライン時はtrue、オフライン時はfalsetrue
paramsJsonObjectパラメータjsonなし

音声認識を開始します(SDK内蔵通話マイク)

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,"LOCAL_AUDIO_PATH");
//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();

音声を保存します

getAsr().setSaveAudio(true);
//デフォルトでは保存しませんが、trueに設定すると保存します。パスはcontext.getExternalFilesDir(null)/asrCacheです

2 SDKダウンロード

Android SDK

Android Demo