Logo
ブログに戻る
Fundamentals

発音評価APIの仕組み:音声から多次元スコアまで

音声を送信してから多次元の発音スコアが返るまで、何が起こっているのか?DolphinSOE発音評価APIの処理フロー(収録・アライメント・スコアリング)を実際のレスポンス例とともに解説します。

発音評価APIの仕組み:音声から多次元スコアまで
DolphinSOE 文章評価デモ:音読終了後、総合スコアと多次元の発音スコアが即時に表示される文章評価デモ:音読完了後に多次元スコアが即時返却される

語学学習アプリで「good morning」と発音すると、画面にはほぼ瞬時に98点という発音スコアが表示され、どの単語・どの音素が足を引っ張ったのかまでハイライトされます——この裏でいったい何が起きているのでしょうか?

開発者や技術的な意思決定者にとって、発音評価APIのスコアリングの仕組みを理解することは、単にAPIをつなぐことよりも重要かもしれません。スコアの根拠をユーザーに説明できるかどうか、そして選定時にどの指標を見るべきかは、ここで決まるからです。

この記事では DolphinSOE 発音評価エンジン の処理パイプラインを分解し、1つの音声から多次元スコアが生まれるまでを追いかけます。

発音評価とは?音声認識との違いは?

発音評価サービスの本質は、ユーザーの音声入力を、説明可能な発音スコアの集合に変換することです。

一般的に次の4つの処理を行います:

  1. 音声と参照テキストを受け取る
  2. ユーザーが実際に何を読んだかを認識する
  3. 認識結果を参照テキストと単語単位・音素単位でアライメントする
  4. スコアを返す

発音評価と音声認識の最大の違いは、目的にあります:

項目音声認識発音評価
主な目的ユーザーの発話を文字に起こす参照テキストと比較し、発音が正確か・完全か・流暢かを判定してスコア化
主な入力音声音声+参照テキスト
主な出力テキスト(認識結果)テキスト+スコア+エラー位置
スコア出力なし多次元で細粒度なスコア
典型的な用途議事録、コールセンター語学学習、スピーキング試験
音声をテキスト "good morning" に書き起こす"good morning" を認識したうえで、総合スコア、"good" と "morning" それぞれのスコア、スコアの低い音節、偏差の大きい音素、読み漏れ・余分・誤読の有無まで返す

つまり、音声認識は「何を言ったか」に、発音評価は「どれだけうまく言えたか」に注目します。問題タイプごとの入出力フィールドの違いについて詳しくは、問題タイプドキュメントを参照してください。

1回の評価リクエストでは何が起きるか

発音評価APIは、ユーザーの音読音声と参照テキストを受け取り、多次元の発音スコアと添削フィードバックを自動で返します。英語の文章評価を例にすると、典型的なリクエストは4つの段階に整理できます:

  1. 収録(Capture):クライアントが16 kHzサンプリングレートで音声(mp3 / wav など)を録音し、参照テキストとともにサーバーへ送信します。
  2. 認識とアライメント(Recognition & Alignment):音響モデルが波形を文字に変換し、参照テキストと単語単位・音素単位でアライメントします。
  3. 多次元スコアリング(Scoring):アライメント結果がスコアリング・エラー検出モジュールに入り、エラータイプを判定して総合スコアと各次元のスコアを生成します。
  4. フィードバック(Feedback):構造化されたJSONをクライアントに返し、クライアント側でスコア・波形ハイライト・添削ヒントを描画します。
発音評価のパイプライン:音声と参照テキストを入力し、認識・アライメント・スコアリング・エラー検出を経て構造化結果を返す1回の評価リクエストの処理フロー

評価エンジンは内部でどう実装されているか

スコアがどこから来るかを理解するには、「認識」の歩みから見るのが近道です。

従来の方式はGMM-HMMハイブリッド構造です。ガウス混合モデル(GMM)を音響モデルとして音素を得て、発音辞書で音素を単語につなぎ、言語モデルで文に補正したうえで、認識文と目標文を比較して正確さと流暢さを計算します。この逐次構造では各モジュールが個別に最適化されるため、全体としての最適を保証しにくく、エラーがモジュール間で積み上がっていきます。

