図1〜図3には、本発明の一実施例である情報処理装置としてのゲーム装置10の外観が示される。ただし、ゲーム装置10は、後述するように、学習支援装置ないし発音評価装置としても機能する。ゲーム装置10は折り畳み型のゲーム装置であり、図1および図2は、開いた状態(開状態)におけるゲーム装置10を示し、図3は、閉じた状態(閉状態)におけるゲーム装置10を示している。また、図1は、開状態におけるゲーム装置10の正面図であり、図2は、開状態におけるゲーム装置の側面図である。ゲーム装置10は、2つの表示装置(LCD12および14)および2つのカメラ(カメラ16および18)を有し、カメラによって画像を撮像し、撮像した画像を画面に表示したり、撮像した画像のデータを保存したりすることができる。
ゲーム装置10は、開いた状態において両手または片手で把持することができるような小型のサイズとされる。
ゲーム装置10は、下側ハウジング20および上側ハウジング22という2つのハウジングを有する。下側ハウジング20と上側ハウジング22とは、開閉可能(折り畳み可能)に接続されている。この実施例では、各ハウジング20および22はともに横長の長方形の板状形状であり、互いの長辺部分で回転可能に接続されている。
上側ハウジング22は、下側ハウジング20の上側の一部で回動自在に支持されている。これによって、ゲーム装置10は、閉状態(下側ハウジング20と上側ハウジング22とのなす角度が約0°の状態(図3参照))と、開状態(下側ハウジング20と上側ハウジング22とのなす角度が約180°の状態(図2参照))とをとることができる。ユーザは通常、開状態でゲーム装置10を使用し、ゲーム装置10を使用しない場合には閉状態としてゲーム装置10を保管する。また、ゲーム装置10は、上記閉状態および開状態のみでなく、下側ハウジング20と上側ハウジング22とのなす角度を、ヒンジに発生する摩擦力などによって閉状態と開状態との間の任意の角度に維持することができる。つまり、上側ハウジング22を下側ハウジング20に対して任意の角度で静止させることができる。
まず、下側ハウジング20に設けられる構成について説明する。図1に示すように、ゲーム装置10は、下側LCD(液晶表示装置)12を有する。下側LCD12は横長形状であり、長辺方向が下側ハウジング20の長辺方向に一致するように配置される。下側LCD12は下側ハウジング20に収納される。下側LCD12は、下側ハウジング20の内側面に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、下側LCD12の画面が汚れたり傷ついたりすることを防止することができる。なお、この実施例では表示装置としてLCDを用いているが、例えばEL(Electro Luminescence:電界発光)を利用した表示装置など、他の任意の表示装置を利用してもよい。また、ゲーム装置10は任意の解像度の表示装置を利用することができる。なお、ゲーム装置10を撮像装置として利用する場合、下側LCD12は主に、カメラ16または18で撮像されている画像をリアルタイムに表示(スルー表示)するために用いられる。
下側ハウジング20の内側面はほぼ平面状に形成される。当該内側面の中央には、下側LCD12を露出させるための開口部20bが形成される。当該開口部20bの左側(図示y軸負側)には開口部20cが形成され、当該開口部20bの右側には開口部20dが形成される。開口部20bおよび20cは、各キートップ(各ボタン24a〜24eの上面)を露出させるためのものである。そして、下側ハウジング20の内部に収納される下側LCD12の画面が開口部20bから露出し、各キートップが開口部20cおよび20dから露出される。このように、下側ハウジング20の内側面には、中央に設けられる下側LCD12用の開口部20bの左右両側に非画面領域(図1に示す点線領域A1およびA2。具体的には、各ボタン24a〜24eを配置するための領域;ボタン配置領域)がそれぞれ設けられる。
下側ハウジング20には、入力装置として、各ボタン24a〜24iおよびタッチパネル28が設けられる。図1に示されるように、各ボタン24a〜24iのうち、方向入力ボタン24a、ボタン24b、ボタン24c、ボタン24d、ボタン24e、および電源ボタン24fは、下側ハウジング20の内側面に設けられる。方向入力ボタン24aは例えば選択操作等に用いられ、各ボタン24b〜24eは例えば決定操作やキャンセル操作等に用いられる。電源ボタン24fは、ゲーム装置10の電源をオン/オフするために用いられる。ここでは、方向入力ボタン24aおよび電源ボタン24fは、下側ハウジング20の中央付近に設けられる下側LCD12に対して一方の側の(図1では左側)に設けられ、ボタン24b〜24eは下側LCD12に対して他方の側(図1では右側)に設けられる。方向入力ボタン24aおよびボタン24b〜24eは、ゲーム装置10に対する各種操作を行うために用いられる。
図3(A)は閉状態におけるゲーム装置10の左側面図であり、図3(B)は当該ゲーム装置10の正面図であり、図3(C)は当該ゲーム装置10の右側面図であり、そして図3(D)は当該ゲーム装置10の背面図である。また、図3(A)に示されるように、音量ボタン24iは、下側ハウジング20の左側面に設けられる。音量ボタン24iは、ゲーム装置10が備えるスピーカ34の音量を調整するために用いられる。また、図3(D)に示されるように、ボタン24hは、下側ハウジング20の上面の右端部に設けられる。ボタン24gは、下側ハウジング20の上面の左端部に設けられる。各ボタン24gおよび24hは、ゲーム装置10に対して例えば撮影指示操作(シャッタ操作)を行うために用いられる。各ボタン24gおよび24hの両方をシャッターボタンとして機能させてもよく、この場合、右利きのユーザはボタン24hを使用し、左利きのユーザはボタン24gを使用することができ、いずれのユーザにも使い勝手が良い。なお、ゲーム装置10は、各ボタン24gおよび24hを常にシャッターボタンとして有効としておいてもよいし、右利きか左利きかの設定をして(メニュープログラムなどによりユーザに設定入力をさせ、設定されたデータを記憶しておく)、右利き設定のときにはボタン24hのみ有効とし、左利き設定のときにはボタン24gのみ有効とするようにしてもよい。
図1に示されるように、ゲーム装置10は、各操作ボタン24a〜24iとは別の入力装置として、タッチパネル28をさらに備えている。タッチパネル28は、下側LCD12の画面上に装着されている。なお、この実施例では、タッチパネル28は抵抗膜方式のタッチパネルである。ただし、タッチパネルは抵抗膜方式に限らず、任意の押圧式のタッチパネルを用いることができる。この実施例では、タッチパネル28として、下側LCD12の解像度と同解像度(検出精度)のものを利用する。ただし、必ずしもタッチパネル28の解像度と下側LCD12の解像度が一致している必要はない。また、下側ハウジング20の右側面には挿入口30(図1および図3(D)に示す点線)が設けられている。挿入口30は、タッチパネル28に対する操作を行うために用いられるタッチペン36を収納することができる。なお、タッチパネル28に対する入力は通常タッチペン36を用いて行われるが、タッチペン36に限らずユーザの指でタッチパネル28を操作することも可能である。
図3(C)および図3(D)に示されるように、下側ハウジング20の右側面には開閉可能なカバー部20eが設けられる。このカバー部20eの内側には、ゲーム装置10とメモリカード38とを電気的に接続するためのコネクタ(図示せず)が設けられる。メモリカード38は、コネクタに着脱自在に装着される。メモリカード38は、例えば、ゲーム装置10によって撮像された画像のデータを記憶(保存)するために用いられる。
図1に示されるように、下側ハウジング20の軸部20aの左側部分には、3つのLED26a〜26cが取り付けられる。ここで、ゲーム装置10は他の機器との間で無線通信を行うことが可能であり、第1LED26aは、無線通信が確立している場合に点灯する。第2LED26bは、ゲーム装置10の充電中に点灯する。第3LED26cは、ゲーム装置10の電源がオンである場合に点灯する。したがって、3つのLED26a〜26cによって、ゲーム装置10の通信確立状況、充電状況、および、電源のオン/オフ状況をユーザに通知することができる。
以上に説明したように、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ユーザは、ゲーム装置10を使用する際には下側ハウジング20を把持してゲーム装置10に対する操作を行うことができる。図4は、ユーザがゲーム装置10を両手で把持した様子を示す図である。図4に示すように、ユーザは、各LCD12および14がユーザの方向を向く状態で、両手の掌と中指、薬指および小指とで下側ハウジング20の側面および外側面(内側面の反対側の面)を把持する。このように把持することで、ユーザは、下側ハウジング20を把持したまま、各ボタン24a〜24eに対する操作を親指で行い、ボタン24gおよび24hに対する操作を人差し指で行うことができる。
一方、上側ハウジング22には、画像を撮像するための構成(カメラ)、および、撮像した画像を表示するための構成(表示装置)が設けられる。以下、上側ハウジング22に設けられる構成について説明する。
図1に示すように、ゲーム装置10は、上側LCD14を有する。上側LCD14は上側ハウジング22に収納される。上側LCD14は横長形状であり、長辺方向が上側ハウジング22の長辺方向に一致するように配置される。上側LCD14は、上側ハウジング22の内側面(ゲーム装置10が閉状態となった場合に内側となる面)に設けられる。したがって、ゲーム装置10を使用しない場合には閉状態としておくことによって、上側LCD14の画面が汚れたり傷ついたりすることを防止することができる。なお、下側LCD12と同様、上側LCD14に代えて、他の任意の方式および任意の解像度の表示装置を利用してもよい。なお、他の実施形態においては、上側LCD14上にもタッチパネルを設けてもよい。
また、ゲーム装置10は、2つのカメラ16および18を有する。各カメラ16および18はともに上側ハウジング22に収納される。図1に示されるように、内側カメラ16は、上側ハウジング22の内側面に取り付けられる。一方、図3(B)に示されるように、外側カメラ18は、内側カメラ16が取り付けられる面の反対側の面、すなわち、上側ハウジング22の外側面(ゲーム装置10が閉状態となった場合に外側となる面)に取り付けられる。これによって、内側カメラ16は、上側ハウジング22の内側面が向く方向を撮像することが可能であり、外側カメラ18は、内側カメラ16の撮像方向の逆方向、すなわち、上側ハウジング22の外側面が向く方向を撮像することが可能である。以上のように、この実施例では、2つのカメラ16および18が撮像方向が互いに逆方向となるように設けられる。したがって、ユーザはゲーム装置10を持ち替えることなく、異なる2方向を撮像することができる。例えば、ユーザは、ゲーム装置10からユーザの方を見た景色を内側カメラ16で撮影することができるとともに、ゲーム装置10からユーザの反対側の方向を見た景色を外側カメラ18で撮影することができる。
また、内側カメラ16は、上側ハウジング22の下側の中央部に形成される軸部22aの中央に取り付けられる。つまり、内側カメラ16は、2つのハウジング20および22が接続される部分の中央に取り付けられる。したがって、ゲーム装置10を開状態にした場合、内側カメラ16は、2つのLCD12および14の間に配置されることになる(図1参照)。換言すれば、内側カメラ16は、ゲーム装置10の中心付近に配置されることになる。なお、「ゲーム装置10の中心」とは、ゲーム装置10の操作面(開状態における各ハウジング20および22の内側面からなる面)の中心という意味である。なお、内側カメラ16は、LCD12および14の横方向の中心付近に配置されているということもできる。
この実施例では、ゲーム装置10を開状態にした場合に内側カメラ16はゲーム装置10の中心付近に配置されるので、ユーザは、内側カメラ16によってユーザ自身を撮影する場合、ユーザがゲーム装置10に正対する位置でゲーム装置10を把持すればよい。つまり、通常の把持位置でゲーム装置を把持すれば、ユーザは撮像範囲の中心付近に位置することになり、ユーザ自身を撮像範囲内に収めることが容易になる。
また、図3(B)に示されるように、外側カメラ18は、ゲーム装置10を開状態とした場合において上側ハウジング22の上部(下側ハウジング20から遠い側の部分)に配置される。なお、外側カメラ18は、ゲーム装置10を把持するユーザを撮影するものではないので、ゲーム装置10の中心に設ける必要性は高くない。
また、図1または図3(B)に示されるように、マイク32は、上側ハウジング22に収納されている。具体的には、マイク32は、上側ハウジング22の軸部22aに取り付けられる。この実施例では、マイク32は、内側カメラ16の周囲(図ではy軸の側方)に取り付けられ、より具体的には、内側カメラ16からy軸正方向側の側方に取り付けられる。また、軸部22aにおいては、マイク32がゲーム装置10外部の音を検知することができるように、マイク32に対応する位置(内側カメラ16の側方)にマイクロフォン用孔22cが設けられる。なお、マイク32は下側ハウジング20に収納されてもよい。たとえば、マイクロフォン用孔22cを下側ハウジング20の内側面、具体的には下側ハウジング20の内側面の左下部分(ボタン配置領域A1)に設け、マイク32を、下側ハウジング20内における、マイクロフォン用孔22cの近傍に配置することができる。
また、マイク32は、その集音方向(感度が最大となる方向)が内側カメラ16の撮像方向(光軸)と略並行(言い換えれば集音方向および撮像方向がそれぞれy軸と略並行)となる向きに取り付けられる。これによって、内側カメラ16の撮像範囲内で発せられた音声は、マイク32によって好適に捉えられる。すなわち、マイク32入力の検出とユーザの検出とを同時行うことができるとともに、検出の精度を向上させることができる。
図3(B)に示されるように、上側ハウジング22の外側面には、第4LED26dが取り付けられる。第4LED26dは、外側カメラ18の周囲(この実施例では、外側カメラ18の右側)に取り付けられる。第4LED26dは、内側カメラ16または外側カメラ18によって撮影が行われた(シャッターボタンが押下された)時点で点灯する。また、内側カメラ16または外側カメラ18によって動画が撮影される間点灯する。第4LED26dによって、ゲーム装置10による撮影が行われた(行われている)ことを撮影対象者に通知することができる。
また、上側ハウジング22の内側面はほぼ平面状に形成される。図1に示すように、当該内側面の中央には、上側LCD14を露出させるための開口部22bが形成される。上側ハウジング22の内部に収納される上側LCD14の画面は、開口部22bから露出する。また、上記開口部22bの左右両側には音抜き孔22dがそれぞれ1つずつ形成される。音抜き孔22dの奥の上側ハウジング22内にはスピーカ34が収納されている。音抜き孔22dは、スピーカ34からの音を外部に放出するための孔である。
このように、上側ハウジング22の内側面には、中央に設けられる上側LCD14用の開口部22bの左右両側に非画面領域(図1に示す点線領域B1およびB2。具体的には、スピーカ34を配置するための領域;スピーカ配置領域)がそれぞれ設けられる。2つの音抜き孔22dは、左右方向については、各スピーカ配置領域の左右方向における中央部付近に配置され、上下方向については、各スピーカ配置領域の下部領域(下側ハウジング20に近い側の領域)に配置される。
なお、上記のように、下側ハウジング20および上側ハウジング22に左右方向に関して同じ位置に非画面領域をそれぞれ設けたことで、ゲーム装置10は、図4に示すような横持ちで把持される場合だけでなく、縦持ち(図4に示す状態からゲーム装置10を左または右回りに90°回転させた状態)で把持される場合にも持ちやすい構成となっている。
以上に説明したように、上側ハウジング22には、画像を撮像するための構成であるカメラ16および18、および、撮像された画像を表示するための表示手段である上側LCD14が設けられる。一方、下側ハウジング20には、ゲーム装置10に対する操作入力を行うための入力装置(タッチパネル28および各ボタン24a〜24i)が設けられる。したがって、ゲーム装置10を撮像装置として使用する際には、ユーザは、上側LCD14に表示される撮像画像(カメラによって撮像された画像)を見ながら、下側ハウジング20を把持して入力装置に対する入力を行うことができる。
また、上側ハウジング22のカメラ16近傍には、音声を入力するための構成であるマイク32が設けられており、したがってゲーム装置10は、録音装置としても使用可能である。さらに、ユーザがマイク32を通して音声入力を行い、ゲーム装置10はこのマイク入力情報に基づいてゲーム処理や語学学習処理(後述)を実行することもできる。
図5は、ゲーム装置10の内部構成(電気的構成)を示すブロック図である。図5に示すように、ゲーム装置10は、CPU42、メインメモリ48、メモリ制御回路50、保存用データメモリ52、プリセットデータ用メモリ54、メモリカードインターフェース(メモリカードI/F)44、無線通信モジュール56、ローカル通信モジュール58、リアルタイムクロック(RTC)60、電源回路46、およびインターフェース回路(I/F回路)40等の電子部品を備えている。これらの電子部品は、電子回路基板上に実装されて下側ハウジング20(または上側ハウジング22でもよい)内に収納される。
CPU42は、各種のプログラムを実行するための情報処理手段である。ゲーム装置10を撮像装置として利用する場合には、そのためのプログラムがゲーム装置10内のメモリ(例えば保存用データメモリ52)に記憶される。CPU42が当該プログラムを実行することで、ゲーム装置10は撮影装置として機能する。なお、CPU42によって実行されるプログラムは、ゲーム装置10内のメモリに予め記憶されていてもよいし、メモリカード38から取得されてもよいし、他の機器との通信によって他の機器から取得されてもよい。
CPU42には、メインメモリ48、メモリ制御回路50、およびプリセットデータ用メモリ54が接続される。また、メモリ制御回路50には保存用データメモリ52が接続される。メインメモリ48は、CPU42のワーク領域やバッファ領域として用いられる記憶手段である。すなわち、メインメモリ48は、ゲーム処理や語学学習処理に用いられる各種データを記憶したり、外部(メモリカード38や他の機器等)から取得されるプログラムを記憶したりする。この実施例では、メインメモリ48として例えばPSRAM(Pseudo−SRAM)を用いる。保存用データメモリ52は、CPU42によって実行されるプログラムや各カメラ16および18によって撮像された画像のデータ等を記憶するための記憶手段である。保存用データメモリ52は、例えばNAND型フラッシュメモリで構成される。メモリ制御回路50は、CPU42の指示に従って、保存用データメモリ52に対するデータの読み出しおよび書き込みを制御する回路である。プリセットデータ用メモリ54は、ゲーム装置10において予め設定される各種パラメータ等のデータ(プリセットデータ)を記憶するための記憶手段である。プリセットデータ用メモリ54としては、SPI(Serial Peripheral Interface)バスによってCPU42と接続されるフラッシュメモリを用いることができる。
メモリカードI/F44はCPU42に接続される。メモリカードI/F44は、コネクタに装着されたメモリカード38に対するデータの読み出しおよび書き込みをCPU42の指示に従って行う。この実施例では、各カメラ16および18によって撮像された画像データがメモリカード38に書き込まれたり、メモリカード38に記憶された画像データがメモリカード38から読み出されて保存用データメモリ52に記憶されたりする。
無線通信モジュール56は、例えばIEEE802.11.b/gの規格に準拠した方式により、無線LANに接続する機能を有する。また、ローカル通信モジュール58は、所定の通信方式により同種のゲーム装置との間で無線通信を行う機能を有する。無線通信モジュール56およびローカル通信モジュール58はCPU42に接続される。CPU42は、無線通信モジュール56を用いてインターネットを介して他の機器との間でデータを送受信したり、ローカル通信モジュール58を用いて同種の他のゲーム装置との間でデータを送受信したりすることができる。
また、CPU42には、RTC60および電源回路46が接続される。RTC60は、時間をカウントしてCPU42に出力する。CPU42は、RTC60によって計時された時間に基づいて、現在時刻(日付)を計算したり、画像取り込み等の動作タイミングを検知したりする。電源回路46は、ゲーム装置10が有する電源(電池;下ハウジングに収納される)からの電力を制御し、ゲーム装置10の各部品に電力を供給する。
また、ゲーム装置10は、マイク32およびスピーカ34を備えている。マイク32およびスピーカ34はそれぞれI/F回路40に接続される。マイク32は、ユーザの音声を検知して音声信号をI/F回路40に出力する。スピーカ34は、I/F回路40からの音声信号に応じた音声を出力する。I/F回路40はCPU42に接続される。また、タッチパネル28はI/F回路40に接続される。I/F回路40は、マイク32およびスピーカ34の制御を行う音声制御回路と、タッチパネルの制御を行うタッチパネル制御回路とを含む。音声制御回路は、音声信号に対するA/D変換およびD/A変換を行ったり、音声信号を所定の形式の音声データに変換したりする。変換された音声データ(語学学習を行う場合はユーザの発音データ)は、メインメモリ48の音声エリア(語学学習を行う場合は録音エリア86:図12参照)に書き込まれる。ゲーム装置10を録音装置として利用する場合には、音声エリアに格納された音声データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。また、音声エリアに格納された音声データ(マイク入力情報)は、各種のゲーム処理にも利用される。タッチパネル制御回路は、タッチパネル28からの信号に基づいて所定の形式のタッチ位置データを生成してCPU42に出力する。タッチ位置データは、タッチパネル28の入力面のうちで入力が行われた位置の座標を示す。なお、タッチパネル制御回路は、タッチパネル28からの信号の読み込み、および、タッチ位置データの生成を所定時間に1回の割合で行う。CPU42は、タッチ位置データを取得することにより、タッチパネル28に対して入力が行われた位置を知ることができる。
操作部24は、上記各ボタン24a〜24iからなり、CPU42に接続される。操作部24からCPU42へは、各ボタン24a〜24iに対する入力状況(押下されたか否か)を示す操作データが出力される。CPU42は、操作部24から操作データを取得することによって、操作部24に対する入力に従った処理を実行する。
各カメラ16および18はCPU42に接続される。各カメラ16および18は、CPU42の指示に従って画像を撮像し、撮像した画像データをCPU42に出力する。CPU42は、各カメラ16および18からの画像データをメインメモリ48の画像エリア(図示せず)に書き込む。ゲーム装置10を撮像装置として利用する場合には、画像エリアに格納された画像データは、後にメモリ制御回路50を介して保存用データメモリ52に書き込まれる(必要に応じてさらに、メモリカードI/F44を介してメモリカード38に記録される)。また、画像エリアに格納された画像データは、各種のゲーム処理にも利用される。
また、各LCD12および14はCPU42に接続される。各LCD12および14はCPU42の指示に従って画像を表示する。ゲーム装置10を撮像装置として利用する場合、CPU42は、各カメラ16および18のいずれかから取得した画像を上側LCD14に表示させ、所定の処理によって生成した操作画面を下側LCD12に表示させる。ゲーム装置10でゲームをプレイする場合には、LCD12および14の一方または両方にゲーム画像が表示される。
以上のように構成されたゲーム装置10で語学学習を行うとき、CPU42は、図6に示すようなトレーニング画面を上側LCD14(以下“LCD14”)に表示する。トレーニング画面は、語学学習の対象である英文(原文)ESたとえば“Did you hear about the poster ?”と、英文ESの発音を示すカナ文KSたとえば“ディッジュー ヒア アバウト ザ ポウスター?”と、時間軸を示すガイドGと、英文ESを発音する際に連続的に発音すべき発音範囲の発音時間長をガイドGに沿って示すガイドバーGB1〜GB3と、英文ESを発音する際のアクセントの位置をガイドGに沿って示すアクセントマークAP1〜AP3とを含む。アクセントマークAP1〜AP3のうちAP2は、他の2つと比べて相対的に強く発音されるべきアクセントの位置をユーザに認識させるため、強調表示されている。
一般に、英文ESなどの文章を発音する際には、一文内にいくつかのアクセントが現れる。この実施例では、こうしたアクセントで区切られた範囲(あるアクセントから次のアクセントの直前までの範囲)を、連続的に発音すべき発音範囲(以下“発音範囲”)と定義する。したがって、アクセントマークAP1,AP2,…は、ガイドバーGB1,GB2,…の先頭の位置に表示されることになる。
CPU42はまた、トレーニング画面をLCD14に表示した状態で、英文ESの音声をスピーカ34を通して再生する。トレーニング画面は、現時点の位置をガイドGに沿って示す現時点位置ポインタPをさらに含む。
CPU42はまた、英文ESの音声再生を開始する前に、所定数ここでは2個のチック音を一定のリズム(時間間隔)で再生する。このため、トレーニング画面は、チック音の位置をガイドGに沿って示すチックマークTP1およびTP2をさらに含む。
このように構成されたトレーニング画面は、図7(A)〜図7(C)および図8(A)〜図8(C)に示すように変化する。図7(A)〜図7(C)はチック音が再生される期間(つまりユーザが英文ESを発音する前の準備期間)の画面変化を示し、図8(A)〜図8(C)はアクセント音が再生される期間(つまりユーザが英文ESを発音する発音期間)の画面変化を示している。なお、図7(A)〜図7(C)および図8(A)〜図8(C)からは、チックマークTP1およびTP2ならびにアクセントマークAP1〜AP3に加えられるアニメーション効果(図9,図10参照:後述)は取り除かれている。
まず準備期間について、図7(A)に示すように、当初、英文ES,カナ文KSおよびガイドバーGB1〜GB3は、いずれもグレーで表示され、現時点位置ポインタPは、ガイドGの左端付近たとえばチックマークTP1の位置に置かれる。
チックマークTP1に対応する最初のチック音が再生されると、図7(B)および図7(C)に示すように、現時点位置ポインタPは、一定速度で右向きに移動する動きを開始する。2番目のチック音は、現時点位置ポインタPが次のチックマークTP2を通過するとき再生される。そして現時点位置ポインタPが最初のアクセントマークAP1を通過するタイミングで、英文ESの音声再生が開始される。ユーザは、事前に再生される2個のチック音を通して、発音のリズムおよび発音開始のタイミングを認識することができる。
図7(A)〜図7(C)のように現時点位置ポインタPがチックマークTP1およびアクセントマークAP1の間に位置する期間は、英文ES,カナ文KSおよびガイドバーGB1〜GB3には、何の変化も生じない。一方、チックマークTP1およびTP2には、図9(A)〜図9(E)に示すようなアニメーション効果が加えられる。
図9(A)は最初のチック音が出力されるタイミングに対応しており、このときチックマークTP1は最大まで強調表示されている。この後、図9(B)に示すように、現時点位置ポインタPがチックマークTP2に向かって移動するに連れて、チックマークTP1の強調度合いは減少していく。そして、図9(C)に示すように、現時点位置ポインタPがチックマークTP2を通過するとき、つまり2番目のチック音が出力されるタイミングで、チックマークTP2は最大まで強調表示される。チックマークTP1の強調は、現時点位置ポインタPがチックマークTP2に到達する前に解除される。
その後、図9(D)に示すように、現時点位置ポインタPがアクセントマークAP1に向かって移動するに連れてチックマークTP2の強調度合は減少していき、図9(E)に示すように、現時点位置ポインタPがアクセントマークAP1に到達する前にチックマークTP2の強調は解除される。このようなアニメーション効果をチックマークTP1およびTP2に加えることで、発音開始のタイミングが取りやすくなる。
次に、発音期間に関し、図8(A)に示すように、現時点位置ポインタPがアクセントマークAP1を経てガイドバーGB1の範囲内に入ると、このガイドバーGB1の色がグレーから赤に変化し、さらには、英文ESおよびカナ文KSのうちガイドバーGB1に対応する部分つまり“Did you”および“ディッジュー”の色も、グレーから赤に変化する。
その後、図8(B)に示すように、現時点位置ポインタPがアクセントマークAP2を経てガイドバーGB2の範囲内に入ると、このガイドバーGB2の色がグレーから赤に変化し、さらには、英文ESおよびカナ文KSのうちガイドバーGB2に対応する部分つまり“hear about the”および“ヒア アバウト ザ”の色も、グレーから赤に変化する。一方、ガイドバーGB1,“Did you”および“ディッジュー”の色は、赤から黒に変化する。
その後、図8(C)に示すように、現時点位置ポインタPがアクセントマークAP3を経てガイドバーGB3の範囲内に入ると、このガイドバーGB3の色がグレーから赤に変化し、さらには、英文ESおよびカナ文KSのうちガイドバーGB3に対応する部分つまり“poster ?”および“ポウスター?”の色も、グレーから赤に変化する。一方、ガイドバーGB2,“hear about the”および“ヒア アバウト ザ”の色は、赤から黒に変化する。ガイドバーGB1,“Did you”および“ディッジュー”の色は、黒もまま変化しない。
こうして、現時点位置ポインタPの進行に連れてガイドバーGB1〜GB3の色を変化させ、さらに英文ESおよびカナ文KSの対応部分も同様に変化させることで、ユーザは、現時点での発音範囲および発音時間長を一目で認識することができる。一方、アクセントマークAP1〜AP3には、図10(A)〜図10(E)に示すようなアニメーション効果が加えられる。
図10(A)は図9(E)のタイミングに対応しており、このときアクセントマークAP1は未だ強調表示されていない。この後、図10(B)に示すように、現時点位置ポインタPがアクセントマークAP1に向かって移動していき、そして、図10(C)に示すように、現時点位置ポインタPがアクセントマークAP1およびAP2の間の所定位置に到達した時点で、アクセントマークAP1は最大まで強調表示される。
その後、アクセントマークAP1の強調は、図10(D)に示すように、現時点位置ポインタPがアクセントマークAP1から遠ざかるに連れて減少していき、そして図10(E)に示すように、現時点位置ポインタPがアクセントマークAP2に到達する前に解除される。以降、アクセントマークAP2,AP3についても、同様のアニメーション効果が加えられる。このようなアニメーション効果をアクセントマークAP1〜AP3に加えることで、アクセントの発音タイミングを認識しやすくなる。
図7(A)〜図7(C)および図8(A)〜図8(C)のようなトレーニング画面の変化は、所定回数ここでは5回繰り返される。音声再生時の音量は、繰り返しの度に減少していき、最後の1回つまり5回目ではゼロとなる。ユーザは、5回に渡って英文ESの発音を行うが、最初の4回はトレーニング画面を見ながら再生音声を真似て発音を行い、最後の1回はトレーニング画面だけで(再生音声なしで)発音を行う。この5回目の発音が、マイク32を通して録音される。
録音が完了すると、CPU42は、図11に示すような再生画面をLCD14に表示して、録音された発音の音声をvscaleと同時にスピーカ34から再生する。この再生画面は、英文ESと、お手本音声の波形WP1と、ユーザ(あなた)の発音音声の波形WP2と、現時点位置ポインタPとを含む。現時点位置ポインタPは、現時点の時間軸(ガイドG)上での位置を示す。現時点位置ポインタPの移動に連れて、英文ESの色がトレーニング画面(図6参照)におけるそれと同じ要領で変化し、かつ2つの波形WP1およびWP2の描画が進行する。描画が完了すると、CPU42は、2つの波形WP1およびWP2のレベルを主としてアクセントAP1,AP2,…の位置で比較して、お手本およびユーザ発音の間の類似度を評価する。そして、評価結果を示す評価スコア(図示せず)を表示する。
次に、このような語学学習を実現するための具体的な情報処理について、図12〜図20により説明する。図12には、語学学習を行う場合のメインメモリ48のメモリマップが示される。図12を参照して、メインメモリ48にはプログラムエリア48aおよびデータエリア48bが形成され、プログラムエリア48aには、図15〜図20のフロー図に対応するメインプログラム70が格納される。メインプログラム70は、トレーニング画面などの描画を行うための画像処理プログラム72と、英文ESの音声を再生しかつユーザの発音の録音するための音声処理プログラム74とをサブルーチンとして含む。プログラムエリア48aにはさらに、I/F回路40等を制御して映像や音声の入出力を行うための入出力制御プログラム76およびユーザの発音を評価するための評価処理プログラム77なども格納されている。
一方、データエリア48bは、問題エリア78,定数エリア80,変数エリア82,描画エリア84および録音エリア86などを含む。問題エリア78には、問題1データ781,問題2データ782,…が格納される。問題1データ781の構成を図13に示す。問題1データ781は、英文ESを示すテキストデータ781aと、カナ文KSを示すテキストデータ781bと、アクセントの時間軸上での位置T(1),T(2),…および強弱を示すアクセント情報781cと、英文の音声を示す波形データ781dと、英文の音声のデータサイズ(サンプル数および/または時間長W)を示すサイズ情報781eを含む。問題2データ782,…も、同様に構成される。なお、図13の例では、単語の先頭にアクセントがきているが、単語の途中にアクセントがくる場合もある。
定数エリア80には、メインプログラム70によって参照される各種の定数(V,N,T(n),STEP,Ttick,Ntick:後述)が記憶される。変数エリア82には、メインプログラム70によって制御される各種の変数(step,scale,tv,vscale,sore,scoreA,scoreB,scoreC,scoreD,scoreX,scoreY,accentNum,rightNum,maxNum,value,i,j,m,σA,σB:後述)が記憶される。描画エリア84には、トレーニング画面(図6参照)や再生画面(図7参照)に対応する画像データが記憶される。録音エリア86には、マイク32を通して入力された音声データつまりユーザの発音が記憶される。
図14には、上記の定数および変数のうち、トレーニング画面に関して主要なものと、音声波形,チックマークおよびアクセントマークとの関係が、時間軸に沿って図解されている。“V”はお手本の音声データを、“scale”は“V”の再生倍率(たとえば0.5倍,1倍,1.5倍)を、そして“vscale”は“V”を“scale”倍に伸縮したものをそれぞれ示す。“t”は現在時刻(基準時刻0からの経過時間)を、“tv”は再生開始時刻をそれぞれ示す。
“Ttick”はチック音の時間間隔を示しており、このためチックマーク(TP1およびTP2)間の間隔は、“Ttick”の“scale”倍つまり“Ttick×scale”となる。2番目のチックマークTP2と1番目のアクセントマークAP1との間隔もまた、“Ttick×scale”である。
“Ntick”はチック音の個数(ここでは2個)を、“N”はアクセントの個数(ここでは4個)をそれぞれ示す。T(n)は、scale=1で再生した際のn番目(1≦n≦N)のアクセントの再生開始時刻(tv)からの時間を示す。このため、アクセントマークAP1は“tv”から“T(1)×scale”だけ右に、アクセントマークAP2は“tv”から“T(2)×scale”だけ右に、アクセントマークAP3は“tv”から“T(3)×scale”だけ右に、そしてアクセントマークAP4は“tv”から“T(4)×scale”だけ右に、それぞれ位置している。
したがって、音声再生開始に先立ってチック音が一定時間“Ttick×scale”毎に発生し、最後(2番目)のチック音から“Ttick×scale”後に最初のアクセント音が発生する。音声再生は、この1番目のアクセント音よりも“T(1)×scale”だけ前に開始される(tv=Ttick×scale×2−T(1)×scale)。2番目のアクセント音は、1番目のアクセント音から“T(2)×scale−T(1)×scale”後に発生し、3番目のアクセント音は、2番目のアクセント音から“T(3)×scale−T(2)×scale”後に発生し、そして4番目のアクセント音は、3番目のアクセント音から“T(4)×scale−T(3)×scale”後に発生する。ここでT(1),T(2),…は、お手本の音声データ毎に定められた定数であるため、アクセント音の間隔は、一般に一定ではない。
CPU42は、このようなメインメモリ48のプログラムおよびデータに基づいて、図15〜図20のフロー図に従う語学学習処理を実行する。この処理は、問題が選択される度に実行される。図15を参照して、いずれかの問題たとえば問題1が選択されると、最初、ステップS1〜S7を通じて各種変数(図12〜図14参照)に初期値をセットする。詳しくは、ステップS1では変数scaleに“1”をセットし、ステップS3では変数stepに“1”をセットする。ここで変数stepは、現時点での繰り返し回数を示す。ステップS5では、定数Ttick,Ntick,T(1)およびscaleから“(Ttick×Ntick−T(1))×scale”つまり再生開始時刻(図14参照:前述)を計算し、結果を変数tvにセットする。ステップS7では、定数Vおよびscaleから“V×scale”を計算し、結果を変数vscaleにセットする。なお、“V”はお手本の音声データを、“vscale”は“V”お手本の音声データを伸縮して得られた音声データをそれぞれ示すが、説明の便宜のため、定数V,変数vscaleのように記す。そしてステップS9で、描画エリア84に対して描画を行い、これにより図6のようなトレーニング画面がLCD14に表示される。このトレーニング画面描画処理は、詳しくは図20のサブルーチンに従って実行される。
図20を参照して、まず、ステップS101でガイドGを含む初期画面を描画し、ステップS103では問題データたとえば問題1データ781(図13参照)を読み込み、ステップS105では問題1データ781に含まれているテキストデータ781aおよび781bに基づいて英文ESおよびカナ文KSを描画する。次に、ステップS107で、問題1データ781に含まれているサイズ情報781eに基づいて伸縮率を計算する。たとえば、トレーニング画面(図6参照)の横サイズ(表示幅)が時間長W0に相当する場合、伸縮率(k)は、英文の音声(vscale)の時間長Wから“k=W0/(tv+W)”のように計算される。
ステップS109ではチックマークTP1,TP2を伸縮後の間隔で描画する。伸縮後の間隔は、“Ttick×scale×k”のように計算される(図14参照)。ステップS111ではアクセントマークAP1〜AP3を伸縮後の間隔で描画する。伸縮後の間隔は、たとえばアクセントマークAP1およびAP2の間隔については、“{T(2)×scale−T(1)×scale}×k”のように計算される(図14参照)。そしてステップS113では、ガイドバーGB1〜GB3を伸縮後の長さで描画する。伸縮後の長さは、たとえばガイドバーGB1については、“{T(2)×scale−T(1)×scale−D1}×k”のように計算される(図14参照)。ここでD1は、ガイドバーGB1の末尾とアクセントマークAP2との隙間の長さを示す。ガイドバーGB2については、“{T(3)×scale−T(2)×scale−D2}×k”のように計算される。これにより、LCD14には図6のようなトレーニング画面が表示される。その後、上位層のルーチンに復帰する。
再び図15を参照して、次に、ステップS11で変数tに“0”をセットし、ステップS13では英文ES,カナ文KSおよびガイドバーGB1〜GB3の表示色をグレーにする。そしてステップS15で、ガイドG上の現時点位置ポインタPを変数tに対応する位置へと移動する。ステップS17ではスピード変更操作の有無を判別し、“NO”であればステップS23に進む。操作部24やタッチパネル28を通してスピード変更操作が行われると、ステップS17からステップS19に移って、変更後のスピードに対応する再生倍率を計算し、結果を変数scaleにセットする。そして、ステップS21で音声再生または録音を停止した後、ステップS3に戻る。なお、現時点で音声再生も録音も行われていなければ、ステップS21は素通りとなる。
図16を参照して、ステップS23では変数nに“1”をセットする。ここでの変数nはチックの番号を示す。ステップS25では変数tが“Ttick×scale×(n−1)”を跨いだか否かを判別し、ここで“NO”であれば直ちにステップS31に進む。ステップS25で“YES”であれば、当該n番目のチックに関してステップS27およびS29の処理を実行した後、ステップS31に進む。ステップS27ではチック音の再生を行い、ステップS29ではチックマーク(TPn)のアニメーションを開始する。チックマーク(TP1およびTP2)のアニメーションは、図10(A)〜図10(E)に示す要領で進行する。
ステップS31では変数nをインクリメントし、次のステップS33では変数nが定数Ntick以下であるか否かを判別する。ここで“YES”であればステップS25に戻り、“NO”であればステップS35に進む。
図17を参照して、ステップS35では変数nに“1”をセットする。ここでの変数nはアクセントの番号を示す。ステップS37では変数tが“tv+scale×T(n)”を跨いだか否かを判別し、ここで“NO”であれば直ちにステップS45に進む。ステップS37で”YES”であれば、当該n番目のアクセントに関してステップS39〜S43の処理を実行した後、ステップS45に進む。ステップS39ではアクセント音の再生を行い、ステップS41ではアクセントマーク(APn)のアニメーションを開始し、ステップS43では英文ES,カナ文KSおよびガイドバーGB1,GB2,…の表示色を“0〜(n−1)”の部分は黒に、“n”の部分は赤にする。アクセントマーク(AP1,AP2,…)のアニメーションは、図11(A)〜図11(E)に示す要領で進行する。英文ES,カナ文KSおよびガイドバーGB1〜GB3の表示色は、図9(A)〜図9(C)に示す要領で変化する。
ステップS45では変数nをインクリメントし、次のステップS47では変数nが定数N以下であるか否かを判別する。ここで“YES”であればステップS37に戻り、“NO”であればステップS49に進む。
図18を参照して、ステップS49では変数tが変数tvを跨いだか否かを判別し、“NO”であれば直ちにステップS57に進む。ステップS49で“YES”であれば、変数stepが定数STEPに達したか否かをステップS51でさらに判別する。step=STEPであれば、ステップS53で録音処理を開始した後、ステップS57に進む。step<STEPであれば、ステップS55で、変数stepから音量を算出し、変数vscaleを当該音量で再生開始する。なお、音量の算出には、n=1のとき最大値をとり、nの増加に連れて値が減少し、そして“n=Nのとき0”または“n=N−1のとき最小値”となるような関数(もしくはこのような算出結果を記載したテーブル)が用いられる。そしてステップS57に進む。
ステップS57では、変数tが変数tvに{変数vscaleの再生時間}を加算した値以上であるか否かを判別し、“NO”であればステップS59で、一定時間待機した後、変数tの値を更新する(t=t+待機時間)。そして、ステップS15に戻る。ステップS57で“YES”であれば、変数stepが定数STEPに達したか否かをステップS59で再び判別する。ステップS59で“NO”であれば、ステップS63で変数stepをインクリメントした後、ステップS11に戻る。ステップS59で“YES”であれば、ステップS61で録音を停止した後、ステップS73に進む。
図19を参照して、ステップS73では、変数vscaleと録音エリア86の録音データ(ユーザ発音)とを主としてアクセントの位置におけるレベルで比較して、両者の類似度を示す評価スコアを算出する。すなわち、ステップS73では、最適なリズムで発音したかどうかを示すスコアを算出する。算出結果は、変数scoreにセットされる。ステップS75では、再生画面(つまり英文ES,変数vscaleの波形WP1,および録音データの波形WP2:図11参照)の描画エリア84への描画と、変数vscaleの再生と、録音データの再生とを開始する。ステップS77では、変数tに“0”をセットし、ステップS79では現時点位置ポインタPを変数tに対応する位置へと移動させる。ステップS81では、変数tが{変数vscaleの再生時間}以上であるか否かを判別し、“NO”であればステップS83で、一定時間待機した後、変数tの値を更新する(t=t+待機時間)。そして、ステップS79に戻る。
ステップS81で“YES”であれば、ステップS85で変数scoreの値を描画する。ステップS87では聴き直し操作の有無を判別し、”YES”であればステップS75に戻る。ステップS87で“NO”であれば、終了操作の有無をステップS89でさらに判別し、ここでも“NO”であればステップS87に戻る。ステップS89で“YES”であれば、この問題(問題1)に関する語学学習処理は終了となり、次の問題(問題2)について同様の処理が実行される。
以上から明らかなように、この実施例のゲーム装置10は、CPU42およびメインメモリ48を備える。メインメモリ48は、語学学習の対象となる原文ESの内容を示す原文内容情報(原文文字情報781aおよび原文音声情報781d)と、原文に関しアクセントの時間軸上での位置を示すアクセント位置情報781cとを記憶しており(図13参照)、CPU42は、原文ESの内容を原文内容情報(781a,781d)に基づいて報知(文字を表示または音声を再生)する(S55,S105)。また、このような報知を行っているときに、原文ESに関しアクセントの時間軸上での位置をユーザに報知するためのアクセント画像(つまり時間軸を示すガイドGおよびアクセント位置を示すアクセントマークAP1,AP2,…)を、アクセント位置情報781cに基づいてLCD14に表示する(S111)。
こうして、原文ESの内容を報知しながら、原文ESのアクセント(AP1,AP2,…)の時間軸(G)上での位置を視覚的に示すことで、ユーザは、アクセントを発音すべきタイミングと、アクセントで区切られた各区間の時間長とがわかるので、原文の自然な発音を身につけることができる。
なお、チック音やアクセント音の再生、チックマークやアクセントマークのアニメーション、ガイドバーの表示といった処理は、この実施例では、現在時刻(変数t)がある値を跨いだか否かを判定して開始しているが、他の実施例では、処理を開始するフレーム(の番号)を予め計算しておいて、現フレームがそのフレームになったか否かを判定して開始してもよい。
なお、この実施例では、原文ESの言語は英語であるが、ドイツ語,フランス語,中国語など他の外国語についても、自然な発音を身につけさせることができる。原文ESを日本語とし、カナ文KSを外国語で表記すれば、日本語の学習も行える。
次に、上述のステップS73における評価スコア(score)の算出方法、すなわちユーザの発音についての評価方法について説明する。この実施例では、3つの評価方法(評価処理)についての各評価値(scoreA,scoreB,scoreC)を用いて算出した仮の評価値に対して減点処理を行って、上述した評価スコア(score)を求める。以下、3つの評価処理および減点処理について順に具体的に説明することにする。
最初に、局所解スコア(scoreA)の算出方法について説明する。この局所解スコアの算出方法では、まず、原文ESの音声の波形とユーザの音声の波形との絶対値のエンベロープが取られる。ただし、この実施例では、256サンプル内での絶対値の最大値が計算されることにより、音声の波形(音声信号)のエンベロープが取られる。つまり、サンプリング周波数は32kHzであり、8ms毎の絶対値の最大値が求められているのである。
原文ESの音声の波形とユーザの音声の波形とのエンベロープが取られると、各音声の音量が揃えられる。この実施例では、ユーザの音声の音量が、原文ESの音声の音量に揃えられる。具体的には、各エンベロープについて平均値が算出される。つまり、各音声の音量の平均値が求められる。そして、原文ESの音声の音量についての平均値に対するユーザの音声の音量についての平均値の割合が求められる。そして、ユーザの音声のエンベロープに対して、算出した割合の逆数が掛算される。したがって、各エンベロープについての平均値すなわち各音声の音量が揃えられる。
次に、図21(A)に示すように、各音声の音量が基準値(この実施例では、平均値)を超えるときに、音量のエンベロープと基準値とが交差する点を局所的な解(局所解)として抽出する。この実施例では、局所解が時系列に従って並ぶようにリストアップされる。つまり、先頭の(時間的に早い)サンプルから最後尾のサンプルまでの間において、抽出された局所解の点がプロットされる。これによって、原文ESの音声の音量についての局所解のリスト(以下、「原文局所解リスト」という)と、ユーザの音声の音量についての局所解のリスト(以下、「ユーザ局所解リスト」という)とが生成される。
ただし、音声の音量が基準値を超えている期間が一定期間(この実施例では、6サンプル)に満たない場合には(図21(A)の例では「×」で示す)、局所解として抽出しないようにしてある。これは、ノイズによる影響を除去するためである。
図21(B)は、原文局所解リストとユーザ局所解リストとの例を示す図解図である。この図21(B)から分かるように、原文局所解リストには、4つの局所解(a1,a2,a3,a4)が含まれる。一方、ユーザ局所解リストには、3つの局所解(b1,b2,b3)が含まれる。図21(B)からも分かるように、原文局所解リストでは、局所解を丸印で示し、ユーザ局所解リストでは、局所解を四角印で示してある。
この局所解スコアの算出方法では、ユーザが原文ESの音声よりも早いタイミングや遅いタイミングで発音する場合があるため、このような場合であっても、局所解の時間間隔(サンプルの間隔)が一致ないしほぼ一致すれば、原文ESの発音に対するユーザの発音の類似度を高くするために、その評価(局所解スコア)を高くするようにしてある。このため、単に、原文局所解リストとユーザ局所解リストとを比較して、局所解スコアを算出するのではなく、その比較結果と、ユーザ局所解リストを前後に(左右に)1サンプルずつずらして比較したそれぞれの比較結果とに基づいて、局所解スコアを算出するようにしてある。ただし、この実施例では、ユーザ局所解リストをずらす量は、最大で10サンプル分である。したがって、この実施例では、21個の比較結果が得られ、そのうち、原文局所解リストに最も近い(一致を含む)ユーザ局所解リストが選択され、選択されたユーザ局所解リストについての比較結果に基づいて局所解スコアが算出される。
ただし、図21(B)からも分かるように、局所解の総数が原文局所解リストとユーザ局所解リストとで異なる場合には、局所解の総数を揃えて、先頭の局所解から順に、対応する局所解同士のサンプル数のずれ(差分)を検出するようにしてある。ただし、差分は絶対値である。以下、同じ。また、局所解の総数は、その数が小さい方のリストに合わせるようにしてある。ただし、削除する局所解は、次のようにして決定(選択)される。まず、削除の候補となる局所解をリストから削除した状態で、原文局所解リストとユーザ局所解リストとの対応する局所解同士のサンプル数の差分の合計値を算出する。この処理を、削除の候補となる局所解を順次選択して行う。そして、差分の合計値が最小となる場合の削除の候補となる局所解を、削除する局所解として決定する。ただし、削除する局所解は、ユーザ局所解リストを1サンプルずらす度に決定される。
たとえば、図21(B)に示す例では、原文局所解リスト{a1,a2,a3,a4}のうちの{a1,a2,a3}とユーザ局所解リスト{b1,b2,b3}との対応する局所解同士の差分の合計値よりも、原文局所解リスト{a1,a2,a3,a4}のうちの{a1,a3,a4}を用いた場合の方が、局所解同士の差分の合計値が小さい。ただし、前者では、局所解a1と局所解b1とのサンプル数の差分、局所解a2と局所解b2とのサンプル数の差分、局所解a3と局所解b3とのサンプル数の差分がそれぞれ算出され、その合計値が求められる。また、後者では、局所解a1と局所解b1とのサンプル数の差分、局所解a3と局所解b2とのサンプル数の差分、局所解a4と局所解b3とのサンプル数の差分がそれぞれ算出され、その合計値が求められる。以下、同様である。
ここで、図22(A)には、ユーザ局所解リストを右に(時間を遅らせる方向に)或るサンプル数(1〜10サンプルの間)だけずらした例が示され、図22(B)には、ユーザ局解リストを左に(時間を早める方向に)或るサンプル数(1〜10サンプルの間)だけずらした例が示される。
図22(A)に示す場合には、原文局所解リスト{a1,a2,a3,a4}から局所解a2を削除して、原文ESの音声についての局所解{a1,a3,a4}とユーザの音声についての局所解{b1,b2,b3}との組み合わせを用いると、対応する局所解同士の差分の合計値が最も小さい。
また、図22(B)に示す場合には、原文局所解リスト{a1,a2,a3,a4}から局所解a4を削除して、原文ESの音声についての局所解{a1,a2,a3}とユーザの音声についての局所解{b1,b2,b3}との組み合わせを用いると、対応する局所解同士の差分の合計値が最も小さい。
局所解スコアは、上述したように、原文局所解リストとユーザ局所解リストとの対応する局所解同士の差分の合計値を求めるとともに、右方向と左方向とに1サンプルずつずらした場合(最大10サンプル)のそれぞれについての対応する局所解同士の差分の合計値を求めて、全21個の差分の合計値のうち、最も小さい差分の合計値に基づいて算出される。局所解スコアの具体的な算出方法については、後で詳細に説明するが、差分の合計値が小さいほど、局所解の分布(音量が基準値を超えるタイミングの分布)が類似するため、局所解スコアが大きくなるようにしてある。ただし、局所解スコアは0〜100の間で決定される。
次に、平均値基準スコア(scoreB)の算出方法について説明する。原文ESの音声の音量のエンベロープを取得し、ユーザの音声の音量のエンベロープを取得し、ユーザの音声の音量を原文ESの音声の音量に揃えるまでは、上述した局所解スコアの算出方法と同じである。
次に、各エンベロープについて、図23(A)に示すように、平均値を所定倍(この実施例では、0.6倍)した値を基準値として、図23(B)に示すように、エンベロープが示す音量が基準値以上である(高レベル)か、基準値未満である(低レベル)かを判定(2値化)し、図24(A)および図24(B)に示すようなリスト(2値化リスト)を作成する。ここで、平均値の0.6倍を基準値として設定するのは、ノイズの影響を受けずに、適切にエンベロープが示す音量のレベルを判定するためであり、経験的に得られた値である。
具体的には、先頭から最後尾までの各サンプルについて、対応するエンベロープが示す音量が基準値以上であるかどうかが判定される。この実施例では、図23(A),図23(B),図24(A)および図24(B)に示すように、高レベルと判定されたサンプルに「1」が記述され、低レベルと判定されたサンプルに「0」が記述される。
なお、図24(A)および図24(B)では、説明の都合上、インデックス番号を付してあるが、実際には、高低の値のみが先頭から(時間的に古い方から)順番に並んでいるだけである。
原文ESの音声の音量についての2値化リスト(原文2値化リスト)と、ユーザの音声の音量についての2値化リスト(ユーザ2値化リスト)とが作成されると、その類似度が判断される。この実施例では、局所解スコアの場合と同様に、原文ESよりも早いタイミングで発音する場合であったり、原文ESよりも遅いタイミングで発音する場合であったりしても、2値化リストの変化が類似している(一致を含む)場合には、平均値基準スコアを高くするようにしてある。このため、2つの2値化リストをそのまま比較する場合と、ユーザ2値化リストを、右方向および左方向に1サンプルずつずらして比較する場合(最大10サンプル)のそれぞれとについての21個の比較結果のうち、最も類似する場合についての平均値基準スコアを求めるようにしてある。
ただし、原文ESの長さに応じて原文2値化リストにおけるサンプルの総数は異なる。また、原文2値化リストのサンプルの総数と、ユーザ2値化リストのサンプルの総数とが異なる場合には、原文2値化リストのサンプルの総数とユーザ2値化リストのサンプルの総数のうち、サンプルの総数が少ない方に揃えられる。したがって、ユーザ2値化リストのサンプルの総数が原文2値化リストのサンプルの総数よりも少ない場合には、原文2値化リストのサンプルの総数から多い分だけサンプルが削除される。一方、ユーザ2値化リストのサンプルの総数が原文2値化リストのサンプルの総数よりも多い場合には、ユーザ2値化リストのサンプルの総数から多い分だけサンプルが削除される。サンプルを削除する方法は、局所解スコアの算出方法と同様であり、比較結果が最も類似するように、サンプルの組が検索される。
具体的には、各2値化リストの先頭の(時間的に早い)サンプルから順に、対応するサンプル同士の値が一致するか一致しないかを判断する。一致する場合には、正解と判定され、一致しない(不一致の)場合には、不正解と判定される。そして、比較した総数に対する正解数の割合(ここでは、百分率)が算出される。
たとえば、図24(A)および図24(B)では、ユーザ2値化リストをずらさない場合には、同じインデックス番号の高低の値が比較される。ただし、2値化リストの総数が揃えられた場合には、m=nである。また、ユーザ2値化リストを左に1サンプルずらす場合には、原文2値化リストのインデックス番号1の高低の値と、ユーザ2値化リストのインデックス番号2の高低の値とが比較される。つまり、かかる場合には、原文2値化リストのインデックス番号1〜m−1の高低の値と、ユーザ2値化リストのインデックス番号2〜nの高低の値とが、インデックス番号の小さい順に比較されるのである。一方、ユーザ2値化リストを右に1サンプルずらす場合には、原文2値化リストのインデックス番号2の高低の値と、ユーザ2値化リストのインデックス番号1の高低の値とが比較される。つまり、かかる場合には、原文2値化リストのインデックス番号2〜mの高低の値と、ユーザ2値化リストのインデックス番号1〜n−1の高低の値とが、インデックス番号の小さい順に比較されるのである。このようにして、ユーザ2値化リストは、左右の方向に1サンプルずつ最大10サンプルまでずらされる。また、ユーザ2値化リストを1サンプルずらすに従って、比較総数が1つずつ少なくなる。
そして、平均値基準スコアは、21個の比較結果のうち、比較総数に対する正解数の割合が最も高い場合の比較結果に基づいて算出される。平均値基準スコアの具体的な算出方法については、後で詳細に説明するが、正解数が多いほど、つまり割合が高いほど、エンベロープの波形の凹凸のタイミングが類似するため、平均値基準スコアが大きくなるようにしてある。ただし、平均値基準スコア(scoreB)は0〜100の間で決定される。
続いて、分散値スコア(scoreC)の算出方法について説明する。原文ESの音声の音量のエンベロープを取得し、ユーザの音声の音量のエンベロープを取得し、ユーザの音声の音量を原文ESの音声の音量に揃えるまでは、上述の局所解スコアの算出方法や平均値基準スコアの算出方法と同じである。
分散値スコアを算出する場合には、まず、原文ESの音声のエンベロープについての分散値σAおよびユーザの音声のエンベロープについての分散値σBがそれぞれ算出される。この分散値(σA,σB)の算出方法はすでに周知であるため、説明は省略することにする。後で詳細に説明するが、各エンベロープについての分散値(σA,σB)を算出すると、その差分の絶対値に基づいて、分散値スコアが算出される。差分の絶対値が小さいほど、エンベロープの凹凸の分散具合が類似するため、分散値スコアが大きくなるようにしてある。ただし、分散値スコア(scoreC)は、0〜100の間で決定される。
このように、分散値(σA,σB)を算出するのは、図25(A)に示すように、分散値が大きい場合と、図25(B)に示すように、分散値が小さい場合とでは、音声の音量の変化が全く異なるにも拘わらず、音量の平均値や局所解がたまたま一致することにより、ユーザの発音が原文ESの発音に類似すると判定されてしまうことがあるからである。たとえば、「あ」,「あ」,「あ」と短音で区切って発音した場合と、「あー」と長音で発音した場合とでは、全く異なる発音であるが、全体としての音の長さや音量が同じまたは略同じであれば、音量の平均値や音量が高くなる位置(アクセントの位置)が一致してしまう。このような違いを適切に評価するため、分散値を算出するようにしてある。
以上のように、局所解スコア、平均値基準スコアおよび分散値スコアが算出されると、それらの平均値を算出することにより、仮の評価スコア(score)が算出される。ただし、この実施例では、サンプルの総数に応じて、局所解スコア、平均値基準スコアおよび分散値スコアの重要度(重み)を可変的に設定するようにしてある。これは、原文ESの音声の長さに応じて、重要視される要素が異なるためである。たとえば、原文ESの音声が長い場合には、エンベロープが全体的に凹凸の数の多い波形となり、検出される局所解が多いと考えられるため、局所解スコアの重要度が高くされる。逆に、原文ESの音声が短い場合には、エンベロープは全体的に凹凸の少ない波形となり、検出される局所解の数が少ないと考えられる。このため、局所解スコアの重要度が低く、エンベロープの波形の凹凸のタイミングについての平均値基準スコアの重要度を高くしてある。これは、原文ESの音声が長い場合には、平均値基準スコアが低くなりがちだからでもある。ただし、分散値スコアについては、エンベロープの凹凸の分散だけを判定しているため、原文ESの長さに拘わらず重要度は一定である。
具体的には、サンプルの総数が150未満である場合には、つまり比較的短い原文ESである場合には、局所解スコア、平均値基準スコアおよび分散値スコアの重みは、1:4:1に設定される。また、サンプルの総数が200以上である場合には、つまり比較的長い原文ESである場合には、局所解スコア、平均値基準スコアおよび分散値スコアの重みは、3:2:1に設定される。さらに、サンプルの総数が150以上200未満の場合には、つまり原文ESの長さが中くらいの場合には、局所解スコア、平均値基準スコアおよび分散値スコアの重みは、2:3:1に設定される。
仮の評価スコアが算出されると、減点処理が施され、最終的な評価スコア(score)が決定される。この実施例では、次の順番に従って減点処理が実行される。まず、局所解スコアに基づく減点処理が実行される。これは、上述したように、原文ESが長い場合には、局所解スコアの重みを大きくしており、かかる場合に、局所解スコアの値があまりに低いと、評価スコアを高くするのは不適切だからである。次に、分散値スコアに基づいて減点処理が施される。これは、原文ESが長い場合に、あまりに分散値が異なる場合には、適当に発音していると思われるため、かかる場合に、評価スコアを高くするのは不適切だからである。また、原文ESが長くない場合には、分散値スコアが評価スコアに与える影響が大きいため、分散値スコアが低い場合であっても、減点処理を行わないようにしている。そして、平均値基準スコアに基づいて減点処理が施される。これは、平均値基準スコアが極端に悪い場合には、ユーザが発音を途中で止めていると思われるため、かかる場合に、評価スコアを高くするのは不適切だからである。この時点で、評価スコアが0未満または100以上(ただし、理論上、100以上にはならない)になってしまっている場合には、評価スコアが0〜100の間になるように丸め込まれる。
次に、音量平均スコア(scoreD)が算出され、この音量平均スコアに応じて、減点処理が実行される。これは、音量があまりに異なる場合には、適切な発音とは言えず、かかる場合に、評価スコアを高くするのは不適切だからである。ただし、音量平均スコアは、各エンベロープについて平均値を求め、求めた両平均値のうちの大きい値に対する小さい値の割合(この実施例では、百分率)で決定される。
具体的には、図5に示したCPU42が図26に示す評価処理のフロー図を実行する。図26に示すように、CPU42は、評価処理を開始すると、ステップS131で、原文ESの音声についてのエンベロープを取り、ステップS133で、ユーザの音声についてのエンベロープを取り、ステップS135で、各エンベロープの平均値を算出する。次のステップS137では、ユーザの音声の音量を原文ESの音声の音量に揃える。ここでは、CPU42は、ステップS135で算出した各エンベロープの平均値を用いて、原文ESの音声の音量に対するユーザの音声の音量の倍率を求めて、その倍率の逆数をユーザの音声についてのエンベロープの全体に掛ける。
なお、図12では省略したが、ステップS135で算出した各エンベロープの平均値のデータおよびステップS137で音量を揃えた各エンベロープの波形のデータ(波形データ)はメインメモリ48のデータエリア48bに記憶される。
次のステップS139では、後述する局所解スコア算出処理(図27および図28参照)を実行する。つまり、CPU42は、局所解スコア(scoreA)を算出する。続くステップS141では、後述する平均値基準スコア算出処理(図31および図32)を実行する。つまり、CPU42は、平均値基準スコア(scoreB)を算出する。続いて、ステップS143では、後述する分散値スコア算出処理(図34参照)を実行する。つまり、CPU42は、分散値スコア(scoreC)を算出する。
そして、ステップS145で、後述する最終スコア算出処理(図35−図37)を実行して、図15−図19に示した語学学習処理にリターンし、その後、ステップS85で、変数scoreの値を描画する。つまり、CPU42は、S145では、ステップS139,S141,S143で算出した3つの評価値(scoreA,scoreB,scoreC)を用いて仮の評価スコア(score)を算出し、減点処理を施すことにより、最終的な評価スコア(score)を算出する。
図27および図28は、図26に示したステップS139の局所解スコア算出処理のフロー図である。図27に示すように、局所解スコア算出処理を開始すると、ステップS161で、音量を揃えたエンベロープの平均値を基準値として設定する。ここでは、CPU42は、上述したように、ステップS135で算出したエンベロープの平均値を基準値として設定する。次のステップS163では、原文ESの音声のエンベロープについての局所解を求める。同様に、ステップS165で、ユーザの音声のエンベロープについての局所解を求める。局所解の求め方は、上述したとおりである。
続くステップS167では、変数jおよび変数scoreAを初期化する(j=0,scoreA=0)。続くステップS169では、後述する第1スコア算出処理(図29および図30参照)を実行する。詳細な説明は後述するが、第1スコア算出処理は、局所解スコア(scoreA)の候補となる第1スコア(scoreX)を算出するための処理である。次のステップS171では、変数scoreAが変数scoreX未満であるかどうかを判断する。ステップS171で“NO”であれば、つまり変数scoreAが変数scoreX以上であれば、そのままステップS175に進む。一方、ステップS171で“YES”であれば、つまり変数scoreAが変数scoreX未満であれば、ステップS173で、変数scoreAに変数scoreXの値を代入して、ステップS175に進む。
ステップS175では、変数jを1加算する(j=j+1)。次のステップS177では、変数jが10を超えているかどうかを判断する。ステップS177で“YES”であれば、つまり変数jが10を超えていれば、ユーザ局所解リストを右方向に10サンプル分ずらしたと判断して、図28に示すステップS181に進む。一方、ステップS177で“NO”であれば、つまり変数jが10以下であれば、ステップS179で、ユーザ局所解リストをjサンプル右にずらして、ステップS169に戻る。つまり、ステップS169−S179の処理が繰り返し実行されることにより、ユーザ局所解リストを右方向に1サンプルずつずらした場合の第1スコア(scoreX)がそれぞれ算出され、そのうちの最大値が変数scoreAに設定されるのである。ただし、ステップS169−S179の処理が初回である場合には、ユーザ局所解リストがずらされていない状態の第1スコア(scoreX)が算出される。
図28に示すように、ステップS181では、変数jに1を設定する(j=1)。次のステップS183では、ユーザ局所解リストをjサンプル分左にずらして、ステップS185で、後述する第1スコア算出処理を実行する。次のステップS187では、変数scoreAが変数scoreX未満であるかどうかを判断する。
ステップS187で“NO”であれば、つまり変数scoreAが変数scoreX以上であれば、そのままステップS191に進む。一方、ステップS187で“YES”であれば、つまり変数scoreAが変数scoreX未満であれば、ステップS189で、変数scoreAに変数scoreXを設定して、ステップS191に進む。
ステップS191では、変数jに1加算する(j=j+1)。そして、ステップS193では、変数jが10を超えているかどうかを判断する。ステップS193で“YES”であれば、つまり変数jが10を超えている場合には、ユーザ局所解リストを左方向に10サンプル分ずらしたと判断して、図26に示した評価処理にリターンする。一方、ステップS193で“NO”であれば、つまり変数jが10以下であれば、そのままステップS183に戻る。つまり、ステップS183−S193の処理が繰り返し実行されることにより、ユーザ局所解リストを左方向に1サンプルずつずらした場合の第1スコア(scoreX)がそれぞれ算出され、そのうちの最大値が変数scoreAに設定されるのである。
ただし、変数scoreAは、それよりも大きい変数scoreXで更新されるため、ユーザ局所解リストをずらしていない場合と、そのユーザ局所解リストを右方向および左方向に1サンプルずつずらした場合(最大10サンプル)とのそれぞれについて第1スコア算出処理が実行された結果、すなわち21個についての第1スコア(scoreX)のうちの最大値が変数scoreAに設定されるのである。
図29および図30は、図27のステップS169および図28のステップS185に示した第1スコア処理のフロー図である。図29に示すように、CPU42は、第1スコア処理を開始すると、ステップS211で、2つの局所解リストの差分の合計値が最小となる場合の組み合わせを検索する。ただし、原文局所解リストにおける局所解の総数と、ユーザ局所解リストにおける局所解の総数とが同じである場合には、このステップS211では、何ら処理は実行されずに、そのままステップS213に進む。
次のステップS213では、変数iおよび変数scoreXを初期化する(i=1,scoreX=0)とともに、変数accentNumに局所解の総数を設定する。ただし、ここで設定される局所解の総数は、原文局所解リストにおける局所解の総数またはユーザ局所解リストにおける局所解の総数のうちの少ない方である。続いて、ステップS215では、変数valueにサンプル数の差分list[i]を設定する。つまり、初回では、原文局所解リストの1番目の局所解のサンプル数と、ユーザ局所解リストの1番目の局所解のサンプル数との差分list[1]が算出され、これが変数valueに設定される。ただし、2つの局所解リストは、ステップS211で検索された、差分の合計値が最小となる場合の組み合わせである。
次のステップS217では、変数valueが3未満であるかどうかを判断する。ステップS217で“YES”であれば、つまり変数valueが3未満であれば、ステップS219で、変数scoreXに、scoreX+124−value×10を設定して、図30に示すステップS235に進む。一方、ステップS217で“NO”であれば、つまり変数valueが3以上であれば、ステップS221で、変数valueが6未満であるかどうかを判断する。
ステップS221で“YES”であれば、つまり変数valueが6未満であれば、ステップS223で、変数scoreXに、scoreX+104−(value−3)×10を設定して、ステップS235に進む。一方、ステップS221で“NO”であれば、つまり変数valueが6以上であれば、ステップS225で、変数valueが10未満であるかどうかを判断する。
ステップS225で“YES”であれば、つまり変数valueが10未満であれば、ステップS227で、変数scoreXに、scoreX+74−(value−6)×5を設定して、ステップS235に進む。一方、ステップS225で“NO”であれば、つまり変数valueが10以上であれば、ステップS229で、変数valueが15未満であるかどうかを判断する。
ステップS229で“YES”であれば、つまり変数valueが15未満であれば、ステップS231で、変数scoreXに、scoreX+54−(value−10)×2を設定して、ステップS235に進む。一方、ステップS229で“NO”であれば、つまり変数valueが15以上であれば、ステップS233で、変数scoreXに、scoreX+64−value−15を設定して、ステップS235に進む。
図30に示すように、ステップS235では、変数iに1加算する(i=i+1)。そして、ステップS237では、変数iが局所解の総数accentNumを超えたかどうかを判断する。ここでは、CPU42は、ステップS211で検索した局所解リストに含まれるすべての局所解について、ステップS215−S233の処理を実行したかどうかを判断するのである。
ステップS237で“NO”であれば、つまり変数iが局所解の総数accentNum以下であれば、そのまま図29に示したステップS215に戻る。一方、ステップS237で“YES”であれば、つまり変数iが局所解の総数accentNumを超えると、ステップS239で、変数scoreXに、scoreX/accentNumを設定して、図27および図28に示した局所解スコア算出処理にリターンする。つまり、ステップS239では、局所解リストの各差分について求められた第1スコア(scoreX)の平均値を算出しているのである。
図31および図32は、図26に示したステップS141の平均値基準スコア算出処理のフロー図である。図31に示すように、CPU42は、平均値基準スコア算出処理を開始すると、ステップS251で、エンベロープの平均値×0.6を基準値として設定する。ここでは、CPU42は、上述したように、ステップS135で算出したエンベロープの平均値を0.6倍した値を、基準値として設定する。次のステップS253では、原文ESの音声のエンベロープを基準値に基づいて2値化する。つまり、図24(A)に示したような原文2値化リストが作成される。同様に、ステップS255では、ユーザの音声のエンベロープを基準値に基づいて2値化する。つまり、図24(B)に示したようなユーザ2値化リストが作成される。次のステップS257では、変数mおよび変数scoreBを初期化する(m=0,scoreB=0)。
続くステップS259では、後述する第2スコア算出処理(図33参照)を実行する。詳細な説明は後述するが、第2スコア算出処理は、平均値基準スコア(scoreB)の候補となる第2スコア(scoreY)を算出するための処理である。次のステップS261では、変数scoreBが変数scoreY未満であるかどうかを判断する。ステップS261で“NO”であれば、つまり変数scoreBが変数scoreY以上であれば、そのままステップS265に進む。一方、ステップS261で“YES”であればつまり変数scoreBが変数scoreY未満であれば、ステップS263で、変数scoreBに変数scoreYを設定して、ステップS265に進む。
ステップS265では、変数mに1加算する(m=m+1)。そして、ステップS267では、変数mが10を超えているかどうかを判断する。ステップS267で“YES”であれば、つまり変数mが10を超えている場合には、ユーザ2値化リストを右方向に10サンプル分ずらしたと判断して、図32に示すステップS271に進む。一方、ステップS267で“NO”であれば、つまり変数mが10以下であれば、ステップS269で、ユーザの2値化リストをmサンプル右にずらして、ステップS259に戻る。つまり、ステップS259−S269の処理が繰り返し実行されることにより、ユーザ2値化リストを右方向に1サンプルずつずらした場合の第2スコア(scoreY)がそれぞれ算出され、そのうちの最大値が変数scoreBに設定されるのである。ただし、ステップS259−S269の処理が初回である場合には、ユーザ2値化リストがずらされていない状態の第2スコア(scoreY)が算出される。
図32に示すように、ステップS271では、変数mに1を設定する(m=1)。次のステップS273では、ユーザ2値化リストをmサンプル左にずらし、ステップS275で、後述する第2スコア算出処理を実行する。そして、ステップS277で、変数scoreBが変数scoreY未満であるかどうかを判断する。ステップS277で“NO”であれば、つまり変数scoreBが変数scoreY以上であれば、そのままステップS281に進む。一方、ステップS277で“YES”であれば、つまり変数scoreBが変数scoreY未満であれば、ステップS279で、変数scoreBに変数scoreYを設定して、ステップS281に進む。
ステップS281では、変数mに1加算する(m=m+1)。そして、ステップS283で、変数mが10を超えているかどうかを判断する。ステップS283で“NO”であれば、つまり変数mが10以下であれば、そのままステップS273に戻る。一方、ステップS283で“YES”であれば、つまり変数mが10を超えている場合には、ユーザ2値化リストを左方向に10サンプル分ずらしたと判断して、ステップS285で、変数scoreBが100を超えているかどうかを判断する。
ステップS285で“NO”であれば、つまり変数scoreBが100以下であれば、そのまま図26に示した評価処理にリターンする。一方、ステップS285で“YES”であれば、つまり変数scoreBが100を超えている場合には、ステップS287で、変数scoreBに100を設定して、評価処理にリターンする。つまり、ステップS285およびS287の処理によって、変数scoreBが100以下の値になるように補正しているのである。
また、ステップS273−S283の処理が繰り返し実行されることにより、ユーザ2値化リストを左方向に1サンプルずつずらした場合の第2スコア(scoreY)がそれぞれ算出され、そのうちの最大値が変数scoreBに設定されるのである。
ただし、変数scoreBは、それよりも大きい変数scoreYで更新されるため、ユーザ2値化リストをずらしていない場合と、そのユーザ2値化リストを右方向および左方向に1サンプルずつずらした場合(最大10サンプル)とのそれぞれについて第2スコア算出処理が実行された結果、すなわち21個についての第2スコア(scoreY)のうちの最大値が変数scoreBに設定されるのである。
図33は、図31に示したステップS259および図32に示したステップS275の第2スコア算出処理のフロー図である。図33に示すように、CPU42は、第2スコア算出処理を開始すると、ステップS301で、変数scoreYに初期値を設定する(scoreY=0)。次のステップS303では、今回比較するサンプルの総数(比較サンプル総数)を、変数maxNumに設定する。続くステップS305では、正解数を変数rightNumに設定する。そして、ステップS307で、変数scoreYに、rightNum/maxNum×100を設定する。つまり、変数scoreYが一旦算出される。
なお、上述したように、比較サンプル総数は、ユーザ2値化リストをずらさない場合には、ユーザ2値化リストのサンプルの総数と原文2値化リストのサンプルの総数のうち少ない方のサンプルの総数であり、ユーザ2値化リストを1ずらす毎に、1つずつ少なくされる。また、正解数は、上述したように、原文2値化リストおよびユーザ2値化リストにおいて、比較するインデックス番号が示す高低の値が一致する数である。
次のステップS309では、変数scoreYが80を超えているかどうかを判断する。ステップS309で“YES”であれば、つまり変数scoreYが80を超えている場合には、ステップS311で、変数scoreYに、85+(scoreY−80)×6を設定して、図31および図32に示した平均値基準スコア算出処理にリターンする。一方、ステップS309で“NO”であれば、つまり変数scoreYが80以下である場合には、ステップS313で、変数scoreYが60を超えているかどうかを判断する。
ステップS313で“YES”であれば、つまり変数scoreYが60を超えている場合には、ステップS315で、変数scoreYに、85+(scoreY−80)×2を設定して、平均値基準スコア算出処理にリターンする。一方、ステップS313で“NO”であれば、つまり変数scoreYが60以下である場合には、ステップS317で、変数scoreYに、45+(scoreY−60)×4を設定して、平均値基準スコア算出処理にリターンする。
図34は、図26に示したステップS143の分散値スコア算出処理のフロー図である。図34に示すように、CPU42は、分散値スコア算出処理を開始すると、ステップS331で、原文ESの音声のエンベロープの分散値σAを算出し、ステップS333で、ユーザの音声のエンベロープの分散値σBを算出する。ただし、ステップS333では、上述したように、ステップS137で、音量を揃えたユーザの音声のエンベロープの分散値σBが算出される。
次のステップS335では、変数scoreCに、分散値σAと分散値σBとの差の絶対値を設定する(scoreC=|σA−σB|)。そして、ステップS337で、変数scoreCに、(4000−scoreC)/50+40を設定する。つまり、分散値スコア(scoreC)が算出される。そして、これ以降の処理によって、分散値スコア(scoreC)が0未満または100を超えている場合に、0または100に補正される。
具体的には、次のステップS339で、変数scoreCが100を超えているかどうかを判断する。ステップS339で“YES”であれば、つまり変数scoreCが100を超えている場合には、ステップS341で、変数scoreCに100を設定して、図26に示した評価処理にリターンする。一方、ステップS339で“NO”であれば、つまり変数scoreCが100以下である場合には、ステップS343で、変数scoreCが0未満であるかどうかを判断する。
ステップS343で“YES”であれば、つまり変数scoreCが0未満であれば、ステップS345で、変数scoreCに0を設定して、評価処理にリターンする。一方、ステップS343で“NO”であれば、つまり変数scoreCが0以上であれば、そのまま評価処理にリターンする。
図35−図37は、図26に示したステップS145の最終スコア算出処理のフロー図である。図35に示すように、CPU42は、最終スコア算出処理を開始すると、ステップS361で、原文ESについての総サンプル数が150未満であるかどうかを判断する。ステップS361で“YES”であれば、つまり原文ESの総サンプル数が150未満であれば、ステップS363で、変数scoreに、(scoreA+4×scoreB+scoreC)/6を設定して、ステップS371に進む。つまり、ステップS363では、{scoreA:scoreB:scoreC}={1:4:1}の重み付けが行われて、それらの平均値が算出されることにより、仮の評価スコア(score)が求められる。
一方、ステップS361で“NO”であれば、つまり原文ESの総サンプル数が150以上であれば、ステップS365で、原文ESの総サンプル数が150以上200未満であるかどうかを判断する。ステップS365で“YES”であれば、つまり原文ESの総サンプル数が150以上200未満であれば、ステップS367で、変数scoreに、(2×scoreA+3×scoreB+scoreC)/6を設定して、ステップS371に進む。つまり、ステップS367では、{scoreA:scoreB:scoreC}={2:3:1}の重み付けが行われて、それらの平均値が算出されることにより、仮の評価スコア(score)が求められる。
一方、ステップS365で“NO”であれば、つまり原文ESの総サンプル数が200以上であれば、ステップS369で、変数scoreに、(3×scoreA+2×scoreB+scoreC)/6を設定して、ステップS371に進む。つまり、ステップS369では、{scoreA:scoreB:scoreC}={3:2:1}の重み付けが行われて、それらの平均値が算出されることにより、仮の評価スコア(score)が求められる。
なお、ステップS371以降では、ステップS363,S367,S369で算出された仮の評価スコア(score)に、上述した減点処理が施される。
具体的には、ステップS371では、変数scoreA(局所解スコア)が50未満であり、かつ原文ESの総サンプル数が250以上であるかどうかを判断する。ステップS371で“NO”であれば、つまり変数scoreAが50以上であったり、原文ESの総サンプル数が250未満であったり、またはその両方である場合には、そのまま図36に示すステップS375に進む。一方、ステップS371で“YES”であれば、つまり変数scoreAが50未満であり、かつ原文の総サンプル数が250以上である場合には、ステップS373で、円数scoreに、score−(50−scoreA)/3を設定して、ステップS375に進む。
図36に示すステップS375では、変数scoreC(分散値スコア)が50未満であり、かつ原文ESの総サンプル数が250以上であるかどうかを判断する。ステップS375で“NO”であれば、つまり変数scoreCが50以上であったり、原文ESの総サンプル数が250未満であったり、またはその両方であったりする場合には、そのままステップS379に進む。一方、ステップS375で“YES”であれば、つまり変数scoreCが50未満であり、かつ原文ESの総サンプル数が250以上である場合には、ステップS377で、変数scoreに、score−(50−scoreC)を設定して、ステップS379に進む。
ステップS379では、変数scoreBが25未満であるかどうかを判断する。ステップS379で“NO”であれば、つまり変数scoreBが25以上であれば、そのままステップS383に進む。一方、ステップS379で“YES”であれば、つまり変数scoreBが25未満であれば、ステップS381で、変数scoreを半分に設定して(score=score/2)、ステップS383に進む。
なお、ステップS383−ステップS389の処理では、変数scoreが0未満または100を超えている場合に、0または100に補正するための処理である。
具体的には、ステップS383で、変数scoreが100を超えているかどうかを判断する。ステップS383で“YES”であれば、つまり変数scoreが100を超えていれば、ステップS385で、変数scoreに100を設定して、図37に示すステップS391に進む。一方、ステップS383で“NO”であれば、つまり変数scoreが100以下であれば、ステップS387で、変数scoreが0未満であるかどうかを判断する。
ステップS387で“YES”であれば、つまり変数scoreが0未満であれば、ステップS389で、変数scoreに0を設定して、ステップS391に進む。一方、ステップS387で“NO”であれば、つまり変数scoreが0以上であれば、そのままステップS391に進む。
図37に示すように、ステップS391では、エンベロープの平均値に基づいて音量平均スコア(変数scoreD)を算出する。次のステップS393では、変数scoreDが20未満であるかどうかを判断する。ステップS393で“YES”であれば、つまり変数scoreDが20未満であれば、ステップS395で、変数scoreを6分の1に設定して(score=score/6)、図25に示した評価処理にリターンする。一方、ステップS393で“NO”であれば、つまり変数scoreDが20以上であれば、ステップS397で、変数scoreDが20以上50未満であるかどうかを判断する。
ステップS397で“YES”であれば、つまり変数scoreDが20以上50未満であれば、ステップS399で、変数scoreを半分に設定して(score=score/2)、評価処理にリターンする。一方、ステップS397で“NO”であれば、つまり変数scoreDが50以上であれば、そのまま評価処理にリターンする。
この実施例によれば、局所解スコア、平均値基準スコアおよび分散値スコアに基づいて、ユーザの発音の評価を行うので、最適なリズムで発音したかどうかを正確に評価することができる。
なお、上述の実施例では、より正確な評価を行うために、局所解スコア、平均値基準スコアおよび分散値スコアに基づいて、ユーザの発音の評価を行うようにしたが、局所解スコアおよび平均値基準スコアに基づいて、または局所解スコアおよび分散値スコアに基づいて、ユーザの発音の評価を行うようにしてもよい。これは、平均値基準スコアおよび分散値スコアが、音声のエンベロープの波形の凹凸を評価する点で共通するためであり、いずれか一方を省略した場合であっても、発音のリズムを評価することは可能だからである。
また、上述の実施例では、ユーザの音声の音量を、原文の音声の音量に揃えて、音量(エンベロープ)の平均値を正規化した後に、局所解を算出したり、2値化したりしたが、ユーザの音声の音量を、原文の音声の音量に揃えずに、局所解を算出したり、2値化したりしてもよい。かかる場合には、各エンベロープの平均値を算出し、原文の音声の音量についてのエンベロープの平均値(説明の都合上、「第1平均値」という)に対するユーザの音声の音量についてのエンベロープの平均値(説明の都合上、「第2平均値」という)の倍率を算出し、その倍率の逆数を第2平均値に掛けて基準値を設定することにより、ユーザの音声についての局所解を算出したり、2値化したりすればよい。
さらに、上述の実施例では、評価スコアを0〜100の値にするために、局所解スコア、評価値基準スコアおよび分散値スコアを0〜100の値で決定するようにしたがこれに限定される必要はない。また、各スコアの値の決め方は一例であり、局所解リストの差分の合計値が小さい場合、2値化リストの正解率が高い場合、分散値が類似する場合に、スコア(評価)が高くなるようにすればよい。
さらにまた、この実施例では、原文およびユーザの各音声についてのエンベロープが示す音量が基準値(基準値)以上となるときのタイミングを比較することにより、局所解スコアを求めるようにしたが、これに限定される必要はない。原文およびユーザの各音声についてのエンベロープが示す音量のピークのタイミングを比較することにより、局所解スコアに相当するスコアを算出し、その算出結果と、平均値基準スコアと、分散値スコアとを用いて、ユーザの発音のリズムを評価してもよい。
また、この実施例では、メモリ容量を節約するために、ユーザの音声のみならず、原文の音声についてもエンベロープを取得し、そのエンベロープに基づいて、局所解リスト、2値化リストおよび分散値を求めるようにした。ただし、メモリ容量に余裕がある場合には、原文の音声については、局所解リスト、2値化リストおよび分散値は予め用意(算出)してメモリに記憶しておいてもよい。
さらに、上述の実施例では、ゲーム装置10について説明したが、この発明は、原文内容情報781a,781dおよびアクセント位置情報781cを記憶する記憶媒体と、原文内容情報781a,781dに基づいて原文ESを報知(原文ESの文字を表示および/または原文ESの音声を再生)しながらアクセント位置情報781cに基づいてアクセント画像を画面に表示するコンピュータとを備える、学習支援装置(PCや携帯端末など)に適用できる。
さらにまた、上述の実施例では、予め用意された原文の音声に対応するユーザの音声についての発音を評価するようにしたが、これに限定される必要はない。たとえば、原文に相当する音声を教師のような或る人物がマイクを通してゲーム装置に入力するようにしてもよい。または、ゲーム装置が通信することにより、他の電子機器やインターネットのようなネットワークから原文に相当する音声を取得するようにしてもよい。
また、上述の実施例には、情報処理装置のコンピュータを、ユーザによって発音される音声を入力する音声入力手段、前記音声入力手段によって入力された音声の音量が第1所定値よりも大きくなった第1タイミングと、予め定められた第2タイミングとに基づいて、第1評価候補値を算出する第1評価候補値算出手段、所定間隔で時間をずらした前記第1タイミングの各々と、前記第2タイミングとに基づいて、それぞれについての第2評価候補値を算出する第2評価候補値算出手段、前記第1評価候補値算出手段によって算出された第1評価候補値および前記第2評価候補値算出手段によって算出された第2評価候補値のうち最高の評価結果を示すものを評価値として選択する評価値選択手段、および前記評価値選択手段によって選択された評価値に基づいて、模範音声に対する前記ユーザの発音の類似度を評価する発音評価手段として機能させる、発音評価プログラムが説明される。同様に、上述の実施例には、ユーザによって発音される音声を入力する音声入力手段、前記音声入力手段によって入力された音声の音量が第1所定値よりも大きくなった第1タイミングと、予め定められた第2タイミングとに基づいて、第1評価候補値を算出する第1評価候補値算出手段、所定間隔で時間をずらした前記第1タイミングの各々と、前記第2タイミングとに基づいて、それぞれについての第2評価候補値を算出する第2評価候補値算出手段、前記第1評価候補値算出手段によって算出された第1評価候補値および前記第2評価候補値算出手段によって算出された第2評価候補値のうち最高の評価結果を示すものを評価値として選択する評価値選択手段、および前記評価値選択手段によって選択された評価値に基づいて、模範音声に対する前記ユーザの発音の類似度を評価する発音評価手段を備える発音評価装置が説明されている。
この発音評価プログラムまたは発音評価装置によれば、第1タイミングの時間をずらした場合について評価の候補値を算出して、その中で最高の評価結果が得られる場合の候補値が評価値として採用されてユーザの発音が評価されるため、ユーザの音声のタイミングが全体として、模範音声よりも早い場合や遅い場合であっても、正しいリズムで発音されているときには、高評価を得ることができる。すなわち、正しいリズムで発音されたかどうかを正確に評価することができる。この点、特許文献1の発音採点装置においては、ユーザの音声のタイミングが全体として、模範音声よりも早い場合や遅い場合には、正しいリズムで発音されているときであっても、高評価を得ることができなかった。すなわち、特許文献1の発音採点装置においては、正しいリズムで発音されたかどうかを正確に評価するという点で改善の余地があった。