息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置
【構成】 ゲーム装置10は操作スイッチ20およびマイク34を含み、プレイヤは、操作スイッチの入力または音声の入力により、プレイヤオブジェクトを直感的に操作する。マイク34を通して入力された音声の音声波形に含まれるゼロクロスの個数が検出されるとともに、各ゼロクロスの間隔時間が検出される。間隔時間の分布すなわち周波数分布が、予め記憶してある息の音声についての間隔時間の分布(周波数分布)と一致するかどうかを検出する。一致する場合には、息の音声として認識され、息(風)に基づくゲーム処理が実行される。たとえば、息や風を演出したゲーム画面がLCD12に表示される。
【効果】 簡易な処理で正確に息の音声を認識できる。
【効果】 簡易な処理で正確に息の音声を認識できる。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関し、特にたとえば、外部から入力される音声が息によるものであるか否かを判別する、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来の息吹きかけ判別装置の一例が特許文献1に開示される。この特許文献1によれば、息の音声を構成する音声素片を予めメモリなどに格納しておき、マイクロフォンからの入力音声の音声素片とメモリに格納されている音声素片とを照合することにより、息の吹きかけ・吸い込みの音声であるか否かが判断される。
【特許文献1】特開平11−143484号
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、この背景技術では、息の音声を構成する音声素片を予めメモリなどに記憶しておく必要があるため、メモリ容量が増大してしまうという問題がある。一般的に、息の音声は、それを発するユーザの体格や息を吹きかける強さ等によってその波形パターンが変化するものである。つまり、背景技術のような手法で、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。一方、メモリ容量を抑えるために、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0004】
また、息の吹きかけを認識する他の方法として、高速フーリエ変換処理(FFT)を用いた方法も考えられる。この手法を用いれば、周波数帯域分布(スペクトラム)をかなり正確に測定できるので、息の吹きかけのスペクトラムを予めメモリ等に記憶しておき、入力された音声のスペクトラムと比較することによって息の吹きかけか否かを認識することができる。しかし、この方法では、複雑な計算処理が必要であるため、計算処理の負担が増大してしまう。
【0005】
それゆえに、この発明の主たる目的は、新規な、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【0006】
この発明の他の目的は、息の吹きかけを精度よく認識でき、しかも処理負担を軽減できる、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムである。この息吹きかけ判別プログラムは、判別装置のプロセサに、入力音声検出ステップ、時間計測ステップ、および音声判断ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。そして、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる。
【0008】
請求項1の発明では、息吹きかけ判別プログラム(480e:実施例で想到する参照符号。以下、同じ。)は、息吹きかけ判別装置(10)のプロセサによって実行される。この息吹きかけ判別装置は、少なくともマイク(34)を備え、外部から入力される音声が息によるものであるか否かを判別する。具体的には、息吹きかけ判別プログラムは、入力音声検出ステップ(S31,S61)、時間計測ステップ(S37,S67)および音声判断ステップ(S39,S41,S43,S71)を、判別装置のプロセサ(42)に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。
【0009】
請求項1の発明によれば、音声波形に共通する特徴である各ゼロクロス間の時間に基づいて息による音声か否かを判別するので、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【0010】
請求項2の発明は請求項1に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【0011】
請求項2の発明では、音声判断ステップは、周波数分布検出ステップ(S39)および周波数分布判断ステップ(S41)を含む。周波数分布検出ステップは、時間計測ステップによって検出された各時間に基づいて波形データの周波数分布を検出する。周波数分布判断ステップは、周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する。
【0012】
請求項2の発明によれば、各ゼロクロス間の時間に基づいて波形データすなわち入力された音声の周波数分布を検出し、この周波数分布が予め設定した条件を満たすか否かを判断するだけなので、比較的少ない処理で正確に息による音声か否かを認識することができる。
【0013】
請求項3の発明は請求項2に従属し、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【0014】
請求項3の発明では、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含む。周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内(設定値の場合もある。)であるかどうかを判断する。つまり、予め設定した条件を満たすかどうかを判断する。音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内であると判断されたとき、つまり、予め設定した条件を満たすとき、入力された音声が息によるものであると判断する。
【0015】
請求項3の発明によれば、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるときには、息の音声であると判断するので、息の音声を精度よく認識することができる。
【0016】
請求項4の発明は請求項1に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、入力された音声を息によるものと判断する。
【0017】
請求項4の発明では、比率検出ステップ(S69)は、各時間の時間長の最大値と最小値との比率(最大値/最小値)を検出する。音声判断ステップは、検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第1所定値および第2所定値は経験的に得られた値である。
【0018】
請求項4の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【0019】
請求項5の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、入力音声検出手段、時間計測手段、および音声判断手段を備える、息吹きかけ判別装置である。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する。
【0020】
請求項5の発明においても、請求項1の発明と同様に、少ない処理負担で息の音声を正確に認識することができる。
【0021】
請求項6の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、入力音声検出ステップ、時間計測ステップ、音声判断ステップ、およびゲーム処理ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【0022】
請求項6の発明では、ゲームプログラムは、ゲーム装置(10)のプロセサによって実行される。このゲーム装置は、外部から入力される音声に基づいてゲーム処理を行う。具体的には、ゲームプログラムは、入力音声検出ステップ(S31,S61)、時間計測ステップ(S37,S67)、音声判断ステップ(S39,S41,S43,S71)およびゲーム処理ステップ(S11)を、判別装置のプロセサ(42)に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。たとえば、プレイヤオブジェクトに息を吹く動作をさせたり、プレイヤオブジェクトの動作によって風を発生させたりする。
【0023】
請求項6の発明によれば、請求項1の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【0024】
請求項7の発明は請求項6に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【0025】
請求項7の発明においても、請求項2の発明と同様に、比較的少ない処理で正確に息による音声か否かを認識することができる。
【0026】
請求項8の発明は請求項7に従属し、周波数分布検出ステップは、時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【0027】
請求項8の発明においても、請求項3の発明と同様に、息の音声を精度よく認識することができる。
【0028】
請求項9の発明は請求項8に従属し、すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0029】
請求項9の発明では、継続状態判断ステップ(S49)は、すべてのグループについて予め設定された範囲内であると判断された状態すなわち息の音声であるとみなされる状態が所定時間以上継続して行われたか否かを判断する。音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0030】
請求項9の発明によれば、息の音声であるとみなされる状態が所定時間以上継続するとき、息の音声であると認識するので、息の音声であるか否かを精度良く認識することができる。
【0031】
請求項10の発明は請求項6に従属し、ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、音声判断ステップは、ゼロクロスの数が予め設定された範囲内にあると判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0032】
請求項10の発明では、ゼロクロス数カウントステップ(S33,S63)は、ゼロクロスの数をカウントする。音声判断ステップは、ゼロクロスの数があらかじめ設定された範囲内にあると判断されたとき(S35,S65で“YES”)、検出された音声を操作者の息によるものであると判断する。
【0033】
請求項10の発明によれば、ゼロクロスの数が予め設定された範囲内にあるとき、息の音声であると判断するので、息による音声を精度良く認識することができる。
【0034】
請求項11の発明は請求項10に従属し、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【0035】
請求項11の発明では、強さ設定ステップ(S17,S53,S81)は、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息ないし風の強さを設定する。ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【0036】
請求項11の発明によれば、ゼロクロスの数に応じて息の強さを変化させるので、息の強さを容易に検出することができる。
【0037】
請求項12の発明は請求項11に従属し、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う。
【0038】
請求項12の発明では、ゲーム処理ステップは、息の強さに応じて、ゲーム空間内で息または風の影響が及ぶ範囲(距離)を変化させるようにゲーム処理を行う。また、息または風が及ぼす影響を変化させるようにゲーム処理を行うこともできる。
【0039】
請求項12の発明によれば、ゲーム空間における息や風の影響を変化させることができるので、ゲームの面白みを増すことができる。
【0040】
請求項13の発明は請求項6に従属し、ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う。
【0041】
請求項13の発明では、ゲーム処理ステップは、ゲームに登場するキャラクタ(102)が息を吹きかけるように動作するようにゲーム処理を行う。たとえば、キャラクタの口元から吹き出すように息オブジェクト(104)を表示し、オブジェクト(106)が息または風の影響を受ける様子を表示することができる。
【0042】
請求項13の発明によれば、操作者は直感的にゲームを操作することができる。
【0043】
請求項14の発明は請求項6に従属し、ゼロクロスは波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である。
【0044】
請求項14の発明では、ゼロクロスは、波形データの振幅値がマイナスからプラス、またはプラスからマイナスへ変化する境界点である。つまり、検出すべきゼロクロスの数が減少される。
【0045】
請求項14の発明では、検出すべきゼロクロスの数を減少させるので、処理負担を軽減することができる。
【0046】
請求項15の発明は請求項6に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、入力された音声を操作者の息によるものと判断する。
【0047】
請求項15の発明では、比率検出ステップ(S69)は、各時間の時間長の最大値と最小値との比率(最大値/最小値)を検出する。音声判断ステップは、検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第1所定値および第2所定値は経験的に得られた値である。
【0048】
請求項15の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【0049】
請求項16の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、入力音声検出手段、時間計測手段、音声判断手段、およびゲーム処理手段を備える。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理手段は、音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【0050】
請求項16の発明においても、請求項6の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【発明の効果】
【0051】
この発明によれば、音声波形の各ゼロクロス間の時間に基づいて息の音声であるか否かを判別するので、少ない処理負担で息の吹きかけであるか否かを正確に認識することができる。
【0052】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0053】
<第1実施例>
図1を参照して、この発明の第1実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含み、LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。たとえば、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0054】
なお、この第1実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0055】
また、ゲーム装置10は、後述するように、息吹きかけ判別プログラム(図7参照)を記憶し、息吹きかけ装置としても機能する。
【0056】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0057】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0058】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
【0059】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、操作者(プレイヤ)によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0060】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0061】
動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rは、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0062】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作(タッチ入力)位置の座標(タッチ座標)を検出して、検出したタッチ座標に対応する座標データを出力する。
【0063】
たとえば、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出精度は、LCD14の表示画面の解像度よりも低くてもよく、高くてもよい。
【0064】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、パズルゲームでは、一方のLCD(たとえば、LCD12)にパズル全体(ゲームマップ)を表示し、他方のLCD(たとえば、LCD14)には、ゲームマップの一部(当該パズルゲームを操作するための画面)を表示することができる。たとえば、ゲームマップの一部を表示した画面では、文字や図形等の画像を描画したり、表示画像(アイコン)等を移動させたりすることができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0065】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したり、さらには、文字や図形(画像)を描画したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(ゲームマップ)をスクロール(徐々に移動表示)させたりすることもできる。
【0066】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(第1実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0067】
また、この第1実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要がない。
【0068】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0069】
さらにまた、ゲーム装置10はマイク34を含み、たとえば、マイク34は下側ハウジング16bのLCD14の左斜め下方に設けられる。したがって、たとえば、マイク34から音声(プレイヤないしユーザの音声)が入力されると、これに応じて、ゲーム装置10はゲーム処理を実行することができる。
【0070】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0071】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0072】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0073】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0074】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0075】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0076】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0077】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0078】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0079】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0080】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0081】
I/F回路54には、操作スイッチ20、タッチパネル22、スピーカ32およびマイク34が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号がI/F回路54でディジタルデータ(操作データ)に変換され、CPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬声音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54に与える。I/F回路54は、音データをアナログの音声信号に変換して、スピーカ32から出力する。さらにまた、マイク34から入力される音声(音声信号)は、I/F回路54でディジタルデータ(音声データ)に変換され、CPUコア42に入力される。
【0082】
図3はLCD12に表示されるゲーム画面100の一例を示す図解図である。このゲーム画面100には、プレイヤオブジェクト102、プレイヤオブジェクト102が吹き出した息のオブジェクト(息オブジェクト)104および風車オブジェクト106が表示される。このゲーム画面100では、プレイヤオブジェクト102が風車オブジェクト106に息(息オブジェクト104)を吹きかけ、風車オブジェクト106が回転される様子が示される。
【0083】
なお、上述したように、この第1実施例では、2つの画面(LCD12,LCD14)が設けられるため、ゲーム画面100はLCD14に表示するようにしてもよい。また、ゲーム画面100が表示されていない他方の画面には、たとえば、ゲームプレイに関連する内容、すなわち、ゲームマップ、プレイヤオブジェクトに関するパラメータ(生命力、レベルなど)およびゲームの進行状況(クリアした面の数、ゲーム世界における経過時間)などを表示することができる。
【0084】
上述したように、プレイヤは、操作スイッチ20を操作することにより、プレイヤオブジェクト102を3次元仮想空間(ゲーム空間)上で移動させたり、ジャンプ等の任意のアクションをさせたりすることができる。また、たとえば、プレイヤは、マイク34に向けて息を吹きかけると、その音声(息による音声)がマイク34を通して入力され、プレイヤオブジェクト102が息を吹きかけるように動作される。
【0085】
このように、息による音声でプレイヤオブジェクト102を操作することができるが、息による音声か否かを正確に判断できなければ、プレイヤオブジェクト102を正確に動作させることができない。また、すべての音声を息による音声と認識するようにした場合には、ゲームのリアリティを損なうことになる。つまり、リアリティのある操作感を得ることができない。
【0086】
たとえば、息を吹きかける音(息の音声)についての音声素片の波形パターンを予め記憶しておき、記憶しておいた音声素片と入力された音声の音声素片とを比較して、プレイヤが息を吹きかけたかどうかを判断する方法がある。また、高速フーリエ変換処理(FFT)により、入力された音声のスペクトラムを算出して、算出したスペクトラムと予め記憶しておいた息の音声についてのスペクトラムとを比較して、プレイヤが息を吹きかけたかどうかを判断する方法もある。
【0087】
しかし、一般的に、息の音声は、それを発するプレイヤの体格や息を吹きかける強さ等によってその波形パターンが変化するものであり、前者の場合には、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。つまり、メモリ容量が増大してしまう。これを回避するため、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0088】
また、後者の場合には、息の音声についてのスペクトラムをかなり正確に測定できるので、息の吹きかけか否かを正解に認識することができるが、複雑な計算処理が必要であるため、処理負担が大きくなってしまう。
【0089】
そこで、この第1実施例では、このような不都合を回避するため、入力される音声に対応する音声波形のゼロクロスに基づいて、息の吹きかけ音であるか否かを判別するようにしてある。
【0090】
たとえば、図4には、息がマイク34に当たるときに発生する波形すなわち息の音声波形の一例が示される。周知のとおり、ゼロクロスは、音声波形の振幅がプラスからマイナス、およびマイナスからプラスへ変化するときに、0レベルと交差する点(境界点)である。このゼロクロスの間隔時間t(msec)に基づいて息の音声であるか否かを判別するのであるが、この第1実施例では、着目するのは、音声波形の振幅がマイナスからプラスへ変化するときのゼロクロスである。したがって、ゼロクロスの間隔時間tは、図5に示すように、波形の振幅がマイナスからプラスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長である。つまり、音声波形に含まれる各波の周期(周波数)を算出するのである。
【0091】
ただし、検出するゼロクロスの間隔時間tは、波形の振幅がプラスからマイナスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長であってもよい。
【0092】
また、ここでは、簡単のため、間隔時間tの単位を「msec」としてあるが、厳密には、CPUコア42のサンプリングレートは、1/8000secであり、間隔時間tの単位も「1/8000sec」である。以下、この明細書において同じである。
【0093】
なお、この実施例では、波形の振幅がマイナスからプラス、またはプラスからマイナスへ変化するときのゼロクロスに着目するようにしてあるが、これは無駄な処理を削減するためである。
【0094】
上述したように、この第1実施例では、ゼロクロスの間隔時間tに基づいて、息の音声かどうかを判別するのであるが、その際、図6に示すような参照データ482c(RAM48のデータ記憶領域482に記憶される。)が参照される。この参照データ482cは、実験等により、経験的に得られたデータであり、入力された音声が参照データ482cに含まれるいずれかの条件を満たせば、息の音声とみなし、これが所定時間継続すれば(第1実施例では、連続する2フレーム)、息の音声であると判別(認識)される。また、入力された音声が息の音声として判別された場合には、ゼロクロスの数に基づいて、息(風)の強さが区別(決定)される。
【0095】
図6に示すように、参照データ482cは、テーブルデータで表され、エリアの番号に対応して、8フレーム分のゼロクロスの個数に基づく数値fの範囲が記述され、それに対応して、間隔時間tの分布が記述される。つまり、数値fに対応して、息の音声についての周波数分布が記述されているのである。ここで、「フレーム」は、画面(ゲーム画面)の更新単位時間であり、たとえば1/60秒に設定される。エリアの欄に記述された番号は、数値fの範囲を識別するための識別情報である。数値fの欄には、バッファすなわちデータ記憶領域482に記憶されている過去(直近の)8フレーム分のゼロクロス(マイナスからプラスへ変化するときのゼロクロス)の個数を8倍した数値の範囲を示してある。間隔時間tの分布は、4つのグループA,B,C,Dで示され、各グループは間隔時間tの範囲で区別される。具体的には、グループAでは間隔時間tの範囲は2〜25(2≦t≦25)であり、グループBでは間隔時間tの範囲は26〜50(26≦t≦50)であり、グループCでは間隔時間tの範囲は51〜75(51≦t≦75)であり、そして、グループDでは間隔時間tの範囲は76以上(t≧76)である。各グループには、数値fに対応して、該当する間隔時間tの個数の設定範囲または設定値が記述される。ただし、この設定範囲または設定値は、1フレーム分の音声波形に含まれるゼロクロスの間隔時間tの分布を調べるための数値範囲または数値(条件)である。
【0096】
たとえば、入力された音声波形についての8フレーム分のゼロクロスの個数の8倍の数値fが200〜299の範囲内である場合には、エリア2が選択される。次に、入力された音声波形のうち、現フレームの直前のフレームについてのゼロクロスの間隔時間tの分布がエリア2に対応するグループA、グループB、グループCおよびグループDの各条件(ここでは、2<xA<40,1<xB<19,0≦xC<9,0≦xD<6)を満たすかどうかを判断する。つまり、周波数分布が一致するか否かを判断する。具体的には、それぞれのグループに含まれる間隔時間tの個数をカウントし、各グループについてのカウント値(xA,xB,xC,xD)が予め設定された数値範囲内であるかどうかを判断する。ただし、数値範囲に代えて数値が設置されている場合には、当該数値を満たすかどうかを判断する。これらの条件を満たす状態が2フレーム以上継続すれば、入力された音声は息の音声であると判別される。このとき、数値fに基づいて、ゲームにおける息(風)の強さが決定される。たとえば、息(風)の強さは、1〜255(8ビットの2値データ:“00000001”〜“11111111”)で示され、数値fに基づいて算出される。具体的には、息(風)の強さSは数1に従って算出される。また、その息の影響が及ぶ距離(範囲)dは数2に従って算出される。
【0097】
[数1]
S=(f/7)−13
[数2]
d=A・S
ただし、Aは比例定数であり、ゲームの開発者ないしプログラマによって予め設定される。ただし、比例定数Aの値は、ゲームの進行状況、プレイヤキャラクタの種類、プレイヤキャラクタについてのパラメータ(レベル、ライフなど)などに従って変化するようにしてもよい。
【0098】
このように、息の強さSや影響の及ぶ距離dが算出され、これらの数値に応じてゲーム処理(画像更新など)が実行される。たとえば、上述したように、風車オブジェクト106を回転させる場合には、息の強さSにより、風車オブジェクト106の回転数を変化させることができる。また、この場合、距離dに応じてプレイヤオブジェクト102が発生する息または風が風車オブジェクト106に届くか否か、すなわち風車オブジェクト106を回転させるかどうかを決定することができる。また、図示は省略するが、複数のろうそくの火をプレイヤオブジェクト102の息で吹き消すような場合には、息の強さSにより、火が消えるろうそくの本数を変化させることができる。また、この場合、距離dに応じてプレイヤオブジェクト102が発生する息または風がろうそくのオブジェクトに届くか否か、すなわち火を消すことができるか否かを決定することもできる。
【0099】
図7は図2に示したRAM48のメモリマップを示す図解図である。この図7を参照して、RAM48は、プログラム記憶領域480およびデータ記憶領域482を含む。プログラム記憶領域480には、ゲームプログラムが記憶され、このゲームプログラムは、ゲームメイン処理プログラム480a、プレイヤオブジェクト制御プログラム480b、画像生成プログラム480c、画像表示プログラム480dおよび息吹きかけ判別プログラム480eなどによって構成される。
【0100】
ゲームメイン処理プログラム480aは、仮想ゲームのメイン処理を実行するためのプログラムである。具体的には、ゲームを進行させたり、ノンプレイヤオブジェクト(たとえば、息オブジェクト104、風車オブジェクト106)の動作(移動)、発生、消滅を制御したり、ゲーム音楽を再生したり、ゲームデータのバックアップを実行したりする。プレイヤオブジェクト制御プログラム480bは、プレイヤの操作に従って、プレイヤオブジェクト102に任意のアクションをさせるためのプログラムである。具体的には、上述したように、操作スイッチ20または音声(息吹きかけ音)による操作入力に従って、プレイヤキャラクタ102のアクションが制御される。
【0101】
画像生成プログラム480cは、後述するオブジェクトデータ482aを用いて、仮想ゲームの背景オブジェクト、プレイヤオブジェクト102およびノンプレイヤオブジェクト(息オブジェクト104、風車オブジェクト106など)のオブジェクト画像を生成するためのプログラムである。画像表示プログラム480dは、画像生成プログラム480cに従って生成されたオブジェクト画像をLCD12に表示するためのプログラムである。息吹きかけ判別プログラム480eは、音声入力が息吹きかけによるものであるか否かを判別するためのプログラムである。
【0102】
なお、図示は省略するが、プログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、仮想ゲームに必要な音(音楽)を再生するためのプログラムである。バックアッププログラムは、仮想ゲームの進行に従って発生する途中データまたは結果データをメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0103】
データ記憶領域482には、オブジェクトデータ482a、サウンドデータ482b、参照データ482cおよび入力音声データ482dなどのデータが記憶されるとともに、息吹きかけ音擬制フラグ482eおよび息吹きかけ音認識フラグ482fが設けられる。オブジェクトデータ482aは、オブジェクト画像の生成のために用いられるデータであり、ポリゴンデータやテクスチャデータのような画像データを含むとともに、当該オブジェクトの3次元位置(3次元座標)についてのデータ(位置データ)を含む。図示は省略するが、オブジェクデータ482aは、オブジェクト毎に記憶される。
【0104】
サウンドデータ482bは、ゲームに必要な音(音楽)を再生するために必要なデータである。参照データ482cは、図6に示したようなテーブルデータであり、後述する息吹きかけ判別処理(図9および図10参照)で用いられる。入力音声データ482dは、マイク34を介して入力された音声信号(音声データ)である。なお、この第1実施例では、データ記憶領域482には、少なくとも8フレーム分の音声データが記録(一時記憶)される。
【0105】
息吹きかけ音擬制フラグ482eは、息吹きかけ判別処理においてオン(成立)/オフ(不成立)されるフラグである。この息吹きかけ音擬制フラグ482eは、息吹きかけ音とみなされる場合にオンされ、息吹きかけ音とみなされない場合にはオフされる。たとえば、息吹きかけ音擬制フラグ482eは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。息吹きかけ音認識フラグ482fもまた、息吹きかけ判別処理においてオン/オフされるフラグである。この息吹きかけ音認識フラグ482fは、息吹きかけ音と判別(認識)された場合にはオンされ、息吹きかけ音と判別されない場合にはオフされる。たとえば、息吹きかけ音認識フラグ482fは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。
【0106】
なお、図示は省略するが、データ記憶領域482には、ゲームデータ(途中データ、結果データ)等の他のデータやイベントフラグ等の他のフラグも記憶される。
【0107】
図8は、図2に示すCPUコア42のゲーム処理を示すフロー図である。この図8を参照して、CPUコア42はゲーム処理を開始すると、ステップS1で、初期化処理を実行する。ここでは、プレイヤオブジェクト102や風車オブジェクト106のようなノンプレイヤオブジェクトの配置位置(3次元座標)を初期位置に設定したり、バッファ等をクリアしたりする。ただし、ゲームを前回の続きから開始する場合には、セーブしておいたゲームデータをメモリカード28のRAM28bから読み出して、RAM48にロードする。続くステップS3では、ゲームメイン処理を実行する。ここでは、プレイヤオブジェクト102以外のオブジェクト(ノンプレイヤオブジェクト、背景オブジェクト)についての画像処理(アニメーション処理)、音再生処理やバックアップ処理などが実行される。
【0108】
続いて、ステップS5で、操作スイッチ20がオン(操作された)かどうかを判断する。ステップS5で“YES”であれば、つまり操作スイッチ20が操作されれば、ステップS7で、操作された操作スイッチ20に応じた処理を実行して、ステップS13に進む。つまり、ステップS7では、操作された操作スイッチ20に応じて、プレイヤオブジェクト102をゲーム空間上で移動させるなどの任意のアクションを実行させ、したがって、そのアニメーションがゲーム画面100に表示される。一方、ステップS5で“NO”であれば、つまり操作スイッチ20がオフであれば(操作されていなければ)、ステップS9で、変数Tに0が代入(設定)されている(T=0)かどうかを判断する。ここで、変数Tは、プレイヤオブジェクト102に息を吹きかける動作をさせるか否かを判断するための変数であり、その変数の数値(1〜255)によって息(風)の強さが変化される。ただし、変数Tに0が代入されている場合には、プレイヤオブジェクト102に息を吹きかける動作をさせない。
【0109】
ステップS9で“YES”であれば、つまり変数Tに0が代入されていれば、そのままステップS13に進む。一方、ステップS9で“NO”であれば、つまり変数Tに0が代入されていなければ、ステップS11で、プレイヤオブジェクト102が息を吹く動作のアニメーションを表示するとともに、息オブジェクト104を発生させる(表示する)。図示は省略するが、このとき、息の強さSや息の影響の及ぶ距離dに応じて、異なる画像変化が与えられる。続くステップS13では、後で詳細に説明する、息吹きかけ判別処理(図9および図10参照)を実行して、ステップS15で、息吹きかけを認識したかどうかを判断する。具体的には、息吹きかけ音認識フラグ482fがオンであるかどうかを判断する。ステップS15で“YES”であれば、つまり息吹きかけ音認識フラグ482fがオンであれば、息吹きかけを認識したと判断し、ステップS17で、変数Tに息(風)の強さSの値を代入して、ステップS21に進む。しかし、ステップS15で“NO”であれば、つまり息吹きかけ音認識フラグ482fがオフであれば、息吹きかけを認識していないと判断し、ステップS19で、変数Tに0を代入して、ステップS21に進む。
【0110】
ステップS21では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかどうかを判断する。ステップS21で“NO”であれば、つまりゲーム終了でなければ、そのままステップS3に戻る。しかし、ステップS21で“YES”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【0111】
なお、このメイン処理ルーチンは、単位時間(例えば、1フレーム)毎に繰り返し実行されるものである。したがって、単位時間毎に、ステップS13の息吹きかけ判別処理(音声検出処理)が実行される。
【0112】
図9および図10は、図8に示したステップS13の息吹きかけ判別処理を示すフロー図である。図9に示すように、CPUコア42は息吹きかけ判別処理を開始すると、ステップS31で、音声検出処理を実行する。つまり、マイク34を通して入力される音声に対応するする音声データをデータ記憶領域482に記憶する。ただし、音声検出処理を実行する場合には、ノイズゲート処理も実行される。具体的には、一定レベル以下の音声データを単なる雑音とみなして、入力された音声データから排除(リジェクト)するようにしてある。続くステップS33では、バッファ(RAM48のバッファ領域)内で振幅ゼロの部分をマイナスからプラスに交差した回数(ゼロクロスの個数)をカウントし、直近の8フレーム分の回数(個数)を8倍した値をf(数値f)として保存する。つまり、入力音声データ482dを参照して、数値fを求める。
【0113】
続いて、ステップS35では、数値fが98から1883の間(98≦f≦1883)であるかどうかを判断する。ここでは、息の音声であるかどうかを簡易に判断しているのである。つまり、ゲームで使用すると想定される息(風)を、実際にマイク34に吹きかけた時の数値fがおおよそその範囲(98≦f≦1883)となるためである。また、息の強さSを1〜255の間で設定するためでもある。ステップS35で“NO”であれば、つまり数値fが97以下または1884以上であれば、そのままステップS47に進む。一方、ステップS35で“YES”であれば、つまり数値fが98から1883の間であれば、ステップS37で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。ここでは、図5を用いて説明したように、マイナスからプラスへのゼロクロス間の間隔時間tをそれぞれ計測するのである。
【0114】
続くステップS39では、各間隔時間tの分布を検出する。つまり、計測した間隔時間tをグループ別に分類する。具体的には、ステップS37で計測した間隔時間tを、グループA〜グループDのそれぞれに設定される時間長に応じて、各グループに属する間隔時間tの個数をそれぞれカウントするのである。したがって、カウント値(xA,xB,xC,xD)が得られる。次にステップS41では、ステップS39で検出した分布と参照データ482cとを比較する。つまり、数値fの値に応じてエリア(の番号)を選択し、選択されたエリアに対応して記述されるグループA〜グループDの設定範囲内に、カウント値(xA,xB,xC,xD)が収まるか、または設定値と一致するかどうかをそれぞれ判断する。
【0115】
続いて、ステップS43では、分布は条件を満たすかどうかを判断する。つまり、ステップS41の判断結果が、グループA〜グループDのそれぞれの設定範囲内であるか、または設定値と一致するかどうかを判断する。ここで、すべての設定範囲または設定値を満たす場合には、分布は条件を満たす(周波数分布が一致する)と判断され、いずれか1つの設定範囲または設定値でも満たさない場合には、分布は条件を満たさない(周波数分布が一致しない)と判断される。ステップS43で“YES”であれば、つまり分布が条件を満たす場合には、息吹きかけ音に近いとみなして、図10に示すステップS49に進む。しかし、ステップS43で“NO”であれば、つまり分布が条件を満たさない場合には、息吹きかけ音でないと判別して、ステップS45で、息吹きかけ音擬制フラグ482eをオフし、さらに、ステップS47で、息吹きかけ音認識フラグ482fをオフして、図10に示すように、息吹きかけ判別処理をリターンする。
【0116】
図10に示すように、ステップS49では、息吹きかけ音擬制フラグ482eがオンであるかどうかを判断する。つまり、2フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS49で“YES”であれば、つまり息吹きかけ音擬制フラグ482eがオンであれば、息吹きかけ音と判別し、ステップS51で、息吹きかけ音認識フラグ482fをオンし、ステップS53で、数1および数2に従って、息の強さSおよび息の及ぶ距離dを算出して、息吹きかけ判別処理をリターンする。一方、ステップS49で“NO”であれば、つまり息吹きかけ音擬制フラグ482eがオフであれば、息吹きかけに近いとみなされたフレームが連続していないと判断し、ステップS55で、息吹きかけ音擬制フラグ482eをオンして、息吹きかけ判別処理をリターンする。
【0117】
第1実施例によれば、ゼロクロスの間隔時間の分布が予め設定された分布と一致し、その状態が所定時間連続するとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に認識することができる。
【0118】
また、第1実施例では、参照データのようなテーブルデータを記憶しておくだけなので、様々な音声素片の波形パターンを記憶しておく場合に比べて、メモリ容量を削減することができる。
【0119】
さらに、第1実施例では、ゼロクロスの間隔時間の分布を調べるだけなので、煩わしい演算処理が不要であり、したがってCPUの処理負担を軽減することができる。
【0120】
さらにまた、入力される音声波形のゼロクロスの個数に応じて、息または風の強さを設定するので、簡単に息や風の強さを設定(検出)できる。さらには、息や風の強さで異なるゲーム処理(画像処理)を実行するので、ゲームの面白みを増すことができる。
【0121】
なお、この第1実施例では、2つのLCDを備えるゲーム装置について説明したが、1つのLCDのみが設けられればよい。また、タッチパネルは用いなくてもよい。
<第2実施例>
第2実施例のゲーム装置10は、息吹きかけ判別処理が異なる以外は、第1実施例のゲーム装置10と同じであるため、重複した説明は省略する。この第2実施例では、入力された音声波形についてのゼロクロスの間隔時間tの最大値と最小値とに基づいて、息吹きかけ音か否かを判別(認識)するようにしてある。したがって、第1実施例で示したような参照データ482dは不要であり、メモリ容量を削減することができる。具体的な息吹きかけ判別処理のフロー図が図11および図12に示される。ただし、第1実施例で説明した処理と同じ処理については簡単に説明することにする。また、第2実施例の息吹きかけ判別処理では、息の音声に近いとみなされる期間が3フレーム以上継続したときに、息による音声であると判別するようにしてある。したがって、第1実施例で示した息吹きかけ音擬制フラグ482eに変えて、息の音声に近いとみなされる期間(フレーム数)をカウントするためのカウンタ(図示せず)が、たとえば、RAM482のデータ記憶領域482に設けられる。
【0122】
図11を参照して、CPUコア42は息吹きかけ判別処理を開始すると、ステップS61で、音声検出処理を実行する。ここで、ノイズゲート処理が実行されるは、第1実施例の場合(S31)と同様である。続くステップS63では、バッファ内の振幅ゼロの部分をマイナスからプラスに交差した回数をカウントし、直近の8フレーム分の回数を8倍した値を数値fとして保存する。そして、ステップS65で、数値fが98から1883の間に収まるかどうかを判断する。ステップS65で“NO”であれば、そのままステップS73に進む。一方、ステップS65で“YES”であれば、ステップS67で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。
【0123】
続くステップS69では、間隔時間tの最大値(zero−cross−max)と最小値(zero−cross−min)との比率(zero−cross−max/zero−cross−min)を算出する。そして、ステップS71では、ステップS69で算出した比率が第1所定値(ここでは、7.0)以上であり、かつ最大値が第2所定値(ここでは、50(1/8000sec))以上であるかどうかを判断する。つまり、ゼロクロスの間隔時間tが所定の条件を満たすかどうかを判断するのである。ステップS71で“YES”であれば、つまり比率が7.0以上であり、かつ最大値が50(1/8000sec)以上である場合には、息吹きかけ音に近いとみなして、図12に示すステップS77に進む。しかし、ステップS71で“NO”であれば、つまり比率が7.0未満、または最大値が50(1/8000sec)未満或いはその両方である場合には、息吹きかけ音でないと判別し、ステップS73で、息吹きかけ音カウンタをリセット(カウント値=0)し、ステップS75で、息吹きかけ音認識フラグ482fをオフして、図12に示すように、息吹きかけ判別処理をリターンする。なお、第1所定値および第2所定値は、実験等により、経験的に得られた値である。
【0124】
図12に示すように、ステップS77では、息吹きかけ音カウンタのカウント値が3であるかどうかを判断する。つまり、3フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS77で“YES”であれば、つまり息吹きかけ音カウンタのカウント値が3であれば(3以上であれば)、息吹きかけ音と判別し、ステップS79で、息吹きかけ音フラグ482fをオンし、ステップS81で、数1および数2に従って、息(風)の強さSおよび影響を与える距離dを算出して、息吹きかけ判別処理をリターンする。一方、ステップS77“NO”であれば、つまり息吹きかけ音カウンタのカウント値が3でなければ(3未満であれば)、ステップS83で、息吹きかけ音カウンタをインクリメントして、息吹きかけ判別処理をリターンする。
【0125】
第2実施例においても、第1実施例と同様に、入力される音声波形のゼロクロスの個数が一定範囲内であり、ゼロクロスの間隔時間の最大値および最小値が所定時間連続して所定の条件を満たすとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に判別することができる。
【0126】
また、第2実施例では、参照データを設ける必要がないため、第1実施例で示した場合よりもさらにメモリ容量を削減することができる。
【図面の簡単な説明】
【0127】
【図1】図1はこの発明のゲーム装置の一例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3はゲーム画面の一例を示す図解図である。
【図4】図4はマイクから入力される息による音声の音声波形の時間変化を示すグラフである。
【図5】図5は図4に示す音声波形の一部を拡大したグラフである。
【図6】図6は息吹きかけ判別処理に用いる参照データの具体的な内容を示す図解図である。
【図7】図7は図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図8】図8は図2に示すCPUコアのゲーム処理を示すフロー図である。
【図9】図9は図2に示すCPUコアの息吹きかけ判別処理の一部を示すフロー図である。
【図10】図10は図9に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【図11】図11はこの発明の第2実施例の息吹きかけ判別処理の一部を示すフロー図である。
【図12】図12は図11に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【符号の説明】
【0128】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
34 …マイク
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【技術分野】
【0001】
この発明は息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関し、特にたとえば、外部から入力される音声が息によるものであるか否かを判別する、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【0002】
従来の息吹きかけ判別装置の一例が特許文献1に開示される。この特許文献1によれば、息の音声を構成する音声素片を予めメモリなどに格納しておき、マイクロフォンからの入力音声の音声素片とメモリに格納されている音声素片とを照合することにより、息の吹きかけ・吸い込みの音声であるか否かが判断される。
【特許文献1】特開平11−143484号
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、この背景技術では、息の音声を構成する音声素片を予めメモリなどに記憶しておく必要があるため、メモリ容量が増大してしまうという問題がある。一般的に、息の音声は、それを発するユーザの体格や息を吹きかける強さ等によってその波形パターンが変化するものである。つまり、背景技術のような手法で、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。一方、メモリ容量を抑えるために、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0004】
また、息の吹きかけを認識する他の方法として、高速フーリエ変換処理(FFT)を用いた方法も考えられる。この手法を用いれば、周波数帯域分布(スペクトラム)をかなり正確に測定できるので、息の吹きかけのスペクトラムを予めメモリ等に記憶しておき、入力された音声のスペクトラムと比較することによって息の吹きかけか否かを認識することができる。しかし、この方法では、複雑な計算処理が必要であるため、計算処理の負担が増大してしまう。
【0005】
それゆえに、この発明の主たる目的は、新規な、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【0006】
この発明の他の目的は、息の吹きかけを精度よく認識でき、しかも処理負担を軽減できる、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【0007】
請求項1の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムである。この息吹きかけ判別プログラムは、判別装置のプロセサに、入力音声検出ステップ、時間計測ステップ、および音声判断ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。そして、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる。
【0008】
請求項1の発明では、息吹きかけ判別プログラム(480e:実施例で想到する参照符号。以下、同じ。)は、息吹きかけ判別装置(10)のプロセサによって実行される。この息吹きかけ判別装置は、少なくともマイク(34)を備え、外部から入力される音声が息によるものであるか否かを判別する。具体的には、息吹きかけ判別プログラムは、入力音声検出ステップ(S31,S61)、時間計測ステップ(S37,S67)および音声判断ステップ(S39,S41,S43,S71)を、判別装置のプロセサ(42)に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。
【0009】
請求項1の発明によれば、音声波形に共通する特徴である各ゼロクロス間の時間に基づいて息による音声か否かを判別するので、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【0010】
請求項2の発明は請求項1に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【0011】
請求項2の発明では、音声判断ステップは、周波数分布検出ステップ(S39)および周波数分布判断ステップ(S41)を含む。周波数分布検出ステップは、時間計測ステップによって検出された各時間に基づいて波形データの周波数分布を検出する。周波数分布判断ステップは、周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する。
【0012】
請求項2の発明によれば、各ゼロクロス間の時間に基づいて波形データすなわち入力された音声の周波数分布を検出し、この周波数分布が予め設定した条件を満たすか否かを判断するだけなので、比較的少ない処理で正確に息による音声か否かを認識することができる。
【0013】
請求項3の発明は請求項2に従属し、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【0014】
請求項3の発明では、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含む。周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内(設定値の場合もある。)であるかどうかを判断する。つまり、予め設定した条件を満たすかどうかを判断する。音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内であると判断されたとき、つまり、予め設定した条件を満たすとき、入力された音声が息によるものであると判断する。
【0015】
請求項3の発明によれば、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるときには、息の音声であると判断するので、息の音声を精度よく認識することができる。
【0016】
請求項4の発明は請求項1に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、入力された音声を息によるものと判断する。
【0017】
請求項4の発明では、比率検出ステップ(S69)は、各時間の時間長の最大値と最小値との比率(最大値/最小値)を検出する。音声判断ステップは、検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第1所定値および第2所定値は経験的に得られた値である。
【0018】
請求項4の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【0019】
請求項5の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、入力音声検出手段、時間計測手段、および音声判断手段を備える、息吹きかけ判別装置である。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する。
【0020】
請求項5の発明においても、請求項1の発明と同様に、少ない処理負担で息の音声を正確に認識することができる。
【0021】
請求項6の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、入力音声検出ステップ、時間計測ステップ、音声判断ステップ、およびゲーム処理ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【0022】
請求項6の発明では、ゲームプログラムは、ゲーム装置(10)のプロセサによって実行される。このゲーム装置は、外部から入力される音声に基づいてゲーム処理を行う。具体的には、ゲームプログラムは、入力音声検出ステップ(S31,S61)、時間計測ステップ(S37,S67)、音声判断ステップ(S39,S41,S43,S71)およびゲーム処理ステップ(S11)を、判別装置のプロセサ(42)に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。たとえば、プレイヤオブジェクトに息を吹く動作をさせたり、プレイヤオブジェクトの動作によって風を発生させたりする。
【0023】
請求項6の発明によれば、請求項1の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【0024】
請求項7の発明は請求項6に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【0025】
請求項7の発明においても、請求項2の発明と同様に、比較的少ない処理で正確に息による音声か否かを認識することができる。
【0026】
請求項8の発明は請求項7に従属し、周波数分布検出ステップは、時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【0027】
請求項8の発明においても、請求項3の発明と同様に、息の音声を精度よく認識することができる。
【0028】
請求項9の発明は請求項8に従属し、すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0029】
請求項9の発明では、継続状態判断ステップ(S49)は、すべてのグループについて予め設定された範囲内であると判断された状態すなわち息の音声であるとみなされる状態が所定時間以上継続して行われたか否かを判断する。音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0030】
請求項9の発明によれば、息の音声であるとみなされる状態が所定時間以上継続するとき、息の音声であると認識するので、息の音声であるか否かを精度良く認識することができる。
【0031】
請求項10の発明は請求項6に従属し、ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、音声判断ステップは、ゼロクロスの数が予め設定された範囲内にあると判断されたとき、検出された音声を操作者の息によるものであると判断する。
【0032】
請求項10の発明では、ゼロクロス数カウントステップ(S33,S63)は、ゼロクロスの数をカウントする。音声判断ステップは、ゼロクロスの数があらかじめ設定された範囲内にあると判断されたとき(S35,S65で“YES”)、検出された音声を操作者の息によるものであると判断する。
【0033】
請求項10の発明によれば、ゼロクロスの数が予め設定された範囲内にあるとき、息の音声であると判断するので、息による音声を精度良く認識することができる。
【0034】
請求項11の発明は請求項10に従属し、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【0035】
請求項11の発明では、強さ設定ステップ(S17,S53,S81)は、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息ないし風の強さを設定する。ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【0036】
請求項11の発明によれば、ゼロクロスの数に応じて息の強さを変化させるので、息の強さを容易に検出することができる。
【0037】
請求項12の発明は請求項11に従属し、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う。
【0038】
請求項12の発明では、ゲーム処理ステップは、息の強さに応じて、ゲーム空間内で息または風の影響が及ぶ範囲(距離)を変化させるようにゲーム処理を行う。また、息または風が及ぼす影響を変化させるようにゲーム処理を行うこともできる。
【0039】
請求項12の発明によれば、ゲーム空間における息や風の影響を変化させることができるので、ゲームの面白みを増すことができる。
【0040】
請求項13の発明は請求項6に従属し、ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う。
【0041】
請求項13の発明では、ゲーム処理ステップは、ゲームに登場するキャラクタ(102)が息を吹きかけるように動作するようにゲーム処理を行う。たとえば、キャラクタの口元から吹き出すように息オブジェクト(104)を表示し、オブジェクト(106)が息または風の影響を受ける様子を表示することができる。
【0042】
請求項13の発明によれば、操作者は直感的にゲームを操作することができる。
【0043】
請求項14の発明は請求項6に従属し、ゼロクロスは波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である。
【0044】
請求項14の発明では、ゼロクロスは、波形データの振幅値がマイナスからプラス、またはプラスからマイナスへ変化する境界点である。つまり、検出すべきゼロクロスの数が減少される。
【0045】
請求項14の発明では、検出すべきゼロクロスの数を減少させるので、処理負担を軽減することができる。
【0046】
請求項15の発明は請求項6に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、入力された音声を操作者の息によるものと判断する。
【0047】
請求項15の発明では、比率検出ステップ(S69)は、各時間の時間長の最大値と最小値との比率(最大値/最小値)を検出する。音声判断ステップは、検出された比率が第1所定値以上であり、かつ最大値が第2所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第1所定値および第2所定値は経験的に得られた値である。
【0048】
請求項15の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【0049】
請求項16の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、入力音声検出手段、時間計測手段、音声判断手段、およびゲーム処理手段を備える。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理手段は、音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【0050】
請求項16の発明においても、請求項6の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【発明の効果】
【0051】
この発明によれば、音声波形の各ゼロクロス間の時間に基づいて息の音声であるか否かを判別するので、少ない処理負担で息の吹きかけであるか否かを正確に認識することができる。
【0052】
この発明の上述の目的,その他の目的,特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【0053】
<第1実施例>
図1を参照して、この発明の第1実施例であるゲーム装置10は、第1の液晶表示器(LCD)12および第2のLCD14を含み、LCD12およびLCD14は、所定の配置位置となるようにハウジング16に収納される。たとえば、ハウジング16は、上側ハウジング16aと下側ハウジング16bとによって構成され、LCD12は上側ハウジング16aに収納され、LCD14は下側ハウジング16bに収納される。したがって、LCD12とLCD14とは縦(上下)に並ぶように近接して配置される。
【0054】
なお、この第1実施例では、表示器としてLCDを用いるようにしてあるが、LCDに代えて、EL(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【0055】
また、ゲーム装置10は、後述するように、息吹きかけ判別プログラム(図7参照)を記憶し、息吹きかけ装置としても機能する。
【0056】
図1からも分かるように、上側ハウジング16aは、LCD12の平面形状よりも少し大きな平面形状を有し、一方主面からLCD12の表示面を露出するように開口部が形成される。一方、下側ハウジング16bは、その平面形状が上側ハウジング16aよりも横長に選ばれ、横方向の略中央部にLCD14の表示面を露出するように開口部が形成される。また、下側ハウジング16bには、音抜き孔18が形成されるとともに、操作スイッチ20(20a,20b,20c,20d,20e,20Lおよび20R)が設けられる。
【0057】
また、上側ハウジング16aと下側ハウジング16bとは、上側ハウジング16aの下辺(下端)と下側ハウジング16bの上辺(上端)の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、LCD12の表示面とLCD14の表示面とが対面するように、上側ハウジング16aを回動させて折りたたんでおけば、LCD12の表示面およびLCD14の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング16aと下側ハウジング16bとは、回動可能に連結せずに、それらを一体的(固定的)に設けたハウジング16を形成するようにしてもよい。
【0058】
操作スイッチ20は、方向指示スイッチ(十字スイッチ)20a,スタートスイッチ20b、セレクトスイッチ20c、動作スイッチ(Aボタン)20d、動作スイッチ(Bボタン)20e、動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rを含む。スイッチ20a,20bおよび20cは、下側ハウジング16bの一方主面であり、LCD14の左側に配置される。また、スイッチ20dおよび20eは、下側ハウジング16bの一方主面であり、LCD14の右側に配置される。さらに、スイッチ20Lおよびスイッチ20Rは、それぞれ、下側ハウジング16bの上端(天面)の一部であり、上側ハウジング16aとの連結部以外に当該連結部を挟むように、左右に配置される。
【0059】
方向指示スイッチ20aは、ディジタルジョイスティックとして機能し、4つの押圧部の1つを操作することによって、操作者(プレイヤ)によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ20bは、プッシュボタンで構成され、ゲームを開始(再開)したり、一時停止したりする等に用いられる。セレクトスイッチ20cは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【0060】
動作スイッチ20dすなわちAボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ(パンチ)、投げる、つかむ(取得)、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(RPG)やシミュレーションRPGにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ20eすなわちBボタンは、プッシュボタンで構成され、セレクトスイッチ20cで選択したゲームモードの変更やAボタン20dで決定したアクションの取り消し等のために用いられる。
【0061】
動作スイッチ(Lボタン)20Lおよび動作スイッチ(Rボタン)20Rは、プッシュボタンで構成され、Lボタン20LおよびRボタン20Rは、Aボタン20dおよびBボタン20eと同様の操作に用いることができ、また、Aボタン20dおよびBボタン20eの補助的な操作に用いることができる。
【0062】
また、LCD14の上面には、タッチパネル22が装着される。タッチパネル22としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル22は、その上面をスティック24ないしはペン(スタイラスペン)或いは指(以下、これらを「スティック24等」という場合がある。)で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック24等の操作(タッチ入力)位置の座標(タッチ座標)を検出して、検出したタッチ座標に対応する座標データを出力する。
【0063】
たとえば、LCD14(LCD12も同じ、または略同じ。)の表示面の解像度は256dot×192dotであり、タッチパネル22の検出面の検出精度もその解像度に対応して256dot×192dotとしてある。ただし、タッチパネル22の検出精度は、LCD14の表示画面の解像度よりも低くてもよく、高くてもよい。
【0064】
LCD12およびLCD14には異なるゲーム画像(ゲーム画面)を表示することができる。たとえば、レースゲームでは一方のLCDに運転席からの視点による画面を表示し、他方のLCDにレース(コース)全体の画面を表示することができる。また、RPGでは、一方のLCDにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のLCDにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、パズルゲームでは、一方のLCD(たとえば、LCD12)にパズル全体(ゲームマップ)を表示し、他方のLCD(たとえば、LCD14)には、ゲームマップの一部(当該パズルゲームを操作するための画面)を表示することができる。たとえば、ゲームマップの一部を表示した画面では、文字や図形等の画像を描画したり、表示画像(アイコン)等を移動させたりすることができる。さらには、2つのLCD12およびLCD14を合わせて1つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物(敵キャラクタ)を表示することもできる。
【0065】
したがって、プレイヤはスティック24等でタッチパネル22を操作することにより、LCD14に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示(指定)したり、移動させたり、コマンドを選択したり、さらには、文字や図形(画像)を描画したりすることができる。また、3次元ゲーム空間に設けられる仮想カメラ(視点)の方向を変化させたり、ゲーム画面(ゲームマップ)をスクロール(徐々に移動表示)させたりすることもできる。
【0066】
このように、ゲーム装置10は、2画面分の表示部となるLCD12およびLCD14を有し、いずれか一方(第1実施例では、LCD14)の上面にタッチパネル22が設けられるので、2画面(12,14)と2系統の操作部(20,22)とを有する構成になっている。
【0067】
また、この第1実施例では、スティック24は、たとえば上側ハウジング16aの側面(右側面)近傍に設けられる収納部(収納穴)26に収納することができ、必要に応じて取り出される。ただし、スティック24を設けない場合には、収納部26を設ける必要がない。
【0068】
さらに、ゲーム装置10はメモリカード(またはゲームカートリッジ)28を含み、このメモリカード28は着脱自在であり、下側ハウジング16bの裏面ないしは下端(底面)に設けられる挿入口30から挿入される。図1では省略するが、挿入口30の奥部には、メモリカード28の挿入方向先端部に設けられるコネクタ(図示せず)と接合するためのコネクタ46(図2参照)が設けられており、したがって、メモリカード28が挿入口30に挿入されると、コネクタ同士が接合され、ゲーム装置10のCPUコア42(図2参照)がメモリカード28にアクセス可能となる。
【0069】
さらにまた、ゲーム装置10はマイク34を含み、たとえば、マイク34は下側ハウジング16bのLCD14の左斜め下方に設けられる。したがって、たとえば、マイク34から音声(プレイヤないしユーザの音声)が入力されると、これに応じて、ゲーム装置10はゲーム処理を実行することができる。
【0070】
なお、図1では表現できないが、下側ハウジング16bの音抜き孔18と対応する位置であり、この下側ハウジング16bの内部にはスピーカ32(図2参照)が設けられる。
【0071】
また、図1では省略するが、たとえば、下側ハウジング16bの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング16bの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【0072】
図2はゲーム装置10の電気的な構成を示すブロック図である。図2を参照して、ゲーム装置10は電子回路基板40を含み、この電子回路基板40にはCPUコア42等の回路コンポーネントが実装される。CPUコア42は、バス44を介してコネクタ46に接続されるととともに、RAM48、第1のグラフィック処理ユニット(GPU)50、第2のGPU52、入出カインターフエース回路(以下、「I/F回路」という。)54およびLCDコントローラ60が接続される。
【0073】
コネコタ46には、上述したように、メモリカード28が着脱自在に接続される。メモリカード28は、ROM28aおよびRAM28bを含み、図示は省略するが、ROM28aおよびRAM28bは、互いにバスで接続され、さらに、コネクタ46と接合されるコネクタ(図示せず)に接続される。したがって、上述したように、CPUコア42は、ROM28aおよびRAM28bにアクセスすることができるのである。
【0074】
ROM28aは、ゲーム装置10で実行すべきゲーム(仮想ゲーム)のためのゲームプログラム、画像(キャラクタ画像、背景画像、アイテム画像、アイコン(ボタン)画像、メッセージ画像など)データおよびゲームに必要な音(音楽)のデータ(音データ)等を予め記憶する。RAM(バックアップRAM)28bは、そのゲームの途中データやゲームの結果データを記憶(セーブ)する。
【0075】
RAM48は、バッファメモリないしはワーキングメモリとして使用される。つまり、CPUコア42は、メモリカード28のROM28aに記憶されたゲームプログラム、画像データおよび音データ等をRAM48にロードし、ロードしたゲームプログラムを実行する。また、CPUコア42は、ゲームの進行に応じて一時的に発生するデータ(ゲームデータやフラグデータ)をRAM48に記憶しつつゲーム処理を実行する。
【0076】
なお、ゲームプログラム、画像データおよび音データ等は、ROM28aから一度に全部、または部分的かつ順次的に読み出され、RAM48に記憶(ロード)される。
【0077】
GPU50およびGPU52は、それぞれ、描画手段の一部を形成し、たとえばシングルチップASICで構成され、CPUコア42からのグラフィックスコマンド(graphics command :作画命令)を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、CPUコア42は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム(ゲームプログラムに含まれる。)をGPU50およびGPU52のそれぞれに与える。
【0078】
また、GPU50には、第1のビデオRAM(以下、「VRAM」という。)56が接続され、GPU52には、第2のVRAM58が接続される。GPU50およびGPU52が作画コマンドを実行するにあたって必要なデータ(画像データ:キャラクタデータやテクスチャ等のデータ)は、GPU50およびGPU52が、それぞれ、第1のVRAM56および第2のVRAM58にアクセスして取得する。なお、CPUコア42は、描画に必要な画像データをGPU50およびGPU52を介して第1のVRAM56および第2のVRAM58に書き込む。GPU50はVRAM56にアクセスして描画のためのゲーム画像データを作成し、GPU52はVRAM58にアクセスして描画のためのゲーム画像データを作成する。
【0079】
VRAM56およびVRAM58は、LCDコントローラ60に接続される。LCDコントローラ60はレジスタ62を含み、レジスタ62はたとえば1ビットで構成され、CPUコア42の指示によって「0」または「1」の値(データ値)を記憶する。LCDコントローラ60は、レジスタ62のデータ値が「0」である場合には、GPU50によって作成されたゲーム画像データをLCD12に出力し、GPU52によって作成されたゲーム画像データをLCD14に出力する。また、LCDコントローラ60は、レジスタ62のデータ値が「1」である場合には、GPU50によって作成されたゲーム画像データをLCD14に出力し、GPU52によって作成されたゲーム画像データをLCD12に出力する。
【0080】
なお、LCDコントローラ60は、VRAM56およびVRAM58から直接ゲーム画像データを読み出したり、GPU50およびGPU52を介してVRAM56およびVRAM58からゲーム画像データを読み出したりする。
【0081】
I/F回路54には、操作スイッチ20、タッチパネル22、スピーカ32およびマイク34が接続される。ここで、操作スイッチ20は、上述したスイッチ20a,20b,20c,20d,20e,20Lおよび20Rであり、操作スイッチ20が操作されると、対応する操作信号がI/F回路54でディジタルデータ(操作データ)に変換され、CPUコア42に入力される。また、タッチパネル22からの座標データがI/F回路54を介してCPUコア42に入力される。さらに、CPUコア42は、ゲーム音楽(BGM)、効果音またはゲームキャラクタの音声(擬声音)などのゲームに必要な音データをRAM48から読み出し、I/F回路54に与える。I/F回路54は、音データをアナログの音声信号に変換して、スピーカ32から出力する。さらにまた、マイク34から入力される音声(音声信号)は、I/F回路54でディジタルデータ(音声データ)に変換され、CPUコア42に入力される。
【0082】
図3はLCD12に表示されるゲーム画面100の一例を示す図解図である。このゲーム画面100には、プレイヤオブジェクト102、プレイヤオブジェクト102が吹き出した息のオブジェクト(息オブジェクト)104および風車オブジェクト106が表示される。このゲーム画面100では、プレイヤオブジェクト102が風車オブジェクト106に息(息オブジェクト104)を吹きかけ、風車オブジェクト106が回転される様子が示される。
【0083】
なお、上述したように、この第1実施例では、2つの画面(LCD12,LCD14)が設けられるため、ゲーム画面100はLCD14に表示するようにしてもよい。また、ゲーム画面100が表示されていない他方の画面には、たとえば、ゲームプレイに関連する内容、すなわち、ゲームマップ、プレイヤオブジェクトに関するパラメータ(生命力、レベルなど)およびゲームの進行状況(クリアした面の数、ゲーム世界における経過時間)などを表示することができる。
【0084】
上述したように、プレイヤは、操作スイッチ20を操作することにより、プレイヤオブジェクト102を3次元仮想空間(ゲーム空間)上で移動させたり、ジャンプ等の任意のアクションをさせたりすることができる。また、たとえば、プレイヤは、マイク34に向けて息を吹きかけると、その音声(息による音声)がマイク34を通して入力され、プレイヤオブジェクト102が息を吹きかけるように動作される。
【0085】
このように、息による音声でプレイヤオブジェクト102を操作することができるが、息による音声か否かを正確に判断できなければ、プレイヤオブジェクト102を正確に動作させることができない。また、すべての音声を息による音声と認識するようにした場合には、ゲームのリアリティを損なうことになる。つまり、リアリティのある操作感を得ることができない。
【0086】
たとえば、息を吹きかける音(息の音声)についての音声素片の波形パターンを予め記憶しておき、記憶しておいた音声素片と入力された音声の音声素片とを比較して、プレイヤが息を吹きかけたかどうかを判断する方法がある。また、高速フーリエ変換処理(FFT)により、入力された音声のスペクトラムを算出して、算出したスペクトラムと予め記憶しておいた息の音声についてのスペクトラムとを比較して、プレイヤが息を吹きかけたかどうかを判断する方法もある。
【0087】
しかし、一般的に、息の音声は、それを発するプレイヤの体格や息を吹きかける強さ等によってその波形パターンが変化するものであり、前者の場合には、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。つまり、メモリ容量が増大してしまう。これを回避するため、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【0088】
また、後者の場合には、息の音声についてのスペクトラムをかなり正確に測定できるので、息の吹きかけか否かを正解に認識することができるが、複雑な計算処理が必要であるため、処理負担が大きくなってしまう。
【0089】
そこで、この第1実施例では、このような不都合を回避するため、入力される音声に対応する音声波形のゼロクロスに基づいて、息の吹きかけ音であるか否かを判別するようにしてある。
【0090】
たとえば、図4には、息がマイク34に当たるときに発生する波形すなわち息の音声波形の一例が示される。周知のとおり、ゼロクロスは、音声波形の振幅がプラスからマイナス、およびマイナスからプラスへ変化するときに、0レベルと交差する点(境界点)である。このゼロクロスの間隔時間t(msec)に基づいて息の音声であるか否かを判別するのであるが、この第1実施例では、着目するのは、音声波形の振幅がマイナスからプラスへ変化するときのゼロクロスである。したがって、ゼロクロスの間隔時間tは、図5に示すように、波形の振幅がマイナスからプラスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長である。つまり、音声波形に含まれる各波の周期(周波数)を算出するのである。
【0091】
ただし、検出するゼロクロスの間隔時間tは、波形の振幅がプラスからマイナスへ変化するときのゼロクロスであり、連続する2つのゼロクロスで規定される時間長であってもよい。
【0092】
また、ここでは、簡単のため、間隔時間tの単位を「msec」としてあるが、厳密には、CPUコア42のサンプリングレートは、1/8000secであり、間隔時間tの単位も「1/8000sec」である。以下、この明細書において同じである。
【0093】
なお、この実施例では、波形の振幅がマイナスからプラス、またはプラスからマイナスへ変化するときのゼロクロスに着目するようにしてあるが、これは無駄な処理を削減するためである。
【0094】
上述したように、この第1実施例では、ゼロクロスの間隔時間tに基づいて、息の音声かどうかを判別するのであるが、その際、図6に示すような参照データ482c(RAM48のデータ記憶領域482に記憶される。)が参照される。この参照データ482cは、実験等により、経験的に得られたデータであり、入力された音声が参照データ482cに含まれるいずれかの条件を満たせば、息の音声とみなし、これが所定時間継続すれば(第1実施例では、連続する2フレーム)、息の音声であると判別(認識)される。また、入力された音声が息の音声として判別された場合には、ゼロクロスの数に基づいて、息(風)の強さが区別(決定)される。
【0095】
図6に示すように、参照データ482cは、テーブルデータで表され、エリアの番号に対応して、8フレーム分のゼロクロスの個数に基づく数値fの範囲が記述され、それに対応して、間隔時間tの分布が記述される。つまり、数値fに対応して、息の音声についての周波数分布が記述されているのである。ここで、「フレーム」は、画面(ゲーム画面)の更新単位時間であり、たとえば1/60秒に設定される。エリアの欄に記述された番号は、数値fの範囲を識別するための識別情報である。数値fの欄には、バッファすなわちデータ記憶領域482に記憶されている過去(直近の)8フレーム分のゼロクロス(マイナスからプラスへ変化するときのゼロクロス)の個数を8倍した数値の範囲を示してある。間隔時間tの分布は、4つのグループA,B,C,Dで示され、各グループは間隔時間tの範囲で区別される。具体的には、グループAでは間隔時間tの範囲は2〜25(2≦t≦25)であり、グループBでは間隔時間tの範囲は26〜50(26≦t≦50)であり、グループCでは間隔時間tの範囲は51〜75(51≦t≦75)であり、そして、グループDでは間隔時間tの範囲は76以上(t≧76)である。各グループには、数値fに対応して、該当する間隔時間tの個数の設定範囲または設定値が記述される。ただし、この設定範囲または設定値は、1フレーム分の音声波形に含まれるゼロクロスの間隔時間tの分布を調べるための数値範囲または数値(条件)である。
【0096】
たとえば、入力された音声波形についての8フレーム分のゼロクロスの個数の8倍の数値fが200〜299の範囲内である場合には、エリア2が選択される。次に、入力された音声波形のうち、現フレームの直前のフレームについてのゼロクロスの間隔時間tの分布がエリア2に対応するグループA、グループB、グループCおよびグループDの各条件(ここでは、2<xA<40,1<xB<19,0≦xC<9,0≦xD<6)を満たすかどうかを判断する。つまり、周波数分布が一致するか否かを判断する。具体的には、それぞれのグループに含まれる間隔時間tの個数をカウントし、各グループについてのカウント値(xA,xB,xC,xD)が予め設定された数値範囲内であるかどうかを判断する。ただし、数値範囲に代えて数値が設置されている場合には、当該数値を満たすかどうかを判断する。これらの条件を満たす状態が2フレーム以上継続すれば、入力された音声は息の音声であると判別される。このとき、数値fに基づいて、ゲームにおける息(風)の強さが決定される。たとえば、息(風)の強さは、1〜255(8ビットの2値データ:“00000001”〜“11111111”)で示され、数値fに基づいて算出される。具体的には、息(風)の強さSは数1に従って算出される。また、その息の影響が及ぶ距離(範囲)dは数2に従って算出される。
【0097】
[数1]
S=(f/7)−13
[数2]
d=A・S
ただし、Aは比例定数であり、ゲームの開発者ないしプログラマによって予め設定される。ただし、比例定数Aの値は、ゲームの進行状況、プレイヤキャラクタの種類、プレイヤキャラクタについてのパラメータ(レベル、ライフなど)などに従って変化するようにしてもよい。
【0098】
このように、息の強さSや影響の及ぶ距離dが算出され、これらの数値に応じてゲーム処理(画像更新など)が実行される。たとえば、上述したように、風車オブジェクト106を回転させる場合には、息の強さSにより、風車オブジェクト106の回転数を変化させることができる。また、この場合、距離dに応じてプレイヤオブジェクト102が発生する息または風が風車オブジェクト106に届くか否か、すなわち風車オブジェクト106を回転させるかどうかを決定することができる。また、図示は省略するが、複数のろうそくの火をプレイヤオブジェクト102の息で吹き消すような場合には、息の強さSにより、火が消えるろうそくの本数を変化させることができる。また、この場合、距離dに応じてプレイヤオブジェクト102が発生する息または風がろうそくのオブジェクトに届くか否か、すなわち火を消すことができるか否かを決定することもできる。
【0099】
図7は図2に示したRAM48のメモリマップを示す図解図である。この図7を参照して、RAM48は、プログラム記憶領域480およびデータ記憶領域482を含む。プログラム記憶領域480には、ゲームプログラムが記憶され、このゲームプログラムは、ゲームメイン処理プログラム480a、プレイヤオブジェクト制御プログラム480b、画像生成プログラム480c、画像表示プログラム480dおよび息吹きかけ判別プログラム480eなどによって構成される。
【0100】
ゲームメイン処理プログラム480aは、仮想ゲームのメイン処理を実行するためのプログラムである。具体的には、ゲームを進行させたり、ノンプレイヤオブジェクト(たとえば、息オブジェクト104、風車オブジェクト106)の動作(移動)、発生、消滅を制御したり、ゲーム音楽を再生したり、ゲームデータのバックアップを実行したりする。プレイヤオブジェクト制御プログラム480bは、プレイヤの操作に従って、プレイヤオブジェクト102に任意のアクションをさせるためのプログラムである。具体的には、上述したように、操作スイッチ20または音声(息吹きかけ音)による操作入力に従って、プレイヤキャラクタ102のアクションが制御される。
【0101】
画像生成プログラム480cは、後述するオブジェクトデータ482aを用いて、仮想ゲームの背景オブジェクト、プレイヤオブジェクト102およびノンプレイヤオブジェクト(息オブジェクト104、風車オブジェクト106など)のオブジェクト画像を生成するためのプログラムである。画像表示プログラム480dは、画像生成プログラム480cに従って生成されたオブジェクト画像をLCD12に表示するためのプログラムである。息吹きかけ判別プログラム480eは、音声入力が息吹きかけによるものであるか否かを判別するためのプログラムである。
【0102】
なお、図示は省略するが、プログラム記憶領域480には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、仮想ゲームに必要な音(音楽)を再生するためのプログラムである。バックアッププログラムは、仮想ゲームの進行に従って発生する途中データまたは結果データをメモリカード28のRAM28bに記憶(セーブ)するためのプログラムである。
【0103】
データ記憶領域482には、オブジェクトデータ482a、サウンドデータ482b、参照データ482cおよび入力音声データ482dなどのデータが記憶されるとともに、息吹きかけ音擬制フラグ482eおよび息吹きかけ音認識フラグ482fが設けられる。オブジェクトデータ482aは、オブジェクト画像の生成のために用いられるデータであり、ポリゴンデータやテクスチャデータのような画像データを含むとともに、当該オブジェクトの3次元位置(3次元座標)についてのデータ(位置データ)を含む。図示は省略するが、オブジェクデータ482aは、オブジェクト毎に記憶される。
【0104】
サウンドデータ482bは、ゲームに必要な音(音楽)を再生するために必要なデータである。参照データ482cは、図6に示したようなテーブルデータであり、後述する息吹きかけ判別処理(図9および図10参照)で用いられる。入力音声データ482dは、マイク34を介して入力された音声信号(音声データ)である。なお、この第1実施例では、データ記憶領域482には、少なくとも8フレーム分の音声データが記録(一時記憶)される。
【0105】
息吹きかけ音擬制フラグ482eは、息吹きかけ判別処理においてオン(成立)/オフ(不成立)されるフラグである。この息吹きかけ音擬制フラグ482eは、息吹きかけ音とみなされる場合にオンされ、息吹きかけ音とみなされない場合にはオフされる。たとえば、息吹きかけ音擬制フラグ482eは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。息吹きかけ音認識フラグ482fもまた、息吹きかけ判別処理においてオン/オフされるフラグである。この息吹きかけ音認識フラグ482fは、息吹きかけ音と判別(認識)された場合にはオンされ、息吹きかけ音と判別されない場合にはオフされる。たとえば、息吹きかけ音認識フラグ482fは、1ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「1」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「0」が設定される。
【0106】
なお、図示は省略するが、データ記憶領域482には、ゲームデータ(途中データ、結果データ)等の他のデータやイベントフラグ等の他のフラグも記憶される。
【0107】
図8は、図2に示すCPUコア42のゲーム処理を示すフロー図である。この図8を参照して、CPUコア42はゲーム処理を開始すると、ステップS1で、初期化処理を実行する。ここでは、プレイヤオブジェクト102や風車オブジェクト106のようなノンプレイヤオブジェクトの配置位置(3次元座標)を初期位置に設定したり、バッファ等をクリアしたりする。ただし、ゲームを前回の続きから開始する場合には、セーブしておいたゲームデータをメモリカード28のRAM28bから読み出して、RAM48にロードする。続くステップS3では、ゲームメイン処理を実行する。ここでは、プレイヤオブジェクト102以外のオブジェクト(ノンプレイヤオブジェクト、背景オブジェクト)についての画像処理(アニメーション処理)、音再生処理やバックアップ処理などが実行される。
【0108】
続いて、ステップS5で、操作スイッチ20がオン(操作された)かどうかを判断する。ステップS5で“YES”であれば、つまり操作スイッチ20が操作されれば、ステップS7で、操作された操作スイッチ20に応じた処理を実行して、ステップS13に進む。つまり、ステップS7では、操作された操作スイッチ20に応じて、プレイヤオブジェクト102をゲーム空間上で移動させるなどの任意のアクションを実行させ、したがって、そのアニメーションがゲーム画面100に表示される。一方、ステップS5で“NO”であれば、つまり操作スイッチ20がオフであれば(操作されていなければ)、ステップS9で、変数Tに0が代入(設定)されている(T=0)かどうかを判断する。ここで、変数Tは、プレイヤオブジェクト102に息を吹きかける動作をさせるか否かを判断するための変数であり、その変数の数値(1〜255)によって息(風)の強さが変化される。ただし、変数Tに0が代入されている場合には、プレイヤオブジェクト102に息を吹きかける動作をさせない。
【0109】
ステップS9で“YES”であれば、つまり変数Tに0が代入されていれば、そのままステップS13に進む。一方、ステップS9で“NO”であれば、つまり変数Tに0が代入されていなければ、ステップS11で、プレイヤオブジェクト102が息を吹く動作のアニメーションを表示するとともに、息オブジェクト104を発生させる(表示する)。図示は省略するが、このとき、息の強さSや息の影響の及ぶ距離dに応じて、異なる画像変化が与えられる。続くステップS13では、後で詳細に説明する、息吹きかけ判別処理(図9および図10参照)を実行して、ステップS15で、息吹きかけを認識したかどうかを判断する。具体的には、息吹きかけ音認識フラグ482fがオンであるかどうかを判断する。ステップS15で“YES”であれば、つまり息吹きかけ音認識フラグ482fがオンであれば、息吹きかけを認識したと判断し、ステップS17で、変数Tに息(風)の強さSの値を代入して、ステップS21に進む。しかし、ステップS15で“NO”であれば、つまり息吹きかけ音認識フラグ482fがオフであれば、息吹きかけを認識していないと判断し、ステップS19で、変数Tに0を代入して、ステップS21に進む。
【0110】
ステップS21では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかどうかを判断する。ステップS21で“NO”であれば、つまりゲーム終了でなければ、そのままステップS3に戻る。しかし、ステップS21で“YES”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【0111】
なお、このメイン処理ルーチンは、単位時間(例えば、1フレーム)毎に繰り返し実行されるものである。したがって、単位時間毎に、ステップS13の息吹きかけ判別処理(音声検出処理)が実行される。
【0112】
図9および図10は、図8に示したステップS13の息吹きかけ判別処理を示すフロー図である。図9に示すように、CPUコア42は息吹きかけ判別処理を開始すると、ステップS31で、音声検出処理を実行する。つまり、マイク34を通して入力される音声に対応するする音声データをデータ記憶領域482に記憶する。ただし、音声検出処理を実行する場合には、ノイズゲート処理も実行される。具体的には、一定レベル以下の音声データを単なる雑音とみなして、入力された音声データから排除(リジェクト)するようにしてある。続くステップS33では、バッファ(RAM48のバッファ領域)内で振幅ゼロの部分をマイナスからプラスに交差した回数(ゼロクロスの個数)をカウントし、直近の8フレーム分の回数(個数)を8倍した値をf(数値f)として保存する。つまり、入力音声データ482dを参照して、数値fを求める。
【0113】
続いて、ステップS35では、数値fが98から1883の間(98≦f≦1883)であるかどうかを判断する。ここでは、息の音声であるかどうかを簡易に判断しているのである。つまり、ゲームで使用すると想定される息(風)を、実際にマイク34に吹きかけた時の数値fがおおよそその範囲(98≦f≦1883)となるためである。また、息の強さSを1〜255の間で設定するためでもある。ステップS35で“NO”であれば、つまり数値fが97以下または1884以上であれば、そのままステップS47に進む。一方、ステップS35で“YES”であれば、つまり数値fが98から1883の間であれば、ステップS37で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。ここでは、図5を用いて説明したように、マイナスからプラスへのゼロクロス間の間隔時間tをそれぞれ計測するのである。
【0114】
続くステップS39では、各間隔時間tの分布を検出する。つまり、計測した間隔時間tをグループ別に分類する。具体的には、ステップS37で計測した間隔時間tを、グループA〜グループDのそれぞれに設定される時間長に応じて、各グループに属する間隔時間tの個数をそれぞれカウントするのである。したがって、カウント値(xA,xB,xC,xD)が得られる。次にステップS41では、ステップS39で検出した分布と参照データ482cとを比較する。つまり、数値fの値に応じてエリア(の番号)を選択し、選択されたエリアに対応して記述されるグループA〜グループDの設定範囲内に、カウント値(xA,xB,xC,xD)が収まるか、または設定値と一致するかどうかをそれぞれ判断する。
【0115】
続いて、ステップS43では、分布は条件を満たすかどうかを判断する。つまり、ステップS41の判断結果が、グループA〜グループDのそれぞれの設定範囲内であるか、または設定値と一致するかどうかを判断する。ここで、すべての設定範囲または設定値を満たす場合には、分布は条件を満たす(周波数分布が一致する)と判断され、いずれか1つの設定範囲または設定値でも満たさない場合には、分布は条件を満たさない(周波数分布が一致しない)と判断される。ステップS43で“YES”であれば、つまり分布が条件を満たす場合には、息吹きかけ音に近いとみなして、図10に示すステップS49に進む。しかし、ステップS43で“NO”であれば、つまり分布が条件を満たさない場合には、息吹きかけ音でないと判別して、ステップS45で、息吹きかけ音擬制フラグ482eをオフし、さらに、ステップS47で、息吹きかけ音認識フラグ482fをオフして、図10に示すように、息吹きかけ判別処理をリターンする。
【0116】
図10に示すように、ステップS49では、息吹きかけ音擬制フラグ482eがオンであるかどうかを判断する。つまり、2フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS49で“YES”であれば、つまり息吹きかけ音擬制フラグ482eがオンであれば、息吹きかけ音と判別し、ステップS51で、息吹きかけ音認識フラグ482fをオンし、ステップS53で、数1および数2に従って、息の強さSおよび息の及ぶ距離dを算出して、息吹きかけ判別処理をリターンする。一方、ステップS49で“NO”であれば、つまり息吹きかけ音擬制フラグ482eがオフであれば、息吹きかけに近いとみなされたフレームが連続していないと判断し、ステップS55で、息吹きかけ音擬制フラグ482eをオンして、息吹きかけ判別処理をリターンする。
【0117】
第1実施例によれば、ゼロクロスの間隔時間の分布が予め設定された分布と一致し、その状態が所定時間連続するとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に認識することができる。
【0118】
また、第1実施例では、参照データのようなテーブルデータを記憶しておくだけなので、様々な音声素片の波形パターンを記憶しておく場合に比べて、メモリ容量を削減することができる。
【0119】
さらに、第1実施例では、ゼロクロスの間隔時間の分布を調べるだけなので、煩わしい演算処理が不要であり、したがってCPUの処理負担を軽減することができる。
【0120】
さらにまた、入力される音声波形のゼロクロスの個数に応じて、息または風の強さを設定するので、簡単に息や風の強さを設定(検出)できる。さらには、息や風の強さで異なるゲーム処理(画像処理)を実行するので、ゲームの面白みを増すことができる。
【0121】
なお、この第1実施例では、2つのLCDを備えるゲーム装置について説明したが、1つのLCDのみが設けられればよい。また、タッチパネルは用いなくてもよい。
<第2実施例>
第2実施例のゲーム装置10は、息吹きかけ判別処理が異なる以外は、第1実施例のゲーム装置10と同じであるため、重複した説明は省略する。この第2実施例では、入力された音声波形についてのゼロクロスの間隔時間tの最大値と最小値とに基づいて、息吹きかけ音か否かを判別(認識)するようにしてある。したがって、第1実施例で示したような参照データ482dは不要であり、メモリ容量を削減することができる。具体的な息吹きかけ判別処理のフロー図が図11および図12に示される。ただし、第1実施例で説明した処理と同じ処理については簡単に説明することにする。また、第2実施例の息吹きかけ判別処理では、息の音声に近いとみなされる期間が3フレーム以上継続したときに、息による音声であると判別するようにしてある。したがって、第1実施例で示した息吹きかけ音擬制フラグ482eに変えて、息の音声に近いとみなされる期間(フレーム数)をカウントするためのカウンタ(図示せず)が、たとえば、RAM482のデータ記憶領域482に設けられる。
【0122】
図11を参照して、CPUコア42は息吹きかけ判別処理を開始すると、ステップS61で、音声検出処理を実行する。ここで、ノイズゲート処理が実行されるは、第1実施例の場合(S31)と同様である。続くステップS63では、バッファ内の振幅ゼロの部分をマイナスからプラスに交差した回数をカウントし、直近の8フレーム分の回数を8倍した値を数値fとして保存する。そして、ステップS65で、数値fが98から1883の間に収まるかどうかを判断する。ステップS65で“NO”であれば、そのままステップS73に進む。一方、ステップS65で“YES”であれば、ステップS67で、1フレーム分の音声波形に含まれる各交差間の間隔時間tを計測する。
【0123】
続くステップS69では、間隔時間tの最大値(zero−cross−max)と最小値(zero−cross−min)との比率(zero−cross−max/zero−cross−min)を算出する。そして、ステップS71では、ステップS69で算出した比率が第1所定値(ここでは、7.0)以上であり、かつ最大値が第2所定値(ここでは、50(1/8000sec))以上であるかどうかを判断する。つまり、ゼロクロスの間隔時間tが所定の条件を満たすかどうかを判断するのである。ステップS71で“YES”であれば、つまり比率が7.0以上であり、かつ最大値が50(1/8000sec)以上である場合には、息吹きかけ音に近いとみなして、図12に示すステップS77に進む。しかし、ステップS71で“NO”であれば、つまり比率が7.0未満、または最大値が50(1/8000sec)未満或いはその両方である場合には、息吹きかけ音でないと判別し、ステップS73で、息吹きかけ音カウンタをリセット(カウント値=0)し、ステップS75で、息吹きかけ音認識フラグ482fをオフして、図12に示すように、息吹きかけ判別処理をリターンする。なお、第1所定値および第2所定値は、実験等により、経験的に得られた値である。
【0124】
図12に示すように、ステップS77では、息吹きかけ音カウンタのカウント値が3であるかどうかを判断する。つまり、3フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップS77で“YES”であれば、つまり息吹きかけ音カウンタのカウント値が3であれば(3以上であれば)、息吹きかけ音と判別し、ステップS79で、息吹きかけ音フラグ482fをオンし、ステップS81で、数1および数2に従って、息(風)の強さSおよび影響を与える距離dを算出して、息吹きかけ判別処理をリターンする。一方、ステップS77“NO”であれば、つまり息吹きかけ音カウンタのカウント値が3でなければ(3未満であれば)、ステップS83で、息吹きかけ音カウンタをインクリメントして、息吹きかけ判別処理をリターンする。
【0125】
第2実施例においても、第1実施例と同様に、入力される音声波形のゼロクロスの個数が一定範囲内であり、ゼロクロスの間隔時間の最大値および最小値が所定時間連続して所定の条件を満たすとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に判別することができる。
【0126】
また、第2実施例では、参照データを設ける必要がないため、第1実施例で示した場合よりもさらにメモリ容量を削減することができる。
【図面の簡単な説明】
【0127】
【図1】図1はこの発明のゲーム装置の一例を示す図解図である。
【図2】図2は図1に示すゲーム装置の電気的な構成を示すブロック図である。
【図3】図3はゲーム画面の一例を示す図解図である。
【図4】図4はマイクから入力される息による音声の音声波形の時間変化を示すグラフである。
【図5】図5は図4に示す音声波形の一部を拡大したグラフである。
【図6】図6は息吹きかけ判別処理に用いる参照データの具体的な内容を示す図解図である。
【図7】図7は図2に示すゲーム装置に内蔵されるRAMのメモリマップを示す図解図である。
【図8】図8は図2に示すCPUコアのゲーム処理を示すフロー図である。
【図9】図9は図2に示すCPUコアの息吹きかけ判別処理の一部を示すフロー図である。
【図10】図10は図9に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【図11】図11はこの発明の第2実施例の息吹きかけ判別処理の一部を示すフロー図である。
【図12】図12は図11に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【符号の説明】
【0128】
10 …ゲーム装置
12,14 …LCD
16,16a,16b …ハウジング
20 …操作スイッチ
22 …タッチパネル
24 …スティック
28 …メモリカード
28a …ROM
28b,48 …RAM
34 …マイク
40 …電子回路基板
42 …CPUコア
50,52 …GPU
54 …I/F回路
56,58 …VRAM
60 …LCDコントローラ
【特許請求の範囲】
【請求項1】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムであって、
前記判別装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、および
前記時間計測ステップによって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる、息吹きかけ判別プログラム。
【請求項2】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項1記載の息吹きかけ判別プログラム。
【請求項3】
前記周波数分布検出ステップは、前記各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項2記載の息吹きかけ判別プログラム。
【請求項4】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第1所定値以上であり、かつ前記最大値が第2所定値以上であるとき、前記入力された音声を息によるものと判断する、請求項1記載の息吹きかけ判別プログラム。
【請求項5】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、および
前記時間計測手段によって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断手段を備える、息吹きかけ判別装置。
【請求項6】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、
前記時間計測ステップによって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断ステップ、および
前記音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理ステップを実行させる、ゲームプログラム。
【請求項7】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項6記載のゲームプログラム。
【請求項8】
前記周波数分布検出ステップは、前記時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項7記載のゲームプログラム。
【請求項9】
すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、
前記音声判断ステップは、前記継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項8記載のゲームプログラム。
【請求項10】
前記ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、
前記音声判断ステップは、前記ゼロクロスの数が予め設定された範囲内にあると判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項6記載のゲームプログラム。
【請求項11】
前記ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う、請求項10記載のゲームプログラム。
【請求項12】
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う、請求項11記載のゲームプログラム。
【請求項13】
前記ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う、請求項6記載のゲームプログラム。
【請求項14】
前記ゼロクロスは、前記波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である、請求項6記載のゲームプログラム。
【請求項15】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第1所定値以上であり、かつ前記最大値が第2所定値以上であるとき、前記入力された音声を前記操作者の息によるものと判断する、請求項6記載のゲームプログラム。
【請求項16】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、
前記時間計測手段によって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断手段、および
前記音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理手段を実行させる、ゲーム装置。
【請求項1】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムであって、
前記判別装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、および
前記時間計測ステップによって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる、息吹きかけ判別プログラム。
【請求項2】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項1記載の息吹きかけ判別プログラム。
【請求項3】
前記周波数分布検出ステップは、前記各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項2記載の息吹きかけ判別プログラム。
【請求項4】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第1所定値以上であり、かつ前記最大値が第2所定値以上であるとき、前記入力された音声を息によるものと判断する、請求項1記載の息吹きかけ判別プログラム。
【請求項5】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、および
前記時間計測手段によって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断手段を備える、息吹きかけ判別装置。
【請求項6】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、
前記時間計測ステップによって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断ステップ、および
前記音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理ステップを実行させる、ゲームプログラム。
【請求項7】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項6記載のゲームプログラム。
【請求項8】
前記周波数分布検出ステップは、前記時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項7記載のゲームプログラム。
【請求項9】
すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、
前記音声判断ステップは、前記継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項8記載のゲームプログラム。
【請求項10】
前記ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、
前記音声判断ステップは、前記ゼロクロスの数が予め設定された範囲内にあると判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項6記載のゲームプログラム。
【請求項11】
前記ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う、請求項10記載のゲームプログラム。
【請求項12】
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う、請求項11記載のゲームプログラム。
【請求項13】
前記ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う、請求項6記載のゲームプログラム。
【請求項14】
前記ゼロクロスは、前記波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である、請求項6記載のゲームプログラム。
【請求項15】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第1所定値以上であり、かつ前記最大値が第2所定値以上であるとき、前記入力された音声を前記操作者の息によるものと判断する、請求項6記載のゲームプログラム。
【請求項16】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、
前記時間計測手段によって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断手段、および
前記音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理手段を実行させる、ゲーム装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【公開番号】特開2006−145851(P2006−145851A)
【公開日】平成18年6月8日(2006.6.8)
【国際特許分類】
【出願番号】特願2004−336036(P2004−336036)
【出願日】平成16年11月19日(2004.11.19)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
【公開日】平成18年6月8日(2006.6.8)
【国際特許分類】
【出願日】平成16年11月19日(2004.11.19)
【出願人】(000233778)任天堂株式会社 (1,115)
【Fターム(参考)】
[ Back to top ]