一方、DolphinSOEエンジンはより先進的なエンドツーエンド深層学習のアプローチを採ります。生の音声を入力すると評価結果を出力し、間のニューラルネットワークが単一の目的関数のもとで統一的に最適化されます。音響モデルは**デュアルヘッドLSTM(dual-head LSTM)**です:

  • 特徴量抽出:音声にプリエンファシス、フレーム分割、窓かけ、短時間フーリエ変換(STFT)、melフィルタ、平均除去を施し、fbank特徴量を得ます。
  • デュアルヘッドLSTM音響モデル:多層LSTMがfbank特徴量を入力とし、その後に2つの出力ブランチを備えたマルチタスク学習構成です。1つのブランチはテキストを、もう1つは音素を予測します。両ブランチは同じLSTM表現を共有し、1回のフォワード計算でテキストと音素のアライメントを同時に生成します。テキストブランチは通常CTCで音声フレームと文字系列をアライメントし、ビームサーチ(beam search)で候補語系列を得ます。音素ブランチはフレームごとに音素レベルのアライメントを出します。
  • デコードと融合:テキストブランチの候補は言語モデルで補正され、完全な認識結果 hypothesis になります。音素ブランチの結果はそのまま音素レベルのスコアリングに使われます。両者が同源かつ同時に生成されるからこそ、APIは1つのレスポンスでテキスト結果 hypothesis と細粒度の音素結果 phonemes を同時に返せるのです。

開発者にとってこの構造の意味は、最終スコアだけでなく、可視化や添削フィードバックに使える細粒度の結果も取得できる点にあります。

評価結果にはどのような次元があるか

評価結果は多次元で、音素、イントネーション、流暢さ、区切り、完全性などをカバーします。ただし、言語や問題タイプによって評価次元は異なります——これは言語そのものの特性と問題タイプの設計によるものです。DolphinSOEの英語問題タイプで特に注目される次元は次のとおりです:

次元フィールド意味
総合overall / score総合得点
正確さaccuracy各単語の発音が目標とどれだけ近いか
流暢さfluency停止や話速などの指標から総合判定
完全性integrity全文を読んだか、読み漏れ・余分がないか
リズムrhythmアクセントやイントネーションなどの指標から判定する韻律スコア

さらに、アライメント完了後、エンジンは参照テキストの各単語に type ラベルを付け、そのユーザーの発音で何が起きたかを示します。余分・読み漏れ・誤読はここで識別されます:

type の値意味解釈
normal正常目標と一致し、通常どおり採点
insert余分目標にない内容をユーザーが追加で発話
repeat繰り返し同じ内容を複数回音読
delete読み漏れ目標にある内容をユーザーが読まなかった
replace誤読発音が目標と一致しない(例:"three" を "tree" と発音)
oov語彙外システムの辞書になく、発音も自動予測できないため採点できない単語

プロダクト設計において、これらのフィールドは「スコア結果」を「理解できる学習フィードバック」に変換できるかを左右します。これらの次元がUIでどう表示されるかは、体験ページで確認できます。

実際のレスポンス例

以下は英語単語問題タイプの実際のレスポンス(参照テキストは "good morning")を簡略化したものです。スコアが総合から音素まで掘り下がる様子がわかります:

{
  "overall": 98.86,
  "accuracy": 92.73,
  "refText": "good morning",
  "hypothesis": "good morning",
  "wordInfo": [
    {
      "refText": "good",
      "hypothesis": "good",
      "type": "normal",
      "score": 96.04,
      "accuracy": 97.71,
      "syllables": [
        {
          "syllable": "g_uh_d",
          "score": 97.71,
          "phonemes": [
            { "phoneme": "g", "score": 94.93, "startTime": 340, "endTime": 500 },
            { "phoneme": "uh", "score": 99.58, "startTime": 500, "endTime": 570 },
            { "phoneme": "d", "score": 99.54, "startTime": 570, "endTime": 640 }
          ]
        }
      ]
    },
    {
      "refText": "morning",
      "type": "normal",
      "score": 99.41,
      "accuracy": 99.29,
      "syllables": [
        {
          "syllable": "m_ao_r",
          "score": 99.26,
          "phonemes": [
            { "phoneme": "m", "score": 98.77, "startTime": 640, "endTime": 700 },
            { "phoneme": "ao", "score": 99.75, "startTime": 700, "endTime": 830 },
            { "phoneme": "ao", "score": 99.75, "startTime": 830, "endTime": 920 }
          ]
        },
        {
          "syllable": "n_ih_ng",
          "score": 99.30,
          "phonemes": [
            { "phoneme": "n", "score": 98.06, "startTime": 920, "endTime": 1010 },
            { "phoneme": "ih", "score": 99.99, "startTime": 1010, "endTime": 1140 },
            { "phoneme": "ng", "score": 99.86, "startTime": 1140, "endTime": 1420 }
          ]
        }
      ]
    }
  ]
}

