ネイティブ並みの発音を評価せよ:Speechaceでわかる“発音の伸びしろ”
こんにちは@ヒラメです。
今回は、シャドーイングアプリ「シャドマス」がどのように音声評価を実現しているのか、Speechace との出会いから、仕組み、そして今後の活用可能性までを詳しくご紹介します。
🌟 Speechace との出会い
我々は、音声変化に特化したシャドーイングアプリを作成するため、カスタマイズ性のある音声評価APIの調査からスタートしました。
サービス名 | 提供元 | 主な機能 | 主な用途 | 公式リンク |
---|---|---|---|---|
Whisper | OpenAI | ・多言語対応 ・ノイズ耐性 ・自動翻訳 ・大規模データで学習 |
・会議の議事録作成 ・自動応答システム ・多言語の字幕生成 |
公式 / デモ |
Speechace | Speechace Inc. | ・発音評価 ・音声のピッチ・リズム・イントネーション分析 ・教育向けAPI |
・英語学習アプリ ・語学学校 ・個別指導でのフィードバック |
公式 / デモ |
iSpeech | iSpeech Inc. | ・TTS(Text-to-Speech) ・STT(Speech-to-Text) ・API連携 |
・視覚支援 ・カーナビ ・音声入力ツール |
公式 |
その中でも、発音評価に強みを持ち、教育向けAPIとして実績のある「Speechace」 に注目しました。
🔈 Speechace とは?
Speechace は、英語学習者向けに設計された発音評価 API サービスです。ユーザーが話した英語の音声を解析し、発音の正確さ・流暢さ・リズム・イントネーションといった要素を自動で評価・スコア化します。特に、英語を第二言語として学ぶ学習者の「話す力」を強化するために最適化されており、語学学習アプリやオンライン教育プラットフォームに広く採用されています。
包括的なスピーキング評価
-
発音(音素・単語レベル)から流暢さ、文法、語彙、関連性、構成力まで、話し言葉全体を多面的に評価。
-
自発的なスピーチ(spontaneous speech) の評価にも対応。
国際的な評価基準に準拠
-
IELTS や CEFR といった国際標準の言語熟達度評価基準にスコアを対応。
-
試験対策だけでなく、学習成果の可視化にも有効。
多様な評価項目タイプに対応
- 音素単位や単語単位の発音評価から、文章単位のナチュラルスピーキング評価までサポートしており、発音だけでなく 「話し方の全体的な質」 も測定できます。
音声ファイルによる評価API
-
学習者の音声ファイルをAPIで送信するだけで、即座に詳細な評価レポートが得られます。
-
HTTP レスポンスコードや認証も標準仕様で安全性を確保。
多様な導入対象
Speechace は以下のようなさまざまなアプリやサービスに導入可能:
-
語学学習アプリ・教育プラットフォーム(K-12含む)
-
IELTS、TOEFL、PTE、CEFR などの試験対策サービス
-
採用・選考におけるスピーキング評価ツール
-
早期リテラシー教育(Early Literacy)
-
スピーチセラピー・言語療法アプリ(Speech Therapy / Pathology)
これらの特徴から Speechace との親和性は高まっていき、発音評価に対してカスタマイズ性があるのか引き続き調査していきました。
🛠️ Speechace の発音評価カスタマイズ性
Speechace では、Score Text/Markup Language という機能を使って、発音評価の対象となるスクリプトの音節や音素の区切りを開発者が自由に指定できる仕組みを提供しています。これは、標準の区切りが曖昧な場合や特定の発音を厳密に評価したい場合に役立ちます。
つまり、Speechace の Markup Language を使うと、Speechace が持つ標準辞書(Lexicon)を上書きして独自の発音ルールを定義できるのです!我々の音声変化に特化したシャドーイングに完全マッチする瞬間でした🎉
📝 Markup Languageとは?
Speechace の Markup Language とは、標準の発音辞書(Lexicon)を開発者側で上書きし、独自の音節・音素構造を指定できる記法です。
これにより、ネイティブ特有の発音変化(省略・連結・リダクションなど)にも柔軟に対応できます。
🔧 書き方の基本構文
各単語に対して以下のように指定します:
[単語の分割|単語の分割]{対応する音節|音節}
音節は、ARPABET(英語発音記号の一種)で構成された音素列で表します。
母音には強勢レベル(0: 弱、1: 強、2: 中)も指定可能で、1音節に1母音が原則です。
例:「Nothing」を分割して音節・音素指定する場合
[noth|ing]{n ah1 th|ih0 ng}
→ 「ナッシング」のように発音される構造
このように、Speechace の発音評価を文脈や学習目的に応じてカスタマイズ可能にするのが Markup Language の最大の特徴です。
詳細な構文や ARPABET 一覧については公式ガイドを参照できます。
🎯 「ゴーイング トゥ」 vs 「ガナ」 検証
まずはシャドマスのきっかけとなった I'm going to work today.
を使って発音評価すると以下となりました。
Markup Language | ゴーイング トゥで発話したスコア | ガナで発話したスコア |
---|---|---|
なし:going to | 90以上 | 低スコア |
あり:[going]{g ah1} [to]{n ah0} | 低スコア | 90以上 |
「going to」は正確に発音すると ゴーイング トゥ
になりますが、ネイティブスピーカーの自然な発音では音が連結・変化し、ガナ
のように発音されることが一般的です。
Speechace では、通常 ガナ
と発音した場合にはスコアが低く評価されがちですが、Markup Language を活用して going to
に対して gonna(ガナ)
という発音を明示的に指定することで、この省略形でも高スコアを得ることが可能であることが確認できました。
この検証を通じて、Speechaceは我々の音声変化に特化したアプローチに理想的な評価基盤であると確信できました。🔥🔥🔥
📤 Speechace API リクエスト
シャドマスでは、Speechace API の実行を Firebase Functions 上で実行しています。アプリからは録音した音声データと音声評価のスクリプト(Markup Language)を Functions に送信しています。次の TypeScript コードは、そのリクエストを受け取り、Speechace API を実行するロジックになります。
const formData = new FormData();
formData.append('markup_language', 'arpa_mark');
formData.append('include_fluency', '1');
formData.append('text', text);
formData.append('user_audio_file', new Blob([audio]), file_name);
const requestOptions: RequestInit = {
method: 'POST',
body: formData,
redirect: 'follow',
};
const response = await fetch(`https://api.speechace.co/api/scoring/text/v9.9/json?key=${apiKey}`, requestOptions);
- Markup Language を使用するには、
markup_language=arpa_mark
をリクエストに含める必要があります。 - 流暢さ(fluency)のスコアも取得するため、
include_fluency=1
を指定しています。 -
text
フィールドには、Markup Language を適用した評価用スクリプト(例:I'm [going]{g ah1} [to]{n ah0} work today.)を渡します。 -
user_audio_file
には、評価対象となる音声データ(Blob形式)を設定します。- 対応形式:WAV、MP3、M4A など/推奨設定:16-bit、16kHz、モノラル(1ch)
エラーハンドリングについては以下をご参照ください。
📥 Speechace API レスポンス
Speechace API からは、きわめて詳細な発音評価データが返却されます。ここでは シャドマス で実際に活用している主要なパラメータを中心に、その使い方を紹介します。
パラメータ名 | 説明 | 参考値 |
---|---|---|
text |
評価対象の文字列全文 | I'm going to work today. |
word_score_list |
単語ごとの評価データリスト | - |
├─ word
|
単語 | going や to |
├─ quality_score
|
単語全体の発音スコア | 88(0〜100) |
└─ syllable_score_list
|
音節(syllable)ごとのスコア情報 | - |
├─ letters
|
音節を構成する文字列 | going や to |
├─ phone_count
|
含まれる音素数 | 2 |
├─ quality_score
|
音節単位のスコア(0〜100) | 88 |
└─ extent
|
音声内での時間範囲(開始〜終了、10ms単位) | [88, 90] |
└─ phone_score_list
|
音素(phoneme)ごとのスコア情報 | - |
├─ phone
|
音素 | "g" や "ah" |
├─ extent
|
音素が音声内で出現する範囲(開始〜終了、10ms単位) | [88, 89] |
└─ quality_score
|
音素単位のスコア(0〜100) | 86 |
ielts_score |
IELTS 発音評価結果 | - |
├─ pronunciation
|
IELTS スコア | 7.5 |
└─ fluency
|
IELTS 流暢さ | 6 |
pte_score |
PTE 発音評価結果 | - |
├─ pronunciation
|
PTE スコア | 76 |
└─ fluency
|
PTE 流暢さ | 54 |
speechace_score |
Speechace 発音評価結果 | - |
├─ pronunciation
|
Speechace スコア | 83 |
└─ fluency
|
Speechace 流暢さ | 69 |
toeic_score |
TOEIC 発音評価結果 | - |
├─ pronunciation
|
TOEIC スコア | 170 |
└─ fluency
|
TOEIC 流暢さ | 120 |
cefr_score |
CEFR 発音評価結果 | - |
├─ pronunciation
|
CEFR スコア | C1 |
└─ fluency
|
CEFR 流暢さ | B1 |
-
word_score_list
パラメータは、音声データの単語ごとに分割された結果が返却されます。その単語ごとにquality_score
としてスコアが含まれます。 -
syllable_score_list
パラメータは、音声データの音節ごとに分割された結果が返却されます。その音節ごとにquality_score
としてスコアが含まれます。また音節の開始と終了時刻も含まれるため音節ごとにリピートすることが可能になります。 -
phone_score_list
パラメータは、単語内の音素ごとの結果が返却されます。[going]{g ah1}
とした場合、g
やah
に対する結果が含まれます。その音素の発話した開始、終了時刻も返却されるため音声データに対してリピートすることが可能になります。
シャドマスでは、全体のスコアに加えて、音声変化部分のスコアと再生を実現しています。
🚀 アプリのダウンロードはこちら
🍎 App Store(iOS):
🤖 Google Play(Android):
いくつかのシャドーイングは無料で試せるので、ぜひダウンロードして使ってみてください!
📌 まとめ
今回は、シャドーイングアプリ「シャドマス」で活用している Speechace の仕組みやカスタマイズ性についてご紹介しました。
特に、音声変化に特化した発音評価を可能にする Markup Language の存在が、我々のサービス実現の鍵となっています。
また、Speechace では PTE・IELTS・TOEFL・TOEIC などの標準化された英語試験にも対応した評価 API が提供されており、今後はこうした試験対策機能の拡充も視野に入れて、さらなるアップデートを目指していきます!🐸
Discussion