10分で導入:発音評価 Android SDK を組み込む
テスト認証情報の取得と AAR の導入から、DolphinSOE の初期化、録音・ファイル評価、結果コールバックまでを Android Demo で確認します。

語学学習アプリを開発しようとしているなら、DolphinSOE の機能を理解した後、すぐに開発を始めたいと思うはずです。DolphinSOE では複数の開発言語向け SDK を用意しており、開発者が発音評価機能をすばやく組み込めるようにしています。この記事では Android SDK を例に、スコアを返す英語発音評価 Demo を10分で動かすまでの手順を一つずつ紹介します。
DolphinSOE Android Demo の実行画面Android に発音評価を組み込むのは、本当に10分でできる?
最小構成で動作する Demo であれば、本当に10分で実行できます。認証情報を申請し、SDK を追加し、エンジンを初期化して、1回録音してスコアを取得します。ただし、Demo が動いたからといって、そのまま本番環境へリリースできるわけではありません。本番リリースには、問題集の準備、業務用 UI の開発、例外処理なども必要です。
Demo を動かすだけだとしても、このプロセスは多くの人が想像するよりはるかに簡単です。DolphinSOE の Android SDK は、録音、Token の管理、音声の送信、採点結果の取得までの一連の処理を、クライアント側の数行の呼び出しにまとめています。ゼロから始める場合、おおよその手順は次のとおりです。
| 手順 | 所要時間の目安 |
|---|---|
| 公式サイトのフォームを送信し、自動返信メールを受け取る | 2分 |
| SDK をダウンロードし、サンプルコードに appid/appsecret を入力する | 2分 |
| 評価モードや参照回答などのパラメータを設定する | 2分 |
| ビルドして実行する | 4分 |
日本語の導入フロー
中国語の導入フロー開発環境を準備して、一緒に始めましょう。
2分でテスト利用を申請
DolphinSOE のテスト利用手続きはとても簡単です。
- ① テスト利用を申請する: 公式サイトの「お問い合わせ」フォームを送信します。
- ② 自動返信メールを受け取る: わずか数秒で、試用用の
appid/appsecretが記載されたメールが自動返信されます。このテスト認証情報は英語・日本語・中国語の発音評価に対応し、最大2同時接続を利用できます。ローカルデバッグや1台の端末でのデモには十分です。メールには SDK のダウンロード先とAPI ドキュメントも記載されています。Android SDK はダウンロードして展開すれば、そのまま使用できます。
ダウンロードした Demo プロジェクトには完全なテスト画面が用意されており、録音、音声再生、スコア表示などの基本機能がすでに実装されています。開発者が UI をゼロから作る必要がなく、組み込みとデバッグを効率よく進められます。
3ステップで最初の発音評価を実行
英語の基本評価モードを例にすると、Demo では組み込みを3ステップにまとめています。
Step 1 · SDK ファイルを配置する。 圧縮ファイル内の .aar ファイルを、プロジェクトの app/libs ディレクトリに配置します。対象端末のアーキテクチャ(x86 / ARM)に対応する aar パッケージを選択してください。
Step 2 · 認証情報を入力する。 プロジェクトの MainActivity.java を開き、メールで受け取った appid / appsecret を次の2つの定数に入力します。
// MainActivity.java private static final String appIdEn = ""; // ← メールに記載された appid を入力 private static final String appSecretEn = ""; // ← メールに記載された appsecret を入力
Step 3 · ビルドして実行する。 実際に Demo を起動し、テスト画面で評価モードを選びます。録音を開始し、課題文を読み、録音を終了すると、すぐにスコアが表示されます。
これで、最もシンプルな発音評価 Demo が動きました。本当に簡単ではないでしょうか。
次に発音評価 SDK を自分のアプリへ組み込みたい場合は、続けて以下をご覧ください。
Demo の裏側では何をしている?
Demo のテスト画面ではなく、自社の業務 UI に発音評価を組み込む場合は、エンジンの初期化フローを理解する必要があります。具体的な処理は EvalLogic.java にあります。
// 1) エンジンのシングルトンを作成 SpeechEval eval = SpeechEval.createInstance(this); // 2) 基本設定 eval.setSampleRate(16000); // サンプリングレートは 16000 固定 eval.setListener(evalListener); // EventListener を実装し、結果/エラーイベントを受信 eval.setInitLanguageEn(SpeechEval.InitSettingOnline.OralOnLine); // オンライン評価モードに設定 // 3) シングルトンを初期化 eval.setServerAPI("api.soe.dolphin-ai.jp"); eval.init(appIdEn, appSecretEn, "user01");
初期化結果は engineInitState コールバックで返ります。成功コードは "00000" です。代表的な失敗コードは、13010(ネットワーク権限がない)、11011(署名エラー)、11013(appId が存在しない)です。開発やデバッグでは、返されたコードとステータスコード一覧を照らし合わせて、問題を切り分けてください。
1回の評価ではどのパラメータを設定する?
1回の評価で使用するパラメータは、共通パラメータと評価モードパラメータの2種類に分かれます。
- 共通パラメータ: 接続方法、使用する言語、採点ルールを指定します。セッション全体に適用される設定で、「何を評価するか」には依存しません。
- 評価モードパラメータ: 今回の問題で何をどのように評価するかを指定します。評価タスク、つまりリクエストごとの設定で、中心となるのは「評価モードの選択+参照回答の指定」です。
Demo を動かすときは、UI.java に言語の langType やサンプリングレートの sampleRate など、関連する共通パラメータがすでに設定されています。パラメータを設定する場合は、SpeechEval クラスが提供する対応する set メソッドを使用します。ここで、クラウドに音声データを保存したくない場合は setAudioUrl(false) を呼び出してください。クラウドに音声を保存する場合は setAudioUrl(true) を設定します。音声のダウンロード URL が評価結果とともに返り、クラウドに保存されたデータは30日後に自動削除されます。
評価モードパラメータは setParamsJson で渡します。
JSONObject json = new JSONObject(); json.put("mode", "word"); // 評価モード:word / sentence / chapter など json.put("refText", "good morning"); // 参照テキスト。エンジンはこの内容に基づいて採点 eval.setParamsJson(json);
参照テキストの構成方法や評価の粒度は、評価モードによって大きく異なります。各モードの時間制限、refText、評価項目の違いについては、英語発音評価の基本モードに関する記事で体系的に解説しています。完全なパラメータ一覧は、英語単語モードを例にしたAPI ドキュメントを参照してください。
最後に、評価ごとに userId を渡すことをおすすめします。値は自由に設定でき、Demo では "user01" を使用しています。userId は評価結果にそのまま返されるため、問題調査やデータ追跡に役立ちます。
録音を開始して評価結果を受け取るには?
設定が完了したら、評価を開始する方法は2つあります。
- 録音方式:
createRecorder()でレコーダーを作成し、start(recorder, startListener)で開始します。ユーザーが読み終えたらstop()を呼んで終了します。後方無音検出を有効にして、自動で停止させることもできます。startListenerは開始/終了状態を監視し、より安定した体験を実現します。 - ファイル送信方式:
start(wavPath, startListener)を呼び出して、既存の音声ファイルを直接評価します。ファイルは 16000 Hz / 16 Bit / モノラルの WAV または PCM である必要があります。送信後は自動的に終了するため、stop()を呼ぶ必要はありません。
途中で中止する場合は cancel() を呼び出します。キャンセルした評価から結果は返りません。
結果は onResult コールバックに JSON 文字列として返ります。
eval.setListener(new SpeechEval.EventListener() { @Override public void onResult(String result, boolean online) { // result は JSON 文字列。各評価項目のスコアを解析する // 詳細な形式は API プロトコルのドキュメントを参照 } @Override public void onWarning(String taskId, String code, String msg) { // Warning イベントを処理 } @Override public void onError(String taskId, String code, String msg) { // Error イベントを処理 } });
コールバックは Warning(警告)と Error(エラー)の2種類に分かれます。Warning が発生しても、音量が小さすぎる、録音時間が短すぎるといった場合は、通常どおり評価結果が返ります。Error はタスクが異常終了したことを示し、必須パラメータがない、認証情報が無効といった場合は、スコアが返りません。
中国語の結果コールバックフロー
日本語の結果コールバックフローまとめ
ここまでで、DolphinSOE Android 発音評価 SDK の基本的な組み込みフローを理解し、完全な発音評価 Demo をすばやく動かせるようになったはずです。
DolphinSOE の発音評価は海外の教育現場で導入・検証されており、語学学習アプリ、学校、学習塾など、さまざまな教育機関で利用されています。1日あたり約 **10万回(100k calls/day)**の評価リクエストを支え、同時利用の多い実際の教育現場でも安定して稼働しています。
SDK の組み込みは最初の一歩にすぎません。発音評価の価値を十分に引き出すには、自社の事業に合わせて学習者に適した練習フローを設計し、採点機能を実践的な発音トレーニング体験へ変えていく必要があります。組み込み中に問題が発生した場合は、関連する API ドキュメントを確認するか、お問い合わせのうえ技術サポートをご利用ください。
記事を共有
もっと読む

子どもの英語発音評価に専用のKidsモデルが必要な理由
子どもの英語発音評価にKidsモデルが必要な理由を解説。音響特性の違い、採点の校正、DolphinSOEの対応形式と切り替え方法を紹介します。

26,000件の診療記録のほぼすべてに捏造内容:Whisperのハルシネーションの構造的リスクと商用対策
Whisperはなぜ無音区間で文全体を捏造するのでしょうか。APの調査報道とコーネル大学の研究をもとに、LLMデコーダーのハルシネーションの原因、四つの商用場面での代償、後処理では解決できない理由と、実践できる無音区間のテスト項目を解説します。

音素から段落まで、英語発音評価の基本問題形式を一度に解説
DolphinSOEのphoneme、word、sentence、chapter、誤り検出形式はどう選ぶべきか。評価粒度、時間上限、取得できるスコア、用途を比較して解説します。