階層関係に注目してください:overall / accuracy が最上位 → 各 wordInfo が単語スコア scoreaccuracy を持つ → さらに syllables(音節)へ → 最小単位の phonemes(音素)へ、と掘り下げます。

評価レスポンスの階層構造:overall 総合スコアから wordInfo 単語、syllables 音節、phonemes 音素へと掘り下がるレスポンスの階層:総合 → 単語 → 音節 → 音素

この「総合 → 単語 → 音節 → 音素」の階層こそ、DolphinSOEの多段階細粒度フィードバックの中核です。

英語単語問題タイプのより詳しいパラメータフィールドについては、APIドキュメントを参照してください。

スコア範囲と厳しさは調整できるか

エンジンは、ユーザーシナリオに合わせた調整用パラメータを提供します:

  • scale:スケール(1–100)。出力範囲を統一します。
  • looseness:緩さ(0–9)。値が大きいほど寛容になります。
  • ratio:調整係数(0.8–1.5)。全体スコアを微調整します。
  • precision:採点精度。

練習シナリオでは looseness を上げて話しやすくし、厳格な試験シナリオでは引き締めて厳しく採点する、といった使い分けができます。

パラメータの設定について詳しくはAPIドキュメントを参照してください。具体的なシナリオでのチューニング戦略について相談したい場合は、お問い合わせからサポートをご利用ください。

開発者から見た1回の呼び出しの中身

ここまでの工程をつなげると、典型的なAPI呼び出しは次のようになります:

  1. クライアントがSDKで音声を録音し、言語、問題タイプ、参照テキストなどのパラメータを付けて送信します。
  2. サーバーはまず無音区間の除去(VAD)を行い、続いて特徴量抽出(fbank)を行います。
  3. 音響モデルが1回のフォワードでテキストと音素のアライメントを同時に生成し、言語モデルがテキストブランチを補正します。
  4. スコアリングモジュールが各次元のスコアを生成します。
  5. 構造化JSONがクライアントに返り、フロントエンドがスコアとハイライトを描画します。

すでに選定やPoCの段階に入っているなら、まず体験ページで効果を確認し、その後APIドキュメントに照らして技術検証を進めるのが効率的です。

まとめ

押さえるべき2つのポイント

エンジン選定とプロダクト設計では、次の2点に注目してください。主要な評価次元が自社のシナリオをカバーしているか、そして多段階の細粒度フィードバックが実現したい学習体験を支えられるか。

発音評価APIの「魔法」は、本質的には音声から多次元スコアへのインテリジェントなパイプラインです:収録 → 認識とアライメント(エンドツーエンド深層学習)→ 多次元スコアリング → フィードバック。

DolphinSOE発音評価は日本市場で安定稼働しており、現在の呼び出し量は1日約10万回(100k calls/day)に達します。顧客は語学学習アプリ、学校、学習塾など教育機関を幅広くカバーしています。これは、本番レベルの高並行・教学グレードのシナリオでサービス能力が継続的に検証済みであることの証明であり、安定性とレイテンシは製品の正式リリースを支えるのに十分です。

英語評価に加えて、DolphinSOEは日本語の発音評価製品も提供しています。単語・文章・段落などの基本問題タイプをカバーし、日本語教育の学習・評価ニーズに適合します。

組み込み方法、レスポンス形式、問題タイプの対応状況について詳しくはAPIドキュメントをご覧ください。見積もり、ソリューションのご相談、ビジネスのご連絡はお問い合わせからお気軽にどうぞ。

発音評価を自分で試してみる

体験ページで1文読んでみてください。総合・単語・音素の各レベルのスコアが即時に返る様子を確認できます。

DolphinSOE 発音評価製品のUI:日本語のテキストを音読すると総合スコアと各次元のスコアが表示される発音評価製品のUI例

記事を共有