(57)【特許請求の範囲】
【請求項１】
再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される記憶部を備え、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
を備えることを特徴とする音声処理装置。
【請求項２】
再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される記憶部を備え、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
を備えることを特徴とする音声処理装置。
【請求項３】
請求項２に記載の音声処理装置であって、
当該複数の断片波形列のそれぞれについて、当該断片波形列の先頭１個以上の断片波形は、いずれも、当該波形時間長の無音を表す無音断片波形であり、
前記断片波形選択部は、当該断片波形列の先頭の無音断片波形の個数を当該所定個数として、誤差最小断片波形を選択する
ことを特徴とする音声処理装置。
【請求項４】
請求項２または３に記載の音声処理装置であって、
基準時からの経過時間を指定する経過時間入力を受け付ける経過時間入力受付部
をさらに備え、
当該経過時間入力が受け付けられた場合、前記コマンド再生部は、当該コマンド列を先頭から解釈して、当該音長を積算した値に相当する時間が当該経過時間入力に指定される経過時間に至るまで、当該コマンドを無視し、当該経過時間入力に指定される経過時間に至ると、当該コマンド列に指定された音程および音長の音声波形の再生を開始し、
前記経過時間計測部は、当該音長を積算した値に相当する時間と、前記コマンド再生部による音声波形の再生が開始されてからの経過時間と、の和を、当該コマンド時間長の精度で計測された経過時間とする
ことを特徴とする音声処理装置。
【請求項５】
請求項２から４のいずれか１項に記載の音声処理装置であって、
前記経過時間計測部は、当該コマンド時間長おきに生じる割り込みの回数を計測することにより、前記コマンド再生部による音声波形の再生が開始されてからの経過時間を計測し、
前記断片波形選択部は、当該割り込みが生じるごとに、対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である断片波形列が記憶されているか否かを判断する
ことを特徴とする音声処理装置。
【請求項６】
請求項２から５のいずれか１項に記載の音声処理装置であって、
前記波形時間長に等しい垂直同期周期ごとに画像情報をモニタへ出力することにより画像を表示する画像処理部をさらに備え、
前記波形再生部は、前記垂直同期周期ごとに、１つの断片波形を再生する
ことを特徴とする音声処理装置。
【請求項７】
請求項１から６のいずれか１項に記載の音声処理装置であって、
当該コマンド列は、ＭＩＤＩ（Musical Instrument Digital Interface）もしくはＭＭＬ（Music Macro Language）により表現され、
当該断片波形は、ＰＣＭ（Pulse Code Modulation）、ＡＤＰＣＭ（Adaptive Differential PCM）、ＭＰ３（MPeg audio layer-3）もしくはＶｏｒｂｉｓにより表現される
ことを特徴とする音声処理装置。
【請求項８】
記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行する音声処理方法であって、
前記記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶され、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
前記コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生工程、
前記経過時間計測部が、前記コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測工程、
前記断片波形選択部が、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択工程、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記波形再生部が、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生工程
を備えることを特徴とする音声処理方法。
【請求項９】
記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行する音声処理方法であって、
前記記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶され、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられ、
前記コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生工程、
前記経過時間計測部が、前記コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測工程、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、前記断片波形選択部が、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択工程、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記波形再生部が、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生工程
を備えることを特徴とする音声処理方法。
【請求項１０】
コンピュータを、
再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される記憶部
として機能させ、
当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる
ように機能させ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
としてさらに機能させることを特徴とするプログラム。
【請求項１１】
コンピュータを、
再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される記憶部
として機能させ、
当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる
ように機能させ、
当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始するコマンド再生部、
前記コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する経過時間計測部、
当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、前記計測された経過時間以上、前記計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する断片波形選択部、
当該コマンド時間長の精度で計測された経過時間が、前記選択された誤差最小断片波形に対応付けられる経過時間に至ると、前記選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する波形再生部
としてさらに機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムに関する。
【背景技術】
【０００２】
従来から、ＰＣＭ（Pulse Coded Modulation）、ＡＤＰＣＭ（Adaptive Differential PCM）、ＭＰ３（MPeg audio layer-3）、Ｖｏｒｂｉｓ等によって表現される波形データと、ＭＩＤＩ（Musical Instrument Digital Interface）もしくはＭＭＬ（Music Macro Language）、ＰＳＧ（Programmable Sound Generator）のレジスタに与える値等によって表現されるコマンドと、を組み合わせて音声を出力する技術が利用されている。
【０００３】
たとえば以下の文献には、自由かつエンタテインメント性の高い着信音を出力し、音源データ更新の際のユーザや携帯端末の負担を少なくするため、携帯端末にＰＣＭデータを記録したＰＣＭデータ記録部、ＰＳＧデータを記録したＰＳＧデータ記録部を設け、着信音データ生成部は、ＰＣＭデータ記録部、ＰＳＧデータ記録部から適宜音源データであるＰＣＭデータ、ＰＳＧデータを読み出し、これらを組み合わせて着信音データを生成し、これに基づく着信音を着信音出力スピーカ装置から出力させる技術が開示されている。
【特許文献１】特開２００１−２４５０２０号公報
【０００４】
このような音声合成技術は、各種のゲームにおいて、キャラクターの発声とＢＧＭ（Back Ground Music）とを合成して出力する場合にも応用が可能である。
【０００５】
ここで、キャラクターの声は声優に演じさせ、人間の肉声を利用して不自然さをなくす一方で、ＢＧＭなどはＭＩＤＩなどによる演奏を利用してデータ量を抑制する手法が、一般に採用されている。
【０００６】
したがって、伴奏に合わせてキャラクターが歌を歌うような場面では、ＰＣＭなどにより表現されている波形データの再生と、ＭＩＤＩなどにより表現されているコマンドデータの再生と、の同期をとる必要がある。
【０００７】
一般に、波形データの再生は、所定のレジスタやバッファに一定間隔で当該間隔分の波形データを書き込んだり、所定の再生ライブラリの関数を当該間隔分の波形データを引数として渡す処理を一定間隔で実行することで行われる。たとえば、サンプリングレート４４１００Ｈｚ、モノラル１６ビット（２バイト）の波形データを、垂直同期周期である６０分の１秒間隔で書き込む場合には、垂直同期割込が生じるごとに、２×４４１００×（１／６０）  ＝  １４７０バイトを渡すことになる。この場合、波形データを１４７０バイトごとに区切った断片波形単位で管理する技術が利用されている。
【０００８】
したがって、圧縮を行わない場合には、経過時間とデータの大きさとは、比例することになる。また、ＭＰ３等のように圧縮を行っている場合であっても、最終的にはＰＣＭデータに変換する必要があるため、同じ議論を敷衍することができる。
【０００９】
一方、コマンドデータは、ＰＳＧデータにせよ、ＭＩＤＩデータにせよ、各種のＭＭＬデータにせよ、楽曲のテンポを決めるコマンド、複数のチャネルのそれぞれに楽器の音色を割り当てるコマンド、いずれのチャネルでどの音程でどの音長さでどの音量で音を出すか、を指定するコマンドの列と考えることができる。
【００１０】
したがって、再生に要する時間とコマンド列の長さとは、必ずしも比例しない。したがって、コマンド列を解釈しながら何らかの処理を実行するために、音符に対する基本精度を定め、その精度の間隔で割込を生じさせたり、カウンタが増加されるようにして、経過時間を計測する技術が利用されている。
【００１１】
この基本精度は、拍（４分音符の時間長）を所定の定数で割り算した時間長とすることが多い。この場合、コマンドにより指定されるテンポが変化すると、基本精度も変化することになる。
【００１２】
さて、キャラクターが伴奏に合わせて歌う場合等を考えると、伴奏音は途切れなく出力されるべきであるが、歌唱においては、発声等を行うため音が生じている「フレーズ」と呼ばれる区間と、呼吸等を行うため事実上無音となるべき「ブレス」と呼ばれる区間とがあるのが一般的である。また、一つの楽曲の中で同じ「フレーズ」が複数回利用されることもある。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
したがって、再生すべきデータの中から、波形データのデータ量を低減するため、ブレス区間等の無音区間を除去することができるようにする技術が求められている。
【００１４】
一方で、無音区間を除去した場合には、波形データの再生とコマンドデータの再生との間で適切に同期をとる技術が必要となる。
【００１５】
また、無音区間を除去しない場合であっても、波形データを、たとえば小節単位などで管理して、楽曲内で繰り返し同じように歌われるパートについては、共用することでデータ量を抑制したいことも多い。
【００１６】
さらに、コマンドデータにおける経過時間の計測の精度と、波形データにおける断片波形の時間長とが一致しない状況を考慮する必要もある。
【００１７】
本発明は、上記のような課題を解決するもので、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【００１９】
本発明の第１の観点に係る音声処理装置は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を備え、以下のように構成する。
【００２０】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される。
【００２１】
ここで、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【００２２】
典型的には、コマンド列は、伴奏音などを奏でるためのものであり、断片波形列は、人間の歌声などを表現するためのものである。ここで、断片波形列のそれぞれは、人間の歌声のフレーズ（先頭に無音区間があっても良い）に相当するものであり、楽曲の再生を開始した時点を基準時としたときに、そのフレーズを再生すべきなのは、どれだけ時間が経過してからなのか、を、断片波形列に対応付けられる経過時間で表す。
【００２３】
また、断片波形列は、断片波形が並んだ列であり、当該断片波形を順に再生することで、当該フレーズの音声が出力される。したがって、各断片波形を再生すべき経過時間は、断片波形列に対応付けられる経過時間と、断片波形列の中でその断片波形が（０から数え始めて）何番目かと、から計算することが可能である。また、各断片波形の時間長は、波形データ再生の際のバッファ長に呼応する時間長である。
【００２４】
一方、コマンド再生部は、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【００２５】
上記のように、コマンドには、テンポを指定するもの、各チャネルに割り当てる楽器の音色を指定するもの、ある小節において、どのチャネルでどの音程でどの音長でどの大きさで音を出すかを指定するもの等が存在する。
【００２６】
さらに、経過時間計測部は、コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【００２７】
上記のように、コマンド時間長の精度は、コマンド再生部の機能によって異なるが、拍を所定の定数で割り切った時間長とすることが多い。この場合、テンポが変化すると、コマンド時間長の精度も変化することになる。
【００２８】
そして、断片波形選択部は、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【００２９】
すなわち、当該断片波形列に含まれる断片波形を先頭から順に走査して、どこから再生を開始すると、波形データとコマンドデータとの時間的なずれが最小となるか、を調べる。
【００３０】
この際の基準となるのが、ある断片波形を再生すべき経過時間Tを、当該経過時間Tにおけるコマンド時間長Δtにより表現した場合の誤差eである。典型的には、以下の条件を満たす整数nを見つけることができれば、
Δt×n≦T<Δt×(n+1)
当該誤差eは、
e = min(T-Δt×n，Δt×(n+1)-T)
のように表現することができる。
【００３１】
本発明においては、複数の断片波形のうち、いずれから再生を開始することとすると、コマンド列との同期ずれが生じにくいか、を、あらかじめ選択することができる。
【００３２】
さらに、波形再生部は、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【００３３】
経過時間を調べる精度がコマンド列に指定されるテンポ等によって支配され、波形再生が垂直同期割込等の間隔によって支配される場合であっても、上記のように、誤差最小の断片波形から再生を開始するため、ずれをできるだけ抑制することができる。
【００３４】
したがって、本発明によれば、コマンド列による音声の再生に同期させて、波形データによる音声を誤差最小断片波形から開始して再生することができるようになる。
【００３５】
本発明のその他の観点に係る音声処理装置は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を備え、以下のように構成する。
【００３６】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される。
【００３７】
ここで、当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【００３８】
典型的には、コマンド列は、伴奏音などを奏でるためのものであり、断片波形列は、人間の歌声などを表現するためのものである。ここで、断片波形列のそれぞれは、人間の歌声のフレーズ（先頭に無音区間があっても良い）に相当するものであり、楽曲の再生を開始した時点を基準時としたときに、そのフレーズを再生すべきなのは、どれだけ時間が経過してからなのか、を、断片波形列に対応付けられる経過時間で表す。
【００３９】
また、断片波形列は、断片波形が並んだ列であり、当該断片波形を順に再生することで、当該フレーズの音声が出力される。したがって、各断片波形を再生すべき経過時間は、断片波形列に対応付けられる経過時間と、断片波形列の中でその断片波形が（０から数え始めて）何番目かと、から計算することが可能である。また、各断片波形の時間長は、波形データ再生の際のバッファ長に呼応する時間長である。
【００４０】
一方、コマンド再生部は、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【００４１】
上記のように、コマンドには、テンポを指定するもの、各チャネルに割り当てる楽器の音色を指定するもの、ある小節において、どのチャネルでどの音程でどの音長でどの大きさで音を出すかを指定するもの等が存在する。
【００４２】
さらに、経過時間計測部は、コマンド再生部による音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【００４３】
上記のように、コマンド時間長の精度は、コマンド再生部の機能によって異なるが、拍を所定の定数で割り切った時間長とすることが多い。この場合、テンポが変化すると、コマンド時間長の精度も変化することになる。
【００４４】
さらに、断片波形選択部は、当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である場合、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【００４５】
ある断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である、とは、当該断片波形列の再生を間もなく開始しなければならないことを意味する。
【００４６】
本発明では、このような状況になると、当該断片波形列に含まれる断片波形を先頭から順に走査して、どこから再生を開始すると、波形データとコマンドデータとの時間的なずれが最小となるか、を調べる。
【００４７】
この際の基準となるのが、断片波形を再生すべき経過時間Tを、当該経過時間Tにおけるコマンド時間長Δtにより表現した場合の誤差eである。典型的には、以下の条件を満たす整数nを見つけることができれば、
Δt×n≦T<Δt×(n+1)
当該誤差eは、
e = min(T-Δt×n，Δt×(n+1)-T)
のように表現することができる。
【００４８】
なお、走査すべき断片波形の個数は、定数とすることができるが、可変とすることも可能であり、当該態様については後述する。
【００４９】
そして、波形再生部は、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【００５０】
経過時間を調べる精度がコマンド列に指定されるテンポ等によって支配され、波形再生が垂直同期割込等の間隔によって支配される場合であっても、上記のように、誤差最小の断片波形から再生を開始するため、ずれをできるだけ抑制することができる。
【００５１】
したがって、本発明によれば、コマンド列による音声の再生と、波形データによる音声の再生と、を、適切に同期させて再生することができるようになる。
【００５２】
また、本発明の音声処理装置において、当該複数の断片波形列のそれぞれについて、当該断片波形列の先頭１個以上の断片波形は、いずれも、当該波形時間長の無音を表す無音断片波形であり、断片波形選択部は、当該断片波形列の先頭の無音断片波形の個数を当該所定個数として、誤差最小断片波形を選択するように構成することができる。
【００５３】
すなわち、先頭の無音断片波形のみを走査して、誤差最小の断片波形を選択するのである。ここで、無音断片波形とは、結局のところ、変位が０（定数）である波形データのことである。したがって、断片波形のフォーマットとしては、無音断片波形であるか否かを示すフラグを用意して、無音断片波形である場合には、変位を表す波形データを省略することとすれば、データ量を抑制することができる。
【００５４】
本発明によれば、断片波形列の再生は、いずれも、必ず無音部分から開始されることとなるため、波形データの再生開始時に生じやすい「ポツ」という音が生じるのを防止して、自然な波形データの再生を行うことができるようになる。
【００５５】
また、本発明の音声処理装置は、経過時間入力受付部をさらに備え、以下のように構成することができる。
【００５６】
すなわち、経過時間入力受付部は、基準時からの経過時間を指定する経過時間入力を受け付ける。
【００５７】
これは、楽曲再生を行うメディアプレイヤー等に用意されている早送り、巻き戻し、タイムワープ機能に相当するものであり、ユーザからの指定や当該音声処理装置を制御するプログラムによる指定を受付けるものである。
【００５８】
そして、当該経過時間入力が受け付けられた場合、コマンド再生部は、当該コマンド列を先頭から解釈して、当該音長を積算した値に相当する時間が当該経過時間入力に指定される経過時間に至るまで、当該コマンドを無視し、当該経過時間入力に指定される経過時間に至ると、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【００５９】
上記のように、コマンド列は先頭から解釈する必要があるため、音を出さないままに楽曲再生に要する時間長を積算して、それが指定された経過時間になるまでスキップをする。そして、指定された経過時間になったら、そこからコマンド解釈に基づく楽曲再生を開始する。
【００６０】
一方、経過時間計測部は、当該音長を積算した値に相当する時間と、コマンド再生部による音声波形の再生が開始されてからの経過時間と、の和を、当該コマンド時間長の精度で計測された経過時間とする。
【００６１】
すなわち、スキップした分の積算時間を経過時間として計上するのである。
【００６２】
本発明によれば、コマンド列と波形データによる音声の同期再生において、早送りや巻き戻し、タイムワープ等、途中からの再生を行うことができるようになる。
【００６３】
また、本発明の音声処理装置において、経過時間計測部は、当該コマンド時間長おきに生じる割り込みの回数を計測することにより、コマンド再生部による音声波形の再生が開始されてからの経過時間を計測し、断片波形選択部は、当該割り込みが生じるごとに、対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である断片波形列が記憶されているか否かを判断するように構成することができる。
【００６４】
本発明は、上記発明の好適実施形態に係るものであり、コマンド列の解釈を行う際に、コマンド列の再生テンポに同期した所定の周期の割込が生じるものとして、当該割込によって波形データの再生開始も制御するものである。
【００６５】
また、本発明の音声処理装置において、波形再生部は、垂直同期割込が生じるごとに、１つの断片波形を再生するように構成することができる。
【００６６】
本発明は、上記発明の好適実施形態に係るものであり、ゲーム装置などにおいて、画面表示処理と同期して波形データの音声処理を行う場合に本発明を適用するもので、垂直同期割込周期の間に出力されるべき音声データの長さを、波形時間長に一致させることで、波形データの管理ならびに再生処理を容易にするものである。
【００６７】
また、本発明の音声処理装置において、当該コマンド列は、ＭＩＤＩ（Musical Instrument Digital Interface）もしくはＭＭＬ（Music Macro Language）により表現され、当該断片波形は、ＰＣＭ（Pulse Code Modulation）、ＡＤＰＣＭ（Adaptive Differential PCM）、ＭＰ３（MPeg audio layer-3）もしくはＶｏｒｂｉｓにより表現されるように構成することができる。
【００６８】
本発明は、上記発明の好適実施形態に係るものであり、コマンド列のデータとして典型的なものと、波形データとして典型的なものと、を採用するものである。
【００６９】
本発明のその他の観点に係る音声処理方法は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行し、コマンド再生工程、経過時間計測工程、断片波形選択工程、波形再生工程を備え、以下のように構成する。
【００７０】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、所定の波形時間長の音声の波形を指定し、連続して再生されるべき複数の断片波形からなる断片波形列が記憶される。
【００７１】
そして、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【００７２】
一方、コマンド再生工程では、コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【００７３】
さらに、経過時間計測工程では、経過時間計測部が、コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【００７４】
そして、断片波形選択工程では、断片波形選択部が、当該複数の断片波形のうち、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【００７５】
一方、波形再生工程では、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、波形再生部が、当該断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【００７６】
本発明のその他の観点に係る音声処理方法は、記憶部、コマンド再生部、経過時間計測部、断片波形選択部、波形再生部を有する音声処理装置が実行し、コマンド再生工程、経過時間計測工程、断片波形選択工程、波形再生工程を備え、以下のように構成する。
【００７７】
すなわち、記憶部には、再生すべき音程および音長を指定するコマンドを含むコマンド列が１つ記憶され、再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数記憶される。
【００７８】
そして、当該複数の断片波形列のそれぞれについて、当該断片波形列には、所定の基準時からの経過時間が対応付けられ、当該断片波形列に含まれる断片波形のそれぞれには、当該断片波形列において当該断片波形列より前に存在する断片波形の個数に当該波形時間長を乗じて当該断片波形列に対応付けられる経過時間を加算した時間が、当該基準時からの経過時間として対応付けられる。
【００７９】
ここで、コマンド再生工程では、コマンド再生部が、当該コマンド列を先頭から解釈して、当該コマンド列に指定された音程および音長の音声波形の再生を開始する。
【００８０】
一方、経過時間計測工程では、経過時間計測部が、コマンド再生工程にて音声波形の再生が開始されてからの経過時間を、所定のコマンド時間長の精度で計測する。
【００８１】
さらに、断片波形選択工程では、当該複数の断片波形列のうちいずれかの断片波形列に対応付けられる経過時間が、計測された経過時間以上、計測された経過時間に当該波形時間長を加算した時間未満である場合、断片波形選択部が、当該断片波形列の先頭所定個数の断片波形のそれぞれについて、当該断片波形に対応付けられる経過時間を、当該コマンド時間長の精度で表現した場合の誤差が最小となる誤差最小断片波形を選択する。
【００８２】
そして、波形再生工程では、当該コマンド時間長の精度で計測された経過時間が、選択された誤差最小断片波形に対応付けられる経過時間に至ると、波形再生部が、選択された誤差最小断片波形が含まれる断片波形列のうち、当該選択された誤差最小断片波形以降の断片波形の再生を開始する。
【００８３】
本発明のその他の観点に係るプログラムは、コンピュータを上記の音声処理装置の各部として機能させるように構成する。
【００８４】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
【００８５】
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００８６】
本発明によれば、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【発明を実施するための最良の形態】
【００８７】
以下に本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下に説明する実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【実施例１】
【００８８】
図１は、プログラムを実行することにより、本発明の音声処理装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。以下、本図を参照して説明する。
【００８９】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ  １０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェイス１０４と、コントローラ１０５と、外部メモリ１０６と、画像処理部１０７と、ＤＶＤ−ＲＯＭ（Digital Versatile Disc ROM）ドライブ１０８と、ＮＩＣ（Network Interface Card）１０９と、音声処理部１１０と、マイク１１１と、を備える。
【００９０】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０８に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の音声処理装置が実現される。
【００９１】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００９２】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００９３】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００９４】
インターフェイス１０４を介して接続されたコントローラ１０５は、ユーザがゲーム実行の際に行う操作入力を受け付ける。
【００９５】
インターフェイス１０４を介して着脱自在に接続された外部メモリ１０６には、ゲーム等のプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワーク対戦の場合のチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００９６】
ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０８は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００９７】
画像処理部１０７は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０７が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０７が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０７に接続されるモニタ（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００９８】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やαブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００９９】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【０１００】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【０１０１】
ＮＩＣ  １０９は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【０１０２】
音声処理部１１０は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカや、ヘッドホン（図示せず）、イヤフォン（図示せず）から出力させる。
【０１０３】
音声処理部１１０では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ADPCM形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【０１０４】
さらに、情報処理装置１００には、インターフェイス１０４を介してマイク１１１を接続することができる。この場合、マイク１１１からのアナログ信号に対しては、適当なサンプリング周波数でＡ／Ｄ変換を行い、ＰＣＭ形式のディジタル信号として、音声処理部１１０でのミキシング等の処理ができるようにする。
【０１０５】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０８に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【０１０６】
以上で説明した情報処理装置１００は、いわゆる「コンシューマ向けテレビゲーム装置」に相当するものであるが、仮想空間を表示するような画像処理を行うものであれば本発明を実現することができる。したがって、携帯電話、携帯ゲーム機器、カラオケ装置、一般的なビジネス用コンピュータなど、種々の計算機上で本発明を実現することが可能である。
【０１０７】
たとえば、一般的なコンピュータは、上記情報処理装置１００と同様に、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＤＶＤ−ＲＯＭドライブ、および、ＮＩＣを備え、情報処理装置１００よりも簡易な機能を備えた画像処理部を備え、外部記憶装置としてハードディスクを有する他、フレキシブルディスク、光磁気ディスク、磁気テープ等が利用できるようになっている。また、コントローラ１０５ではなく、キーボードやマウスなどを入力装置として利用する。
【０１０８】
（音声処理装置）
図２は、上記情報処理装置１００にプログラムを実行させることにより実現される音声処理装置の一実施形態の概要構成を示す説明図である。以下、本図を参照して説明する。
【０１０９】
本実施形態に係る音声処理装置３０１は、記憶部３０２、コマンド再生部３０３、経過時間計測部３０４、断片波形選択部３０５、波形再生部３０６、経過時間入力受付部３０７を備える。
【０１１０】
記憶部３０２には、キャラクターが歌を歌うシーン等で用いる伴奏音声用のコマンド列と、声優が演じた音声用の波形データとが記憶される。
【０１１１】
コマンド再生部３０３は、上記のコマンド列により音声を再生するものであり、経過時間計測部３０４は、コマンド列に基づく音声の再生が開始されてからの経過時間を計測する。
【０１１２】
断片波形選択部３０５は、計測された経過時間に基づいて、どの時点で、波形データのどの部分から、再生を開始するかを決定し、波形再生部３０６は、決定された時点で、決定された部分の再生を開始する。
【０１１３】
また、経過時間入力受付部３０７は、音声を先頭から再生するのではなく、途中から再生する場合に、その開始位置の入力を受け付けるものであり、省略することも可能である。
【０１１４】
これらによって、たとえばキャラクターが歌を歌うシーンを実現する際に、電子楽器による伴奏音の再生に声優が演じた歌声の再生を同期させることができるようになる。以下、詳細に説明する。
【０１１５】
すなわち、記憶部３０２には、以下の情報が記憶される。
（１）再生すべき音程および音長を指定するコマンドを含むコマンド列が少なくとも１つ。当該コマンド列は、ＭＩＤＩ（Musical Instrument Digital Interface）もしくはＭＭＬ（Music Macro Language）により表現されるのが典型的であり、たとえば、キャラクターが歌を歌うシーンで再生される伴奏音を表現する。
（２）再生すべき所定の波形時間長の波形を指定する断片波形からなる断片波形列が複数。当該断片波形は、ＰＣＭ（Pulse Code Modulation）、ＡＤＰＣＭ（Adaptive Differential PCM）、ＭＰ３（MPeg audio layer-3）もしくはＶｏｒｂｉｓにより表現されるのが典型的である。たとえば、キャラクターが歌を歌うシーンで再生されるキャラクターの声（声優が演じた音声）を表現する。
【０１１６】
ここで、各断片波形列は、１つのフレーズ、上記の例でいえば、声優が発した音声が、呼吸などの無音によって挟まれている区間ごとに区切られている。
【０１１７】
断片波形列は、波形再生部３０６における処理の単位となるバッファ長に適合した長さの断片波形の列からなり、断片波形列の先頭の所定個数は、無音を表す波形データの断片波形とするのが典型的である。
【０１１８】
たとえば、ある楽曲に対するN個の断片波形列A[1]，A[2]，…，A[N]が記憶部３０２に記憶されている場合を考える。
【０１１９】
i = 1，2，…，Nのそれぞれについて、当該断片波形列A[i]には、以下のような情報が対応付けられる。
（ａ）当該断片波形列A[i]の再生される楽曲中での位置。すなわち、楽曲（伴奏）再生の開始を基準時点としたときの、当該断片波形列A[i]の再生を開始すべき経過時間T[i]。
（ｂ）当該断片波形列A[i]の長さL[i]、すなわち、当該断片波形列A[i]を構成する断片波形の個数。
【０１２０】
ここで、長さL[i]の断片波形列A[i]のj = 1，2，…，L[i]番目の断片波形をA[i][j]と表記することとすると、任意のi，jについて、当該断片波形A[i][j]を再生するのに必要とされる時間長Dは等しい。
【０１２１】
この時間長Dは、波形再生部３０６を構成するハードウェアやソフトウェアの制約によって定められるもので、たとえば、６０分の１秒ごとに生じる垂直同期を利用して波形再生を行うような構成においては、６０分の１秒が、時間長Dに相当する。
【０１２２】
さて、断片波形列A[i]の再生が経過時間t = T[i]から開始される、ということは、以下を意味する。
（１）経過時間t = T[i]で、断片波形A[i][1]の再生を開始し、
（２）経過時間t = T[i]+Dで、断片波形A[i][2]の再生を開始し、
…
（ｊ）経過時間t = T[i]+(j-1)Dで、断片波形A[i][j]の再生を開始し、
…
【０１２３】
（Ｌ[ｉ]）経過時間t = T[i]+(L[i]-1)Dで、断片波形A[i][L[i]]の再生を開始し、
【０１２４】
（Ｌ[ｉ]＋１）経過時間t = T[i]+L[i]Dに、当該断片波形列A[i]の再生がすべて完了する。
【０１２５】
すなわち、断片波形A[i][j]には、経過時間T[i]+(j-1)Dが対応付けられる。
【０１２６】
また、断片波形列A[1]，A[2]，…，A[N]のそれぞれは、ある一連の波形データのブレス区間を適宜除去して、フレーズに区切ったものとする。したがって、任意の整数1≦i<j≦Nについて、以下が成立する。
T[i]+L[i]D≦T[j]
【０１２７】
波形データの変位をBバイトで表現することとし、波形データのサンプリングレートがF[Hz]であるとすると、断片波形A[i][j]の長さは、一般にはB×F×Dバイトとなる。これが、波形データのバッファ長に相当するものであり、この長さを単位とすることで、波形データの管理を一貫させることができる。
【０１２８】
さて、波形データの再生時の先頭で生じる「ポツ音」を防止するため、断片波形列A[i]の先頭には無音の断片波形を配置するのが一般的である。そこで、上記の情報のほか、断片波形列A[i]には、以下の情報を対応付ける。
（ｃ）断片波形列A[i]の先頭に配置されるべき無音の断片波形の個数S[i]。
【０１２９】
すると、断片波形A[i][1]，A[i][2]，…，A[i][S[i]]はいずれも無音状態を表現することとなり、典型的には、変位０を意味する整数がF×D個並んだものとなる。これは同じ値が並ぶだけの定数列であるから、記憶部３０２にF×D個の列を記憶する必要はない。当該断片波形A[i][1]，A[i][2]，…，A[i][S[i]]の再生開始時には、変位０を意味する整数がF×D個並んだ定数列を生成する。そして、これを波形データとして再生を行うこととすれば良い。
【０１３０】
図３は、本実施形態に係る音声処理装置３０１にて実行される音声処理の制御の流れを示すフローチャートである。以下、本図を参照して説明する。本音声処理は、情報処理装置１００のＣＰＵ  １０１の制御の下で行われる。
【０１３１】
本音声処理が開始されると、ＣＰＵ  １０１は、本音声処理を開始する際に指定された再生を開始すべき経過時間を取得する（ステップＳ３５１）。再生開始に係る経過時間は、ユーザによる入力に基づいて指定されることとしても良いし、プログラム等における関数呼び出しの引き数として指定されることとしても良い。したがって、ＣＰＵ  １０１は、ＲＡＭ  １０３等と共働して、経過時間入力受付部３０７として機能する。
【０１３２】
そして、コマンド再生部３０３に、音声出力をしないままに、再生開始に係る経過時間に至るまで、記憶部３０２に記憶されるコマンド列を解釈しつつ、スキップさせる（ステップＳ３５２）。
【０１３３】
コマンド再生部３０３により解釈されるコマンドには、以下のようなものがある。
（１）再生のテンポを指定するコマンド。
（２）１小節が何拍かを指定するコマンド。
（３）各チャネルに割り当てる音色（楽器）を指定するコマンド。
（４）小節の開始。
（５）当該小節内で、どのチャネルでどの音程でどの音長で音を出すか。
（６）小節の終了。
【０１３４】
ＭＩＤＩなどの再生においては、スキップできる単位を小節単位とするのが典型的であり、この場合、上記（１）（２）（４）（６）のコマンドを走査することによって、当該コマンドが再生開始からどれだけ時間が経過したときに再生されるものか、を取得することができる。
【０１３５】
必要な数だけコマンド列からコマンドをスキップしたら、コマンド列の走査によって得られたスキップに係る経過時間をカウンタ変数tに格納して（ステップＳ３５３）、ＣＰＵ  １０１は、以降のコマンド列のコマンドの再生を開始するよう、コマンド再生部３０３に指示を出す（ステップＳ３５４）。
【０１３６】
以降は、コマンド列の再生処理は、本音声処理とは並行して行われることになる。そして、コマンド列の再生処理が進むと、その経過時間に合わせて、カウンタ変数tの値も次第に増加する。すなわち、カウンタ変数tを参照すれば、コマンド列の再生を開始してから現在までどれだけ時間が経過したか、を知ることができるようにする。
【０１３７】
このような並行処理的な音声処理は、情報処理装置１００の音声処理部１１０が担うものであり、カウンタ変数tを増加させる処理は、現在の再生のテンポにおける１拍を所定の整定数で割り切った時間（以下「コマンド時間長ΔT」という。）ごとに行われる。このような構成は、各種のＰＳＧ、ＭＩＤＩ、ＭＭＬによる音声再生機構としては一般的なものである。
【０１３８】
カウンタ変数tの値は、コマンド時間長ΔTの精度で増加していくが、コマンド時間長ΔTは、楽曲のテンポによって変化する。
【０１３９】
したがって、カウンタ変数tの更新は、再生時間がコマンド時間長ΔT経過するごとに１ずつ増えることとするのではなく、現在のコマンド時間長ΔTずつ増えることとするのが望ましい。すなわち、カウンタ変数tは、現在の経過時間そのものを意味するものとする。
【０１４０】
カウンタ変数tを増加させる処理、ならびに、カウンタ変数tの値を取得する処理は、音声処理部１１０、ＲＡＭ  １０３、ＣＰＵ  １０１が共働して行うため、これらは、経過時間計測部３０４として機能する。
【０１４１】
さて、伴奏音に相当するコマンド列の再生が開始されると、経過時間計測部３０４は、現在の経過時間tを取得して（ステップＳ３５５）、断片波形列に対応付けられる経過時間T[1]，T[2]，…，T[N]のうち、以下の条件を満たすものを探す（ステップＳ３５６）。
T[i]-K×D≦t<T[i]
【０１４２】
ここで、正定数Kは適当な閾値を定める定数であり、ステップＳ３５６〜Ｓ３５９の計算に要する時間長がK×D以下となるように設定する。多くのコンピュータでは、K = 1とすれば十分である。また、これが成立するように、各S[1]，S[2]，…，S[N]の値を設定することとしても良い。
【０１４３】
上記の条件を満たすものがあれば（ステップＳ３５６；Ｙｅｓ）、近々断片波形列A[i]の再生を開始しなければならないこととなる。
【０１４４】
そこで、断片波形列A[i]の先頭S[i]個分（本実施形態では、無音断片波形の個数分であるが、一般には、所定の個数とすることができる。）に対応付けられる経過時間を、現在のコマンド時間長Δtで表現した場合の誤差e[1]，e[2]，…，e[S[i]]を計算する（ステップＳ３５７）。
【０１４５】
ここで、誤差の計算にあたっては、引き数の小数点以下を切り捨てる切捨て演算（床演算）floor(・)を考える。切捨て演算floor(x)は、
x≦n<x+1
を満たす整数値nを返すものである。
【０１４６】
すると、ある時間Tをコマンド時間長Δtの精度で表現したときの誤差を表す関数e(T,Δt)は、
e(T,Δt) = min(T-Δt×floor(T/Δt)，Δt×(floor(T/Δt)+1)-T)
のように計算できる。
【０１４７】
このほか、以下のような各種の誤差関数を利用しても良い。
e(T,Δt) = T-Δt×floor(T/Δt)；
e(T,Δt) = Δt×(floor(T/Δt)+1)-T
【０１４８】
また、切捨て演算floor(・)のほかに、切上げ演算（天井演算）ceil(・)や、丸め演算（四捨五入演算）round(・)などを利用することとしても良い。
【０１４９】
上記のように誤差関数が定められれば、先頭S[i]個分の断片波形についての誤差は、以下のように計算することが可能である。
（１）e[1] = e(T[i],Δt)；
（２）e[2] = e(T[i]+D,Δt)；
…；
（ｊ）e[j] = e(T[j]+(j-1)D,Δt)；
…；
【０１５０】
（Ｓ[ｉ]）e[S[i]] = e(T[i]+(S[i]-1)D,Δt)
【０１５１】
そして、誤差e[1]，e[2]，…，e[S[i]]のうち、値が最小となるものを選択する（ステップＳ３５８）。
【０１５２】
図４は、ある断片波形列A[i]についての断片波形の誤差の概念を示す説明図である。以下、本図を参照して説明する。
【０１５３】
本図に示す例では、横軸として時間軸４０１が設定されている。また、コマンド時間長Δtごとに、時間軸４０１に区切りが入っている。
【０１５４】
また、本例では、断片波形列A[i]（元の断片波形列４０２）については、S[i] = 4となっており、断片波形列A[i]（元の断片波形列４０２）の先頭を構成する無音断片波形A[i][1]，A[i][2]，…，A[i][4]（図中では、白い長方形で描いている。）の後に、有音断片波形A[i][5]，A[i][6]，…（図中では、斜線を引いた長方形で描いている。）が続いている。
【０１５５】
無音断片波形の開始時点のそれぞれを、Δtを単位に計測したときの誤差e[1]，e[2]，…，e[4]を比較すると、本図に示す例では、e[3]が最小である。
【０１５６】
そこで、A[i][3]の再近傍の区切り４０３から、断片波形列の一部A[i][3]，A[i][4]，A[i][5]，…，A[i][L[i]]（再生される断片波形列４０４）の再生を開始することとする。
【０１５７】
元の断片波形列４０２と、再生される断片波形列４０４と、には、時間ずれe[3]が生じてしまうことになるが、これは、同期再生においては不可避と考えられるもので、本手法によれば、時間ずれを最小とすることができる。
【０１５８】
また、再生される断片波形列４０４は、元の断片波形列４０２の先頭の無音部分をいくつか除去したものであるから、途中から再生したとしても、聴取者が不自然な印象を受けることはない。
【０１５９】
一方、断片波形列の先頭に無音断片波形を並べることなく、有音の断片波形を並べ、所定の個数S[i]を定めることとした場合には、波形データによる音声が途中から突然開始されることとなるが、用途によっては、このような簡易な手法を採用することとしても良い。
【０１６０】
また、誤差の大きさが同じものがある場合には、できるだけ先頭に近いものを選択することとする。一般に、先頭の断片波形のうち、k番目の誤差e[k]が最小であったとする。
【０１６１】
すると、断片波形列A[i]を再生するにあたっては、時刻T[k]+(k-1)Dから断片波形A[i][k]，A[i][k+1]，…，A[i][L[i]]を、順に、再生することとすれば、誤差最小で、コマンド再生との同期が可能となる。
【０１６２】
図３に戻り、経過時間計測部３０４により計測される経過時間tを取得して（ステップＳ３５９）、当該tが、
T[k]+(k-1)D≦t
となったか否か、すなわち、コマンド時間長Δtの精度で計測した経過時間tが選択された断片波形の再生を開始すべき経過時間T[k]+(k-1)Dに至ったか否かを判定し（ステップＳ３６０）、そうなるまで（ステップＳ３６０；Ｎｏ）、ステップＳ３５９に戻る処理を繰り返す。
【０１６３】
一方、断片波形A[i][k]の再生を開始すべき時刻T[k]+(k-1)Dに至った場合（ステップＳ３６０；Ｙｅｓ）、ＣＰＵ  １０１は、断片波形A[i][k]，A[i][k+1]，…，A[i][L[i]]の再生を順に行うように、音声処理部１１０に指示を出して（ステップＳ３６１）、ステップＳ３５５に戻る。
【０１６４】
なお、ステップＳ３６０において、等号（＝）による比較ではなく、不等号（≦）による比較を行うのは、ステップＳ３５９〜Ｓ３６０の繰り返しの中で、テンポの変更が生じ、コマンド時間長が変化する、という極めて例外的な状況に対応するためである。
【０１６５】
したがって、一般的な状況では、ステップＳ３６０における条件が成立する場合には、
T[k]+(k-1)D = t
が成立すると考えて良い。
【０１６６】
一方、再生を開始すべき断片波形列が存在しない場合（ステップＳ３５６；Ｎｏ）、そのままステップＳ３５５に戻れば良い。
【０１６７】
上記の処理において、経過時間tを取得してから何らかの処理を実行する繰り返し部分については、経過時間計測部３０４を実現する音声処理部１１０の割込ハンドラにより実装しても良い。
【０１６８】
このように、本実施形態によれば、コマンド列による音声処理の時間制御単位を利用しつつ、波形データの再生をコマンド列による再生に同期させて、音声の再生を行うことができる。
【０１６９】
なお、本実施形態においては、途中からの再生を可能とするために、経過時間入力受付部３０７およびステップＳ３５１〜Ｓ３５３を設けたが、これらの構成は省略して、カウンタ変数tを０に初期化してからステップＳ３５４以降を実行するような形態を採用することも可能である。
【０１７０】
本実施形態をキャラクターが歌う状況に応用した場合には、キャラクターの歌声は共通とし、伴奏音を奏でるＭＩＤＩやＭＭＬなどを複数用意しておけば、その中からいずれか１つを選定することで、ある歌声を様々な伴奏音で再生することが可能となる。
【産業上の利用可能性】
【０１７１】
以上説明したように、本発明によれば、人間の歌声等を表す波形データと、その伴奏等を表すコマンドデータとを同期させて再生するのに好適な音声処理装置、音声処理方法、ならびに、これらをコンピュータにて実現するプログラムを提供することができる。
【図面の簡単な説明】
【０１７２】
【図１】プログラムを実行することにより、本発明の音声処理装置の機能を果たす典型的な情報処理装置の概要構成を示す模式図である。
【図２】上記情報処理装置にプログラムを実行させることにより実現される音声処理装置の一実施形態の概要構成を示す説明図である。
【図３】本実施形態に係る音声処理装置にて実行される音声処理の制御の流れを示すフローチャートである。
【図４】ある断片波形列A[i]についての断片波形の誤差の概念を示す説明図である。
【符号の説明】
【０１７３】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェイス
１０５  コントローラ
１０６  外部メモリ
１０７  画像処理部
１０８  ＤＶＤ−ＲＯＭドライブ
１０９  ＮＩＣ
１１０  音声処理部
１１１  マイク
３０１  音声処理装置
３０２  記憶部
３０３  コマンド再生部
３０４  経過時間計測部
３０５  断片波形選択部
３０６  波形再生部
３０７  経過時間入力受付部
４０１  時間軸
４０２  元の断片波形列
４０３  誤差最小の断片波形の最近傍の区切り（再生の開始時点）
４０４  再生される断片波形列
【図１】
0004714230.tif 000002
【図２】
0004714230.tif 000003
【図３】
0004714230.tif 000004
【図４】
0004714230.tif 000005