説明

音声処理装置、音声処理方法、ならびに、プログラム

【課題】人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生する音声処理装置等を提供する。
【解決手段】音声処理装置301の記憶部302は、音声再生のためのコマンド列と、これと同期して再生させるべき複数の波形データと、を記憶し、コマンド再生部303は、当該コマンド列の再生を開始し、経過時間計測部304は、当該再生が開始されてからの経過時間を所定のコマンド時間長の精度で計測し、断片波形選択部305は、近々再生すべき波形データを先頭から所定の波形時間長ごとに区切った経過時間をコマンド時間長で表現した場合の誤差が最小となる区切りを求め、波形再生部306は、経過時間が、当該コマンド時間長の精度で当該求められた区切りの経過時間に至ると、当該区切り以降の波形データの再生を開始する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【0002】
従来から、PCM(Pulse Coded Modulation)、ADPCM(Adaptive Differential PCM)、MP3(MPeg audio layer-3)、Vorbis等によって表現される波形データと、MIDI(Musical Instrument Digital Interface)もしくはMML(Music Macro Language)、PSG(Programmable Sound Generator)のレジスタに与える値等によって表現されるコマンドと、を組み合わせて音声を出力する技術が利用されている。
【0003】
たとえば以下の文献には、自由かつエンタテインメント性の高い着信音を出力し、音源データ更新の際のユーザや携帯端末の負担を少なくするため、携帯端末にPCMデータを記録したPCMデータ記録部、PSGデータを記録したPSGデータ記録部を設け、着信音データ生成部は、PCMデータ記録部、PSGデータ記録部から適宜音源データであるPCMデータ、PSGデータを読み出し、これらを組み合わせて着信音データを生成し、これに基づく着信音を着信音出力スピーカ装置から出力させる技術が開示されている。
【特許文献1】特開2001−245020号公報
【0004】
このような音声合成技術は、各種のゲームにおいて、キャラクターの発声とBGM(Back Ground Music)とを合成して出力する場合にも応用が可能である。
【0005】
ここで、キャラクターの声は声優に演じさせ、人間の肉声を利用して不自然さをなくす一方で、BGMなどはMIDIなどによる演奏を利用してデータ量を抑制する手法が、一般に採用されている。
【0006】
したがって、伴奏に合わせてキャラクターが歌を歌うような場面では、PCMなどにより表現されている波形データの再生と、MIDIなどにより表現されているコマンドデータの再生と、の同期をとる必要がある。
【0007】
一般に、波形データの再生は、所定のレジスタやバッファに一定間隔で当該間隔分の波形データを書き込んだり、所定の再生ライブラリの関数を当該間隔分の波形データを引数として渡す処理を一定間隔で実行することで行われる。たとえば、サンプリングレート44100Hz、モノラル16ビット(2バイト)の波形データを、垂直同期周期である60分の1秒間隔で書き込む場合には、垂直同期割込が生じるごとに、2×44100×(1/60) = 1470バイトを渡すことになる。この場合、波形データを1470バイトごとに区切った断片波形単位で管理する技術が利用されている。
【0008】
したがって、圧縮を行わない場合には、経過時間とデータの大きさとは、比例することになる。また、MP3等のように圧縮を行っている場合であっても、最終的にはPCMデータに変換する必要があるため、同じ議論を敷衍することができる。
【0009】
一方、コマンドデータは、PSGデータにせよ、MIDIデータにせよ、各種のMMLデータにせよ、楽曲のテンポを決めるコマンド、複数のチャネルのそれぞれに楽器の音色を割り当てるコマンド、いずれのチャネルでどの音程でどの音長さでどの音量で音を出すか、を指定するコマンドの列と考えることができる。
【0010】
したがって、再生に要する時間とコマンド列の長さとは、必ずしも比例しない。したがって、コマンド列を解釈しながら何らかの処理を実行するために、音符に対する基本精度を定め、その精度の間隔で割込を生じさせたり、カウンタが増加されるようにして、経過時間を計測する技術が利用されている。
【0011】
この基本精度は、拍(4分音符の時間長)を所定の定数で割り算した時間長とすることが多い。この場合、コマンドにより指定されるテンポが変化すると、基本精度も変化することになる。
【0012】
さて、キャラクターが伴奏に合わせて歌う場合等を考えると、伴奏音は途切れなく出力されるべきであるが、歌唱においては、発声等を行うため音が生じている「フレーズ」と呼ばれる区間と、呼吸等を行うため事実上無音となるべき「ブレス」と呼ばれる区間とがあるのが一般的である。また、一つの楽曲の中で同じ「フレーズ」が複数回利用されることもある。
【発明の開示】
【発明が解決しようとする課題】
【0013】
したがって、再生すべきデータの中から、波形データのデータ量を低減するため、ブレス区間等の無音区間を除去することができるようにする技術が求められている。
【0014】
一方で、無音区間を除去した場合には、波形データの再生とコマンドデータの再生との間で適切に同期をとる技術が必要となる。
【0015】
また、無音区間を除去しない場合であっても、波形データを、たとえば小節単位などで管理して、楽曲内で繰り返し同じように歌われるパートについては、共用することでデータ量を抑制したいことも多い。
【0016】
さらに、コマンドデータにおける経過時間の計測の精度と、波形データにおける断片波形の時間長とが一致しない状況を考慮する必要もある。
【0017】
本発明は、上記のような課題を解決するもので、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【0018】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0019】
本発明の第1の観点に係る音声処理装置は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を備え、以下のように構成する。
【0020】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される。
【0021】
ここで、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【0022】
典型的には、コマンド列は、伴奏音などを奏でるためのものであり、断片波形列は、人間の歌声などを表現するためのものである。ここで、断片波形列のそれぞれは、人間の歌声のフレーズ(先頭に無音区間があっても良い)に相当するものであり、楽曲の再生を開始した時点を基準時としたときに、そのフレーズを再生すべきなのは、どれだけ時間が経過してからなのか、を、断片波形列に対応付けられる経過時間で表す。
【0023】
また、断片波形列は、断片波形が並んだ列であり、当該断片波形を順に再生することで、当該フレーズの音声が出力される。したがって、各断片波形を再生すべき経過時間は、断片波形列に対応付けられる経過時間と、断片波形列の中でその断片波形が(0から数え始めて)何番目かと、から計算することが可能である。また、各断片波形の時間長は、波形データ再生の際のバッファ長に呼応する時間長である。
【0024】
一方、コマンド再生部は、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【0025】
上記のように、コマンドには、テンポを指定するもの、各チャネルに割り当てる楽器の音色を指定するもの、ある小節において、どのチャネルでどの音程でどの音長でどの大きさで音を出すかを指定するもの等が存在する。
【0026】
さらに、経過時間計測部は、コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【0027】
上記のように、コマンド時間長の精度は、コマンド再生部の機能によって異なるが、拍を所定の定数で割り切った時間長とすることが多い。この場合、テンポが変化すると、コマンド時間長の精度も変化することになる。
【0028】
そして、断片波形選択部は、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【0029】
すなわち、当該断片波形列に含まれる断片波形を先頭から順に走査して、どこから再生を開始すると、波形データとコマンドデータとの時間的なずれが最小となるか、を調べる。
【0030】
この際の基準となるのが、ある断片波形を再生すべき経過時間Tを、当該経過時間Tにおけるコマンド時間長Δtにより表現した場合の誤差eである。典型的には、以下の条件を満たす整数nを見つけることができれば、
Δt×n≦T<Δt×(n+1)
当該誤差eは、
e = min(T-Δt×n,Δt×(n+1)-T)
のように表現することができる。
【0031】
本発明においては、複数の断片波形のうち、いずれから再生を開始することとすると、コマンド列との同期ずれが生じにくいか、を、あらかじめ選択することができる。
【0032】
さらに、波形再生部は、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【0033】
経過時間を調べる精度がコマンド列に指定されるテンポ等によって支配され、波形再生が垂直同期割込等の間隔によって支配される場合であっても、上記のように、誤差最小の断片波形から再生を開始するため、ずれをできるだけ抑制することができる。
【0034】
したがって、本発明によれば、コマンド列による音声の再生に同期させて、波形データによる音声を誤差最小断片波形から開始して再生することができるようになる。
【0035】
本発明のその他の観点に係る音声処理装置は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を備え、以下のように構成する。
【0036】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される。
【0037】
ここで、当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【0038】
典型的には、コマンド列は、伴奏音などを奏でるためのものであり、断片波形列は、人間の歌声などを表現するためのものである。ここで、断片波形列のそれぞれは、人間の歌声のフレーズ(先頭に無音区間があっても良い)に相当するものであり、楽曲の再生を開始した時点を基準時としたときに、そのフレーズを再生すべきなのは、どれだけ時間が経過してからなのか、を、断片波形列に対応付けられる経過時間で表す。
【0039】
また、断片波形列は、断片波形が並んだ列であり、当該断片波形を順に再生することで、当該フレーズの音声が出力される。したがって、各断片波形を再生すべき経過時間は、断片波形列に対応付けられる経過時間と、断片波形列の中でその断片波形が(0から数え始めて)何番目かと、から計算することが可能である。また、各断片波形の時間長は、波形データ再生の際のバッファ長に呼応する時間長である。
【0040】
一方、コマンド再生部は、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【0041】
上記のように、コマンドには、テンポを指定するもの、各チャネルに割り当てる楽器の音色を指定するもの、ある小節において、どのチャネルでどの音程でどの音長でどの大きさで音を出すかを指定するもの等が存在する。
【0042】
さらに、経過時間計測部は、コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【0043】
上記のように、コマンド時間長の精度は、コマンド再生部の機能によって異なるが、拍を所定の定数で割り切った時間長とすることが多い。この場合、テンポが変化すると、コマンド時間長の精度も変化することになる。
【0044】
さらに、断片波形選択部は、当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【0045】
ある断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である、とは、当該断片波形列の再生を間もなく開始しなければならないことを意味する。
【0046】
本発明では、このような状況になると、当該断片波形列に含まれる断片波形を先頭から順に走査して、どこから再生を開始すると、波形データとコマンドデータとの時間的なずれが最小となるか、を調べる。
【0047】
この際の基準となるのが、断片波形を再生すべき経過時間Tを、当該経過時間Tにおけるコマンド時間長Δtにより表現した場合の誤差eである。典型的には、以下の条件を満たす整数nを見つけることができれば、
Δt×n≦T<Δt×(n+1)
当該誤差eは、
e = min(T-Δt×n,Δt×(n+1)-T)
のように表現することができる。
【0048】
なお、走査すべき断片波形の個数は、定数とすることができるが、可変とすることも可能であり、当該態様については後述する。
【0049】
そして、波形再生部は、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【0050】
経過時間を調べる精度がコマンド列に指定されるテンポ等によって支配され、波形再生が垂直同期割込等の間隔によって支配される場合であっても、上記のように、誤差最小の断片波形から再生を開始するため、ずれをできるだけ抑制することができる。
【0051】
したがって、本発明によれば、コマンド列による音声の再生と、波形データによる音声の再生と、を、適切に同期させて再生することができるようになる。
【0052】
また、本発明の音声処理装置において、当該複数の断片波形列のそれぞれについて、当該断片波形列の先頭1個以上の断片波形は、いずれも、当該波形時間長の無音を表す無音断片波形であり、断片波形選択部は、当該断片波形列の先頭の無音断片波形の個数を当該所定個数として、誤差最小断片波形を選択するように構成することができる。
【0053】
すなわち、先頭の無音断片波形のみを走査して、誤差最小の断片波形を選択するのである。ここで、無音断片波形とは、結局のところ、変位が0(定数)である波形データのことである。したがって、断片波形のフォーマットとしては、無音断片波形であるか否かを示すフラグを用意して、無音断片波形である場合には、変位を表す波形データを省略することとすれば、データ量を抑制することができる。
【0054】
本発明によれば、断片波形列の再生は、いずれも、必ず無音部分から開始されることとなるため、波形データの再生開始時に生じやすい「ポツ」という音が生じるのを防止して、自然な波形データの再生を行うことができるようになる。
【0055】
また、本発明の音声処理装置は、経過時間入力受付部をさらに備え、以下のように構成することができる。
【0056】
すなわち、経過時間入力受付部は、基準時からの経過時間を指定する経過時間入力を受け付ける。
【0057】
これは、楽曲再生を行うメディアプレイヤー等に用意されている早送り、巻き戻し、タイムワープ機能に相当するものであり、ユーザからの指定や当該音声処理装置を制御するプログラムによる指定を受付けるものである。
【0058】
そして、当該経過時間入力が受け付けられた場合、コマンド再生部は、当該コマンド列を先頭から解釈して、当該音長を積算した値に相当する時間が当該経過時間入力に指定される経過時間に至るまで、当該コマンドを無視し、当該経過時間入力に指定される経過時間に至ると、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【0059】
上記のように、コマンド列は先頭から解釈する必要があるため、音を出さないままに楽曲再生に要する時間長を積算して、それが指定された経過時間になるまでスキップをする。そして、指定された経過時間になったら、そこからコマンド解釈に基づく楽曲再生を開始する。
【0060】
一方、経過時間計測部は、当該音長を積算した値に相当する時間と、コマンド再生部による音声波形の再生が開始されてからの経過時間と、の和を、当該コマンド時間長の精度で計測された経過時間とする。
【0061】
すなわち、スキップした分の積算時間を経過時間として計上するのである。
【0062】
本発明によれば、コマンド列と波形データによる音声の同期再生において、早送りや巻き戻し、タイムワープ等、途中からの再生を行うことができるようになる。
【0063】
また、本発明の音声処理装置において、経過時間計測部は、当該コマンド時間長おきに生じる割り込みの回数を計測することにより、コマンド再生部による音声波形の再生が開始されてからの経過時間を計測し、断片波形選択部は、当該割り込みが生じるごとに、対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である断片波形列が記憶されているか否かを判断するように構成することができる。
【0064】
本発明は、上記発明の好適実施形態に係るものであり、コマンド列の解釈を行う際に、コマンド列の再生テンポに同期した所定の周期の割込が生じるものとして、当該割込によって波形データの再生開始も制御するものである。
【0065】
また、本発明の音声処理装置において、波形再生部は、垂直同期割込が生じるごとに、1つの断片波形を再生するように構成することができる。
【0066】
本発明は、上記発明の好適実施形態に係るものであり、ゲーム装置などにおいて、画面表示処理と同期して波形データの音声処理を行う場合に本発明を適用するもので、垂直同期割込周期の間に出力されるべき音声データの長さを、波形時間長に一致させることで、波形データの管理ならびに再生処理を容易にするものである。
【0067】
また、本発明の音声処理装置において、当該コマンド列は、MIDI(Musical Instrument Digital Interface)もしくはMML(Music Macro Language)により表現され、当該断片波形は、PCM(Pulse Code Modulation)、ADPCM(Adaptive Differential PCM)、MP3(MPeg audio layer-3)もしくはVorbisにより表現されるように構成することができる。
【0068】
本発明は、上記発明の好適実施形態に係るものであり、コマンド列のデータとして典型的なものと、波形データとして典型的なものと、を採用するものである。
【0069】
本発明のその他の観点に係る音声処理方法は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行し、コマンド再生工程、経過時間計測工程、断片波形選択工程、波形再生工程を備え、以下のように構成する。
【0070】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される。
【0071】
そして、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【0072】
一方、コマンド再生工程では、コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【0073】
さらに、経過時間計測工程では、経過時間計測部が、コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【0074】
そして、断片波形選択工程では、断片波形選択部が、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【0075】
一方、波形再生工程では、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、波形再生部が、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【0076】
本発明のその他の観点に係る音声処理方法は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行し、コマンド再生工程、経過時間計測工程、断片波形選択工程、波形再生工程を備え、以下のように構成する。
【0077】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される。
【0078】
そして、当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【0079】
ここで、コマンド再生工程では、コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【0080】
一方、経過時間計測工程では、経過時間計測部が、コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【0081】
さらに、断片波形選択工程では、当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である場合、断片波形選択部が、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【0082】
そして、波形再生工程では、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、波形再生部が、選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【0083】
本発明のその他の観点に係るプログラムは、コンピュータを上記の音声処理装置の各部として機能させるように構成する。
【0084】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【0085】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0086】
本発明によれば、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【0087】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例1】
【0088】
図1は、プログラムを実行することにより、本発明の音声処理装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【0089】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM 102と、RAM(Random Access Memory)103と、インターフェイス104と、コントローラ105と、外部メモリ106と、画像処理部107と、DVD−ROM(Digital Versatile Disc ROM)ドライブ108と、NIC(Network Interface Card)109と、音声処理部110と、マイク111と、を備える。
【0090】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ108に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の音声処理装置が実現される。
【0091】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0092】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0093】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0094】
インターフェイス104を介して接続されたコントローラ105は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【0095】
インターフェイス104を介して着脱自在に接続された外部メモリ106には、ゲーム等のプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0096】
DVD−ROMドライブ108に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ108は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0097】
画像処理部107は、DVD−ROMから読み出されたデータをCPU 101や画像処理部107が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部107が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部107に接続されるモニタ(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0098】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0099】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0100】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0101】
NIC 109は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0102】
音声処理部110は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン(図示せず)、イヤフォン(図示せず)から出力させる。
【0103】
音声処理部110では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0104】
さらに、情報処理装置100には、インターフェイス104を介してマイク111を接続することができる。この場合、マイク111からのアナログ信号に対しては、適当なサンプリング周波数でA/D変換を行い、PCM形式のディジタル信号として、音声処理部110でのミキシング等の処理ができるようにする。
【0105】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ108に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0106】
以上で説明した情報処理装置100は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【0107】
たとえば、一般的なコンピュータは、上記情報処理装置100と同様に、CPU、RAM、ROM、DVD−ROMドライブ、および、NICを備え、情報処理装置100よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ105ではなく、キーボードやマウスなどを入力装置として利用する。
【0108】
(音声処理装置)
図2は、上記情報処理装置100にプログラムを実行させることにより実現される音声処理装置の一実施形態の概要構成を示す説明図である。以下、本図を参照して説明する。
【0109】
本実施形態に係る音声処理装置301は、記憶部302、コマンド再生部303、経過時間計測部304、断片波形選択部305、波形再生部306、経過時間入力受付部307を備える。
【0110】
記憶部302には、キャラクターが歌を歌うシーン等で用いる伴奏音声用のコマンド列と、声優が演じた音声用の波形データとが記憶される。
【0111】
コマンド再生部303は、上記のコマンド列により音声を再生するものであり、経過時間計測部304は、コマンド列に基づく音声の再生が開始されてからの経過時間を計測する。
【0112】
断片波形選択部305は、計測された経過時間に基づいて、どの時点で、波形データのどの部分から、再生を開始するかを決定し、波形再生部306は、決定された時点で、決定された部分の再生を開始する。
【0113】
また、経過時間入力受付部307は、音声を先頭から再生するのではなく、途中から再生する場合に、その開始位置の入力を受け付けるものであり、省略することも可能である。
【0114】
これらによって、たとえばキャラクターが歌を歌うシーンを実現する際に、電子楽器による伴奏音の再生に声優が演じた歌声の再生を同期させることができるようになる。以下、詳細に説明する。
【0115】
すなわち、記憶部302には、以下の情報が記憶される。
(1)再生すべき音程および音長を指定するコマンドを含むコマンド列が少なくとも1つ。当該コマンド列は、MIDI(Musical Instrument Digital Interface)もしくはMML(Music Macro Language)により表現されるのが典型的であり、たとえば、キャラクターが歌を歌うシーンで再生される伴奏音を表現する。
(2)再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数。当該断片波形は、PCM(Pulse Code Modulation)、ADPCM(Adaptive Differential PCM)、MP3(MPeg audio layer-3)もしくはVorbisにより表現されるのが典型的である。たとえば、キャラクターが歌を歌うシーンで再生されるキャラクターの声(声優が演じた音声)を表現する。
【0116】
ここで、各断片波形列は、1つのフレーズ、上記の例でいえば、声優が発した音声が、呼吸などの無音によって挟まれている区間ごとに区切られている。
【0117】
断片波形列は、波形再生部306における処理の単位となるバッファ長に適合した長さの断片波形の列からなり、断片波形列の先頭の所定個数は、無音を表す波形データの断片波形とするのが典型的である。
【0118】
たとえば、ある楽曲に対するN個の断片波形列A[1],A[2],…,A[N]が記憶部302に記憶されている場合を考える。
【0119】
i = 1,2,…,Nのそれぞれについて、当該断片波形列A[i]には、以下のような情報が対応付けられる。
(a)当該断片波形列A[i]の再生される楽曲中での位置。すなわち、楽曲(伴奏)再生の開始を基準時点としたときの、当該断片波形列A[i]の再生を開始すべき経過時間T[i]。
(b)当該断片波形列A[i]の長さL[i]、すなわち、当該断片波形列A[i]を構成する断片波形の個数。
【0120】
ここで、長さL[i]の断片波形列A[i]のj = 1,2,…,L[i]番目の断片波形をA[i][j]と表記することとすると、任意のi,jについて、当該断片波形A[i][j]を再生するのに必要とされる時間長Dは等しい。
【0121】
この時間長Dは、波形再生部306を構成するハードウェアやソフトウェアの制約によって定められるもので、たとえば、60分の1秒ごとに生じる垂直同期を利用して波形再生を行うような構成においては、60分の1秒が、時間長Dに相当する。
【0122】
さて、断片波形列A[i]の再生が経過時間t = T[i]から開始される、ということは、以下を意味する。
(1)経過時間t = T[i]で、断片波形A[i][1]の再生を開始し、
(2)経過時間t = T[i]+Dで、断片波形A[i][2]の再生を開始し、

(j)経過時間t = T[i]+(j-1)Dで、断片波形A[i][j]の再生を開始し、

【0123】
(L[i])経過時間t = T[i]+(L[i]-1)Dで、断片波形A[i][L[i]]の再生を開始し、
【0124】
(L[i]+1)経過時間t = T[i]+L[i]Dに、当該断片波形列A[i]の再生がすべて完了する。
【0125】
すなわち、断片波形A[i][j]には、経過時間T[i]+(j-1)Dが対応付けられる。
【0126】
また、断片波形列A[1],A[2],…,A[N]のそれぞれは、ある一連の波形データのブレス区間を適宜除去して、フレーズに区切ったものとする。したがって、任意の整数1≦i<j≦Nについて、以下が成立する。
T[i]+L[i]D≦T[j]
【0127】
波形データの変位をBバイトで表現することとし、波形データのサンプリングレートがF[Hz]であるとすると、断片波形A[i][j]の長さは、一般にはB×F×Dバイトとなる。これが、波形データのバッファ長に相当するものであり、この長さを単位とすることで、波形データの管理を一貫させることができる。
【0128】
さて、波形データの再生時の先頭で生じる「ポツ音」を防止するため、断片波形列A[i]の先頭には無音の断片波形を配置するのが一般的である。そこで、上記の情報のほか、断片波形列A[i]には、以下の情報を対応付ける。
(c)断片波形列A[i]の先頭に配置されるべき無音の断片波形の個数S[i]。
【0129】
すると、断片波形A[i][1],A[i][2],…,A[i][S[i]]はいずれも無音状態を表現することとなり、典型的には、変位0を意味する整数がF×D個並んだものとなる。これは同じ値が並ぶだけの定数列であるから、記憶部302にF×D個の列を記憶する必要はない。当該断片波形A[i][1],A[i][2],…,A[i][S[i]]の再生開始時には、変位0を意味する整数がF×D個並んだ定数列を生成する。そして、これを波形データとして再生を行うこととすれば良い。
【0130】
図3は、本実施形態に係る音声処理装置301にて実行される音声処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。本音声処理は、情報処理装置100のCPU 101の制御の下で行われる。
【0131】
本音声処理が開始されると、CPU 101は、本音声処理を開始する際に指定された再生を開始すべき経過時間を取得する(ステップS351)。再生開始に係る経過時間は、ユーザによる入力に基づいて指定されることとしても良いし、プログラム等における関数呼び出しの引き数として指定されることとしても良い。したがって、CPU 101は、RAM 103等と共働して、経過時間入力受付部307として機能する。
【0132】
そして、コマンド再生部303に、音声出力をしないままに、再生開始に係る経過時間に至るまで、記憶部302に記憶されるコマンド列を解釈しつつ、スキップさせる(ステップS352)。
【0133】
コマンド再生部303により解釈されるコマンドには、以下のようなものがある。
(1)再生のテンポを指定するコマンド。
(2)1小節が何拍かを指定するコマンド。
(3)各チャネルに割り当てる音色(楽器)を指定するコマンド。
(4)小節の開始。
(5)当該小節内で、どのチャネルでどの音程でどの音長で音を出すか。
(6)小節の終了。
【0134】
MIDIなどの再生においては、スキップできる単位を小節単位とするのが典型的であり、この場合、上記(1)(2)(4)(6)のコマンドを走査することによって、当該コマンドが再生開始からどれだけ時間が経過したときに再生されるものか、を取得することができる。
【0135】
必要な数だけコマンド列からコマンドをスキップしたら、コマンド列の走査によって得られたスキップに係る経過時間をカウンタ変数tに格納して(ステップS353)、CPU 101は、以降のコマンド列のコマンドの再生を開始するよう、コマンド再生部303に指示を出す(ステップS354)。
【0136】
以降は、コマンド列の再生処理は、本音声処理とは並行して行われることになる。そして、コマンド列の再生処理が進むと、その経過時間に合わせて、カウンタ変数tの値も次第に増加する。すなわち、カウンタ変数tを参照すれば、コマンド列の再生を開始してから現在までどれだけ時間が経過したか、を知ることができるようにする。
【0137】
このような並行処理的な音声処理は、情報処理装置100の音声処理部110が担うものであり、カウンタ変数tを増加させる処理は、現在の再生のテンポにおける1拍を所定の整定数で割り切った時間(以下「コマンド時間長ΔT」という。)ごとに行われる。このような構成は、各種のPSG、MIDI、MMLによる音声再生機構としては一般的なものである。
【0138】
カウンタ変数tの値は、コマンド時間長ΔTの精度で増加していくが、コマンド時間長ΔTは、楽曲のテンポによって変化する。
【0139】
したがって、カウンタ変数tの更新は、再生時間がコマンド時間長ΔT経過するごとに1ずつ増えることとするのではなく、現在のコマンド時間長ΔTずつ増えることとするのが望ましい。すなわち、カウンタ変数tは、現在の経過時間そのものを意味するものとする。
【0140】
カウンタ変数tを増加させる処理、ならびに、カウンタ変数tの値を取得する処理は、音声処理部110、RAM 103、CPU 101が共働して行うため、これらは、経過時間計測部304として機能する。
【0141】
さて、伴奏音に相当するコマンド列の再生が開始されると、経過時間計測部304は、現在の経過時間tを取得して(ステップS355)、断片波形列に対応付けられる経過時間T[1],T[2],…,T[N]のうち、以下の条件を満たすものを探す(ステップS356)。
T[i]-K×D≦t<T[i]
【0142】
ここで、正定数Kは適当な閾値を定める定数であり、ステップS356〜S359の計算に要する時間長がK×D以下となるように設定する。多くのコンピュータでは、K = 1とすれば十分である。また、これが成立するように、各S[1],S[2],…,S[N]の値を設定することとしても良い。
【0143】
上記の条件を満たすものがあれば(ステップS356;Yes)、近々断片波形列A[i]の再生を開始しなければならないこととなる。
【0144】
そこで、断片波形列A[i]の先頭S[i]個分(本実施形態では、無音断片波形の個数分であるが、一般には、所定の個数とすることができる。)に対応付けられる経過時間を、現在のコマンド時間長Δtで表現した場合の誤差e[1],e[2],…,e[S[i]]を計算する(ステップS357)。
【0145】
ここで、誤差の計算にあたっては、引き数の小数点以下を切り捨てる切捨て演算(床演算)floor(・)を考える。切捨て演算floor(x)は、
x≦n<x+1
を満たす整数値nを返すものである。
【0146】
すると、ある時間Tをコマンド時間長Δtの精度で表現したときの誤差を表す関数e(T,Δt)は、
e(T,Δt) = min(T-Δt×floor(T/Δt),Δt×(floor(T/Δt)+1)-T)
のように計算できる。
【0147】
このほか、以下のような各種の誤差関数を利用しても良い。
e(T,Δt) = T-Δt×floor(T/Δt);
e(T,Δt) = Δt×(floor(T/Δt)+1)-T
【0148】
また、切捨て演算floor(・)のほかに、切上げ演算(天井演算)ceil(・)や、丸め演算(四捨五入演算)round(・)などを利用することとしても良い。
【0149】
上記のように誤差関数が定められれば、先頭S[i]個分の断片波形についての誤差は、以下のように計算することが可能である。
(1)e[1] = e(T[i],Δt);
(2)e[2] = e(T[i]+D,Δt);
…;
(j)e[j] = e(T[j]+(j-1)D,Δt);
…;
【0150】
(S[i])e[S[i]] = e(T[i]+(S[i]-1)D,Δt)
【0151】
そして、誤差e[1],e[2],…,e[S[i]]のうち、値が最小となるものを選択する(ステップS358)。
【0152】
図4は、ある断片波形列A[i]についての断片波形の誤差の概念を示す説明図である。以下、本図を参照して説明する。
【0153】
本図に示す例では、横軸として時間軸401が設定されている。また、コマンド時間長Δtごとに、時間軸401に区切りが入っている。
【0154】
また、本例では、断片波形列A[i](元の断片波形列402)については、S[i] = 4となっており、断片波形列A[i](元の断片波形列402)の先頭を構成する無音断片波形A[i][1],A[i][2],…,A[i][4](図中では、白い長方形で描いている。)の後に、有音断片波形A[i][5],A[i][6],…(図中では、斜線を引いた長方形で描いている。)が続いている。
【0155】
無音断片波形の開始時点のそれぞれを、Δtを単位に計測したときの誤差e[1],e[2],…,e[4]を比較すると、本図に示す例では、e[3]が最小である。
【0156】
そこで、A[i][3]の再近傍の区切り403から、断片波形列の一部A[i][3],A[i][4],A[i][5],…,A[i][L[i]](再生される断片波形列404)の再生を開始することとする。
【0157】
元の断片波形列402と、再生される断片波形列404と、には、時間ずれe[3]が生じてしまうことになるが、これは、同期再生においては不可避と考えられるもので、本手法によれば、時間ずれを最小とすることができる。
【0158】
また、再生される断片波形列404は、元の断片波形列402の先頭の無音部分をいくつか除去したものであるから、途中から再生したとしても、聴取者が不自然な印象を受けることはない。
【0159】
一方、断片波形列の先頭に無音断片波形を並べることなく、有音の断片波形を並べ、所定の個数S[i]を定めることとした場合には、波形データによる音声が途中から突然開始されることとなるが、用途によっては、このような簡易な手法を採用することとしても良い。
【0160】
また、誤差の大きさが同じものがある場合には、できるだけ先頭に近いものを選択することとする。一般に、先頭の断片波形のうち、k番目の誤差e[k]が最小であったとする。
【0161】
すると、断片波形列A[i]を再生するにあたっては、時刻T[k]+(k-1)Dから断片波形A[i][k],A[i][k+1],…,A[i][L[i]]を、順に、再生することとすれば、誤差最小で、コマンド再生との同期が可能となる。
【0162】
図3に戻り、経過時間計測部304により計測される経過時間tを取得して(ステップS359)、当該tが、
T[k]+(k-1)D≦t
となったか否か、すなわち、コマンド時間長Δtの精度で計測した経過時間tが選択された断片波形の再生を開始すべき経過時間T[k]+(k-1)Dに至ったか否かを判定し(ステップS360)、そうなるまで(ステップS360;No)、ステップS359に戻る処理を繰り返す。
【0163】
一方、断片波形A[i][k]の再生を開始すべき時刻T[k]+(k-1)Dに至った場合(ステップS360;Yes)、CPU 101は、断片波形A[i][k],A[i][k+1],…,A[i][L[i]]の再生を順に行うように、音声処理部110に指示を出して(ステップS361)、ステップS355に戻る。
【0164】
なお、ステップS360において、等号(=)による比較ではなく、不等号(≦)による比較を行うのは、ステップS359〜S360の繰り返しの中で、テンポの変更が生じ、コマンド時間長が変化する、という極めて例外的な状況に対応するためである。
【0165】
したがって、一般的な状況では、ステップS360における条件が成立する場合には、
T[k]+(k-1)D = t
が成立すると考えて良い。
【0166】
一方、再生を開始すべき断片波形列が存在しない場合(ステップS356;No)、そのままステップS355に戻れば良い。
【0167】
上記の処理において、経過時間tを取得してから何らかの処理を実行する繰り返し部分については、経過時間計測部304を実現する音声処理部110の割込ハンドラにより実装しても良い。
【0168】
このように、本実施形態によれば、コマンド列による音声処理の時間制御単位を利用しつつ、波形データの再生をコマンド列による再生に同期させて、音声の再生を行うことができる。
【0169】
なお、本実施形態においては、途中からの再生を可能とするために、経過時間入力受付部307およびステップS351〜S353を設けたが、これらの構成は省略して、カウンタ変数tを0に初期化してからステップS354以降を実行するような形態を採用することも可能である。
【0170】
本実施形態をキャラクターが歌う状況に応用した場合には、キャラクターの歌声は共通とし、伴奏音を奏でるMIDIやMMLなどを複数用意しておけば、その中からいずれか1つを選定することで、ある歌声を様々な伴奏音で再生することが可能となる。
【産業上の利用可能性】
【0171】
以上説明したように、本発明によれば、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【0172】
【図1】プログラムを実行することにより、本発明の音声処理装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。
【図2】上記情報処理装置にプログラムを実行させることにより実現される音声処理装置の一実施形態の概要構成を示す説明図である。
【図3】本実施形態に係る音声処理装置にて実行される音声処理の制御の流れを示すフローチャートである。
【図4】ある断片波形列A[i]についての断片波形の誤差の概念を示す説明図である。
【符号の説明】
【0173】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェイス
105 コントローラ
106 外部メモリ
107 画像処理部
108 DVD−ROMドライブ
109 NIC
110 音声処理部
111 マイク
301 音声処理装置
302 記憶部
303 コマンド再生部
304 経過時間計測部
305 断片波形選択部
306 波形再生部
307 経過時間入力受付部
401 時間軸
402 元の断片波形列
403 誤差最小の断片波形の最近傍の区切り(再生の開始時点)
404 再生される断片波形列

【特許請求の範囲】
【請求項1】
再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される記憶部を備え、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
を備えることを特徴とする音声処理装置。
【請求項2】
再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される記憶部を備え、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
を備えることを特徴とする音声処理装置。
【請求項3】
請求項2に記載の音声処理装置であって、
当該複数の断片波形列のそれぞれについて、当該断片波形列の先頭1個以上の断片波形は、いずれも、当該波形時間長の無音を表す無音断片波形であり、
前記断片波形選択部は、当該断片波形列の先頭の無音断片波形の個数を当該所定個数として、誤差最小断片波形を選択する
ことを特徴とする音声処理装置。
【請求項4】
請求項2または3に記載の音声処理装置であって、
基準時からの経過時間を指定する経過時間入力を受け付ける経過時間入力受付部
をさらに備え、
当該経過時間入力が受け付けられた場合、前記コマンド再生部は、当該コマンド列を先頭から解釈して、当該音長を積算した値に相当する時間が当該経過時間入力に指定される経過時間に至るまで、当該コマンドを無視し、当該経過時間入力に指定される経過時間に至ると、当該コマンド列に指定された音程および音長の音声波形の再生を開始し、
前記経過時間計測部は、当該音長を積算した値に相当する時間と、前記コマンド再生部による音声波形の再生が開始されてからの経過時間と、の和を、当該コマンド時間長の精度で計測された経過時間とする
ことを特徴とする音声処理装置。
【請求項5】
請求項2から4のいずれか1項に記載の音声処理装置であって、
前記経過時間計測部は、当該コマンド時間長おきに生じる割り込みの回数を計測することにより、前記コマンド再生部による音声波形の再生が開始されてからの経過時間を計測し、
前記断片波形選択部は、当該割り込みが生じるごとに、対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である断片波形列が記憶されているか否かを判断する
ことを特徴とする音声処理装置。
【請求項6】
請求項2から5のいずれか1項に記載の音声処理装置であって、
前記波形再生部は、垂直同期割込が生じるごとに、1つの断片波形を再生する
ことを特徴とする音声処理装置。
【請求項7】
請求項1から6のいずれか1項に記載の音声処理装置であって、
当該コマンド列は、MIDI(Musical Instrument Digital Interface)もしくはMML(Music Macro Language)により表現され、
当該断片波形は、PCM(Pulse Code Modulation)、ADPCM(Adaptive Differential PCM)、MP3(MPeg audio layer-3)もしくはVorbisにより表現される
ことを特徴とする音声処理装置。
【請求項8】
記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行する音声処理方法であって、
前記記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶され、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
前記コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生工程、
前記経過時間計測部が、前記コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測工程、
前記断片波形選択部が、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択工程、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記波形再生部が、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生工程
を備えることを特徴とする音声処理方法。
【請求項9】
記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行する音声処理方法であって、
前記記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶され、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
前記コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生工程、
前記経過時間計測部が、前記コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測工程、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、前記断片波形選択部が、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択工程、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記波形再生部が、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生工程
を備えることを特徴とする音声処理方法。
【請求項10】
コンピュータを、
再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される記憶部
として機能させ、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる
ように機能させ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
としてさらに機能させることを特徴とするプログラム。
【請求項11】
コンピュータを、
再生すべき音程および音長を指定するコマンドを含むコマンド列が1つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される記憶部
として機能させ、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる
ように機能させ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
としてさらに機能させることを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate