(57)【要約】【課題】運動を行うユーザをサポートする音声が出力されるリズムが乱れないように、音声の出力タイミングを補正する。【解決手段】情報処理装置は、表示手段に映像情報が表示されるタイミングと、出力手段により音声情報が出力されるタイミングとに所定時間を超えるずれがあるかを判定する第１判定手段と、第１判定手段によりずれがあると判定されたとき、音声情報のうち出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定する第２判定手段と、第２判定手段により出力部分が拍に合わせて出力される音声部分ではないと判定されたとき、音声情報の出力タイミングを補正する補正手段と、を備える。【選択図】図２
2014166240.tif 000002
【特許請求の範囲】
【請求項１】
楽曲の楽譜を示す楽譜情報と、運動動作を示す動作情報と、運動動作を行うユーザをサポートする音声を示す音声情報とを記憶する記憶手段と、
指定されたテンポと前記記憶手段に記憶された前記楽譜情報とに従って生成される同期信号と、前記記憶手段に記憶された前記動作情報とに基づいて、前記運動動作が行われる映像を示す映像情報を表示手段に表示させる第１制御手段と、
前記同期信号と、前記記憶手段に記憶された前記楽譜情報とに基づいて、前記楽曲を示す楽曲情報を出力手段により出力させる第２制御手段と、
前記同期信号に基づいて、前記記憶手段に記憶された前記音声情報を前記出力手段により出力させる第３制御手段と、
前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに所定時間を超えるずれがあるかを判定する第１判定手段と、
前記第１判定手段により前記ずれがあると判定されたとき、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定する第２判定手段と、
前記第２判定手段により前記出力部分が拍に合わせて出力される音声部分ではないと判定されたとき、前記音声情報の出力タイミングを補正する補正手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記記憶手段に記憶された前記音声情報が、拍に合わせて出力される音声部分を含むかを判定する第３判定手段を更に備え、
前記補正手段は、前記第３判定手段により前記音声情報が拍に合わせて出力される音声部分を含まないと判定された場合、前記音声情報の出力タイミングを補正せず、
前記第３判定手段により前記音声情報が拍に合わせて出力される音声部分を含むと判定された場合、前記第２判定手段は、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２判定手段により前記出力部分が拍に合わせて出力される音声部分であると判定されたとき、前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに、前記所定時間よりも長い第２所定時間を超えるずれがあるかを判定する第４判定手段を更に備え、
前記補正手段は、前記第４判定手段により前記ずれがあると判定されたとき、前記音声情報の出力タイミングを補正することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第２判定手段により拍に合わせて出力される音声部分であると判定される前記出力部分が、前記楽譜の何れかの小節の最初の拍の間に出力される音声部分であるかを判定する第５判定手段を更に備え、
前記補正手段は、前記第５判定手段により前記出力部分が前記小節の最初の拍の間に出力される音声部分であると判定されたとき、前記音声情報を補正しないことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記記憶手段は、前記サポートする音声の時系列に沿った音量を示す前記音声情報を記憶し、
前記記憶手段に記憶された前記音声情報が示す前記時系列において前記音量が極大になる時間的な出力位置を特定する第１特定手段と、
前記第１特定手段により特定された前記出力位置のうち、前記指定されたテンポに応じた時間間隔で前記音量が極大になる複数の前記出力位置を特定する第２特定手段と、
前記第２特定手段により特定された前記複数の出力位置に対応する時間的な範囲を示す範囲情報を記憶する第２記憶手段と、
前記出力手段により出力されている前記出力部分の時間的な出力位置を取得する取得手段と、
を更に備え、
前記第２判定手段は、前記取得手段により取得された前記出力位置が、前記第２記憶手段に記憶された前記範囲情報が示す範囲にある場合、前記出力部分が拍に合わせて出力される音声部分であると判定することを特徴とする請求項１乃至４の何れか１項に記載の情報処理装置。
【請求項６】
前記記憶手段は、前記サポートする音声の時系列に沿った音量を示す前記音声情報を記憶し、
前記補正手段は、拍に合わせて出力される音声部分とは異なる音声部分のうち、前記音量が所定値未満である音声部分が出力されるとき、優先的に前記音声情報の出力タイミングを補正することを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
指定されたテンポと、楽曲の楽譜を示す楽譜情報、運動動作を示す動作情報及び運動動作を行うユーザをサポートする音声を示す音声情報を記憶する記憶手段に記憶された前記楽譜情報とに従って生成される同期信号と、前記記憶手段に記憶された前記動作情報とに基づいて、前記運動動作が行われる映像を示す映像情報を表示手段に表示させる第１制御ステップと、
前記同期信号と、前記記憶手段に記憶された前記楽譜情報とに基づいて、前記楽曲を示す楽曲情報を出力手段により出力させる第２制御ステップと、
前記同期信号に基づいて、前記記憶手段に記憶された前記音声情報を前記出力手段により出力させる第３制御ステップと、
前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに所定時間を超えるずれがあるかを判定する第１判定ステップと、
前記第１判定ステップにより前記ずれがあると判定されたとき、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定する第２判定ステップと、
前記第２判定ステップにより前記出力部分が拍に合わせて出力される音声部分ではないと判定されたとき、前記音声情報の出力タイミングを補正する補正ステップと、
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザが楽曲を聴きながら行う運動を支援するための運動コンテンツを出力する技術分野に関する。
【背景技術】
【０００２】
例えば、特許文献１には、楽曲と、楽曲に合わせて行われる運動動作を表す運動映像とを出力する際に、ナレーションなどの補助音声を出力する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１７８７７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
運動を行うユーザをサポートするナレーションなどのサポート音声を出力するとき、運動映像の表示タイミングとサポート音声の出力タイミングがずれる場合がある。このとき、タイミングのずれを解消するために、サポート音声の出力タイミングを補正すると、ユーザの運動動作のリズムを乱してしまう場合がある。例えば、拍に合わせて、「１、２、３、４」とカウントするサポート音声が出力されるとする。ここで、タイミングのずれを解消するため、例えば、「３」の音声部分の出力タイミングを早めたとする。すると、「２」の音声部分の出力タイミングと「３」の音声部分の出力タイミングとの時間間隔が、テンポに応じた拍の時間間隔よりも短くなってしまう。そのため、ユーザが、リズムに合わせて運動動作を行うことができない。
【０００５】
本発明は、以上の点に鑑みてなされたものであり、運動を行うユーザをサポートする音声が出力されるリズムが乱れないように、音声の出力タイミングを補正することを可能とする情報処理装置及びプログラムを提供することを課題とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、楽曲の楽譜を示す楽譜情報と、運動動作を示す動作情報と、運動動作を行うユーザをサポートする音声を示す音声情報とを記憶する記憶手段と、指定されたテンポと前記記憶手段に記憶された前記楽譜情報とに従って生成される同期信号と、前記記憶手段に記憶された前記動作情報とに基づいて、前記運動動作が行われる映像を示す映像情報を表示手段に表示させる第１制御手段と、前記同期信号と、前記記憶手段に記憶された前記楽譜情報とに基づいて、前記楽曲を示す楽曲情報を出力手段により出力させる第２制御手段と、前記同期信号に基づいて、前記記憶手段に記憶された前記音声情報を前記出力手段により出力させる第３制御手段と、前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに所定時間を超えるずれがあるかを判定する第１判定手段と、前記第１判定手段により前記ずれがあると判定されたとき、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定する第２判定手段と、前記第２判定手段により前記出力部分が拍に合わせて出力される音声部分ではないと判定されたとき、前記音声情報の出力タイミングを補正する補正手段と、を備えることを特徴とする。
【０００７】
請求項２に記載の発明は、前記記憶手段に記憶された前記音声情報が、拍に合わせて出力される音声部分を含むかを判定する第３判定手段を更に備え、前記補正手段は、前記第３判定手段により前記音声情報が拍に合わせて出力される音声部分を含まないと判定された場合、前記音声情報の出力タイミングを補正せず、前記第３判定手段により前記音声情報が拍に合わせて出力される音声部分を含むと判定された場合、前記第２判定手段は、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定することを特徴とする。
【０００８】
請求項３に記載の発明は、前記第２判定手段により前記出力部分が拍に合わせて出力される音声部分であると判定されたとき、前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに、前記所定時間よりも長い第２所定時間を超えるずれがあるかを判定する第４判定手段を更に備え、前記補正手段は、前記第４判定手段により前記ずれがあると判定されたとき、前記音声情報の出力タイミングを補正することを特徴とする。
【０００９】
請求項４に記載の発明は、前記第２判定手段により拍に合わせて出力される音声部分であると判定される前記出力部分が、前記楽譜の何れかの小節の最初の拍の間に出力される音声部分であるかを判定する第５判定手段を更に備え、前記補正手段は、前記第５判定手段により前記出力部分が前記小節の最初の拍の間に出力される音声部分であると判定されたとき、前記音声情報を補正しないことを特徴とする。
【００１０】
請求項５に記載の発明は、前記記憶手段は、前記サポートする音声の時系列に沿った音量を示す前記音声情報を記憶し、前記記憶手段に記憶された前記音声情報が示す前記時系列において前記音量が極大になる時間的な出力位置を特定する第１特定手段と、前記第１特定手段により特定された前記出力位置のうち、前記指定されたテンポに応じた時間間隔で前記音量が極大になる複数の前記出力位置を特定する第２特定手段と、前記第２特定手段により特定された前記複数の出力位置に対応する時間的な範囲を示す範囲情報を記憶する第２記憶手段と、前記出力手段により出力されている前記出力部分の時間的な出力位置を取得する取得手段と、を更に備え、前記第２判定手段は、前記取得手段により取得された前記出力位置が、前記第２記憶手段に記憶された前記範囲情報が示す範囲にある場合、前記出力部分が拍に合わせて出力される音声部分であると判定することを特徴とする。
【００１１】
請求項６に記載の発明は、前記記憶手段は、前記サポートする音声の時系列に沿った音量を示す前記音声情報を記憶し、前記補正手段は、拍に合わせて出力される音声部分とは異なる音声部分のうち、前記音量が所定値未満である音声部分が出力されるとき、優先的に前記音声情報の出力タイミングを補正することを特徴とする。
【００１２】
請求項７に記載の発明は、指定されたテンポと、楽曲の楽譜を示す楽譜情報、運動動作を示す動作情報及び運動動作を行うユーザをサポートする音声を示す音声情報を記憶する記憶手段に記憶された前記楽譜情報とに従って生成される同期信号と、前記記憶手段に記憶された前記動作情報とに基づいて、前記運動動作が行われる映像を示す映像情報を表示手段に表示させる第１制御ステップと、前記同期信号と、前記記憶手段に記憶された前記楽譜情報とに基づいて、前記楽曲を示す楽曲情報を出力手段により出力させる第２制御ステップと、前記同期信号に基づいて、前記記憶手段に記憶された前記音声情報を前記出力手段により出力させる第３制御ステップと、前記表示手段に前記映像情報が表示されるタイミングと、前記出力手段により前記音声情報が出力されるタイミングとに所定時間を超えるずれがあるかを判定する第１判定ステップと、前記第１判定ステップにより前記ずれがあると判定されたとき、前記音声情報のうち前記出力手段により出力されている出力部分が、拍に合わせて出力される音声部分であるかを判定する第２判定ステップと、前記第２判定ステップにより前記出力部分が拍に合わせて出力される音声部分ではないと判定されたとき、前記音声情報の出力タイミングを補正する補正ステップと、をコンピュータに実行させることを特徴とする。
【発明の効果】
【００１３】
請求項１又は７に記載の発明によれば、拍に合わせて出力されるべき音声部分とは異なる音声部分が出力されているとき、音声情報の出力タイミングが補正される。そのため、運動を行うユーザをサポートする音声が出力されるリズムが乱れないように、音声の出力タイミングを補正することができる。
【００１４】
請求項２に記載の発明によれば、音声情報の出力タイミングが映像情報と出力タイミングとずれていても問題がない音声情報が出力される場合、不要な補正を行わないようにすることができる。
【００１５】
請求項３に記載の発明によれば、拍に合わせて出力されるべき音声部分とは異なる音声部分が出力されているときに優先的に補正を行う一方で、拍に合わせて出力されるべき音声部分が出力されているときにも、補正を行う場合がある。そのため、タイミングのずれを迅速に解消することができる。
【００１６】
請求項４に記載の発明によれば、拍に合わせて出力される音声部分の中でも、ユーザがリズムをとるために特に重要な小節の最初の拍の間に出力されるべき音声部分が出力されるとき、補正は行われない。そのため、運動を行うユーザをサポートする音声が出力されるリズムが乱れないようにしながら、タイミングのずれを迅速に解消することができる。
【００１７】
請求項５に記載の発明によれば、拍に合わせて出力されるべき音声部分であるかを適切に判定することができる。
【００１８】
請求項６に記載の発明によれば、サポートする音声が無音状態又は無音に準じる状態であるときに、優先的に補正を行うことができる。そのため、ユーザに聞こえる音声が補正によって不自然になることを防止することができる。
【図面の簡単な説明】
【００１９】
【図１】本実施形態の運動コンテンツ生成システム１の概要構成例を示す図である。
【図２】（Ａ）は、サポート音声の補正方法の一例を示す図であり、（Ｂ）は、許可レベルテーブルの構成例を示す図である。
【図３】（Ａ）は、サポート音声の音声信号の波形の一例を示すグラフであり、（Ｂ）は、サポート音声の音声信号の絶対値をとる信号の波形の一例を示すグラフであり、（Ｃ）は、（Ｂ）に示す信号を微分した信号の波形の一例を示すグラフである。
【図４】出力端末５のＣＰＵ５１の許可レベルテーブル生成処理の処理例を示すフローチャートである。
【図５】（Ａ）は、出力端末５のＣＰＵ５１の運動コンテンツ再生処理の処理例を示すフローチャートであり、（Ｂ）は、出力端末５のＣＰＵ５１の同期処理の処理例を示すフローチャートである。
【図６】出力端末５のＣＰＵ５１のサポート音声再生処理の処理例を示すフローチャートである。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態を図面に基づいて説明する。なお、以下に説明する実施の形態は、運動を支援するための運動コンテンツを生成する運動コンテンツ生成システムに本発明を適用した場合の実施形態である。運動コンテンツは、運動を支援するための映像及び音声を含む。
【００２１】
［１．運動コンテンツ生成システム１の構成］
始めに、図１を参照して、本実施形態の運動コンテンツ生成システム１の構成について説明する。図１は、本実施形態の運動コンテンツ生成システム１の概要構成例を示す図である。図１に示すように、運動コンテンツ生成システム１は、配信サーバ２と１つ以上の出力端末５とを含んで構成されている。配信サーバ２と出力端末５とは、ネットワーク１０を介して接続可能になっている。ネットワーク１０は、例えば、インターネットを含む。配信サーバ２には、データベース３が接続されている。データベース３には、運動に関する情報や楽曲に関する情報が登録されている。配信サーバ２は、データベース３に登録されている情報等を、定期的に又は出力端末５からの要求に応じて出力端末５に配信する。
【００２２】
出力端末５は、例えば、施設４に設置される端末装置である。出力端末５は、本発明の情報処理装置の一例である。出力端末５は、施設４の利用者４１により利用される。施設４は、例えば、スポーツ施設であってもよい。利用者４１は、スポーツ施設において、運動レッスンを受ける。運動レッスンは、複数の運動動作から構成されるレッスンである。この場合の出力端末５は、例えばパーソナルコンピュータであってもよい。
【００２３】
出力端末５は、モニタ５７と接続可能である。モニタ５７は、複数のスピーカ６４とディスプレイ６７とを備える表示装置であってもよい。この場合、出力端末５は、ディスプレイ６７と接続可能である。また、出力端末５は、スピーカ６４と接続可能である。出力端末５がモニタ５７へ音声信号を出力することにより、スピーカ６４により楽曲等が出力される。出力端末５がモニタ５７へ映像信号を出力することにより、ディスプレイ６７に運動映像等が表示される。運動映像は、運動動作を行うフィギュア８３を映し出した動画である。フィギュア８３は、例えば、人、動物、仮想上の生き物、ロボット等のかたちをした仮想物である。フィギュア８３は、三次元仮想空間に配置される。出力端末５は、スピーカ６４から出力される楽曲と、ディスプレイ６７に表示されるフィギュア８３の動きとが同期するように、信号を出力する。楽曲と運動映像とを出力することは、運動コンテンツを出力することの一例である。利用者４１は、スピーカ６４により出力される楽曲を聴きながら、ディスプレイ６７に表示されるフィギュア８３を見て、運動を行うことができる。操作者４２は、リモコン６６等を用いて出力端末５を操作することができる。利用者４１と操作者４２とは同一人物であってもよい。施設４がスポーツ施設である場合、操作者４２は、例えば、インストラクターであってもよい。
【００２４】
［２．運動映像とサポート音声との同期］
運動レッスンが行われるときにモニタ５７が出力する運動コンテンツは、楽曲、運動映像及びサポート音声を含む。サポート音声は、運動する利用者４１をサポートするための音声である。例えば、サポート音声は、運動動作を解説するナレーションや、運動を指導する音声を含んでもよい。また、サポート音声は、例えば、楽曲の拍に合わせて出力される音声を含んでもよい。楽曲の拍に合わせて出力される音声とは、例えば、楽曲のテンポに対応する１拍の長さの自然数倍の時間間隔で、音量が極大になる音声である。例えば、テンポが１２０である場合、１拍の長さの自然数倍の時間間隔は、０．５秒、１秒、１．５秒等である。楽曲の拍に合わせて出力される音声として、例えば、「イチ  ニ  サン  シ」等の音声や、手拍子等の音声がある。
【００２５】
運動コンテンツを再生するため、出力端末５は、ミュージックシーケンサ、３Ｄエンジン、サポート音声再生プログラムを記憶する。ミュージックシーケンサは、ＭＩＤＩデータに基づいて楽曲を再生するためのプログラムである。ＭＩＤＩデータは、ＭＩＤＩ（Musical Instrument Digital Interface）形式のデータである。ＭＩＤＩデータは、楽曲の楽譜を示すデータである。ＭＩＤＩデータは、本発明における楽譜情報の一例である。ミュージックシーケンサは、例えば、ソフトウェアとしてのシンセサイザーを含んでもよい。３Ｄエンジンは、三次元仮想空間で運動動作するフィギュア８３を二次元平面に投影した運動映像を生成するためのプログラムである。サポート音声再生プログラムは、サポート音声データに基づいて、サポート音声を再生するためのプログラムである。サポート音声データは、サポート音声の音声信号を示すデータである。具体的に、サポート音声データは、例えば、所定時間間隔ごとのサポート音声の音量のサンプル値の時系列を示すデータである。サポート音声データのデータ形式は、例えば、ＷＡＶ（RIFF waveform Audio Format）、ＡＡＣ（Advanced Audio Coding）、ＭＰ３（MPEG Audio Layer-3）等であってもよい。サポート音声データは、本発明における音声情報の一例である。
【００２６】
運動コンテンツを再生するとき、出力端末５は、運動映像、楽曲及びサポート音声を同期して再生する必要がある。出力端末５は、ミュージックシーケンサを実行することにより、指定されたテンポとＭＩＤＩデータとに従って、イベントを生成する。イベントは、同期を行うための信号である。イベントは、本発明における同期信号の一例である。テンポは、例えば、ＭＩＤＩデータ中に指定されていたり、予め指定されたりする。ＭＩＤＩデータには、デルタタイムとイベントとが記述されている。デルタタイムは、あるイベントを出力してから、次のイベントを出力するまでの時間を示す。イベントとして、通常ＭＩＤＩイベント、３Ｄ制御用拡張イベント、音声再生用拡張イベント等がある。通常ＭＩＤＩイベントは、楽曲の再生を制御するためのイベントである。通常ＭＩＤＩイベントは、シンセサイザーへ出力される。
【００２７】
３Ｄ制御用拡張イベントは、３Ｄエンジンによる処理を制御するために拡張されたイベントである。３Ｄ制御用拡張イベントは、例えば、運動映像を楽曲に同期させるためのイベントを含む。このイベントを、映像同期イベントという。映像同期イベントは、例えば、指定されたテンポに応じた時間間隔で、３Ｄエンジンへ出力される。なお、映像同期イベントに代えて、ＭＩＤＩクロックが３Ｄエンジンへ出力されてもよい。ＭＩＤＩクロックは、テンポに応じた時間間隔で出力されるイベントである。出力端末５は、３Ｄエンジンを実行することにより、所定のフレームレートで、運動映像を構成するフレーム画像を生成して、フレーム画像をディスプレイ６７に表示させる。出力端末５は、映像同期イベントに基づいて、運動映像の表示タイミングを、楽曲の出力タイミングに同期させる。同期方法の詳細については後述する。この同期によって、例えば、運動映像を構成する一部のフレーム画像の表示が省略されたり、運動映像の再生が一時的に停止されたりする場合がある。しかしながら、利用者４１は、フレーム画像が省略されたり、運動映像の再生が一時的に停止したりしたことを、知覚することは難しい。出力端末５は、楽曲の出力タイミングと運動映像の表示タイミングとを随時同期させることができる。
【００２８】
音声再生用拡張イベントは、サポート音声を再生するためのイベントである。音声再生用拡張イベントは、例えば、再生に用いるサポート音声データを指定するイベント、指定されたサポート音声データを用いてサポート音声の再生を開始させるイベント等を含む。音声再生用拡張イベントは、サポート音声再生プログラムへ出力される。出力端末５は、サポート音声再生プログラムを実行することにより、音声再生用拡張イベントが出力されたタイミングで、サポート音声の出力を開始させる。
【００２９】
音声再生用拡張イベントにより、出力端末５は、サポート音声の出力を開始するタイミングを、運動映像に同期させることはできる。しかしながら、サポート音声の出力が開始された後、サポート音声の出力タイミングと、運動映像の表示タイミングとがずれる場合がある。例えば、出力端末５の処理負荷が高い状態では、サポート音声の出力タイミングが遅延する場合がある。また、例えば、サポート音声の出力タイミングが早まる可能性もある。そこで、サポート音声の出力が開始された後、サポート音声の出力タイミングを補正して、サポート音声の出力タイミングと運動映像の表示タイミングとを同期させることが考えられる。例えば、サポート音声の出力タイミングが遅い場合、出力端末５は、サポート音声のうち一部の音声を出力させないようにする。これにより、サポート音声の出力タイミングを早くすることができる。また、例えば、サポート音声の出力タイミングが早い場合、出力端末５は、サポート音声の出力を一時的に停止して、その後サポート音声出力を再開させる。これにより、サポート音声の出力タイミングを遅くすることができる。しかしながら、拍に合わせてタイミングをとるサポート音声が出力されているときに、このような補正を行うと、サポート音声が出力されるリズムが乱れてしまう。例えば、「イチ  ニ  サン  シ」とカウントするサポート音声において、「ニ」と「サン」との間で、補正が行われたとする。すると、「ニ」が出力されてから「サン」が出力されるまでの時間間隔が、指定されたテンポに応じた拍の時間間隔とずれてしまう。すると、利用者４１が、リズムに合わせて運動動作を行うことができない。
【００３０】
そこで、出力端末５は、運動映像の表示タイミングとサポート音声の表示タイミングとに、所定の閾値となる時間を超えるずれがあるとき、サポート音声データが示すサポート音声のうち、スピーカ６４により出力されている音声部分が、拍に合わせて出力される音声部分であるかを判定する。そして、出力端末５は、出力されている音声部分が、拍に合わせて出力される音声部分ではないと判定されたとき、サポート音声の出力タイミングを補正する。
【００３１】
以下に具体例を説明する。図２（Ａ）は、サポート音声の補正方法の一例を示す図である。例えば、サポート音声として、「イチ  ニ  サン  シ」とカウントする音声が数回出力された後、ナレーションが出力されるとする。図２（Ａ）（１）は、時間の経過に対する楽曲の進行を示す。図２（Ａ）（１）は、４拍で１小節が構成される例を示す。運動映像の表示タイミングは、楽曲の出力タイミングと随時同期させることができる。そのため、図２（Ａ）（１）は、運動映像の進行をも示す。図２（Ａ）（２）は、時間の経過に対するサポート音声の音声レベルの変化を示す。音声レベルは音量を示す。サポート音声に含まれる各音声部分は、サポート音声の再生位置と対応している。再生位置は、対応する音声部分が出力されるべき時間的な位置を示す。この時間的な位置は、楽曲の再生が開始されてから経過した時間である。図２（Ａ）（２）に示す時間Ｔ０〜５、Ｔ１１〜Ｔ１５、Ｔ２５〜Ｔ２９が、それぞれ再生位置である。各時間の時間間隔は、拍の長さに相当する。例えば、時間Ｔ１は「イチ」に対応する。従って、サポート音声の再生開始から時間Ｔ１が経過したときに、「イチ」が出力されるべきである。
【００３２】
時間Ｔ１〜Ｔ４において、「イチ  ニ  サン  シ」が出力される。ここでは、サポート音声の出力タイミングが運動映像の表示タイミングと合っている。その後、時間Ｔ１１、Ｔ１２において、「サン  シ」が出力されるはずである。しかしながら、この時点から、サポート音声の出力タイミングが、運動映像の表示タイミングよりも、閾値以上遅延しているとする。そのため、実際には、楽曲の再生開始から時間Ｔ１１が経過したタイミングよりも遅れて、「サン」が出力される。つまり、楽曲の再生開始から経過した時間とサポート音声の再生位置とがずれる。ここで、出力端末５は、現在出力されている音声部分が、拍に合わせて出力される音声部分であるかを判定する。「サン  シ」は、拍に合わせて出力される音声部分である。従って、出力端末５は、サポート音声の補正を行わない。その後、時間Ｔ１３〜Ｔ２７において、ナレーションが出力される。ナレーションは、拍に合わせて出力される音声部分ではない。そこで、出力端末５は、サポート音声を補正する。具体的に、図２（Ａ）（４）に示すように、時間Ｔ１３〜Ｔ１４の範囲に対応する音声の一部を出力させないことにより、サポート音声の再生位置を早くする。
【００３３】
出力端末５は、現在出力されている音声部分が、拍に合わせて出力される音声部分であっても、サポート音声の出力タイミングを補正してもよい。ただし、出力端末５は、現在出力されている音声部分が、拍に合わせて出力される音声部分ではないとき、拍に合わせて出力される音声部分であるときよりも、優先的に補正を行う。具体的に、運動映像の表示タイミングとサポート音声の表示タイミングとのずれを判定するための閾値を変える。つまり、拍に合わせて出力される音声部分に対する閾値を、拍に合わせて出力される音声部分と異なる音声部分に対する閾値よりも大きくする。閾値が小さいほど、補正が行われる確率が高くなる。
【００３４】
また、出力端末５は、現在出力されている音声部分が、拍に合わせて出力される音声部分であって、且つ、小節の最初の拍の間に出力される音声部分である場合、サポート音声の出力タイミングを補正しない。その理由は、小節の最初の拍の間に出力される音声部分が、ユーザがリズムをとるために特に重要な音声部分であるからである。例えば、図２（Ａ）（２）において、サポート音声の再生位置が時間Ｔ１〜Ｔ２の間にあるとき、出力端末５は、補正を行わない。
【００３５】
また、出力端末５は、現在出力されている音声部分が、拍に合わせて出力される音声部分ではないとき、現在出力されている音声部分が無音である場合に、最も優先して優先的に補正を行う。例えば、図２（Ａ）（２）において、時間Ｔ２５〜Ｔ２６の間は無音部分が出力されている。このとき、出力端末５は、最も優先的に補正を行う。具体的に、運動映像の表示タイミングとサポート音声の表示タイミングとのずれを判定するための閾値を、最も小さくする。これにより、利用者４１に聞こえるサポート音声が補正によって不自然に聞こえることを防止することができる。なお、出力端末５は、音声レベルが所定値以下である音声部分も、無音であるとみなす。
【００３６】
出力端末５は、１つのサポート音声データが示すサポート音声が、拍に合わせて出力される音声部分を含まない場合には、サポート音声の出力タイミングを補正しなくてもよい。この場合、サポート音声の出力タイミングが運動映像の表示タイミングとずれていても、利用者４１が運動するリズムを乱さないからである。
【００３７】
以下に、拍に合わせて出力される音声部分であるか否かを判定するための処理を説明する。出力端末５は、判定に用いられる情報を予め生成する。具体的に、出力端末５は、許可レベルテーブルを生成する。許可レベルテーブルは、サポート音声の再生位置の範囲と許可レベルとが対応付けて登録されるテーブル情報である。許可レベルテーブルは、本発明における範囲情報の一例である。許可レベルは、サポート音声の補正が優先的に行われる度合いを示す。許可レベルが高いほど、優先的に補正される。許可レベルとして、レベル０〜４の何れかが設定される。レベル０は、拍に合わせて出力される音声部分であり、且つ、小節の最初の拍の間に出力される音声部分の再生位置の範囲に対応して設定される。レベル０に対応する再生位置では、サポート音声の補正は行われない。レベル１は、拍に合わせて出力される音声部分であり、且つ、小節の最初の拍とは異なる拍の間に出力される音声部分の再生位置の範囲に対応して設定される。レベル２は、拍に合わせて出力されない有音部分の再生位置の範囲に対応して設定される。レベル３は、拍に合わせて出力されない無音部分の再生位置の範囲に対応して設定される。レベル１〜３に対して、運動映像の表示タイミングとサポート音声の出力タイミングとのずれを判定するための閾値ｔｈ１〜ｔｈ３がそれぞれ設定される。これらの閾値は、ｔｈ１＞ｔｈ２＞ｔｈ３を満たす。スピーカ６４により現在出力されている音声部分の再生位置が、許可レベルテーブルにおいてレベル０又は１に対応する範囲にあるとする。この場合、出力端末５は、その音声部分が、拍に合わせて出力される音声部分であると判定する。一方、スピーカ６４により現在出力されている音声部分の再生位置が、許可レベルテーブルにおいてレベル２又は３に対応する範囲にあるとする。この場合、出力端末５は、その音声部分が、拍に合わせて出力される音声部分ではないと判定する。
【００３８】
図２（Ｂ）は、許可レベルテーブルの構成例を示す図である。図２（Ｂ）において、０秒に対してレベル３が設定され、１０秒に対してレベル０が設定されている。この場合、再生位置が０秒から１０秒までの間の音声部分は、無音であることを示す。また、１０．２５０秒に対してレベル１が設定されている。この場合、再生位置が１０秒から１０．２５０までの間の音声部分は、拍に合わせて出力される音声部分であり、且つ、小節の最初の拍の間に出力される音声部分であることを示す。
【００３９】
出力端末５は、サポート音声データに基づいて、許可レベルテーブルを生成する。図３（Ａ）は、サポート音声の音声信号の波形の一例を示すグラフである。出力端末５は、サポート音声データから、サポート音声の音声信号を生成する。そして、出力端末５は、サポート音声の音声信号が示す音声レベルの絶対値をとる信号を生成する。このとき、出力端末５は、所定値未満の音声レベルを、音声レベル０に変更する。つまり、所定値未満の音声レベルの音声が無音とされる。
【００４０】
図３（Ｂ）は、サポート音声の音声信号の絶対値をとる信号の波形の一例を示すグラフである。出力端末５は、図３（Ｂ）に示す信号から、音声レベルが極大となる再生位置を特定する。具体的に、出力端末５は、図３（Ｂ）に示す信号を微分した信号を生成する。図３（Ｃ）は、図３（Ｂ）に示す信号を微分した信号の波形の一例を示すグラフである。出力端末５は、図３（Ｂ）に示す信号から、ゼロクロスポイントを抽出する。ゼロクロスポイントは、図３（Ｂ）に示す信号が微分値０と交わる再生位置である。図３（Ｂ）が示す音声レベルが極大となるときと極小となるときの何れにおいてもゼロクロスポイントが出現する。そのため、出力端末５は、音声レベルが極大となるときのゼロクロスポイントを抽出する。例えば、図３（Ｃ）において、時間Ｐ１〜Ｐ５等がゼロクロスポイントとして抽出される。
【００４１】
出力端末５は、図３（Ｃ）に示す信号の中で出現する順番が連続するゼロクロスポイント同士の時間間隔を計算する。例えば、時間Ｐ１と時間Ｐ２との時間間隔、時間Ｐ２と時間Ｐ３との時間間隔、時間Ｐ３と時間Ｐ４との時間間隔、時間Ｐ４と時間Ｐ５との時間間隔、時間Ｐ５と時間Ｐ６との時間間隔等が計算される。ある２つのゼロクロスポイント同士の時間間隔が、拍の長さに応じた時間間隔であるとする。この場合、出力端末５は、この２つのゼロクロスポイントに囲まれた範囲に対応する音声部分を、拍に合わせて出力される音声部分であると判定する。例えば、テンポが１２０である場合、１拍の長さは０．５秒である。この場合、ゼロクロスポイント間の時間間隔が０．５秒の自然数倍である場合、このゼロクロスポイントに囲まれた範囲に対応する音声部分は、拍に合わせて出力される音声部分である。図３（Ｃ）において、時間Ｐ１と時間Ｐ２との時間間隔、時間Ｐ２と時間Ｐ３との時間間隔、時間Ｐ３と時間Ｐ４との時間間隔は、１拍の長さであるとする。従って、時間Ｐ１から時間Ｐ４までの範囲に対応する音声部分は、拍に合わせて出力される音声部分である。一方、時間Ｐ４と時間Ｐ５との時間間隔及び時間Ｐ５と時間Ｐ６との時間間隔は、拍の長さに応じた時間間隔ではないとする。従って、時間Ｐ４から時間Ｐ６までの範囲に対応する音声部分は、拍に合わせて出力される音声部分ではない。
【００４２】
出力端末５は、拍に合わせて出力される音声部分を特定した場合、その音声部分の再生位置が、小節の最初の拍の再生位置であるかを判定する。例えば、テンポとＭＩＤＩデータに設定されている拍子記号に基づいて、小節の最初の拍の再生位置を計算することができる。出力端末５は、拍に合わせて出力される音声部分の再生位置が、小節の最初の拍の再生位置である場合、その再生位置とレベル０とを対応付けて許可レベルテーブルに登録する。出力端末５は、拍に合わせて出力される音声部分の再生位置が、小節の最初の拍の再生位置ではない場合、その再生位置とレベル１とを対応付けて許可レベルテーブルに登録する。例えば、時間Ｐ１が小節の最初の拍の再生位置である場合、出力端末５は、時間Ｐ１とレベル０とを対応付けて登録する。この場合、時間Ｐ２〜Ｐ４は、小節の最初の拍の再生位置ではない。従って、出力端末５は、時間Ｐ２〜Ｐ４のそれぞれと、レベル１とを対応付けて登録する。
【００４３】
出力端末５は、拍に合わせて出力される音声部分とは異なる音声部分を特定した場合、その音声部分が有音であるか否かを判定する。出力端末５は、音声部分が有音である場合、その音声部分の再生位置とレベル２とを対応付けて許可レベルテーブルに登録する。出力端末５は、音声部分が無音である場合、その音声部分の再生位置とレベル３とを対応付けて許可レベルテーブルに登録する。図３（Ｃ）において、時間Ｐ４〜Ｐ５の間で、時間Ｔａ〜Ｔｂの間が、無音である。この場合、出力端末５は、時間Ｐ４とレベル２とを対応付けて登録する。また、出力端末５は、時間Ｔａとレベル３とを対応付けて登録する。また、出力端末５は、時間Ｔｂとレベル２とを対応付けて登録する。
【００４４】
［３．各装置の構成］
次に、図１を参照して、運動コンテンツ生成システムに含まれる各装置の構成について説明する。
【００４５】
［３−１．配信サーバ２の構成］
図１に示すように、配信サーバ２は、ＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、バス２４、Ｉ／Ｏインタフェイス２５、表示制御部２６、ディスクドライブ２８、ネットワーク通信部３０及びＨＤＤ（ハードディスクドライブ）３７を備える。ＣＰＵ２１は、バス２４を介して、ＲＯＭ２２、ＲＡＭ２３、バス２４及びＩ／Ｏインタフェイス２５に接続されている。ＣＰＵ２１は、ＲＯＭ２２やＨＤＤ３７に記憶されたプログラムを実行することにより、配信サーバ２の各部を制御する。Ｉ／Ｏインタフェイス２５には、データベース３、表示制御部２６、ディスクドライブ２８、ネットワーク通信部３０、キーボード３１、マウス３２及びＨＤＤ３７が接続されている。ＣＰＵ２１は、Ｉ／Ｏインタフェイス２５を介してデータベース３にアクセスする。表示制御部２６は、ＣＰＵ２１の制御に基づいて映像信号をモニタ２７に出力する。ディスクドライブ２８は、記録媒体２９に対するデータの書き込み及び読み出しを行う。ネットワーク通信部３０は、配信サーバ２がネットワーク１０に接続するための制御を行う。ＨＤＤ３７には、ＯＳや各種制御プログラム等が記憶されている。
【００４６】
データベース３には、モーションデータ、ＭＩＤＩデータ、サポート音声データ等のデータが登録されている。モーションデータは、運動動作ごとに登録される。モーションデータは、三次元仮想空間におけるフィギュア８３の運動動作を定義するデータである。モーションデータは、ディスプレイ６７にフィギュア８３の運動動作を表示させるためのデータである。モーションデータは、運動動作の進行に応じたフィギュア８３の身体の各部の座標を含む。モーションデータは、本発明における運動情報の一例である。モーションデータは、モーション情報と対応付けて登録される。モーション情報は、運動動作を示す識別情報である。各ＭＩＤＩデータは、それぞれ所定の運動動作に合わせて作成される。その理由は、楽曲と運動映像とが出力されているときに、運動映像が示す運動動作に応じたサポート音声を出力させるためである。運動動作に応じたサポート音声が出力されるように、ＭＩＤＩデータに音声再生用拡張イベントを記述する必要がある。ＭＩＤＩデータが作成されるとき、例えば、テンポも決定される。例えば、運動動作を行う速度に応じたテンポが決定される。テンポは、例えば、ＭＩＤＩデータに記述される。ＭＩＤＩデータは、モーション情報に対応付けて登録される。
【００４７】
［３−２．出力端末５の構成］
図１に示すように、出力端末５は、ＣＰＵ５１、ＲＯＭ５２、ＲＡＭ５３、バス５４、Ｉ／Ｏインタフェイス５５、表示制御部５６、ディスクドライブ５８、ネットワーク通信部６０、音声出力部６３、信号受信部６５及びＨＤＤ７を備える。ＣＰＵ５１は、バス５４を介して、ＲＯＭ５２、ＲＡＭ５３、バス５４及びＩ／Ｏインタフェイス５５に接続されている。ＣＰＵ５１は、時計機能及びタイマー機能を有する。ＣＰＵ５１は、ＲＯＭ５２やＨＤＤ７に記憶されたプログラムを実行することにより、出力端末５の各部を制御する。Ｉ／Ｏインタフェイス５５には、ＨＤＤ７、表示制御部５６、音声出力部６３、ディスクドライブ５８、ネットワーク通信部６０、キーボード６１、マウス６２及び信号受信部６５が接続されている。表示制御部５６は、ＣＰＵ５１の制御に基づいて映像信号をモニタ５７に出力する。音声出力部６３は、ＣＰＵ５１の制御に基づいて音声信号をモニタ５７に出力する。ディスクドライブ５８は、記録媒体５９に対するデータの書き込み及び読み出しを行う。信号受信部６５は、リモコン６６から出力される信号を受信する。リモコン６６は、操作者４２が出力端末５を操作するためのものである。
【００４８】
ＨＤＤ７は、本発明における記憶手段、第２記憶手段の一例である。ＨＤＤ７には、配信サーバ２から配信されたモーションデータ、ＭＩＤＩデータ、サポート音声データ等が記憶される。また、ＨＤＤ７には、レッスン情報、許可レベルテーブル、閾値ｔｈ１〜ｔｈ３等が記憶される。レッスン情報は、運動レッスンの構成を定めたレッスン情報である。例えば、操作者４２の操作に基づいて、出力端末５がレッスン情報を生成する。運動レッスンは、例えば、複数の運動動作から構成される。また例えば、運動レッスンを構成する各運動動作には、楽曲が割り当てられる。運動動作に対して割り当てられた楽曲は、楽曲が割り当てられた運動動作の運動映像がディスプレイ６７に表示されているときに、スピーカ６４により出力される楽曲である。レッスン情報は、例えば、複数のモーション情報を含む。複数のモーション情報のそれぞれは、運動レッスンを構成する運動動作を示す。複数のモーション情報は、運動動作の実行順に並べられている。上述したように、ＭＩＤＩデータはモーション情報と対応付けられている。ＭＩＤＩデータが示す楽曲が、モーション情報が示す運動動作に割り当てられる。許可レベルテーブルは、レッスンＩＤに対応付けて記憶される。レッスンＩＤは、許可レベルテーブルが用いられる運動レッスンを示す。
【００４９】
ＨＤＤ７には、更に、ＯＳ、運動支援プログラム、ミュージックシーケンサ、３Ｄエンジン、サポート音声再生プログラム、オーディオデバイスドライバ等の各種プログラム等が記憶されている。運動支援プログラムは、利用者４１の運動を支援するためのプログラムである。運動支援プログラムは、コンピュータとしてのＣＰＵ５１に、第１制御ステップと、第２制御ステップと、第３制御ステップと、第１判定ステップと、第２判定ステップと、補正ステップとを少なくとも実行させる。
【００５０】
ＣＰＵ５１は、ミュージックシーケンサを実行することにより、ＭＩＤＩデータに基づいて、各種イベントを出力させる。具体的に、ＣＰＵ５１は、ＭＩＤＩデータから、例えばデルタタイムとイベントとの組を順次読み出す。ＣＰＵ５１は、デルタタイムと指定されたテンポとに応じた時間スリープした後、イベントを出力する。通常ＭＩＤＩイベントが出力されたとき、ＣＰＵ５１は、通常ＭＩＤＩイベントに基づいて、音声出力部６３による音声信号の出力を制御する。これにより、ＣＰＵ５１は、音声出力部６３からスピーカ６４へ、楽曲の音声信号を出力させ、スピーカ６４から楽曲を出力させる。
【００５１】
ＣＰＵ５１は、３Ｄエンジンを実行することにより、モーションデータに基づいて、運動映像の再生処理を行う。具体的に、ＣＰＵ５１は、所定のフレームレートに応じた時間間隔で、運動映像を構成するフレーム画像を生成してディスプレイ６７に表示させる。フレーム画像を生成する処理は、射影変換、クリッピング、隠面消去、シェーディング、テクスチャマッピング等を含む。ＣＰＵ５１は、フレーム画像を表示制御部５６へ順次出力することで、ディスプレイ６７には、フィギュア８３が運動動作を行う運動映像が表示される。ＣＰＵ５１は、３Ｄ管理再生時間をＲＡＭ５３に記憶させて管理している。３Ｄ管理再生時間は、運動映像の再生が開始されてから経過した時間を示す。運動映像の再生開始時刻は、例えば、運動コンテンツの再生開始時刻と一致する。ＣＰＵ５１は、現在の３Ｄ管理再生時間に対応するフレーム画像を生成する。例えば、フレームレートが３０であり、現在の３Ｄ管理再生時間が２秒であるとする。このとき、ＣＰＵ５１は、運動映像を構成するフレーム画像のうち、先頭から６０フレーム目のフレーム画像を生成する。一方、ミュージックシーケンサにより出力される通常ＭＩＤＩイベントは、ＭＩＤＩデータに記述されたデルタタイムに応じたタイミングで出力される。ここで、楽曲の出力タイミングと運動映像の表示タイミングとがずれる場合がある。そこで、ＣＰＵ５１は、例えば、次に説明する方法で、運動映像の表示タイミングを楽曲の出力タイミングに同期させる。ＣＰＵ５１は、運動映像の再生開始時から、ミュージックシーケンサにより映像同期イベントが出力された回数をカウントする。例えば、フレームレートが３０であり、映像同期イベントが出力される時間間隔が０．５秒であるとする。現在の３Ｄ管理再生時間が１．９秒である場合、先頭から５７フレーム目のフレーム画像を表示することを示している。しかしながら、このときに、４回目の映像同期イベントが出力されたとする。この場合、楽曲の再生開始から２秒経過していることになる。そこで、出力端末５は、３Ｄ管理再生時間を２秒に変更する。つまり、ＣＰＵ５１は、３Ｄ管理再生時間を、楽曲の再生開始から経過した時間に一致させる。そして、ＣＰＵ５１は、変更後の３Ｄ管理再生時間に対応する６０フレーム目のフレーム画像を表示させる。なお、ＣＰＵ５１は、例えば、３Ｄ管理再生時間と楽曲の再生開始から経過した時間とのずれが所定値以上である場合にのみ、３Ｄ管理再生時間を、楽曲の再生開始から経過した時間に一致させてもよい。
【００５２】
ＣＰＵ５１は、サポート音声再生プログラムを実行することにより、サポート音声を再生する。ＣＰＵ５１は、音声再生用拡張イベントに基づいて、サポート音声の再生を開始する。具体的に、ＣＰＵ５１は、サポート音声データから順次データを読み出して、オーディオデバイスドライバへ順次送信する。オーディオデバイスドライバは、音声出力部６３に対するインタフェイスを提供するソフトウェアである。また、ＣＰＵ５１は、運動映像の表示タイミングとサポート音声の出力タイミングとが閾値以上であるとき、サポート音声の出力タイミングを補正する。補正の処理の詳細については、後述する。
【００５３】
ＣＰＵ５１は、オーディオデバイスドライバを実行することにより、サポート音声再生プログラムから送信されたデータに基づいて、サポート音声の音声信号を音声出力部６３から出力させる。ＣＰＵ５１は、１つのサポート音声データによるサポート音声の再生が開始されてから経過した時間を、ドライバ管理再生位置としてＲＡＭ５３に記憶させて管理している。例えば、ＣＰＵ５１は、音声信号の出力が進行するに従って、ドライバ管理再生位置を更新する。ＣＰＵ５１の処理負荷が高い場合、オーディオデバイスドライバによる音声信号の出力が遅延する場合がある。そのため、サポート音声の出力タイミングが運動映像の表示タイミングとずれる。この場合、ドライバ管理再生位置の進行が遅くなる。
【００５４】
各種プログラムは、例えば、配信サーバ２等のサーバからネットワーク１０を介してダウンロードされるようにしてもよい。また、各種プログラムは、記録媒体５９に記録されてディスクドライブ５８を介して読み込まれるようにしてもよい。なお、ミュージックシーケンサや３Ｄエンジンは、プログラムではなく、専用のハードウェアであってもよい。そして、出力端末５は、ハードウェアとしての３Ｄエンジンやミュージックシーケンサを備えてもよい。
【００５５】
［４．運動コンテンツ生成システム１の動作］
次に、図４乃至図６を参照して、運動コンテンツ生成システム１の動作を説明する。図４は、出力端末５のＣＰＵ５１の許可レベルテーブル生成処理の処理例を示すフローチャートである。ＣＰＵ５１は、操作者４２の操作に基づいて、レッスン情報を生成する。ＣＰＵ５１は、レッスン情報に含まれる複数のモーション情報のそれぞれに対応するモーションデータ及びＭＩＤＩデータを、ＨＤＤ７から取得する。ＣＰＵ５１は、取得した複数のモーションデータ同士を、運動動作の実行順に従った順序で結合する。これにより、ＣＰＵ５１は、レッスン情報に対応する運動レッスン用のモーションデータを生成する。また、ＣＰＵ５１は、取得した複数のＭＩＤＩデータ同士を、運動動作の実行順に従った順序で結合する。これにより、ＣＰＵ５１は、レッスン情報に対応する運動レッスン用のＭＩＤＩデータを生成する。ＣＰＵ５１は、生成したモーションデータ及びＭＩＤＩデータを、生成したレッスン情報のレッスンＩＤに対応付けてＨＤＤ７に記憶させる。ＣＰＵ５１は、例えば、このときに、許可レベルテーブル生成処理を開始してもよい。
【００５６】
図４に示すように、ＣＰＵ５１は、生成したＭＩＤＩデータからデルタタイムやイベント等のデータを順次読み出すことにより、ＭＩＤＩデータから音声再生拡張イベントを検索する。次いで、ＣＰＵ５１は、音声再生拡張イベントを読み出したか否かを判定する（ステップＳ１）。このとき、ＣＰＵ５１は、音声再生拡張イベントを読み出したと判定した場合には（ステップＳ１：ＹＥＳ）、ステップＳ２に進む。
【００５７】
ステップＳ２において、ＣＰＵ５１は、読み出した音声再生用拡張イベントに対応するサポート音声データをＨＤＤ７から取得する。そして、ＣＰＵ５１は、取得したサポート音声データから、サポート音声の音声信号を示す波形データＳＧ１を生成する。波形データＳＧ１は、例えば、所定時間間隔ごとの音声レベルのサンプル値を含む。次いで、ＣＰＵ５１は、波形データＳＧ１の各サンプル値の絶対値をとる。これにより、ＣＰＵ５１は、音声信号の絶対値を示す信号の波形データＳＧ２を生成する（ステップＳ３）。次いで、ＣＰＵ５１は、波形データＳＧ２に含まれるサンプル値のうち、所定の閾値未満のサンプル値を０に変更する。これにより、ＣＰＵ５１は、音声レベルが所定値未満の音声を無音とする信号を示す波形データＳＧ３を生成する（ステップＳ４）。閾値は、例えば、−２０ｄｂ〜−２５ｄｂの間で設定されてもよい。次いで、ＣＰＵ５１は、ローパスフィルタにより、波形データＳＧ３が示す信号から、所定のカットオフ周波数以上の信号成分を除去する。これにより、ＣＰＵ５１は、ノイズが除去された信号を示す波形データＳＧ４を生成する（ステップＳ５）。ローパスフィルタは、ハードウェアであってもよいしソフトウェアであってもよい。カットオフ周波数は、例えば、１００〜４００Ｈｚの間で設定されてもよい。波形データＳＧ４は、図３（Ｂ）の信号の波形を示す。次いで、ＣＰＵ５１は、波形データＳＧ４に含まれる各サンプル値の差分を計算する。これにより、ＣＰＵ５１は、波形データＳＧ４が示す信号を微分した信号を示す波形データＳＧ５を生成する（ステップＳ６）。
【００５８】
次いで、ＣＰＵ５１は、波形データＳＧ４に基づいて、ゼロクロスポイントとなる再生位置を示す時間Ｐを抽出する。時間Ｐは、楽曲の再生が開始されてから経過する時間である。ＣＰＵ５１は、波形データＳＧ４において、ゼロクロスポイントが出現する順に、各時間Ｐに番号を割り当てる。ＣＰＵ５１は、抽出した時間ＰをＲＡＭ５３に記録する（ステップＳ７）。次いで、ＣＰＵ５１は、ＭＩＤＩデータからテンポを取得する。次いで、ＣＰＵ５１は、テンポに対応する１拍の長さを計算する。次いで、ＣＰＵ５１は、各時間Ｐについて、次に出現する時間Ｐとの時間間隔を計算する。例えば、図３（Ｃ）の例において、時間Ｐ１について、時間Ｐ２との時間間隔が計算される。ＣＰＵ５１は、時間間隔が１拍の長さの自然数倍である時間Ｐを、時間ＴＰとして記録する（ステップＳ８）。なお、ＣＰＵ５１は、時間Ｐ同士の時間間隔と１拍の長さの自然数倍とに若干の差があっても、時間ＴＰとして記録してもよい。次いで、ＣＰＵ５１は、ＭＩＤＩデータから拍子記号を取得する。ＣＰＵ５１は、拍子記号に基づいて、記録した時間ＴＰのうち、小節の最初の拍に対応する時間を、時間ＴＰ０としてＲＡＭ５３に記録する（ステップＳ９）。例えば、拍子記号が４分の４拍子であり、テンポが１２０であるとする。この場合、再生位置が０〜０．５秒の範囲、２〜２．５秒の範囲等が、小節の最初の拍に対応する時間の範囲である。次いで、ＣＰＵ５１は、記録した時間ＴＰのうち、時間ＴＰ０以外の時間を、時間ＴＰ１としてＲＡＭ５３に記録する（ステップＳ１０）。次いで、ＣＰＵ５１は、時間Ｐのうち、時間ＴＰ以外の時間を、時間ＴＰ２としてＲＡＭ５３に記録する（ステップＳ１１）。次いで、ＣＰＵ５１は、時間ＴＰ２として記録された時間Ｐと、次に出現する時間Ｐとの範囲の中で、音声レベルが０になる時間の範囲を、無音区間として特定する。そして、ＣＰＵ５１は、無音区間が開始する再生位置を、時間ＴＰ３としてＲＡＭ５３に記録する（ステップＳ１２）。また、ＣＰＵ５１は、無音区間が終了する再生位置を、Ｔ２としてＲＡＭ５３に記録する。例えば、図３（Ｃ）の例において、時間Ｐ４とＰ５との範囲の中で、時間Ｔａは、無音区間が開始する再生位置であり、時間Ｔｂは無音区間が終了する再生位置である。
【００５９】
次いで、ＣＰＵ５１は、許可レベルテーブルに対する登録を行う（ステップＳ１３）。具体的に、ＣＰＵ５１は、時間ＴＰ０とレベル０とを対応付けて許可レベルテーブルに登録する。また、ＣＰＵ５１は、時間ＴＰ１とレベル１とを対応付けて許可レベルテーブルに登録する。また、ＣＰＵ５１は、時間ＴＰ２とレベル２とを対応付けて許可レベルテーブルに登録する。また、ＣＰＵ５１は、時間ＴＰ３とレベル３とを対応付けて許可レベルテーブルに登録する。次いで、ＣＰＵ５１は、ステップＳ１に進む。
【００６０】
ステップＳ１において、ＣＰＵ５１は、ＭＩＤＩデータの終端を検出することにより、音声再生拡張イベントを読み出さなかったと判定した場合には（ステップＳ１：ＮＯ）、許可レベルテーブル生成処理を終了させる。ＣＰＵ５１は、生成した許可レベルテーブルを、生成したレッスン情報のレッスンＩＤに対応付けてＨＤＤ７に記憶させる。
【００６１】
図５（Ａ）は、出力端末５のＣＰＵ５１の運動コンテンツ再生処理の処理例を示すフローチャートである。例えば、インストラクターが出力端末５を操作することにより、実行する運動レッスンを選択する。ＣＰＵ５１は、選択された運動レッスンのレッスンＩＤに対応するＭＩＤＩデータ、モーションデータ及び許可レベルテーブルを、ＨＤＤ７から取得する。ＣＰＵ５１は、取得したデータに基づいて、運動コンテンツ再生処理を開始する。ＣＰＵ５１は、運動コンテンツ再生処理を開始するとき、ＣＰＵ５１が有する時計機能から、現在時刻を取得する。そして、ＣＰＵ５１は、取得した時刻を、運動コンテンツ再生開始時刻としてＲＡＭ５３に記憶させる。また、ＣＰＵ５１は、ＭＩＤＩデータからテンポを取得する。運動コンテンツ再生処理において、ＣＰＵ５１は、ＭＩＤＩデータの先頭から、デルタタイムとイベントとの組を順次読み出す。そして、ＣＰＵ５１は、読み出したイベントに応じた処理を実行する。
【００６２】
具体的に、ＣＰＵ５１は、図５（Ａ）に示すように、ＭＩＤＩデータからデルタタイム及びイベントの組を１つ読み出す処理を実行する（ステップＳ２１）。次いで、ＣＰＵ５１は、ステップＳ２１の処理においてＭＩＤＩデータの終端が検出されたか否かを判定する（ステップＳ２２）。このとき、ＣＰＵ５１は、ＭＩＤＩデータの終端が検出されていないと判定した場合には（ステップＳ２２：ＮＯ）、読み出したデルタタイムと、指定されたテンポとに応じた時間スリープする。そして、ＣＰＵ５１は、ステップＳ２３に進む。
【００６３】
ステップＳ２３において、ＣＰＵ５１は、読み出したイベントが通常ＭＩＤＩイベントであるか否かを判定する。このとき、ＣＰＵ５１は、イベントが通常ＭＩＤＩイベントであると判定した場合には（ステップＳ２３：ＹＥＳ）、ステップＳ２４に進む。一方、ＣＰＵ５１は、イベントが通常ＭＩＤＩイベントではないと判定した場合には（ステップＳ２３：ＮＯ）、ステップＳ２５に進む。ステップＳ２４において、ＣＰＵ５１は、読み出した通常ＭＩＤＩイベントを、ソフトウェアシンセサイザーへ出力する。次いで、ＣＰＵ５１は、ステップＳ２１に進む。
【００６４】
ステップＳ２５において、ＣＰＵ５１は、読み出したイベントが３Ｄ制御用拡張イベントであるか否かを判定する。このとき、ＣＰＵ５１は、イベントが３Ｄ制御用拡張イベントであると判定した場合には（ステップＳ２５：ＹＥＳ）、ステップＳ２６に進む。一方、ＣＰＵ５１は、イベントが３Ｄ制御用拡張イベントではないと判定した場合には（ステップＳ２５：ＮＯ）、ステップＳ２７に進む。イベントが通常ＭＩＤＩイベントでも３Ｄ制御用拡張イベントでもない場合、そのイベントは音声再生用拡張イベントである。ステップＳ２６において、ＣＰＵ５１は、読み出した３Ｄ制御用拡張イベントを、３Ｄエンジンへ出力する。次いで、ＣＰＵ５１は、ステップＳ２１に進む。
【００６５】
ステップＳ２７において、ＣＰＵ５１は、読み出した音声再生用拡張イベントをサポート音声再生プログラムへ出力する。次いで、ＣＰＵ５１は、ステップＳ２１に進む。ステップＳ２２において、ＣＰＵ５１は、ＭＩＤＩデータの終端が検出されたと判定した場合には（ステップＳ２２：ＹＥＳ）、運動コンテンツ再生処理を終了させる。
【００６６】
図６は、出力端末５のＣＰＵ５１のサポート音声再生処理の処理例を示すフローチャートである。運動コンテンツ再生処理において、サポート音声の再生を開始させる音声再生用拡張イベントが出力される。すると、出力端末５は、サポート音声再生処理を開始する。ＣＰＵ５１は、音声再生用拡張イベントに対応するサポート音声データからのデータを読み出し位置を初期化する。データの読み出し位置は、サポート音声データにおいて、各データが格納されているアドレスに対応する。ＣＰＵ５１は、データの読み出し位置を、サポート音声データの先頭に設定する。
【００６７】
次いで、ＣＰＵ５１は、許可レベルテーブルに、レベル０及びレベル１の少なくとも何れかが登録されているか否かを判定する（ステップＳ３１）。このとき、ＣＰＵ５１は、レベル０及びレベル１の少なくとも何れかが登録されていると判定した場合には（ステップＳ３１：ＹＥＳ）、ステップＳ３２に進む。一方、ＣＰＵ５１は、レベル０及びレベル１の何れも登録されていないと判定した場合には（ステップＳ３１：ＮＯ）、ステップＳ３３に進む。
【００６８】
ステップＳ３２において、ＣＰＵ５１は、補正フラグをＴＲＵＥに設定する。次いで、ＣＰＵ５１は、ステップＳ３４に進む。ステップＳ３３において、ＣＰＵ５１は、補正フラグをＦＡＬＳＥに設定する。次いで、ＣＰＵ５１は、ステップＳ３４に進む。補正フラグは、サポート音声を補正するか否かを示す情報である。補正フラグがＴＲＵＥである場合、ＣＰＵ５１は、サポート音声を補正する。補正フラグがＦＡＬＳＥである場合、ＣＰＵ５１は、サポート音声を補正しない。
【００６９】
ステップＳ３４において、ＣＰＵ５１は、運動コンテンツの再生開始から経過した時間を、サポート音声の再生開始時間ｔｂとして設定する。例えば、ＣＰＵ５１は、時計機能から現在時刻を取得する。そして、ＣＰＵ５１は、現在時刻から運動コンテンツ再生開始を引いて、時間ｔｂを計算する。次いで、ＣＰＵ５１は、３Ｄエンジンから３Ｄ管理再生時間ｔ１を取得する（ステップＳ３５）。次いで、ＣＰＵ５１は、オーディオデバイスドライバから、ドライバ管理再生位置を示す時間ｔ２を取得する（ステップＳ３６）。次いで、ＣＰＵ５１は、許可レベルテーブルから、時間ｔｂ＋ｔ２に対応する許可レベルを取得する（ステップＳ３７）。時間ｔｂ＋ｔ２は、運動コンテンツの再生が開始されてから現在までに経過した時間である。次いで、ＣＰＵ５１は、時間ｔ１から時間ｔｂ＋ｔ２を引くことにより、差分ｄｉｆｆを計算する（ステップＳ３８）。差分ｄｉｆｆは、運動映像の表示タイミングとサポート音声の出力タイミングとのずれを示す。次いで、ＣＰＵ５１は、差分ｄｉｆｆの絶対値ａｄを計算する（ステップＳ３９）。次いで、ＣＰＵ５１は、補正フラグがＴＲＵＥであるか否かを判定する（ステップＳ４０）。このとき、ＣＰＵ５１は、補正フラグがＴＲＵＥであると判定した場合には（ステップＳ４０：ＹＥＳ）、ステップＳ４１に進む。一方、ＣＰＵ５１は、補正フラグがＴＲＵＥではないと判定した場合には（ステップＳ４０：ＮＯ）、ステップＳ４８に進む。
【００７０】
ステップＳ４１において、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ３よりも大きいか否かを判定する。このとき、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ３以下であると判定した場合には（ステップＳ４１：ＮＯ）、ステップＳ４８に進む。一方、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ３よりも大きいと判定した場合には（ステップＳ４１：ＹＥＳ）、ステップＳ４２に進む。ステップＳ４２において、ＣＰＵ５１は、取得した許可レベルが０であるか否かを判定する。このとき、ＣＰＵ５１は、許可レベルが０であると判定した場合には（ステップＳ４２：ＹＥＳ）、ステップＳ４８に進む。一方、ＣＰＵ５１は、許可レベルが０ではないと判定した場合には（ステップＳ４２：ＮＯ）、ステップＳ４３に進む。ステップＳ４３において、ＣＰＵ５１は、取得した許可レベルが１であるか否かを判定する。このとき、ＣＰＵ５１は、許可レベルが１ではないと判定した場合には（ステップＳ４３：ＮＯ）、ステップＳ４５に進む。一方、ＣＰＵ５１は、許可レベルが１であると判定した場合には（ステップＳ４３：ＹＥＳ）、ステップＳ４４に進む。ステップＳ４４において、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ１よりも大きいか否かを判定する。このとき、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ１以下であると判定した場合には（ステップＳ４４：ＮＯ）、ステップＳ４８に進む。一方、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ１よりも大きいと判定した場合には（ステップＳ４４：ＹＥＳ）、ステップＳ４７に進む。
【００７１】
ステップＳ４５において、ＣＰＵ５１は、取得した許可レベルが２であるか否かを判定する。このとき、ＣＰＵ５１は、許可レベルが２ではないと判定した場合には（ステップＳ４５：ＮＯ）、ステップＳ４７に進む。一方、ＣＰＵ５１は、許可レベルが２であると判定した場合には（ステップＳ４５：ＹＥＳ）、ステップＳ４６に進む。ステップＳ４６において、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ２よりも大きいか否かを判定する。このとき、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ２以下であると判定した場合には（ステップＳ４６：ＮＯ）、ステップＳ４８に進む。一方、ＣＰＵ５１は、絶対値ａｄが閾値ｔｈ２よりも大きいと判定した場合には（ステップＳ４６：ＹＥＳ）、ステップＳ４７に進む。
【００７２】
ステップＳ４７において、ＣＰＵ５１は、同期処理を実行する。図５（Ｂ）は、出力端末５のＣＰＵ５１の同期処理の処理例を示すフローチャートである。図５（Ｂ）に示すように、ＣＰＵ５１は、差分ｄｉｆｆが０より大きいか否かを判定する（ステップＳ６１）。このとき、ＣＰＵ５１は、差分ｄｉｆｆが０より大きいと判定した場合には（ステップＳ６１：ＹＥＳ）、ステップＳ６２に進む。一方、ＣＰＵ５１は、差分ｄｉｆｆが０以下であると判定した場合には（ステップＳ６１：ＮＯ）、ステップＳ６３に進む。ステップＳ６２において、ＣＰＵ５１は、サポート音声データからのデータの読み出し位置を、絶対値ａｄが示す時間に相当するバイト数分、サポート音声データの終端の方向へ移動させる。ステップＳ６３において、ＣＰＵ５１は、絶対値ａｄが示す時間分、スリープする。ＣＰＵ５１は、ステップＳ６２又はＳ６３の処理を終えると、同期処理を終了させて、ステップＳ４８に進む。
【００７３】
図６に示すように、ステップＳ４８において、ＣＰＵ５１は、サポート音声データから、ＲＡＭ５３に確保されたバッファのデータサイズ分のデータを読み出して、バッファに格納する。このとき、ＣＰＵ５１は、現在のデータの読み出し位置からバッファのデータサイズ分のデータを読み出す。次いで、ＣＰＵ５１は、サポート音声データからデータを読み出すことができたか否かを判定する（ステップＳ４９）。このとき、ＣＰＵ５１は、データを読み出すことができたと判定した場合には（ステップＳ４９：ＹＥＳ）、ステップＳ５１に進む。ステップＳ５１において、ＣＰＵ５１は、データの読み出し位置を、バッファのデータサイズ分、サポート音声データの終端の方向へ移動させる。そして、ＣＰＵ５１は、バッファに格納したデータを、オーディオデバイスドライバへ送信する。次いで、ＣＰＵ５１は、ステップＳ３５に進む。一方、ＣＰＵ５１は、データを読み出すことがでなかったと判定した場合には（ステップＳ４９：ＮＯ）、サポート音声再生処理を終了させる。この場合、データの読み出し位置が、サポート音声データの終端に達している。
【００７４】
以上説明したように、本実施形態によれば、ＣＰＵ５１は、運動映像の表示タイミングとサポート音声の出力タイミングとに閾値を超えるずれがあるかを判定する。ＣＰＵ５１は、閾値を超えるずれがあると判定したとき、サポート音声においてスピーカ６４により出力されている音声部分が、拍に合わせて出力される音声部分であるかを判定する。ＣＰＵ５１は、拍に合わせて出力される音声部分ではないと判定されたとき、サポート音声の出力タイミングを補正する。そのため、サポート音声が出力されるリズムが乱れないように、サポート音声の出力タイミングを補正することができる。
【符号の説明】
【００７５】
１  運動コンテンツ生成システム
２  配信サーバ
３  データベース
５  出力端末
７  ＨＤＤ
５１  ＣＰＵ
５２  ＲＯＭ
５３  ＲＡＭ
５６  表示制御部
６０  ネットワーク通信部
６３  音声出力部
５７  モニタ
６４  スピーカ
６７  ディスプレイ
【図１】
2014166240.tif 000003
【図２】
2014166240.tif 000004
【図４】
2014166240.tif 000005
【図５】
2014166240.tif 000006
【図６】
2014166240.tif 000007
【図３】
2014166240.tif 000008