(57)【要約】    【構成】  ゲーム装置１０は操作スイッチ２０およびマイク３４を含み、プレイヤは、操作スイッチの入力または音声の入力により、プレイヤオブジェクトを直感的に操作する。マイク３４を通して入力された音声の音声波形に含まれるゼロクロスの個数が検出されるとともに、各ゼロクロスの間隔時間が検出される。間隔時間の分布すなわち周波数分布が、予め記憶してある息の音声についての間隔時間の分布（周波数分布）と一致するかどうかを検出する。一致する場合には、息の音声として認識され、息（風）に基づくゲーム処理が実行される。たとえば、息や風を演出したゲーム画面がＬＣＤ１２に表示される。    【効果】  簡易な処理で正確に息の音声を認識できる。【選択図】  図１
2006145851.tif 000002
【特許請求の範囲】
【請求項１】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムであって、
前記判別装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、および
前記時間計測ステップによって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる、息吹きかけ判別プログラム。
【請求項２】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項１記載の息吹きかけ判別プログラム。
【請求項３】
前記周波数分布検出ステップは、前記各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項２記載の息吹きかけ判別プログラム。
【請求項４】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第１所定値以上であり、かつ前記最大値が第２所定値以上であるとき、前記入力された音声を息によるものと判断する、請求項１記載の息吹きかけ判別プログラム。
【請求項５】
少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、および
前記時間計測手段によって計測された各時間に基づいて前記検出された音声が操作者の息であるかどうかを判断する音声判断手段を備える、息吹きかけ判別装置。
【請求項６】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムであって、
前記ゲーム装置のプロセサに、
外部から入力される音声を単位時間毎に検出する入力音声検出ステップ、
前記入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測ステップ、
前記時間計測ステップによって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断ステップ、および
前記音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理ステップを実行させる、ゲームプログラム。
【請求項７】
前記音声判断ステップは、前記時間計測ステップによって計測された各時間に基づいて前記波形データの周波数分布を検出する周波数分布検出ステップ、および前記周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む、請求項６記載のゲームプログラム。
【請求項８】
前記周波数分布検出ステップは、前記時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、
前記周波数分布判断ステップは、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、
前記音声判断ステップは、前記周波数分布判断ステップによって、前記複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、前記検出された音声が息によるものであると判断する、請求項７記載のゲームプログラム。
【請求項９】
すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、
前記音声判断ステップは、前記継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項８記載のゲームプログラム。
【請求項１０】
前記ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、
前記音声判断ステップは、前記ゼロクロスの数が予め設定された範囲内にあると判断されたとき、前記検出された音声を操作者の息によるものであると判断する、請求項６記載のゲームプログラム。
【請求項１１】
前記ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う、請求項１０記載のゲームプログラム。
【請求項１２】
前記ゲーム処理ステップは、前記強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う、請求項１１記載のゲームプログラム。
【請求項１３】
前記ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う、請求項６記載のゲームプログラム。
【請求項１４】
前記ゼロクロスは、前記波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である、請求項６記載のゲームプログラム。
【請求項１５】
前記各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、
前記音声判断ステップは、前記比率検出ステップによって検出された比率が第１所定値以上であり、かつ前記最大値が第２所定値以上であるとき、前記入力された音声を前記操作者の息によるものと判断する、請求項６記載のゲームプログラム。
【請求項１６】
外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、
外部から入力される音声を単位時間毎に検出する入力音声検出手段、
前記入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する時間計測手段、
前記時間計測手段によって計測された時間に基づいて前記検出された音声が操作者の息によるものか否かを判断する音声判断手段、および
前記音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行うゲーム処理手段を実行させる、ゲーム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関し、特にたとえば、外部から入力される音声が息によるものであるか否かを判別する、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置に関する。
【背景技術】
【０００２】
従来の息吹きかけ判別装置の一例が特許文献１に開示される。この特許文献１によれば、息の音声を構成する音声素片を予めメモリなどに格納しておき、マイクロフォンからの入力音声の音声素片とメモリに格納されている音声素片とを照合することにより、息の吹きかけ・吸い込みの音声であるか否かが判断される。
【特許文献１】特開平１１−１４３４８４号
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、この背景技術では、息の音声を構成する音声素片を予めメモリなどに記憶しておく必要があるため、メモリ容量が増大してしまうという問題がある。一般的に、息の音声は、それを発するユーザの体格や息を吹きかける強さ等によってその波形パターンが変化するものである。つまり、背景技術のような手法で、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。一方、メモリ容量を抑えるために、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【０００４】
また、息の吹きかけを認識する他の方法として、高速フーリエ変換処理（ＦＦＴ）を用いた方法も考えられる。この手法を用いれば、周波数帯域分布（スペクトラム）をかなり正確に測定できるので、息の吹きかけのスペクトラムを予めメモリ等に記憶しておき、入力された音声のスペクトラムと比較することによって息の吹きかけか否かを認識することができる。しかし、この方法では、複雑な計算処理が必要であるため、計算処理の負担が増大してしまう。
【０００５】
それゆえに、この発明の主たる目的は、新規な、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【０００６】
この発明の他の目的は、息の吹きかけを精度よく認識でき、しかも処理負担を軽減できる、息吹きかけ判別プログラム、息吹きかけ判別装置、ゲームプログラムおよびゲーム装置を提供することである。
【課題を解決するための手段】
【０００７】
請求項１の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置の息吹きかけ判別プログラムである。この息吹きかけ判別プログラムは、判別装置のプロセサに、入力音声検出ステップ、時間計測ステップ、および音声判断ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。そして、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する音声判断ステップを実行させる。
【０００８】
請求項１の発明では、息吹きかけ判別プログラム（４８０ｅ：実施例で想到する参照符号。以下、同じ。）は、息吹きかけ判別装置（１０）のプロセサによって実行される。この息吹きかけ判別装置は、少なくともマイク（３４）を備え、外部から入力される音声が息によるものであるか否かを判別する。具体的には、息吹きかけ判別プログラムは、入力音声検出ステップ（Ｓ３１，Ｓ６１）、時間計測ステップ（Ｓ３７，Ｓ６７）および音声判断ステップ（Ｓ３９，Ｓ４１，Ｓ４３，Ｓ７１）を、判別装置のプロセサ（４２）に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。
【０００９】
請求項１の発明によれば、音声波形に共通する特徴である各ゼロクロス間の時間に基づいて息による音声か否かを判別するので、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【００１０】
請求項２の発明は請求項１に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【００１１】
請求項２の発明では、音声判断ステップは、周波数分布検出ステップ（Ｓ３９）および周波数分布判断ステップ（Ｓ４１）を含む。周波数分布検出ステップは、時間計測ステップによって検出された各時間に基づいて波形データの周波数分布を検出する。周波数分布判断ステップは、周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する。
【００１２】
請求項２の発明によれば、各ゼロクロス間の時間に基づいて波形データすなわち入力された音声の周波数分布を検出し、この周波数分布が予め設定した条件を満たすか否かを判断するだけなので、比較的少ない処理で正確に息による音声か否かを認識することができる。
【００１３】
請求項３の発明は請求項２に従属し、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【００１４】
請求項３の発明では、周波数分布検出ステップは、各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含む。周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内（設定値の場合もある。）であるかどうかを判断する。つまり、予め設定した条件を満たすかどうかを判断する。音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内であると判断されたとき、つまり、予め設定した条件を満たすとき、入力された音声が息によるものであると判断する。
【００１５】
請求項３の発明によれば、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるときには、息の音声であると判断するので、息の音声を精度よく認識することができる。
【００１６】
請求項４の発明は請求項１に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第１所定値以上であり、かつ最大値が第２所定値以上であるとき、入力された音声を息によるものと判断する。
【００１７】
請求項４の発明では、比率検出ステップ（Ｓ６９）は、各時間の時間長の最大値と最小値との比率（最大値／最小値）を検出する。音声判断ステップは、検出された比率が第１所定値以上であり、かつ最大値が第２所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第１所定値および第２所定値は経験的に得られた値である。
【００１８】
請求項４の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【００１９】
請求項５の発明は、少なくともマイクを備え、このマイクを通して外部から入力される音声が息によるものであるか否かを判別する息吹きかけ判別装置であって、入力音声検出手段、時間計測手段、および音声判断手段を備える、息吹きかけ判別装置である。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された各時間に基づいて検出された音声が操作者の息であるかどうかを判断する。
【００２０】
請求項５の発明においても、請求項１の発明と同様に、少ない処理負担で息の音声を正確に認識することができる。
【００２１】
請求項６の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置のゲームプログラムである。このゲームプログラムは、ゲーム装置のプロセサに、入力音声検出ステップ、時間計測ステップ、音声判断ステップ、およびゲーム処理ステップを実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【００２２】
請求項６の発明では、ゲームプログラムは、ゲーム装置（１０）のプロセサによって実行される。このゲーム装置は、外部から入力される音声に基づいてゲーム処理を行う。具体的には、ゲームプログラムは、入力音声検出ステップ（Ｓ３１，Ｓ６１）、時間計測ステップ（Ｓ３７，Ｓ６７）、音声判断ステップ（Ｓ３９，Ｓ４１，Ｓ４３，Ｓ７１）およびゲーム処理ステップ（Ｓ１１）を、判別装置のプロセサ（４２）に実行させる。入力音声検出ステップは、外部から入力される音声を単位時間毎に検出する。時間計測ステップは、入力音声検出ステップによって検出された音声の波形データについての各ゼロクス間の時間を計測する。音声判断ステップは、時間計測ステップによって計測された各時間に基づいて、検出された音声が操作者の息によるものであるかどうかを判断する。ゲーム処理ステップは、音声判断ステップによって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。たとえば、プレイヤオブジェクトに息を吹く動作をさせたり、プレイヤオブジェクトの動作によって風を発生させたりする。
【００２３】
請求項６の発明によれば、請求項１の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【００２４】
請求項７の発明は請求項６に従属し、音声判断ステップは、時間計測ステップによって計測された各時間に基づいて波形データの周波数分布を検出する周波数分布検出ステップ、および周波数分布検出ステップによって検出された周波数分布が予め設定した条件を満たすかどうかを判断する周波数分布判断ステップを含む。
【００２５】
請求項７の発明においても、請求項２の発明と同様に、比較的少ない処理で正確に息による音声か否かを認識することができる。
【００２６】
請求項８の発明は請求項７に従属し、周波数分布検出ステップは、時間計測ステップによって計測された各時間の時間長に基づいて複数のグループに分類する時間長分類ステップを含み、周波数分布判断ステップは、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあるかどうかを判断し、音声判断ステップは、周波数分布判断ステップによって、複数のグループに分類された時間長の数の各々がグループ毎に予め設定された範囲内にあると判断されたとき、検出された音声が息によるものであると判断する。
【００２７】
請求項８の発明においても、請求項３の発明と同様に、息の音声を精度よく認識することができる。
【００２８】
請求項９の発明は請求項８に従属し、すべてのグループについて予め設定された範囲内であると判断された状態が所定時間以上継続して行われたか否かを判断する継続状態判断ステップをさらに実行させ、音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【００２９】
請求項９の発明では、継続状態判断ステップ（Ｓ４９）は、すべてのグループについて予め設定された範囲内であると判断された状態すなわち息の音声であるとみなされる状態が所定時間以上継続して行われたか否かを判断する。音声判断ステップは、継続状態判断ステップによって所定時間以上継続されたことが判断されたとき、検出された音声を操作者の息によるものであると判断する。
【００３０】
請求項９の発明によれば、息の音声であるとみなされる状態が所定時間以上継続するとき、息の音声であると認識するので、息の音声であるか否かを精度良く認識することができる。
【００３１】
請求項１０の発明は請求項６に従属し、ゼロクロスの数をカウントするゼロクロス数カウントステップをさらに実行させ、音声判断ステップは、ゼロクロスの数が予め設定された範囲内にあると判断されたとき、検出された音声を操作者の息によるものであると判断する。
【００３２】
請求項１０の発明では、ゼロクロス数カウントステップ（Ｓ３３，Ｓ６３）は、ゼロクロスの数をカウントする。音声判断ステップは、ゼロクロスの数があらかじめ設定された範囲内にあると判断されたとき（Ｓ３５，Ｓ６５で“ＹＥＳ”）、検出された音声を操作者の息によるものであると判断する。
【００３３】
請求項１０の発明によれば、ゼロクロスの数が予め設定された範囲内にあるとき、息の音声であると判断するので、息による音声を精度良く認識することができる。
【００３４】
請求項１１の発明は請求項１０に従属し、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息の強さを設定する強さ設定ステップをさらに実行させ、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【００３５】
請求項１１の発明では、強さ設定ステップ（Ｓ１７，Ｓ５３，Ｓ８１）は、ゼロクロス数カウントステップによってカウントされたゼロクロスの数に基づいて息ないし風の強さを設定する。ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに基づくゲーム処理を行う。
【００３６】
請求項１１の発明によれば、ゼロクロスの数に応じて息の強さを変化させるので、息の強さを容易に検出することができる。
【００３７】
請求項１２の発明は請求項１１に従属し、ゲーム処理ステップは、強さ設定ステップによって設定された息の強さに応じて、ゲーム空間内での息または風の影響が及ぶ範囲を変化させるようにゲーム処理を行う。
【００３８】
請求項１２の発明では、ゲーム処理ステップは、息の強さに応じて、ゲーム空間内で息または風の影響が及ぶ範囲（距離）を変化させるようにゲーム処理を行う。また、息または風が及ぼす影響を変化させるようにゲーム処理を行うこともできる。
【００３９】
請求項１２の発明によれば、ゲーム空間における息や風の影響を変化させることができるので、ゲームの面白みを増すことができる。
【００４０】
請求項１３の発明は請求項６に従属し、ゲーム処理ステップは、ゲームに登場するキャラクタが息を吹きかけるように動作するようにゲーム処理を行う。
【００４１】
請求項１３の発明では、ゲーム処理ステップは、ゲームに登場するキャラクタ（１０２）が息を吹きかけるように動作するようにゲーム処理を行う。たとえば、キャラクタの口元から吹き出すように息オブジェクト（１０４）を表示し、オブジェクト（１０６）が息または風の影響を受ける様子を表示することができる。
【００４２】
請求項１３の発明によれば、操作者は直感的にゲームを操作することができる。
【００４３】
請求項１４の発明は請求項６に従属し、ゼロクロスは波形データの振幅値がマイナスからプラスまたはプラスからマイナスへ変化する境界点である。
【００４４】
請求項１４の発明では、ゼロクロスは、波形データの振幅値がマイナスからプラス、またはプラスからマイナスへ変化する境界点である。つまり、検出すべきゼロクロスの数が減少される。
【００４５】
請求項１４の発明では、検出すべきゼロクロスの数を減少させるので、処理負担を軽減することができる。
【００４６】
請求項１５の発明は請求項６に従属し、各時間の時間長の最大値と最小値との比率を検出する比率検出ステップをさらに実行させ、音声判断ステップは、比率検出ステップによって検出された比率が第１所定値以上であり、かつ最大値が第２所定値以上であるとき、入力された音声を操作者の息によるものと判断する。
【００４７】
請求項１５の発明では、比率検出ステップ（Ｓ６９）は、各時間の時間長の最大値と最小値との比率（最大値／最小値）を検出する。音声判断ステップは、検出された比率が第１所定値以上であり、かつ最大値が第２所定値以上であるとき、つまり予め設定された条件を満たすとき、入力された音声が息によるものと判断する。たとえば、第１所定値および第２所定値は経験的に得られた値である。
【００４８】
請求項１５の発明においても、少ない処理負担で、息の音声を正確に認識することができる。
【００４９】
請求項１６の発明は、外部から入力される音声に基づいてゲーム処理を行うゲーム装置であって、入力音声検出手段、時間計測手段、音声判断手段、およびゲーム処理手段を備える。入力音声検出手段は、外部から入力される音声を単位時間毎に検出する。時間計測手段は、入力音声検出手段によって検出された音声の波形データについての各ゼロクロス間の時間を計測する。音声判断手段は、時間計測手段によって計測された時間に基づいて検出された音声が操作者の息によるものか否かを判断する。そして、ゲーム処理手段は、音声判断手段によって息によるものであると判断されたとき、当該息に基づくゲーム処理を行う。
【００５０】
請求項１６の発明においても、請求項６の発明と同様に、少ない処理負担で息吹きかけか否かを正確に認識することができる。
【発明の効果】
【００５１】
この発明によれば、音声波形の各ゼロクロス間の時間に基づいて息の音声であるか否かを判別するので、少ない処理負担で息の吹きかけであるか否かを正確に認識することができる。
【００５２】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００５３】
＜第１実施例＞
図１を参照して、この発明の第１実施例であるゲーム装置１０は、第１の液晶表示器（ＬＣＤ）１２および第２のＬＣＤ１４を含み、ＬＣＤ１２およびＬＣＤ１４は、所定の配置位置となるようにハウジング1６に収納される。たとえば、ハウジング１６は、上側ハウジング１６ａと下側ハウジング１６ｂとによって構成され、ＬＣＤ１２は上側ハウジング１６ａに収納され、ＬＣＤ１４は下側ハウジング１６ｂに収納される。したがって、ＬＣＤ１２とＬＣＤ１４とは縦（上下）に並ぶように近接して配置される。
【００５４】
なお、この第１実施例では、表示器としてＬＣＤを用いるようにしてあるが、ＬＣＤに代えて、ＥＬ(Electronic Luminescence)ディスプレイやプラズマディスプレイを用いるようにしてもよい。
【００５５】
また、ゲーム装置１０は、後述するように、息吹きかけ判別プログラム（図７参照）を記憶し、息吹きかけ装置としても機能する。
【００５６】
図１からも分かるように、上側ハウジング１６ａは、ＬＣＤ１２の平面形状よりも少し大きな平面形状を有し、一方主面からＬＣＤ１２の表示面を露出するように開口部が形成される。一方、下側ハウジング１６ｂは、その平面形状が上側ハウジング１６ａよりも横長に選ばれ、横方向の略中央部にＬＣＤ１４の表示面を露出するように開口部が形成される。また、下側ハウジング１６ｂには、音抜き孔１８が形成されるとともに、操作スイッチ２０（２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ，２０Ｌおよび２０Ｒ）が設けられる。
【００５７】
また、上側ハウジング１６ａと下側ハウジング１６ｂとは、上側ハウジング１６ａの下辺（下端）と下側ハウジング１６ｂの上辺（上端）の一部とが回動可能に連結されている。したがって、たとえば、ゲームをプレイしない場合には、ＬＣＤ１２の表示面とＬＣＤ１４の表示面とが対面するように、上側ハウジング１６ａを回動させて折りたたんでおけば、ＬＣＤ１２の表示面およびＬＣＤ１４の表示面に傷がつくなどの破損を防止することができる。ただし、上側ハウジング１６ａと下側ハウジング１６ｂとは、回動可能に連結せずに、それらを一体的（固定的）に設けたハウジング１６を形成するようにしてもよい。
【００５８】
操作スイッチ２０は、方向指示スイッチ（十字スイッチ）２０ａ，スタートスイッチ２０ｂ、セレクトスイッチ２０ｃ、動作スイッチ（Ａボタン）２０ｄ、動作スイッチ（Ｂボタン）２０ｅ、動作スイッチ（Ｌボタン）２０Ｌおよび動作スイッチ（Ｒボタン）２０Ｒを含む。スイッチ２０ａ，２０ｂおよび２０ｃは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の左側に配置される。また、スイッチ２０ｄおよび２０ｅは、下側ハウジング１６ｂの一方主面であり、ＬＣＤ１４の右側に配置される。さらに、スイッチ２０Ｌおよびスイッチ２０Ｒは、それぞれ、下側ハウジング１６ｂの上端（天面）の一部であり、上側ハウジング１６ａとの連結部以外に当該連結部を挟むように、左右に配置される。
【００５９】
方向指示スイッチ２０ａは、ディジタルジョイスティックとして機能し、４つの押圧部の１つを操作することによって、操作者（プレイヤ）によって操作可能なプレイヤキャラクタ(またはプレイヤオブジェクト)の移動方向を指示したり、カーソルの移動方向を指示したりする等に用いられる。スタートスイッチ２０ｂは、プッシュボタンで構成され、ゲームを開始（再開）したり、一時停止したりする等に用いられる。セレクトスイッチ２０ｃは、プッシュボタンで構成され、ゲームモードの選択等に用いられる。
【００６０】
動作スイッチ２０ｄすなわちＡボタンは、プッシュボタンで構成され、方向指示以外の動作、すなわち、プレイヤキャラクタに打つ（パンチ）、投げる、つかむ（取得）、乗る、ジャンプするなどの任意のアクションをさせることができる。たとえば、アクションゲームにおいては、ジャンプ、パンチ、武器を動かす等を指示することができる。また、ロールプレイングゲーム(ＲＰＧ)やシミュレーションＲＰＧにおいては、アイテムの取得、武器やコマンドの選択および決定等を指示することができる。動作スイッチ２０ｅすなわちＢボタンは、プッシュボタンで構成され、セレクトスイッチ２０ｃで選択したゲームモードの変更やＡボタン２０ｄで決定したアクションの取り消し等のために用いられる。
【００６１】
動作スイッチ（Ｌボタン）２０Ｌおよび動作スイッチ（Ｒボタン）２０Ｒは、プッシュボタンで構成され、Ｌボタン２０ＬおよびＲボタン２０Ｒは、Ａボタン２０ｄおよびＢボタン２０ｅと同様の操作に用いることができ、また、Ａボタン２０ｄおよびＢボタン２０ｅの補助的な操作に用いることができる。
【００６２】
また、ＬＣＤ１４の上面には、タッチパネル２２が装着される。タッチパネル２２としては、たとえば、抵抗膜方式、光学式(赤外線方式)および静電容量結合式のいずれかの種類のものを用いることができる。また、タッチパネル２２は、その上面をスティック２４ないしはペン（スタイラスペン）或いは指（以下、これらを「スティック２４等」という場合がある。）で、押圧したり、撫でたり、触れたりすることにより操作すると、スティック２４等の操作（タッチ入力）位置の座標（タッチ座標）を検出して、検出したタッチ座標に対応する座標データを出力する。
【００６３】
たとえば、ＬＣＤ１４（ＬＣＤ１２も同じ、または略同じ。）の表示面の解像度は２５６ｄｏｔ×１９２ｄｏｔであり、タッチパネル２２の検出面の検出精度もその解像度に対応して２５６ｄｏｔ×１９２ｄｏｔとしてある。ただし、タッチパネル２２の検出精度は、ＬＣＤ１４の表示画面の解像度よりも低くてもよく、高くてもよい。
【００６４】
ＬＣＤ１２およびＬＣＤ１４には異なるゲーム画像（ゲーム画面）を表示することができる。たとえば、レースゲームでは一方のＬＣＤに運転席からの視点による画面を表示し、他方のＬＣＤにレース（コース）全体の画面を表示することができる。また、ＲＰＧでは、一方のＬＣＤにマップやプレイヤキャラクタ等のキャラクタを表示し、他方のＬＣＤにプレイヤキャラクタが所有するアイテムを表示することができる。さらに、パズルゲームでは、一方のＬＣＤ（たとえば、ＬＣＤ１２）にパズル全体（ゲームマップ）を表示し、他方のＬＣＤ（たとえば、ＬＣＤ１４）には、ゲームマップの一部（当該パズルゲームを操作するための画面）を表示することができる。たとえば、ゲームマップの一部を表示した画面では、文字や図形等の画像を描画したり、表示画像（アイコン）等を移動させたりすることができる。さらには、２つのＬＣＤ１２およびＬＣＤ１４を合わせて１つの画面として用いることにより、プレイヤキャラクタが倒さなければならない巨大な怪物（敵キャラクタ）を表示することもできる。
【００６５】
したがって、プレイヤはスティック２４等でタッチパネル２２を操作することにより、ＬＣＤ１４に表示されるプレイヤキャラクタ、敵キャラクタ、アイテムキャラクタ、文字情報、アイコン等のキャラクタ画像を指示（指定）したり、移動させたり、コマンドを選択したり、さらには、文字や図形（画像）を描画したりすることができる。また、３次元ゲーム空間に設けられる仮想カメラ（視点）の方向を変化させたり、ゲーム画面（ゲームマップ）をスクロール(徐々に移動表示)させたりすることもできる。
【００６６】
このように、ゲーム装置１０は、２画面分の表示部となるＬＣＤ１２およびＬＣＤ１４を有し、いずれか一方（第１実施例では、ＬＣＤ１４）の上面にタッチパネル２２が設けられるので、２画面（１２，１４）と２系統の操作部（２０，２２）とを有する構成になっている。
【００６７】
また、この第１実施例では、スティック２４は、たとえば上側ハウジング１６ａの側面（右側面）近傍に設けられる収納部（収納穴）２６に収納することができ、必要に応じて取り出される。ただし、スティック２４を設けない場合には、収納部２６を設ける必要がない。
【００６８】
さらに、ゲーム装置１０はメモリカード（またはゲームカートリッジ）２８を含み、このメモリカード２８は着脱自在であり、下側ハウジング１６ｂの裏面ないしは下端（底面）に設けられる挿入口３０から挿入される。図１では省略するが、挿入口３０の奥部には、メモリカード２８の挿入方向先端部に設けられるコネクタ（図示せず）と接合するためのコネクタ４６（図２参照）が設けられており、したがって、メモリカード２８が挿入口３０に挿入されると、コネクタ同士が接合され、ゲーム装置１０のＣＰＵコア４２（図２参照）がメモリカード２８にアクセス可能となる。
【００６９】
さらにまた、ゲーム装置１０はマイク３４を含み、たとえば、マイク３４は下側ハウジング１６ｂのＬＣＤ１４の左斜め下方に設けられる。したがって、たとえば、マイク３４から音声（プレイヤないしユーザの音声）が入力されると、これに応じて、ゲーム装置１０はゲーム処理を実行することができる。
【００７０】
なお、図１では表現できないが、下側ハウジング１６ｂの音抜き孔１８と対応する位置であり、この下側ハウジング１６ｂの内部にはスピーカ３２（図２参照）が設けられる。
【００７１】
また、図１では省略するが、たとえば、下側ハウジング１６ｂの裏面側には、電池収容ボックスが設けられ、また、下側ハウジング１６ｂの底面側には、電源スイッチ、音量スイッチ、外部拡張コネクタおよびイヤフォンジャックなどが設けられる。
【００７２】
図２はゲーム装置１０の電気的な構成を示すブロック図である。図２を参照して、ゲーム装置１０は電子回路基板４０を含み、この電子回路基板４０にはＣＰＵコア４２等の回路コンポーネントが実装される。ＣＰＵコア４２は、バス４４を介してコネクタ４６に接続されるととともに、ＲＡＭ４８、第１のグラフィック処理ユニット（ＧＰＵ）５０、第２のＧＰＵ５２、入出カインターフエース回路（以下、「Ｉ／Ｆ回路」という。）５４およびＬＣＤコントローラ６０が接続される。
【００７３】
コネコタ４６には、上述したように、メモリカード２８が着脱自在に接続される。メモリカード２８は、ＲＯＭ２８ａおよびＲＡＭ２８ｂを含み、図示は省略するが、ＲＯＭ２８ａおよびＲＡＭ２８ｂは、互いにバスで接続され、さらに、コネクタ４６と接合されるコネクタ（図示せず）に接続される。したがって、上述したように、ＣＰＵコア４２は、ＲＯＭ２８ａおよびＲＡＭ２８ｂにアクセスすることができるのである。
【００７４】
ＲＯＭ２８ａは、ゲーム装置１０で実行すべきゲーム（仮想ゲーム）のためのゲームプログラム、画像（キャラクタ画像、背景画像、アイテム画像、アイコン（ボタン）画像、メッセージ画像など）データおよびゲームに必要な音（音楽）のデータ（音データ）等を予め記憶する。ＲＡＭ（バックアップＲＡＭ）２８ｂは、そのゲームの途中データやゲームの結果データを記憶（セーブ）する。
【００７５】
ＲＡＭ４８は、バッファメモリないしはワーキングメモリとして使用される。つまり、ＣＰＵコア４２は、メモリカード２８のＲＯＭ２８ａに記憶されたゲームプログラム、画像データおよび音データ等をＲＡＭ４８にロードし、ロードしたゲームプログラムを実行する。また、ＣＰＵコア４２は、ゲームの進行に応じて一時的に発生するデータ（ゲームデータやフラグデータ）をＲＡＭ４８に記憶しつつゲーム処理を実行する。
【００７６】
なお、ゲームプログラム、画像データおよび音データ等は、ＲＯＭ２８ａから一度に全部、または部分的かつ順次的に読み出され、ＲＡＭ４８に記憶（ロード）される。
【００７７】
ＧＰＵ５０およびＧＰＵ５２は、それぞれ、描画手段の一部を形成し、たとえばシングルチップＡＳＩＣで構成され、ＣＰＵコア４２からのグラフィックスコマンド（graphics command ：作画命令）を受け、そのグラフィックスコマンドに従ってゲーム画像データを生成する。ただし、ＣＰＵコア４２は、グラフィックスコマンドに加えて、ゲーム画像データの生成に必要な画像生成プログラム（ゲームプログラムに含まれる。）をＧＰＵ５０およびＧＰＵ５２のそれぞれに与える。
【００７８】
また、ＧＰＵ５０には、第１のビデオＲＡＭ（以下、「ＶＲＡＭ」という。）５６が接続され、ＧＰＵ５２には、第２のＶＲＡＭ５８が接続される。ＧＰＵ５０およびＧＰＵ５２が作画コマンドを実行するにあたって必要なデータ（画像データ：キャラクタデータやテクスチャ等のデータ）は、ＧＰＵ５０およびＧＰＵ５２が、それぞれ、第１のＶＲＡＭ５６および第２のＶＲＡＭ５８にアクセスして取得する。なお、ＣＰＵコア４２は、描画に必要な画像データをＧＰＵ５０およびＧＰＵ５２を介して第１のＶＲＡＭ５６および第２のＶＲＡＭ５８に書き込む。ＧＰＵ５０はＶＲＡＭ５６にアクセスして描画のためのゲーム画像データを作成し、ＧＰＵ５２はＶＲＡＭ５８にアクセスして描画のためのゲーム画像データを作成する。
【００７９】
ＶＲＡＭ５６およびＶＲＡＭ５８は、ＬＣＤコントローラ６０に接続される。ＬＣＤコントローラ６０はレジスタ６２を含み、レジスタ６２はたとえば１ビットで構成され、ＣＰＵコア４２の指示によって「０」または「１」の値（データ値）を記憶する。ＬＣＤコントローラ６０は、レジスタ６２のデータ値が「０」である場合には、ＧＰＵ５０によって作成されたゲーム画像データをＬＣＤ１２に出力し、ＧＰＵ５２によって作成されたゲーム画像データをＬＣＤ１４に出力する。また、ＬＣＤコントローラ６０は、レジスタ６２のデータ値が「１」である場合には、ＧＰＵ５０によって作成されたゲーム画像データをＬＣＤ１４に出力し、ＧＰＵ５２によって作成されたゲーム画像データをＬＣＤ１２に出力する。
【００８０】
なお、ＬＣＤコントローラ６０は、ＶＲＡＭ５６およびＶＲＡＭ５８から直接ゲーム画像データを読み出したり、ＧＰＵ５０およびＧＰＵ５２を介してＶＲＡＭ５６およびＶＲＡＭ５８からゲーム画像データを読み出したりする。
【００８１】
Ｉ／Ｆ回路５４には、操作スイッチ２０、タッチパネル２２、スピーカ３２およびマイク３４が接続される。ここで、操作スイッチ２０は、上述したスイッチ２０ａ，２０ｂ，２０ｃ，２０ｄ，２０ｅ，２０Ｌおよび２０Ｒであり、操作スイッチ２０が操作されると、対応する操作信号がＩ／Ｆ回路５４でディジタルデータ（操作データ）に変換され、ＣＰＵコア４２に入力される。また、タッチパネル２２からの座標データがＩ／Ｆ回路５４を介してＣＰＵコア４２に入力される。さらに、ＣＰＵコア４２は、ゲーム音楽（ＢＧＭ）、効果音またはゲームキャラクタの音声（擬声音）などのゲームに必要な音データをＲＡＭ４８から読み出し、Ｉ／Ｆ回路５４に与える。Ｉ／Ｆ回路５４は、音データをアナログの音声信号に変換して、スピーカ３２から出力する。さらにまた、マイク３４から入力される音声（音声信号）は、Ｉ／Ｆ回路５４でディジタルデータ（音声データ）に変換され、ＣＰＵコア４２に入力される。
【００８２】
図３はＬＣＤ１２に表示されるゲーム画面１００の一例を示す図解図である。このゲーム画面１００には、プレイヤオブジェクト１０２、プレイヤオブジェクト１０２が吹き出した息のオブジェクト（息オブジェクト）１０４および風車オブジェクト１０６が表示される。このゲーム画面１００では、プレイヤオブジェクト１０２が風車オブジェクト１０６に息（息オブジェクト１０４）を吹きかけ、風車オブジェクト１０６が回転される様子が示される。
【００８３】
なお、上述したように、この第１実施例では、２つの画面（ＬＣＤ１２，ＬＣＤ１４）が設けられるため、ゲーム画面１００はＬＣＤ１４に表示するようにしてもよい。また、ゲーム画面１００が表示されていない他方の画面には、たとえば、ゲームプレイに関連する内容、すなわち、ゲームマップ、プレイヤオブジェクトに関するパラメータ（生命力、レベルなど）およびゲームの進行状況（クリアした面の数、ゲーム世界における経過時間）などを表示することができる。
【００８４】
上述したように、プレイヤは、操作スイッチ２０を操作することにより、プレイヤオブジェクト１０２を３次元仮想空間（ゲーム空間）上で移動させたり、ジャンプ等の任意のアクションをさせたりすることができる。また、たとえば、プレイヤは、マイク３４に向けて息を吹きかけると、その音声（息による音声）がマイク３４を通して入力され、プレイヤオブジェクト１０２が息を吹きかけるように動作される。
【００８５】
このように、息による音声でプレイヤオブジェクト１０２を操作することができるが、息による音声か否かを正確に判断できなければ、プレイヤオブジェクト１０２を正確に動作させることができない。また、すべての音声を息による音声と認識するようにした場合には、ゲームのリアリティを損なうことになる。つまり、リアリティのある操作感を得ることができない。
【００８６】
たとえば、息を吹きかける音（息の音声）についての音声素片の波形パターンを予め記憶しておき、記憶しておいた音声素片と入力された音声の音声素片とを比較して、プレイヤが息を吹きかけたかどうかを判断する方法がある。また、高速フーリエ変換処理（ＦＦＴ）により、入力された音声のスペクトラムを算出して、算出したスペクトラムと予め記憶しておいた息の音声についてのスペクトラムとを比較して、プレイヤが息を吹きかけたかどうかを判断する方法もある。
【００８７】
しかし、一般的に、息の音声は、それを発するプレイヤの体格や息を吹きかける強さ等によってその波形パターンが変化するものであり、前者の場合には、息の音声の認識率を向上させようとすると、様々なパターンの音声素片をメモリに記憶しておく必要がある。つまり、メモリ容量が増大してしまう。これを回避するため、メモリに格納しておく音声素片を少なくすると、波形パターンの異なる種々の息の音声を正確に認識することができず、認識率が低下してしまう。
【００８８】
また、後者の場合には、息の音声についてのスペクトラムをかなり正確に測定できるので、息の吹きかけか否かを正解に認識することができるが、複雑な計算処理が必要であるため、処理負担が大きくなってしまう。
【００８９】
そこで、この第１実施例では、このような不都合を回避するため、入力される音声に対応する音声波形のゼロクロスに基づいて、息の吹きかけ音であるか否かを判別するようにしてある。
【００９０】
たとえば、図４には、息がマイク３４に当たるときに発生する波形すなわち息の音声波形の一例が示される。周知のとおり、ゼロクロスは、音声波形の振幅がプラスからマイナス、およびマイナスからプラスへ変化するときに、０レベルと交差する点（境界点）である。このゼロクロスの間隔時間ｔ（ｍｓｅｃ）に基づいて息の音声であるか否かを判別するのであるが、この第１実施例では、着目するのは、音声波形の振幅がマイナスからプラスへ変化するときのゼロクロスである。したがって、ゼロクロスの間隔時間ｔは、図５に示すように、波形の振幅がマイナスからプラスへ変化するときのゼロクロスであり、連続する２つのゼロクロスで規定される時間長である。つまり、音声波形に含まれる各波の周期（周波数）を算出するのである。
【００９１】
ただし、検出するゼロクロスの間隔時間ｔは、波形の振幅がプラスからマイナスへ変化するときのゼロクロスであり、連続する２つのゼロクロスで規定される時間長であってもよい。
【００９２】
また、ここでは、簡単のため、間隔時間ｔの単位を「ｍｓｅｃ」としてあるが、厳密には、ＣＰＵコア４２のサンプリングレートは、１／８０００ｓｅｃであり、間隔時間ｔの単位も「１／８０００ｓｅｃ」である。以下、この明細書において同じである。
【００９３】
なお、この実施例では、波形の振幅がマイナスからプラス、またはプラスからマイナスへ変化するときのゼロクロスに着目するようにしてあるが、これは無駄な処理を削減するためである。
【００９４】
上述したように、この第１実施例では、ゼロクロスの間隔時間ｔに基づいて、息の音声かどうかを判別するのであるが、その際、図６に示すような参照データ４８２ｃ（ＲＡＭ４８のデータ記憶領域４８２に記憶される。）が参照される。この参照データ４８２ｃは、実験等により、経験的に得られたデータであり、入力された音声が参照データ４８２ｃに含まれるいずれかの条件を満たせば、息の音声とみなし、これが所定時間継続すれば（第１実施例では、連続する２フレーム）、息の音声であると判別（認識）される。また、入力された音声が息の音声として判別された場合には、ゼロクロスの数に基づいて、息（風）の強さが区別（決定）される。
【００９５】
図６に示すように、参照データ４８２ｃは、テーブルデータで表され、エリアの番号に対応して、８フレーム分のゼロクロスの個数に基づく数値ｆの範囲が記述され、それに対応して、間隔時間ｔの分布が記述される。つまり、数値ｆに対応して、息の音声についての周波数分布が記述されているのである。ここで、「フレーム」は、画面（ゲーム画面）の更新単位時間であり、たとえば１／６０秒に設定される。エリアの欄に記述された番号は、数値ｆの範囲を識別するための識別情報である。数値ｆの欄には、バッファすなわちデータ記憶領域４８２に記憶されている過去（直近の）８フレーム分のゼロクロス（マイナスからプラスへ変化するときのゼロクロス）の個数を８倍した数値の範囲を示してある。間隔時間ｔの分布は、４つのグループＡ，Ｂ，Ｃ，Ｄで示され、各グループは間隔時間ｔの範囲で区別される。具体的には、グループＡでは間隔時間ｔの範囲は２〜２５（２≦ｔ≦２５）であり、グループＢでは間隔時間ｔの範囲は２６〜５０（２６≦ｔ≦５０）であり、グループＣでは間隔時間ｔの範囲は５１〜７５（５１≦ｔ≦７５）であり、そして、グループＤでは間隔時間ｔの範囲は７６以上（ｔ≧７６）である。各グループには、数値ｆに対応して、該当する間隔時間ｔの個数の設定範囲または設定値が記述される。ただし、この設定範囲または設定値は、１フレーム分の音声波形に含まれるゼロクロスの間隔時間ｔの分布を調べるための数値範囲または数値（条件）である。
【００９６】
たとえば、入力された音声波形についての８フレーム分のゼロクロスの個数の８倍の数値ｆが２００〜２９９の範囲内である場合には、エリア２が選択される。次に、入力された音声波形のうち、現フレームの直前のフレームについてのゼロクロスの間隔時間ｔの分布がエリア２に対応するグループＡ、グループＢ、グループＣおよびグループＤの各条件（ここでは、２＜ｘＡ＜４０，１＜ｘＢ＜１９，０≦ｘＣ＜９，０≦ｘＤ＜６）を満たすかどうかを判断する。つまり、周波数分布が一致するか否かを判断する。具体的には、それぞれのグループに含まれる間隔時間ｔの個数をカウントし、各グループについてのカウント値（ｘＡ，ｘＢ，ｘＣ，ｘＤ）が予め設定された数値範囲内であるかどうかを判断する。ただし、数値範囲に代えて数値が設置されている場合には、当該数値を満たすかどうかを判断する。これらの条件を満たす状態が２フレーム以上継続すれば、入力された音声は息の音声であると判別される。このとき、数値ｆに基づいて、ゲームにおける息（風）の強さが決定される。たとえば、息（風）の強さは、１〜２５５（８ビットの２値データ：“00000001”〜“11111111”）で示され、数値ｆに基づいて算出される。具体的には、息（風）の強さＳは数１に従って算出される。また、その息の影響が及ぶ距離（範囲）ｄは数２に従って算出される。
【００９７】
［数１］
Ｓ＝（ｆ／７）−１３
［数２］
ｄ＝Ａ・Ｓ
ただし、Ａは比例定数であり、ゲームの開発者ないしプログラマによって予め設定される。ただし、比例定数Ａの値は、ゲームの進行状況、プレイヤキャラクタの種類、プレイヤキャラクタについてのパラメータ（レベル、ライフなど）などに従って変化するようにしてもよい。
【００９８】
このように、息の強さＳや影響の及ぶ距離ｄが算出され、これらの数値に応じてゲーム処理（画像更新など）が実行される。たとえば、上述したように、風車オブジェクト１０６を回転させる場合には、息の強さＳにより、風車オブジェクト１０６の回転数を変化させることができる。また、この場合、距離ｄに応じてプレイヤオブジェクト１０２が発生する息または風が風車オブジェクト１０６に届くか否か、すなわち風車オブジェクト１０６を回転させるかどうかを決定することができる。また、図示は省略するが、複数のろうそくの火をプレイヤオブジェクト１０２の息で吹き消すような場合には、息の強さＳにより、火が消えるろうそくの本数を変化させることができる。また、この場合、距離ｄに応じてプレイヤオブジェクト１０２が発生する息または風がろうそくのオブジェクトに届くか否か、すなわち火を消すことができるか否かを決定することもできる。
【００９９】
図７は図２に示したＲＡＭ４８のメモリマップを示す図解図である。この図７を参照して、ＲＡＭ４８は、プログラム記憶領域４８０およびデータ記憶領域４８２を含む。プログラム記憶領域４８０には、ゲームプログラムが記憶され、このゲームプログラムは、ゲームメイン処理プログラム４８０ａ、プレイヤオブジェクト制御プログラム４８０ｂ、画像生成プログラム４８０ｃ、画像表示プログラム４８０ｄおよび息吹きかけ判別プログラム４８０ｅなどによって構成される。
【０１００】
ゲームメイン処理プログラム４８０ａは、仮想ゲームのメイン処理を実行するためのプログラムである。具体的には、ゲームを進行させたり、ノンプレイヤオブジェクト（たとえば、息オブジェクト１０４、風車オブジェクト１０６）の動作（移動）、発生、消滅を制御したり、ゲーム音楽を再生したり、ゲームデータのバックアップを実行したりする。プレイヤオブジェクト制御プログラム４８０ｂは、プレイヤの操作に従って、プレイヤオブジェクト１０２に任意のアクションをさせるためのプログラムである。具体的には、上述したように、操作スイッチ２０または音声（息吹きかけ音）による操作入力に従って、プレイヤキャラクタ１０２のアクションが制御される。
【０１０１】
画像生成プログラム４８０ｃは、後述するオブジェクトデータ４８２ａを用いて、仮想ゲームの背景オブジェクト、プレイヤオブジェクト１０２およびノンプレイヤオブジェクト（息オブジェクト１０４、風車オブジェクト１０６など）のオブジェクト画像を生成するためのプログラムである。画像表示プログラム４８０ｄは、画像生成プログラム４８０ｃに従って生成されたオブジェクト画像をＬＣＤ１２に表示するためのプログラムである。息吹きかけ判別プログラム４８０ｅは、音声入力が息吹きかけによるものであるか否かを判別するためのプログラムである。
【０１０２】
なお、図示は省略するが、プログラム記憶領域４８０には、音再生プログラムやバックアッププログラムなども記憶される。音再生プログラムは、仮想ゲームに必要な音（音楽）を再生するためのプログラムである。バックアッププログラムは、仮想ゲームの進行に従って発生する途中データまたは結果データをメモリカード２８のＲＡＭ２８ｂに記憶（セーブ）するためのプログラムである。
【０１０３】
データ記憶領域４８２には、オブジェクトデータ４８２ａ、サウンドデータ４８２ｂ、参照データ４８２ｃおよび入力音声データ４８２ｄなどのデータが記憶されるとともに、息吹きかけ音擬制フラグ４８２ｅおよび息吹きかけ音認識フラグ４８２ｆが設けられる。オブジェクトデータ４８２ａは、オブジェクト画像の生成のために用いられるデータであり、ポリゴンデータやテクスチャデータのような画像データを含むとともに、当該オブジェクトの３次元位置（３次元座標）についてのデータ（位置データ）を含む。図示は省略するが、オブジェクデータ４８２ａは、オブジェクト毎に記憶される。
【０１０４】
サウンドデータ４８２ｂは、ゲームに必要な音（音楽）を再生するために必要なデータである。参照データ４８２ｃは、図６に示したようなテーブルデータであり、後述する息吹きかけ判別処理（図９および図１０参照）で用いられる。入力音声データ４８２ｄは、マイク３４を介して入力された音声信号（音声データ）である。なお、この第１実施例では、データ記憶領域４８２には、少なくとも８フレーム分の音声データが記録（一時記憶）される。
【０１０５】
息吹きかけ音擬制フラグ４８２ｅは、息吹きかけ判別処理においてオン（成立）／オフ（不成立）されるフラグである。この息吹きかけ音擬制フラグ４８２ｅは、息吹きかけ音とみなされる場合にオンされ、息吹きかけ音とみなされない場合にはオフされる。たとえば、息吹きかけ音擬制フラグ４８２ｅは、１ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「１」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「０」が設定される。息吹きかけ音認識フラグ４８２ｆもまた、息吹きかけ判別処理においてオン／オフされるフラグである。この息吹きかけ音認識フラグ４８２ｆは、息吹きかけ音と判別（認識）された場合にはオンされ、息吹きかけ音と判別されない場合にはオフされる。たとえば、息吹きかけ音認識フラグ４８２ｆは、１ビットのレジスタで構成され、当該フラグがオンされると、レジスタにデータ値「１」が設定され、逆に、当該フラグがオフされると、レジスタのデータ値「０」が設定される。
【０１０６】
なお、図示は省略するが、データ記憶領域４８２には、ゲームデータ（途中データ、結果データ）等の他のデータやイベントフラグ等の他のフラグも記憶される。
【０１０７】
図８は、図２に示すＣＰＵコア４２のゲーム処理を示すフロー図である。この図８を参照して、ＣＰＵコア４２はゲーム処理を開始すると、ステップＳ１で、初期化処理を実行する。ここでは、プレイヤオブジェクト１０２や風車オブジェクト１０６のようなノンプレイヤオブジェクトの配置位置（３次元座標）を初期位置に設定したり、バッファ等をクリアしたりする。ただし、ゲームを前回の続きから開始する場合には、セーブしておいたゲームデータをメモリカード２８のＲＡＭ２８ｂから読み出して、ＲＡＭ４８にロードする。続くステップＳ３では、ゲームメイン処理を実行する。ここでは、プレイヤオブジェクト１０２以外のオブジェクト（ノンプレイヤオブジェクト、背景オブジェクト）についての画像処理（アニメーション処理）、音再生処理やバックアップ処理などが実行される。
【０１０８】
続いて、ステップＳ５で、操作スイッチ２０がオン（操作された）かどうかを判断する。ステップＳ５で“ＹＥＳ”であれば、つまり操作スイッチ２０が操作されれば、ステップＳ７で、操作された操作スイッチ２０に応じた処理を実行して、ステップＳ１３に進む。つまり、ステップＳ７では、操作された操作スイッチ２０に応じて、プレイヤオブジェクト１０２をゲーム空間上で移動させるなどの任意のアクションを実行させ、したがって、そのアニメーションがゲーム画面１００に表示される。一方、ステップＳ５で“ＮＯ”であれば、つまり操作スイッチ２０がオフであれば（操作されていなければ）、ステップＳ９で、変数Ｔに０が代入（設定）されている（Ｔ＝０）かどうかを判断する。ここで、変数Ｔは、プレイヤオブジェクト１０２に息を吹きかける動作をさせるか否かを判断するための変数であり、その変数の数値（１〜２５５）によって息（風）の強さが変化される。ただし、変数Ｔに０が代入されている場合には、プレイヤオブジェクト１０２に息を吹きかける動作をさせない。
【０１０９】
ステップＳ９で“ＹＥＳ”であれば、つまり変数Ｔに０が代入されていれば、そのままステップＳ１３に進む。一方、ステップＳ９で“ＮＯ”であれば、つまり変数Ｔに０が代入されていなければ、ステップＳ１１で、プレイヤオブジェクト１０２が息を吹く動作のアニメーションを表示するとともに、息オブジェクト１０４を発生させる（表示する）。図示は省略するが、このとき、息の強さＳや息の影響の及ぶ距離ｄに応じて、異なる画像変化が与えられる。続くステップＳ１３では、後で詳細に説明する、息吹きかけ判別処理（図９および図１０参照）を実行して、ステップＳ１５で、息吹きかけを認識したかどうかを判断する。具体的には、息吹きかけ音認識フラグ４８２ｆがオンであるかどうかを判断する。ステップＳ１５で“ＹＥＳ”であれば、つまり息吹きかけ音認識フラグ４８２ｆがオンであれば、息吹きかけを認識したと判断し、ステップＳ１７で、変数Ｔに息（風）の強さＳの値を代入して、ステップＳ２１に進む。しかし、ステップＳ１５で“ＮＯ”であれば、つまり息吹きかけ音認識フラグ４８２ｆがオフであれば、息吹きかけを認識していないと判断し、ステップＳ１９で、変数Ｔに０を代入して、ステップＳ２１に進む。
【０１１０】
ステップＳ２１では、ゲーム終了かどうかを判断する。つまり、プレイヤによってゲーム終了が指示されたり、ゲームオーバになったりしたかどうかを判断する。ステップＳ２１で“ＮＯ”であれば、つまりゲーム終了でなければ、そのままステップＳ３に戻る。しかし、ステップＳ２１で“ＹＥＳ”であれば、つまりゲーム終了であれば、ゲーム処理を終了する。
【０１１１】
なお、このメイン処理ルーチンは、単位時間（例えば、１フレーム）毎に繰り返し実行されるものである。したがって、単位時間毎に、ステップＳ１３の息吹きかけ判別処理（音声検出処理）が実行される。
【０１１２】
図９および図１０は、図８に示したステップＳ１３の息吹きかけ判別処理を示すフロー図である。図９に示すように、ＣＰＵコア４２は息吹きかけ判別処理を開始すると、ステップＳ３１で、音声検出処理を実行する。つまり、マイク３４を通して入力される音声に対応するする音声データをデータ記憶領域４８２に記憶する。ただし、音声検出処理を実行する場合には、ノイズゲート処理も実行される。具体的には、一定レベル以下の音声データを単なる雑音とみなして、入力された音声データから排除（リジェクト）するようにしてある。続くステップＳ３３では、バッファ（ＲＡＭ４８のバッファ領域）内で振幅ゼロの部分をマイナスからプラスに交差した回数（ゼロクロスの個数）をカウントし、直近の８フレーム分の回数（個数）を８倍した値をｆ（数値ｆ）として保存する。つまり、入力音声データ４８２ｄを参照して、数値ｆを求める。
【０１１３】
続いて、ステップＳ３５では、数値ｆが９８から１８８３の間（９８≦ｆ≦１８８３）であるかどうかを判断する。ここでは、息の音声であるかどうかを簡易に判断しているのである。つまり、ゲームで使用すると想定される息（風）を、実際にマイク３４に吹きかけた時の数値ｆがおおよそその範囲（９８≦ｆ≦１８８３）となるためである。また、息の強さＳを１〜２５５の間で設定するためでもある。ステップＳ３５で“ＮＯ”であれば、つまり数値ｆが９７以下または１８８４以上であれば、そのままステップＳ４７に進む。一方、ステップＳ３５で“ＹＥＳ”であれば、つまり数値ｆが９８から１８８３の間であれば、ステップＳ３７で、１フレーム分の音声波形に含まれる各交差間の間隔時間ｔを計測する。ここでは、図５を用いて説明したように、マイナスからプラスへのゼロクロス間の間隔時間ｔをそれぞれ計測するのである。
【０１１４】
続くステップＳ３９では、各間隔時間ｔの分布を検出する。つまり、計測した間隔時間ｔをグループ別に分類する。具体的には、ステップＳ３７で計測した間隔時間ｔを、グループＡ〜グループＤのそれぞれに設定される時間長に応じて、各グループに属する間隔時間ｔの個数をそれぞれカウントするのである。したがって、カウント値（ｘＡ，ｘＢ，ｘＣ，ｘＤ）が得られる。次にステップＳ４１では、ステップＳ３９で検出した分布と参照データ４８２ｃとを比較する。つまり、数値ｆの値に応じてエリア（の番号）を選択し、選択されたエリアに対応して記述されるグループＡ〜グループＤの設定範囲内に、カウント値（ｘＡ，ｘＢ，ｘＣ，ｘＤ）が収まるか、または設定値と一致するかどうかをそれぞれ判断する。
【０１１５】
続いて、ステップＳ４３では、分布は条件を満たすかどうかを判断する。つまり、ステップＳ４１の判断結果が、グループＡ〜グループＤのそれぞれの設定範囲内であるか、または設定値と一致するかどうかを判断する。ここで、すべての設定範囲または設定値を満たす場合には、分布は条件を満たす（周波数分布が一致する）と判断され、いずれか１つの設定範囲または設定値でも満たさない場合には、分布は条件を満たさない（周波数分布が一致しない）と判断される。ステップＳ４３で“ＹＥＳ”であれば、つまり分布が条件を満たす場合には、息吹きかけ音に近いとみなして、図１０に示すステップＳ４９に進む。しかし、ステップＳ４３で“ＮＯ”であれば、つまり分布が条件を満たさない場合には、息吹きかけ音でないと判別して、ステップＳ４５で、息吹きかけ音擬制フラグ４８２eをオフし、さらに、ステップＳ４７で、息吹きかけ音認識フラグ４８２ｆをオフして、図１０に示すように、息吹きかけ判別処理をリターンする。
【０１１６】
図１０に示すように、ステップＳ４９では、息吹きかけ音擬制フラグ４８２eがオンであるかどうかを判断する。つまり、２フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップＳ４９で“ＹＥＳ”であれば、つまり息吹きかけ音擬制フラグ４８２ｅがオンであれば、息吹きかけ音と判別し、ステップＳ５１で、息吹きかけ音認識フラグ４８２ｆをオンし、ステップＳ５３で、数１および数２に従って、息の強さＳおよび息の及ぶ距離ｄを算出して、息吹きかけ判別処理をリターンする。一方、ステップＳ４９で“ＮＯ”であれば、つまり息吹きかけ音擬制フラグ４８２ｅがオフであれば、息吹きかけに近いとみなされたフレームが連続していないと判断し、ステップＳ５５で、息吹きかけ音擬制フラグ４８２ｅをオンして、息吹きかけ判別処理をリターンする。
【０１１７】
第１実施例によれば、ゼロクロスの間隔時間の分布が予め設定された分布と一致し、その状態が所定時間連続するとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に認識することができる。
【０１１８】
また、第１実施例では、参照データのようなテーブルデータを記憶しておくだけなので、様々な音声素片の波形パターンを記憶しておく場合に比べて、メモリ容量を削減することができる。
【０１１９】
さらに、第１実施例では、ゼロクロスの間隔時間の分布を調べるだけなので、煩わしい演算処理が不要であり、したがってＣＰＵの処理負担を軽減することができる。
【０１２０】
さらにまた、入力される音声波形のゼロクロスの個数に応じて、息または風の強さを設定するので、簡単に息や風の強さを設定（検出）できる。さらには、息や風の強さで異なるゲーム処理（画像処理）を実行するので、ゲームの面白みを増すことができる。
【０１２１】
なお、この第１実施例では、２つのＬＣＤを備えるゲーム装置について説明したが、１つのＬＣＤのみが設けられればよい。また、タッチパネルは用いなくてもよい。
＜第２実施例＞
第２実施例のゲーム装置１０は、息吹きかけ判別処理が異なる以外は、第１実施例のゲーム装置１０と同じであるため、重複した説明は省略する。この第２実施例では、入力された音声波形についてのゼロクロスの間隔時間ｔの最大値と最小値とに基づいて、息吹きかけ音か否かを判別（認識）するようにしてある。したがって、第１実施例で示したような参照データ４８２ｄは不要であり、メモリ容量を削減することができる。具体的な息吹きかけ判別処理のフロー図が図１１および図１２に示される。ただし、第１実施例で説明した処理と同じ処理については簡単に説明することにする。また、第２実施例の息吹きかけ判別処理では、息の音声に近いとみなされる期間が３フレーム以上継続したときに、息による音声であると判別するようにしてある。したがって、第１実施例で示した息吹きかけ音擬制フラグ４８２ｅに変えて、息の音声に近いとみなされる期間（フレーム数）をカウントするためのカウンタ（図示せず）が、たとえば、ＲＡＭ４８２のデータ記憶領域４８２に設けられる。
【０１２２】
図１１を参照して、ＣＰＵコア４２は息吹きかけ判別処理を開始すると、ステップＳ６１で、音声検出処理を実行する。ここで、ノイズゲート処理が実行されるは、第１実施例の場合（Ｓ３１）と同様である。続くステップＳ６３では、バッファ内の振幅ゼロの部分をマイナスからプラスに交差した回数をカウントし、直近の８フレーム分の回数を８倍した値を数値ｆとして保存する。そして、ステップＳ６５で、数値ｆが９８から１８８３の間に収まるかどうかを判断する。ステップＳ６５で“ＮＯ”であれば、そのままステップＳ７３に進む。一方、ステップＳ６５で“ＹＥＳ”であれば、ステップＳ６７で、１フレーム分の音声波形に含まれる各交差間の間隔時間ｔを計測する。
【０１２３】
続くステップＳ６９では、間隔時間ｔの最大値（ｚｅｒｏ−ｃｒｏｓｓ−ｍａｘ）と最小値（ｚｅｒｏ−ｃｒｏｓｓ−ｍｉｎ）との比率（ｚｅｒｏ−ｃｒｏｓｓ−ｍａｘ／ｚｅｒｏ−ｃｒｏｓｓ−ｍｉｎ）を算出する。そして、ステップＳ７１では、ステップＳ６９で算出した比率が第１所定値（ここでは、７．０）以上であり、かつ最大値が第２所定値（ここでは、５０（１／８０００ｓｅｃ））以上であるかどうかを判断する。つまり、ゼロクロスの間隔時間ｔが所定の条件を満たすかどうかを判断するのである。ステップＳ７１で“ＹＥＳ”であれば、つまり比率が７．０以上であり、かつ最大値が５０（１／８０００ｓｅｃ）以上である場合には、息吹きかけ音に近いとみなして、図１２に示すステップＳ７７に進む。しかし、ステップＳ７１で“ＮＯ”であれば、つまり比率が７．０未満、または最大値が５０（１／８０００ｓｅｃ）未満或いはその両方である場合には、息吹きかけ音でないと判別し、ステップＳ７３で、息吹きかけ音カウンタをリセット（カウント値＝０）し、ステップＳ７５で、息吹きかけ音認識フラグ４８２ｆをオフして、図１２に示すように、息吹きかけ判別処理をリターンする。なお、第１所定値および第２所定値は、実験等により、経験的に得られた値である。
【０１２４】
図１２に示すように、ステップＳ７７では、息吹きかけ音カウンタのカウント値が３であるかどうかを判断する。つまり、３フレーム連続して、息吹きかけ音に近いとみなされたかどうかを判断する。ステップＳ７７で“ＹＥＳ”であれば、つまり息吹きかけ音カウンタのカウント値が３であれば（３以上であれば）、息吹きかけ音と判別し、ステップＳ７９で、息吹きかけ音フラグ４８２ｆをオンし、ステップＳ８１で、数１および数２に従って、息（風）の強さＳおよび影響を与える距離ｄを算出して、息吹きかけ判別処理をリターンする。一方、ステップＳ７７“ＮＯ”であれば、つまり息吹きかけ音カウンタのカウント値が３でなければ（３未満であれば）、ステップＳ８３で、息吹きかけ音カウンタをインクリメントして、息吹きかけ判別処理をリターンする。
【０１２５】
第２実施例においても、第１実施例と同様に、入力される音声波形のゼロクロスの個数が一定範囲内であり、ゼロクロスの間隔時間の最大値および最小値が所定時間連続して所定の条件を満たすとき、息吹きかけ音と判別するので、息を吹きかける操作を正確に判別することができる。
【０１２６】
また、第２実施例では、参照データを設ける必要がないため、第１実施例で示した場合よりもさらにメモリ容量を削減することができる。
【図面の簡単な説明】
【０１２７】
【図１】図１はこの発明のゲーム装置の一例を示す図解図である。
【図２】図２は図１に示すゲーム装置の電気的な構成を示すブロック図である。
【図３】図３はゲーム画面の一例を示す図解図である。
【図４】図４はマイクから入力される息による音声の音声波形の時間変化を示すグラフである。
【図５】図５は図４に示す音声波形の一部を拡大したグラフである。
【図６】図６は息吹きかけ判別処理に用いる参照データの具体的な内容を示す図解図である。
【図７】図７は図２に示すゲーム装置に内蔵されるＲＡＭのメモリマップを示す図解図である。
【図８】図８は図２に示すＣＰＵコアのゲーム処理を示すフロー図である。
【図９】図９は図２に示すＣＰＵコアの息吹きかけ判別処理の一部を示すフロー図である。
【図１０】図１０は図９に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【図１１】図１１はこの発明の第２実施例の息吹きかけ判別処理の一部を示すフロー図である。
【図１２】図１２は図１１に後続する息吹きかけ判別処理の他の一部を示すフロー図である。
【符号の説明】
【０１２８】
１０  …ゲーム装置
１２，１４  …ＬＣＤ
１６，１６ａ，１６ｂ  …ハウジング
２０  …操作スイッチ
２２  …タッチパネル
２４  …スティック
２８  …メモリカード
２８ａ  …ＲＯＭ
２８ｂ，４８  …ＲＡＭ
３４  …マイク
４０  …電子回路基板
４２  …ＣＰＵコア
５０，５２  …ＧＰＵ
５４  …Ｉ／Ｆ回路
５６，５８  …ＶＲＡＭ
６０  …ＬＣＤコントローラ
【図１】
2006145851.tif 000003
【図２】
2006145851.tif 000004
【図３】
2006145851.tif 000005
【図４】
2006145851.tif 000006
【図５】
2006145851.tif 000007
【図６】
2006145851.tif 000008
【図７】
2006145851.tif 000009
【図８】
2006145851.tif 000010
【図９】
2006145851.tif 000011
【図１０】
2006145851.tif 000012
【図１１】
2006145851.tif 000013
【図１２】
2006145851.tif 000014