語学学習アプリを開発しようとしているなら、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 ドキュメントを確認するか、お問い合わせのうえ技術サポートをご利用ください。
