(57)【要約】【課題】  詳細に条件分けした複数のサンプル音声データを用いずに簡単な処理にて音声の生成を行う音声生成装置を提供する。【解決手段】  音声生成装置２は、所定のパラメータ変化に基づき基本周波数が変化する音声を、パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、基本周波数に基づきパラメータとサンプル音声データの時間軸との対応関係を取得するデータ分析部１２と、サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割部１３と、外部から入力されるパラメータに基づき対応する周波数を計算する周波数算出部１４と、計算した周波数に対応するブロックを選択するブロック選択部１５と、選択したブロック１５を複数結合した音声波形を生成するブロック結合部１６とを有する。【選択図】  図２
2017021212.tif 000002
【特許請求の範囲】
【請求項１】
所定のパラメータ変化に基づき基本周波数が変化する音声を、前記パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、当該基本周波数に基づき前記パラメータとサンプル音声データの時間軸との対応関係を取得するサンプル音声データ分析ステップと、
前記サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割ステップと、
外部から入力される前記パラメータに基づき対応する周波数を計算する周波数算出ステップと、
前記計算した周波数に対応する前記ブロックを選択するブロック選択ステップと、
前記選択したブロックを複数結合した音声波形を生成するブロック結合ステップと
を有する音声生成方法。
【請求項２】
更に、選択したブロックを加工するブロック加工ステップを
有する請求項１に記載の音声生成方法。
【請求項３】
更に、前記サンプル音声データを複数の周波数帯域に分割する周波数帯分割ステップと、
前記周波数帯域毎に、音声波形を合成する音声合成ステップとを有し、
前記ブロック分割ステップでは、前記周波数帯域毎に、前記サンプル音声データを周波数に応じた時間長でブロック化して分割し、
前記ブロック選択ステップでは、前記周波数帯域毎に、前記計算した周波数に対応する前記ブロックを選択し、
前記ブロック加工ステップでは、前記周波数帯域毎に、任意の加工方法によりブロックを加工し、
前記ブロック結合ステップでは、前記周波数帯域毎に、前記加工したブロックを複数結合した音声波形を生成し、
前記音声合成ステップでは、前記周波数帯域毎に、結合したブロックを合成して音声波形を生成する
請求項２に記載の音声生成方法。
【請求項４】
前記ブロック選択ステップでは、前記計算した周波数に対応する前記ブロックが存在しない場合には、前記計算した周波数に近い前記ブロックを選択する
請求項１乃至３の何れか１に記載の音声生成方法。
【請求項５】
前記ブロック結合ステップでは、前記選択したブロックと、当該ブロックの前後のブロックのうち少なくとも一方とを用い、これらのブロックを任意に結合して音声波形を生成する
請求項１乃至４の何れか１項に記載の音声生成方法。
【請求項６】
前記ブロック加工ステップでは、前記選択したブロックを所定の時間長だけカットし、そのカット長を任意に変化させて、時間長の異なるブロックを複数生成し、
前記ブロック結合ステップでは、前記時間長の異なる複数のブロックを結合して音声波形を生成する
請求項２乃至５の何れか１項に記載の音声生成方法。
【請求項７】
前記ブロック加工ステップでは、前記選択したブロックと、当該ブロックの前後のブロックのうち少なくとも一方とを用い、これらのブロックをクロスフェードにより合成した、合成ブロックを生成し、
前記ブロック結合ステップでは、前記合成ブロックを複数結合した音声波形を生成する
請求項２乃至６の何れか１項に記載の音声生成方法。
【請求項８】
前記ブロック加工ステップでは、ブロック毎で任意の種類の加工方法を適応してブロックを加工する
請求項２乃至７の何れか１項に記載の音声生成方法。
【請求項９】
前記音声は、エンジン音であり、前記パラメータは、エンジン回転数である
請求項１乃至８の何れか１項に記載の音声生成方法。
【請求項１０】
所定のパラメータ変化に基づき基本周波数が変化する音声を、前記パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、当該基本周波数に基づき前記パラメータとサンプル音声データの時間軸との対応関係を取得するサンプル音声データ分析部と、
前記サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割部と、
外部から入力される前記パラメータに基づき対応する周波数を計算する周波数算出部と、
前記計算した周波数に対応する前記ブロックを選択するブロック選択部と、
前記選択したブロックを複数結合した音声波形を生成するブロック結合部と
を有する音声生成装置。
【請求項１１】
更に、選択したブロックを加工するブロック加工部を
有する請求項１０に記載の音声生成装置。
【請求項１２】
更に、前記サンプル音声データを複数の周波数帯域に分割する周波数帯分割部と、
前記周波数帯域毎に、音声波形を合成する音声合成部とを有し、
前記ブロック分割部は、前記周波数帯域毎に、前記サンプル音声データを周波数に応じた時間長でブロック化して分割し、
前記ブロック選択部は、前記周波数帯域毎に、前記計算した周波数に対応する前記ブロックを選択し、
前記ブロック加工部は、前記周波数帯域毎に、任意の加工方法によりブロックを加工し、
前記ブロック結合部は、前記周波数帯域毎に、前記加工したブロックを複数結合した音声波形を生成し、
前記音声合成部は、前記周波数帯域毎に、結合したブロックを合成して音声波形を生成する
請求項１１に記載の音声生成装置。
【請求項１３】
前記ブロック選択部は、前記計算した周波数に対応する前記ブロックが存在しない場合には、前記計算した周波数に近い前記ブロックを選択する
請求項１０乃至１２の何れか１に記載の音声生成装置。
【請求項１４】
前記ブロック結合部は、前記選択したブロックと、当該ブロックの前後のブロックのうち少なくとも一方とを用い、これらのブロックを任意に結合して音声波形を生成する
請求項１０乃至１３の何れか１項に記載の音声生成装置。
【請求項１５】
前記ブロック加工部は、前記選択したブロックを所定の時間長だけカットし、そのカット長を任意に変化させて、時間長の異なるブロックを複数生成し、
前記ブロック結合部は、前記時間長の異なる複数のブロックを結合して音声波形を生成する
請求項１１乃至１４の何れか１項に記載の音声生成装置。
【請求項１６】
前記ブロック加工部は、前記選択したブロックと、当該ブロックの前後のブロックのうち少なくとも一方とを用い、これらのブロックをクロスフェードにより合成した、合成ブロックを生成し、
前記ブロック結合部は、前記合成ブロックを複数結合した音声波形を生成する
請求項１１乃至１５の何れか１項に記載の音声生成装置。
【請求項１７】
前記ブロック加工部は、ブロック毎で任意の種類の加工方法を適応してブロックを加工する
請求項１１乃至１６の何れか１項に記載の音声生成装置。
【請求項１８】
前記音声は、エンジン音であり、前記パラメータは、エンジン回転数である
請求項１０乃至１７の何れか１項に記載の音声生成装置。
【請求項１９】
コンピュータに、
所定のパラメータ変化に基づき基本周波数が変化する音声を、前記パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、当該基本周波数に基づき前記パラメータとサンプル音声データの時間軸との対応関係を取得するサンプル音声データ分析処理と、
前記サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割処理と、
外部から入力される前記パラメータに基づき対応する周波数を計算する周波数算出処理と、
前記計算した周波数に対応する前記ブロックを選択するブロック選択処理と、
前記選択したブロックを複数結合した音声波形を生成するブロック結合処理と
を実行させるプログラム。
【請求項２０】
請求項１９に記載のプログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声生成方法、音声生成装置、プログラム、及び記録媒体に関し、特に所定のパラメータ変化に基づき基本周波数が変化する音声を生成する技術に関する。
【背景技術】
【０００２】
近年、音声を生成する方法として、例えば、自動車のエンジン音の場合、自動車の運転状態に応じた音声データを複数用意しておき、運転状態を再現するにあたり、これら複数の音声データを合成する等の加工方法を用いて、エンジン音を運転状態に応じて再現することが提案されている。
【０００３】
エンジン音は、エンジンの回転数（ｒｐｍ）値に基づく変動が大きく、エンジンの回転数の変化に基づき基本周波数が変化する特性を有する音声である。
【０００４】
また、エンジン音は、その他のパラメータ、例えば、変速シフトレンジ、車速、アクセル開度（アクセルペダル操作量）等の変化によっても異なる音質となる。
【０００５】
例えば、特許文献１および特許文献２では、より正確なエンジン音を生成するために、各種のパラメータごとに対応する音声データを複数用意しておき、これらを合成することによってエンジン音の再現性を高めるようにしている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０００−０１０５７６号公報
【特許文献２】特開２００５−１１５１６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述した特許文献１および特許文献２に記載のような模擬音形成装置では、複雑な条件をテーブル化して記憶領域に区分けし、記憶領域ごとに条件の組み合わせに応じたサンプル音声データを録音して用意しておく必要があった。このため、サンプル音声データの取得に手間がかかるとともに、サンプル音声データが膨大となり、サンプル音声データを記憶しておく記憶手段の容量が肥大化してしまうという問題があった。
【０００８】
また、エンジン音等の模擬音を生成するにあたり、データ量の増大は演算リソースを多く消費するといった課題を有しており、簡易な機器における模擬音を生成する処理は困難となっていた。
【０００９】
本発明は、上述した従来技術における課題を解決するものであり、多くのサンプル音声データをあらかじめ用意しておく必要なく、また、記憶領域を節約するとともに簡易な機器においても高品質な模擬音を生成することができる音声生成方法、音声生成装置、プログラムおよび記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決するために、本発明に係る音声生成方法は、所定のパラメータ変化に基づき基本周波数が変化する音声を、パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、基本周波数に基づきパラメータとサンプル音声データの時間軸との対応関係を取得するサンプル音声データ分析ステップと、サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割ステップと、外部から入力されるパラメータに基づき対応する周波数を計算する周波数算出ステップと、計算した周波数に対応するブロックを選択するブロック選択ステップと、選択したブロックを複数結合した音声波形を生成するブロック結合ステップとを有する。
【００１１】
また、上述した課題を解決するために、本発明に係る音声生成装置は、所定のパラメータ変化に基づき基本周波数が変化する音声を、パラメータを所定の時間をかけて変化させて取得した単一のサンプル音声データから、基本周波数を算出すると共に、基本周波数に基づき前記パラメータとサンプル音声データの時間軸との対応関係を取得するサンプル音声データ分析部と、サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割部と、外部から入力されるパラメータに基づき対応する周波数を計算する周波数算出部と、計算した周波数に対応するブロックを選択するブロック選択部と、選択したブロックを複数結合した音声波形を生成するブロック結合部とを有する。
【発明の効果】
【００１２】
本発明によれば、単一のサンプル音声データを周波数に応じた時間長でブロック分割を行い、外部から入力されるパラメータに基づき対応する周波数を計算するだけで、必要となる音声要素ブロックを選択して、このブロックを複数結合するだけの処理で、高品質な模擬音を生成することができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、音声生成装置および連係動作する他の装置の構成を示したブロック図である。
【図２】図２は、音声生成装置の機能ブロック図である。
【図３】図３は、音声生成装置が処理するサンプル音声データを説明するスペクトルグラムである。
【図４】図４は、サンプル音声データのブロック分割を説明するためのスペクトルフラムである。
【図５】図５は、サンプル音声データのブロック分割を説明するための図である。
【図６】図６は、エンジン回転数と周波数の関係を計算する例を示すグラフである。
【図７】図７は、音声生成装置の構成を説明するブロック図である。
【図８】図８は、サンプル音声データの分析処理を説明するためのフローチャートである。
【図９】図９は、サンプル音声データの分割処理を説明するためのフローチャートである。
【図１０】図１０は、入力パラメータに基づき周波数を算出する処理を説明するためのフローチャートである。
【図１１】図１１は、周波数に基づき、音声ブロックを選択する処理を説明するためのフローチャートである。
【図１２】図１２は、音声ブロックの結合処理を説明するためのフローチャートである。
【図１３】図１３は、音声合成処理の変形例として、ジッター処理を説明するための図である。
【図１４】図１４は、ジッター処理を説明するためのフローチャートである。
【図１５】図１５は、音声合成処理の変形例として、ブロック長可変処理を説明するための図である。
【図１６】図１６は、ブロック長可変処理を説明するためのフローチャートである。
【図１７】図１７は、音声合成処理の変形例として、音声ブロックの合成処理を説明するための図である。
【図１８】図１８は、音声ブロックの合成処理を説明するためのフローチャートである。
【図１９】図１９は、音声合成処理の変形例として、サンプル音声データを周波数帯域毎に分割した状態を説明する図である。
【図２０】図２０は、サンプル音声データを周波数帯域毎に分割および合成する処理を説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
以下、本発明の実施の形態（以下、本実施の形態と称する。）について、図面を参照しながら以下の順序にて詳細に説明する。なお、本発明は、以下の実施形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
１．音声合成システムの構成
２．音声生成装置の構成例（機能構成）
３．音声生成装置の構成例（プログラム処理を前提とした構成）
４．プログラム１（サンプル音声データ分析処理）
５．プログラム２（ブロック分割処理）
６．プログラム３（周波数算出処理）
７．プログラム４（ブロック選択処理）
８．プログラム５（ブロック結合処理および音声波形データ出力処理）
９．変形例１（ジッター処理）
１０．プログラム６（ジッター処理）
１１．変形例２（ブロック長可変処理）
１２．プログラム７（ブロック長可変処理）
１３．変形例３（音声ブロック合成処理）
１４．プログラム８（音声ブロック合成処理）
１５．変形例４（周波数帯域分割処理）
１６．プログラム９（周波数帯域分割処理）
【００１５】
＜１．音声生成システムの構成＞
図１は、本実施の形態に係る音声生成装置を含む、音声生成システムの構成を示す図である。
【００１６】
音声生成システムは、音声生成を行うために必要な外部パラメータ等を出力する外部パラメータ出力装置１と、外部パラメータ出力装置１から入力されたパラメータ等に基づき音声の生成を行う音声生成装置２と、音声生成装置２が生成した音声を出力する音声出力装置３と、サンプル音声データを取得するサンプル音声録音装置４とから構成される。
【００１７】
ここで、音声生成装置２が扱う音声データは、所定のパラメータ変化に基づき基本周波数（ｆ0）が変化する特徴を有する音声データであり、特に、パラメータを所定の時間をかけて単調増加するように変化させて取得した単一のサンプル音声データである。
【００１８】
所定のパラメータ変化に基づき基本周波数（ｆ0）が変化する特徴を有する音声データの一例として、たとえば、エンジン回転数（ｒｐｍ）の変化に基づき基本周波数（ｆ0）が変化するエンジン音がある。以下では、一例としてエンジン音に本発明を適用したものとして説明を進めるが、その他にも基本周波数（ｆ0）が所定のパラメータ変化に基づき変化する他の音声にも適用可能なことは言うまでもない。
【００１９】
サンプル音声データは、サンプル音声録音装置４等によって、パラメータを所定の時間をかけて変化させながらサンプル音声を録音することによってデータ化して得ることができる。音声生成装置２は、サンプル音声録音装置４等からサンプル音声データを取得し、音声生成装置２内部の記憶領域に格納しておくものとする。
【００２０】
なお、サンプル音声データは、サンプル録音装置４以外の装置によって得るようにしてもよく、記録媒体またはネットワークを介して音声生成装置２にあらかじめ取り込まれるものとしてもよい。
【００２１】
外部パラメータ出力装置１は、例えば各種の物理計算を用いて所定のパラメータを算出して出力するものである。エンジン音に関しては、物理エンジンによって所定のパラメータであるエンジン回転数（ｒｐｍ）値を算出し、エンジン回転数（ｒｐｍ）値およびエンジン回転数の最高値および最低値を音声生成装置２へ出力するようになっている。なお、エンジン回転数の最高値および最低値に関しては、物理エンジンによって算出するエンジン回転数の変化範囲が確定する初期に一度だけ出力するようにしてもよい。
【００２２】
また、外部パラメータ出力装置１は、エンジン回転数（ｒｐｍ）値そのものではなく、例えばシステム上で許容されるビット数の代替値を出力するようにしてもよい。すなわち、外部パラメータ出力装置１は、少ないビット数で表された代替値を用いるようにしてもよい。
【００２３】
音声生成装置２は、サンプル音声データから、基本周波数（ｆ0）を算出すると共に、基本周波数（ｆ0）に基づきパラメータとサンプル音声データの時間軸との対応関係を取得し、サンプル音声データを周波数に応じた時間長でブロック化して分割し、外部パラメータ出力装置１から入力されるパラメータに基づき対応する周波数を計算し、計算した周波数に対応するブロックを選択し、選択したブロックを複数結合（時間的に接続）した音声波形を生成する。なお、音声再生装置２の構成及び動作については、以下で詳細な説明を行う。
【００２４】
音声生成装置２は、生成した音声波形をデジタルデータまたはアナログデータにて音声出力装置３へ出力し、音声出力装置３は、入力された音声波形を音声として再生する。
【００２５】
音声出力装置３は、例えばスピーカ等の音響装置等を用いることができるが、音声を再生可能な各種の装置を用いることができるのは言うまでもない。
【００２６】
＜２．音声生成装置の構成例（機能構成）＞
図２は、本実施の形態に係る音声生成装置２の機能構成を示すブロック図である。
【００２７】
音声生成装置２は、図２に示すように、少なくとも、サンプル音声データを記憶するデータ記憶部１１と、基本周波数（ｆ0）を算出すると共に、基本周波数（ｆ0）に基づきパラメータとサンプル音声データの時間軸との対応関係を取得するデータ分析部１２と、サンプル音声データを周波数に応じた時間長でブロック化して分割するブロック分割部１３と、外部パラメータ出力装置１から入力されるパラメータに基づき対応する周波数を計算する周波数算出部１４と、計算した周波数に対応するブロックを選択するブロック選択部１５と、選択したブロックを複数結合（時間的に接続）した音声波形を生成するブロック結合部１６と、音声波形データを出力する音声波形データ出力部１７の機能ブロックから構成されている。
【００２８】
データ記憶部１１は、例えば図３に示すように、所定のパラメータ変化に基づき基本周波数（ｆ0）が変化する音声を、パラメータを所定の時間をかけて単調増加するように変化させて取得するサンプル音声録音装置４等により得られたサンプル音声データを記憶するものである。ここで、図３に示すサンプル音声データは、横軸を時間軸、縦軸を周波数（Ｈｚ）で表すことができ、色の濃度で音の強度レベルを表している。図３からもわかるように、音声は基本周波数（ｆ0）とともに基本周波数（ｆ0）よりも大きな周波数で音の強度が高くなる部分音とから構成されており、周波数軸（縦軸）に沿ってデータを取り出すと取り出した時間の音声スペクトルを得ることができる。
【００２９】
まず、データ記憶部１１には、あらかじめ図３に示すようなサンプル音声データを記憶しておくことが好ましいが、後述する音声生成を行う前に記憶されていれば音声生成装置２の機能を発揮するために差し支えない。また、サンプル音声録音装置４からサンプル音声データを取得するのみならず、他の装置からサンプル音声データを取得してもよいことは言うまでもない。
【００３０】
次に、データ分析部１２は、データ記憶部１１に記憶されたサンプル音声データを分析し、以後の音声生成処理を行うために必要なデータを得るものである。
【００３１】
データ分析部１２は、時間変化を伴う基本周波数（ｆ0）のプロファイルを取得し、基本周波数（ｆ0）のプロファイルに基づき所定のパラメータとサンプル音声データの時間軸との対応関係を取得する。具体的な処理は後述するが、所定のパラメータが上昇するにつれ基本周波数（ｆ0）が上昇する音声の場合、基本周波数（ｆ0）と所定のパラメータは一定の相関性を有する。したがって、時間変化を伴う基本周波数（ｆ0）のプロファイルを参照すると、あるパラメータにおける音声データは、図３に示すサンプル音声データの所定の時間を切り出せばよいことになる。
【００３２】
次に、ブロック分割部１３は、サンプル音声データを周波数に応じた時間長でブロック化して分割するものである。具体的には、ブロック分割部１３は、図３および図４に示すように、サンプル音声データを周波数に応じた時間長Ｂでブロック化して分割する。
【００３３】
時間長Ｂは、サンプル音声データの周波数が高くなるほど短くなるようになっている。図３に示す、サンプル音声データでは、時間の変化とともに基本周波数（ｆ0）が上昇し、部分音の周波数も上昇するため、時間の経過とともに時間長Ｂが短くなるように分割するようにしている。
【００３４】
これは、周波数の高い音声データが、一つの音声要素が短い時間サイクルで繰り返される特性を有するため、分割時間長を短くしても音の特徴を失うことがなく、後述の音声生成処理においても高音質な音声生成を行うことができるためである。
【００３５】
上述の時間長Ｂについて、図４に例示するサンプル音声データをもとに、さらに説明を行う。図４に示すように、時間と周波数の関係が変化するプロファイルで表される音声スペクトルでは、音声ブロック２１を、周波数の高い所で短い時間長で分割し、周波数の低い所で長い時間長で分割するように、分割線が引かれ、この分割線の位置で音声ブロック２１を分割することにより、図５に示すように、複数の音声ブロック２２に分割される。
【００３６】
ここで、図５に示す分割された音声ブロック２２には、それぞれ分割を行った位置に対応する周波数として、２０Ｈｚ，２２Ｈｚ，２３Ｈｚ，２５Ｈｚ，・・・とラベル付けが行われる。ここで、ラベル付けされる周波数は、あくまで例示であるが、例えば、音声ブロック２２の領域の中央部のプロファイルの周波数を選択するか、他の音声ブロック２２と分割される分割線の位置におけるプロファイルの周波数を選択する。このラベルは、各音声ブロック２２の基本周波数（ｆ0）、すなわち音声の高低を示す指標ともなる。
【００３７】
次に、周波数算出部１４は、外部パラメータ出力装置１から、例えばエンジン回転数（ｒｐｍ）値をパラメータとして入力され、このエンジン回転数（ｒｐｍ）値に基づき対応する周波数を計算する。
【００３８】
具体的に、周波数算出部１４は、データ分析部１２により取得した基本周波数（ｆ0）のプロファイルに基づき、例えば図６に示すような基本周波数（ｆ0）のプロファイルを近似する関数ｆ（ｒ）を求める。なお、図６における基本周波数（ｆ0）は、図３から抽出したものである。
【００３９】
基本周波数（ｆ0）の時間変化は、パラメータの変化、すなわちエンジン回転数（ｒｐｍ）値ｒの変化と相関する。関数ｆ（ｒ）は、基本周波数（ｆ0）を近似するものとも言える。したがって、関数ｆ（ｒ）は、周波数とエンジン回転数（ｒｐｍ）値ｒとの係を表す関数である。
【００４０】
関数ｆ（ｒ）を求める際には、基本周波数（ｆ0）のプロファイルの平均直線から算出したり、任意２点間を直線補間することにより算出したり、任意の複数点から内挿を行うことにより算出する等、各種の計算方法を用いることができる。
【００４１】
なお、関数ｆ（ｒ）は、各種の近似法によって得られる関数であるが、計算処理を容易とするために最も簡易な関数として一次関数とすることが好ましい。関数ｆ（ｒ）は、サンプル音声データに対応して一度計算してしまえばよく、処理の都度計算する必要はないため、あらかじめ計算をしておくことが好ましい。また、関数ｆ（ｒ）は、サンプル音声データを取得する際にサンプル音声データと共に取得するようにしてもよい。
【００４２】
周波数算出部１４は、外部パラメータ出力装置１からエンジン回転数（ｒｐｍ）値ｒが入力されると、関数ｆ（ｒ）にエンジン回転数（ｒｐｍ）値ｒを代入して、エンジン回転数（ｒｐｍ）値ｒに対応する周波数ｆを算出する。
【００４３】
次に、ブロック選択部１５は、周波数算出部１４によって計算された周波数に対応するラベルを有する分割された音声ブロック２２を選択するものである。なお、該当する周波数に対応するラベルを有する音声ブロック２２がない場合には、最も近い周波数のラベルを有する音声ブロック２２を選択するようにしてもよい。なお、詳細は後述するが、単一の音声ブロック２２を選択する必要はなく、複数の音声ブロック２２を選択するようにしてもよいし、更には音声ブロック２２に加工を施してもよい。
【００４４】
次に、ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック２２を複数結合（時間的に接続）して、時間的に連続する音声波形を生成するものである。すなわち、ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック２２を繰り返し接続した音声波形を生成するものである。
【００４５】
次に、音声波形データ出力部１７は、ブロック結合部１６によって生成される音声波形を、音声出力装置３に順次出力するものである。
【００４６】
なお、音声波形データ出力部１７は、音声出力装置３に応じて音声波形をアナログデータとして出力してもよいし、デジタルデータとして出力してもよいことは言うまでもない。
【００４７】
以上のような構成とされた音声生成装置２は、単一のサンプル音声データを周波数に応じた時間長でブロック分割を行い、外部パラメータ出力装置１から入力されるパラメータに基づき対応する周波数を計算するだけで、必要となる音声ブロックを選択して、この音声ブロックを複数結合するだけの処理で、高品質な模擬音を形成することができる。
【００４８】
また、音声生成装置２は、複雑な条件をテーブル化して記憶領域に区分けし、記憶領域ごとに条件の組み合わせに応じたサンプル音声データを録音して用意しておく必要がなく、音声データ量の増加を抑えるとともに、音声データを記憶しておく記憶手段の容量を節約することが可能となる。
【００４９】
また、音声生成装置２は、上述のように扱う音声データがブロック化され、データ量も小さく、簡易な関数ｆ（ｒ）により周波数を計算して、周波数に応じた音声ブロックを選択するだけであるため、演算リソースの消費を抑制することができる。
【００５０】
＜３．音声生成装置の構成例（プログラム処理を前提とした構成）＞
図７は、本実施の形態に係る音声生成装置２の機能を発揮するためのハードウェアの構成を示すブロック図である。音声生成装置２は、以下のハードウェア構成上で動作するプログラムによって動作するものとする。
【００５１】
音声生成装置２は、図７に示すように、プログラムの実行処理を行うＣＰＵ（Central Processing Unit）１０１と、ＣＰＵ１０１により実行されるプログラムを格納するＲＯＭ（Read Only Memory）１０２と、プログラムやデータを展開するＲＡＭ（Random Access Memory）１０３と、ユーザにより各種の入力操作を受ける操作入力部１０４と、プログラムやデータを固定的に保存するストレージ１０５と、外部からデータが入力され、またプログラム処理により生成された音声データ等を出力する入出力インターフェース１０６とを有する。
【００５２】
ＣＰＵ１０１は、音声生成装置２が有する各ブロックの動作を制御する。具体的に、ＣＰＵ１０１は、例えばＲＯＭ１０２に記録されている音声生成処理の動作プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより、各ブロックの動作を制御する。
【００５３】
ＲＯＭ１０２は、例えば読み込みのみ可能な不揮発性メモリである。ＲＯＭ１０２は、音声生成処理等の動作プログラムに加え、音声生成装置２が有する各ブロックの動作に必要な定数等の情報を記憶する。
【００５４】
ＲＡＭ１０３は、揮発性メモリである。ＲＡＭ１０３は、動作プログラムの展開領域としてだけでなく、音声生成装置２が有する各ブロックの動作において出力された中間データ等を一時的に記憶する格納領域としても用いられる。
【００５５】
操作入力部１０４は、音声生成装置２に対して入力操作を行う際に用いられるユーザインタフェースである。操作入力部１０４は、ユーザの入力操作に応じて音声生成処理の実行または停止等の命令をＣＰＵ１０１に対して出力する。
【００５６】
ストレージ１０５は、ＲＡＭ１０３に展開された動作プログラム、サンプル音声データ、音声生成装置２が有する各ブロックの動作において出力された中間データ等を固定的に記憶する格納領域として用いられる。なお、ストレージ１０５としてはＨＤＤ（Hard disk drive）、ＳＳＤ（Solid State Drive）又は光学ドライブ等を用いることができる。
【００５７】
入出力インターフェース１０６は、外部パラメータ出力装置１から所定のパラメータとして、例えばエンジン回転数（ｒｐｍ）値が入力され、音声生成処理によって生成した音声波形をデータ化して音声出力装置３に出力するインターフェースである。
【００５８】
上述のように構成された音声生成装置２は、後述で説明する各プログラムを実行することによって、音声生成処理を行うことができる。
【００５９】
＜４．プログラム１（サンプル音声データ分析処理）＞
次に、本実施の形態の音声生成装置２において実行されるサンプル音声データの分析処理について、図８のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本分析処理は、他の処理に先駆けてサンプル音声を取得した時点で開始してもよいし、音声生成処理を行う直前に開始してもよい。
【００６０】
ステップＳ１０１で、ＣＰＵ１０１は、サンプル音声データをストレージ１０５より読みだす。なお、ＣＰＵ１０１は、サンプル音声データがＲＯＭ１０２等に記録されている場合には、該当する記憶手段からサンプル音声データを読み出す。
【００６１】
ステップＳ１０２で、ＣＰＵ１０１は、読み出したサンプル音声データを分析し、図３に示すように、基本周波数（ｆ0）を算出する。なお、基本周波数（ｆ0）の算出方法や推定方法については各種の公知の技術を用いることができる。例えば、音響分析ソフトである“Praat”を用いたＰＤＡ（Pitch Detection Algorithm）が一般的である。以下では、“Praat”を用いたＰＤＡとして自己相関を用いた計算方法に関して説明する。
【００６２】
ＣＰＵ１０１は、サンプル音声データの波形を所定の時間長で短いフレームに分割し、フレーム毎の自己相関を算出し、自己相関スペクトルの最高点に基づいて各フレームの波形周期すなわち波長を算出する。次に、ＣＰＵ１０１は、波長を周波数に変換し、基本周波数の値を算出する。
【００６３】
より詳しく説明すると、ＣＰＵ１０１は、フレーム毎の自己相関スペクトルから複数の最高点を抽出し、複数の基本周波数の値を得る。そして、ＣＰＵ１０１は、全フレームを処理した後で、フレーム毎に抽出された複数の基本周波数の値のうちからフレーム毎一つを選択する。ＣＰＵ１０１は、基本周波数曲線が連続するきれいな曲線となるように基本周波数値を選択する、即ち前後のフレームで選択された基本周波数の値に近い値を順次選択するようにしている。これにより、ＣＰＵ１０１は、基本周波数（ｆ0）を時間ｔを変数とする関数として抽出する。
【００６４】
ステップＳ１０３で、ＣＰＵ１０１は、算出された基本周波数（ｆ0）から、基本周波数ｆと入力パラメータであるエンジン回転数（ｒｐｍ）値ｒの関係を表す関数ｆ（ｒ）を算出する。
【００６５】
ここで、関数ｆ（ｒ）の算出の一例を示すが、例えば、外部パラメータ出力装置１が、所定パラメータであるエンジン回転数（ｒｐｍ）値ｒを変化させたときの最高値（ｒ2）および最低値（ｒ1）を音声生成装置２に出力した場合に、ＣＰＵ１０１は、最高値（ｒ2）と最低値（ｒ1）から、単純に直線補間を行うことで関数ｆ（ｒ）を算出することができる。図６に示すように、外部パラメータ出力装置１が出力する最高値（ｒ2）および最低値（ｒ1）が決まっている状態であれば、これらの値を用いて基本周波数（ｆ0）の直線補間を行うことで、実際に入力されるエンジン回転数（ｒｐｍ）値ｒに対応した関数ｆ（ｒ）を計算することが可能である。この場合には、外部パラメータ出力装置１から、エンジン回転数（ｒｐｍ）値ｒと共に、最高値（ｒ2）および最低値（ｒ1）を得るものとする。
【００６６】
なお、エンジン回転数をｒ、最低基本周波数をｆ1、最高基本周波数をｆ2、最低エンジン回転数をｒ1、最高エンジン回転数をｒ2としたときに、関数ｆ（ｒ）は以下の式１で表すことができる。
ｆ（ｒ）＝ｆ1＋（（ｒ−ｒ1）／（ｒ2−ｒ1））×（ｆ2−ｆ1）・・・（式１）
【００６７】
以上のように、ＣＰＵ１０１は、サンプル音声データの分析処理を行い、関数ｆ（ｒ）を取得する。なお、ＣＰＵ１０１は、取得した関数ｆ（ｒ）をＲＡＭ１０３又はストレージ１０５等に記録する。
【００６８】
＜５．プログラム２（ブロック分割処理）＞
次に、本実施の形態の音声生成装置２において実行されるブロック分割処理について、図９のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本分析処理は、他の処理に先駆けてサンプル音声を取得した時点で開始してもよいし、音声生成処理を行う直前に開始してもよい。
【００６９】
ステップＳ２０１で、ＣＰＵ１０１は、サンプル音声データをストレージ１０５より読みだす。なお、ＣＰＵ１０１は、サンプル音声データがＲＯＭ１０２等に記録されている場合には、該当する記憶手段からサンプル音声データを読み出す。
【００７０】
ステップＳ２０２で、ＣＰＵ１０１は、読み出したサンプル音声データを分析し、図４及び図５に示すように、周波数に応じた時間長Ｂでブロック化して分割する。特に、ＣＰＵ１０１は、サンプル音声データの周波数が高くなるほど時間長Ｂが短くなるようブロック分割を行い、サンプル音声データを複数の音声ブロック２２に分割する。
【００７１】
ステップＳ２０３で、ＣＰＵ１０１は、図５に示す分割された音声ブロック２２に、それぞれ分割を行ったプロファイルの周波数に対応して、例えば２０Ｈｚ，２２Ｈｚ，２３Ｈｚ，２５Ｈｚ，・・・とラベル付けを行う。ここで、ＣＰＵ１０１は、ラベル付けする周波数を各音声ブロック２２の基本周波数（ｆ0）とし、例えばデータのヘッダー情報等に該当する周波数を示すパラメータを含むように音声ブロック２２を出力する。
【００７２】
以上のように、ＣＰＵ１０１は、サンプル音声データのブロック分割処理を行い、複数の音声ブロック２２を取得する。なお、ＣＰＵ１０１は、取得した複数の音声ブロック２２をＲＡＭ１０３又はストレージ１０５等に記録する。
【００７３】
＜６．プログラム３（周波数算出処理）＞
次に、本実施の形態の音声生成装置２において実行される周波数算出処理について、図１０のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本周波数算出処理は、外部パラメータ出力装置１から所定のパラメータであるエンジン回転数（ｒｐｍ）値ｒを取得した時点で開始する。
【００７４】
ステップＳ３０１で、ＣＰＵ１０１は、関数ｆ（ｒ）をストレージ１０５より読みだす。なお、ＣＰＵ１０１は、関数ｆ（ｒ）がＲＯＭ１０２等に記録されている場合には、該当する記憶手段から関数ｆ（ｒ）を読み出す。
【００７５】
ステップＳ３０２で、ＣＰＵ１０１は、外部パラメータ出力装置１から、所定のパラメータであるエンジン回転数（ｒｐｍ）値ｒを取得する。
【００７６】
ステップＳ３０３で、ＣＰＵ１０１は、関数ｆ（ｒ）に外部パラメータ出力装置１から入力されたエンジン回転数（ｒｐｍ）値ｒを代入し、エンジン回転数（ｒｐｍ）に対応する周波数を算出する。
【００７７】
以上のように、ＣＰＵ１０１は、入力されたエンジン回転数（ｒｐｍ）値ｒから、対応する周波数を算出する。なお、ＣＰＵ１０１は、算出した周波数をＲＡＭ１０３又はストレージ１０５等に記録する。
【００７８】
＜７．プログラム４（ブロック選択処理）＞
次に、本実施の形態の音声生成装置２において実行されるブロック選択処理について、図１１のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、本ブロック選択処理は、周波数が算出され、更新される都度実行される。
【００７９】
ステップＳ４０１で、ＣＰＵ１０１は、周波数をＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、周波数がＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から周波数を読み出す。
【００８０】
ステップＳ４０２で、ＣＰＵ１０１は、ＲＡＭ１０３に記録されている、複数の音声ブロック２２のラベルが、読み出した周波数と対応するか否かを判断し、対応する場合には処理をＳ４０３に進める。また、ＣＰＵ１０１は、ＲＡＭ１０３に記録されている、複数の音声ブロック２２のラベルが、読み出した周波数と対応しないと判断した場合には処理をＳ４０４に進める。
【００８１】
ステップＳ４０３で、ＣＰＵ１０１は、読み出した周波数に対応するラベルを有する音声ブロック２２を選択する。一方、ステップＳ４０４で、ＣＰＵ１０１は、読み出した周波数に最も近い値に対応するラベルを有する音声ブロック２２を選択する。
【００８２】
以上のように、ＣＰＵ１０１は、読み出した周波数に対応するラベルか、読み出した周波数に近いラベルを有する音声ブロック２２を選択する。なお、ＣＰＵ１０１は、選択した音声ブロック２２の情報をＲＡＭ１０３又はストレージ１０５等に記録する。
【００８３】
＜８．プログラム５（ブロック結合処理および音声波形データ出力処理）＞
次に、本実施の形態の音声生成装置２において実行されるブロック結合処理および音声波形データ出力処理について、図１２のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。
【００８４】
ステップＳ５０１で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２２をＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、音声ブロック２２がＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から音声ブロック２２を読み出す。
【００８５】
ステップＳ５０２で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２２を複数結合（時間的に接続）する。すなわち、ＣＰＵ１０１は、音声ブロック２２が繰り返される音声ブロックを生成することとなる。
【００８６】
ステップＳ５０３で、ＣＰＵ１０１は、結合された音声ブロックに基づき音声波形をデータとして出力する。
【００８７】
ステップＳ５０４で、ＣＰＵ１０１は、ブロック選択処理において選択された音声ブロックに変更があるか否かを判断し、ある場合には、処理をステップＳ５０１に戻し、ステップＳ５０２において変更された音声ブロックを読み出す処理を行う。また、ＣＰＵ１０１は、ブロック選択処理において選択された音声ブロックに変更がないと判断した場合には処理をＳ５０５に進める。なお、音声ブロックの変更の有無については、入力されるエンジン回転数（ｒｐｍ）値の変化の有無に基づき判断することができる。
【００８８】
ここで、音声ブロックに変更が生じた場合に、ステップＳ５０２における音声ブロック２２の結合処理は、読み出される音声ブロック２２が変更される都度現在の音声ブロック２２の後ろ側に時間的に結合するように音声ブロックの結合処理を行うものとする。
【００８９】
ステップＳ５０５で、ＣＰＵ１０１は、音声出力停止か否かを判断し、音声出力停止条件に該当する場合には、処理を終了する。また、ＣＰＵ１０１は、音声出力停止条件に該当しない場合には処理をステップＳ５０２に戻し、ステップＳ５０２において音声ブロックの結合を繰り返す。
【００９０】
なお、音声出力停止か否かの判断は、例えば、外部パラメータ出力装置１からパラメータの入力がなくなった場合や、ユーザ操作に基づく音声出力の停止要求等、任意に設定することができる。
【００９１】
以上のように、ＣＰＵ１０１は、選択された音声ブロック２２を結合しながら音声波形データを出力し、音声ブロック２２の変更があった場合には結合する音声ブロックを変更しながら音声ブロック２２の結合および音声波形データの出力を継続することで、庫温室なエンジン音の再現を可能とする。
【００９２】
＜９．変形例１（ジッター処理）＞
次に、本実施の形態の音声生成装置２の変形例１として、ブロック結合部１６の他の動作について説明する。
【００９３】
具体的には、図１３に示すように、ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック２４と、この音声ブロック２４の前後の音声ブロック２５，２６のうち少なくとも一方とを用い、音声ブロック２４，２５，２６を任意の組み合わせで結合（時間的に接続）することで、ジッターに似た音響エフェクト効果を得ることができる。
【００９４】
ブロック結合部１６は、音声ブロック２４，２５，２６の組み合わせ順序をランダムにしてもよいし、所定のパターンであらかじめ結合する順序を決めてもよい。また、音声ブロック２４の時間的に前後の音声ブロックとは、直近の前後の音声ブロックに限定するものではなく、やや離れた音声ブロックを採用するようにしてもよい。
【００９５】
＜１０．プログラム６（ジッター処理）＞
次に、本実施の形態の音声生成装置２において実行されるジッター処理について、図１４のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。
【００９６】
ステップＳ６０１で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２４および前後の音声ブロック２５，２６をＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、音声ブロック２４，２５，２６がＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から音声ブロックを読み出す。
【００９７】
ステップＳ６０２で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２４および前後の音声ブロック２５，２６を複数結合（時間的に接続）する。すなわち、ＣＰＵ１０１は、音声ブロック２４および前後の音声ブロック２５，２６が繰り返される音声ブロックを生成することとなる。ＣＰＵ１０１は、音声ブロック２４および前後の音声ブロック２５，２６の結合順序は、ランダムでも所定パターンでも構わないが、ランダム関数が低負荷で利用できる環境においては所定パターンを記憶する必要がないため、ランダムに結合順序を決めることが好ましい。
【００９８】
ステップＳ６０３で、ＣＰＵ１０１は、結合された音声ブロックに基づき音声波形をデータとして出力する。
【００９９】
以上のように、ＣＰＵ１０１は、選択された音声ブロックを繰り返すだけの単調な音声生成を行うだけではなく、前後の音声ブロックも利用することによって、エンジン音等の揺らぎを再現し、よりリアルなエンジン音の再現を可能とする。
【０１００】
＜１１．変形例２（ブロック長可変処理）＞
次に、本実施の形態の音声生成装置２の変形例２として、ブロック結合部１６の他の動作について説明する。
【０１０１】
具体的には、図１５に示すように、ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック２７と、この音声ブロック２７を加工した他の音声ブロック２７’，２７’’を少なくとも一つ用い、加工前の音声ブロック２７および加工後の音声ブロック２７’，２７’’を任意の組み合わせで結合（時間的に接続）することで、ゆらぎに似た音響エフェクト効果を得ることができる。
【０１０２】
ブロック結合部１６は、加工前の音声ブロック２７と加工後の音声ブロック２７’，２７’’の組み合わせをランダムにしてもよいし、所定のパターンであらかじめ結合する順序を決めてもよい。また、ここでの音声ブロック２７の加工とは、例えば音声ブロック２７の時間的に後ろ側の所定時間をカットする加工である。例えば、カット部２８，２９のように、異なる時間長をカットすることが好ましい。
【０１０３】
＜１２．プログラム７（ブロック長可変処理）＞
次に、本実施の形態の音声生成装置２において実行されるブロック長可変処理について、図１６のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。
【０１０４】
ステップＳ７０１で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２７をＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、音声ブロックがＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から音声ブロック２７を読み出す。
【０１０５】
ステップＳ７０２で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック２７の時間的に後ろ側を異なる時間だけカットする。すなわち、ＣＰＵ１０１は、音声ブロック２７の時間的に後側をカット部２８，２９のように異なる時間長でカットした複数の音声ブロック２７’，２７’’を生成する。言い換えると、ＣＰＵ１０１は、本ステップを繰り返すことでブロック選択処理にて選択した音声ブロック２７の時間長が異なる複数の音声ブロック２７’，２７’’を生成する。
【０１０６】
ステップＳ７０３で、ＣＰＵ１０１は、時間長が異なる複数の音声ブロック２７，２７’，２７’’を結合する結合順序は、ランダムでも所定パターンでも構わないが、ランダム関数が低負荷で利用できる環境においては所定パターンを記憶する必要がないため、ランダムに結合順序を決めることが好ましい。
【０１０７】
ステップＳ７０４で、ＣＰＵ１０１は、結合された音声ブロックに基づき音声波形をデータとして出力する。
【０１０８】
以上のように、ＣＰＵ１０１は、選択された音声ブロックを繰り返すだけの単調な音声生成を行うだけではなく、音声ブロック２７の時間長を可変させることで、エンジン音等の揺らぎを再現し、よりリアルなエンジン音の再現を可能とする。
【０１０９】
＜１３．変形例３（音声ブロック合成処理）＞
次に、本実施の形態の音声生成装置２の変形例３として、ブロック結合部１６の他の動作について説明する。
【０１１０】
具体的には、図１７に示すように、ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック３０と、この音声ブロック近傍の他の音声ブロック３１を用い、複数の音声ブロックを合成加工して新たな音声ブロック３２とすることで、単調な音声生成を解消することができる。
【０１１１】
ブロック結合部１６は、ブロック選択部１５が選択した音声ブロック３０と、この音声ブロック３０近傍の他の音声ブロック３１を、例えばクロスフェード処理にて合成し周波数成分が異なるブロックを融合させた音声ブロック３２を生成し、生成した合成音声ブロックを時間的に結合する。なお、詳細は説明しないが、３つ以上の音声ブロックを合成するようにしてもよいことは言うまでもない。
【０１１２】
＜１４．プログラム８（音声ブロック合成処理）＞
次に、本実施の形態の音声生成装置２において実行される音声ブロック合成処理について、図１８のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。
【０１１３】
ステップＳ８０１で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック３０とこの音声ブロック３０近傍の他の音声ブロック３１をＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、音声ブロック３０，３１がＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から音声ブロックを読み出す。
【０１１４】
ステップＳ８０２で、ＣＰＵ１０１は、ブロック選択処理にて選択した音声ブロック３０およびこの音声ブロック３０近傍の他の音声ブロック３１を時間成分が重複するように合成処理する。すなわち、ＣＰＵ１０１は、二つの音声ブロック３０，３１を重ね合わせ、時間的に前後で出力レベルが異なるようにクロスフェード処理にて合成することで、時間軸上で異なる周波数成分の音声が大きくなるような変化のある音声ブロック３２を生成する。本ステップにおいて、ＣＰＵ１０１は、クロスフェードの条件を固定せずに、繰り返し処理を行うことで特徴の異なる複数の音声ブロック３２を得るようにしてもよい。
【０１１５】
ステップＳ８０３で、ＣＰＵ１０１は、クロスフェード処理によって合成された音声ブロック３２を複数結合した音声ブロックを生成する。
【０１１６】
ステップＳ８０４で、ＣＰＵ１０１は、結合された音声ブロックに基づき音声波形をデータとして出力する。
【０１１７】
以上のように、ＣＰＵ１０１は、選択された音声ブロック３０を繰り返すだけの単調な音声生成を行うだけではなく、選択された音声ブロック３０と周波数成分の異なる他の音声ブロック３１を重ね合わせた音声ブロック３２とすることで、エンジン音等の揺らぎを再現し、よりリアルなエンジン音の再現を可能とする。
【０１１８】
＜１５．変形例４（周波数分割処理）＞
次に、本実施の形態の音声生成装置２の変形例４として、他の処理を説明する。なお、上述で説明した変形例１ないし３を含むものとして各動作について説明し、重複する部分については記載や説明を省略する。
【０１１９】
音声生成装置２は、図３に示すように、サンプル音声データを所定の周波数間隔Ａとする帯域分割を行い、上述で説明した音声生成装置２における処理を所定の周波数帯域毎に実行することで、周波数帯域毎に音声ブロックの選択や加工、再生順序等を選択することができるようになり、よりリアルなエンジン音の再現を可能とする。
【０１２０】
音声生成装置２の構成については、分割した周波数帯域毎に音声生成処理方法を変形例１ないし３も組み合わせ適宜異なるようにすることができるものであるが、基本的に図２および図７と変わるところはないため音声生成装置２の構成についての詳細な説明は割愛する。
【０１２１】
上述で説明した周波数帯域毎に分割を行わない場合と具体的に異なる部分は、ブロック分割部１３において、周波数帯域にサンプル音声データを分割する処理を行うことと、ブロック結合部１６において、周波数帯域毎にブロック結合が行われた音声ブロックをミキシング処理することである。すなわち、周波数帯域毎の分割処理と、ミキシング処理が加わるのみで基本構成に大きな差異はない。
【０１２２】
例えば、ブロック分割部１３において、周波数帯域をＡ１〜Ａ５の５つに分割した場合、各周波数帯域毎に音声ブロックの選択や加工、再生順序等を異ならせて、ブロック結合部１６において各周波数帯域Ａ１〜Ａ５毎に音声ブロックを結合した状態は、図１９に示すとおりである。
【０１２３】
図１９を用いてさらに説明を行うと、周波数帯域Ａ１〜Ａ５のそれぞれで、音声ブロックの選択、加工、再生順序等がそれぞれ異なっていることがわかる。これは、周波数帯域Ａ１〜Ａ５に適した音声ブロックの選択、加工、再生順序等を適宜設定することができ、よりリアルなエンジン音の再現を可能とする。
【０１２４】
また、厳密なシミュレーションによる音声生成を行わない本実施の形態における音声生成装置２では、予期しないノイズの発生や違和感のある音声成分が生じる可能性もあるため、そのような要素が発生する周波数帯域毎の音声ブロックの選択、加工、再生順序の調整を行い、ミキシング処理においてノイズ成分や違和感のある音声成分を、音声波形データに反映しないようにすることができる。
【０１２５】
最終的にブロック結合部１６は、図１９に示すように、周波数帯域Ａ１〜Ａ５毎に結合された音声ブロックをミキシング処理により合成し音声波形データ出力部１７へ出力する。
【０１２６】
＜１６．プログラム９（周波数分割処理）＞
次に、本実施の形態の音声生成装置２において実行される周波数分割処理について、図２０のフローチャートを用いて具体的な処理を説明する。このフローチャートに対応する処理は、ＣＰＵ１０１が、例えばＲＯＭ１０２に記録されている対応する処理プログラムを読み出し、ＲＡＭ１０３に展開して実行することにより実現することができる。なお、音声サンプルデータの分析処理については上述と同様であるため、説明を省略する。
【０１２７】
ステップＳ９０１で、ＣＰＵ１０１は、サンプル音声データをストレージ１０５より読みだす。なお、ＣＰＵ１０１は、サンプル音声データがＲＯＭ１０２等に記録されている場合には、該当する記憶手段からサンプル音声データを読み出す。
【０１２８】
ステップＳ９０２で、ＣＰＵ１０１は、読み出したサンプル音声データを分析し、図３に示すように、周波数幅Ａ毎の帯域にサンプル音声データを周波数分割する。特に、ＣＰＵ１０１は、サンプル音声データの周波数帯域に応じて分割周波数幅Ａを可変としてもよいが、説明を簡易とするために分割周波数幅Ａを均一とし、周波数帯域をＡ１〜Ａ５の５分割を行う。
【０１２９】
ステップＳ９０３で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に分割されたサンプル音声データをそれぞれ分析し、図４及び図５に示すように、周波数に応じた時間長Ｂでブロック化して分割する。特に、ＣＰＵ１０１は、サンプル音声データの周波数が高くなるほど時間長Ｂが短くなるようブロック分割を行い、サンプル音声データを複数の音声ブロックに分割する。
【０１３０】
ステップＳ９０４で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に、図５に示すように分割された音声ブロックに、それぞれ分割を行ったプロファイルの周波数に対応して、２０Ｈｚ，２２Ｈｚ，２３Ｈｚ，２５Ｈｚ，・・・とラベル付けを行う。ここで、ＣＰＵ１０１は、ラベル付けする周波数を各音声ブロックの基本周波数（ｆ0）とし、例えばデータのヘッダー情報等に該当する周波数を示すパラメータを含むように音声ブロックを出力する。
【０１３１】
ステップＳ９０５で、ＣＰＵ１０１は、関数ｆ（ｒ）をストレージ１０５より読みだす。なお、ＣＰＵ１０１は、関数ｆ（ｒ）がＲＯＭ１０２等に記録されている場合には、該当する記憶手段から関数ｆ（ｒ）を読み出す。
【０１３２】
ステップＳ９０６で、ＣＰＵ１０１は、外部パラメータ出力装置１から、所定のパラメータであるエンジン回転数（ｒｐｍ）値ｒを取得する。
【０１３３】
ステップＳ９０７で、ＣＰＵ１０１は、関数ｆ（ｒ）に外部パラメータ出力装置１から入力されたエンジン回転数（ｒｐｍ）値ｒを代入し、エンジン回転数（ｒｐｍ）に対応する周波数を算出する。
【０１３４】
ステップＳ９０８で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に、算出した周波数に対応するラベルを有する音声ブロック若しくは算出した周波数に最も近い値に対応するラベルを有する音声ブロックを選択する。
【０１３５】
ステップＳ９０９で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に、ブロック選択処理にて選択した音声ブロックをＲＡＭ１０３より読みだす。なお、ＣＰＵ１０１は、音声ブロックがＲＯＭ１０２やストレージ１０５等に記録されている場合には、該当する記憶手段から音声ブロック２２を読み出す。
【０１３６】
ステップＳ９１０で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に、ブロック選択処理にて選択した音声ブロックを複数結合（時間的に接続）するか、ブロック選択処理にて選択した音声ブロックと前後の音声ブロックを任意の順序で結合するか、ブロック選択処理にて選択した音声ブロックの時間的に後ろ側を異なる時間長だけカットした音声ブロックを任意の順序で結合するか、ブロック選択処理にて選択した音声ブロックおよびこの音声ブロックの近傍の他の音声ブロックを時間成分が重複するように合成処理した音声ブロックを結合する。
【０１３７】
なお、結合方法は、図１９に示すように、上記で列挙したものを周波数帯域Ａ１〜Ａ５で適宜異なるように組み合わせてもよい。
【０１３８】
すなわち、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に、音声ブロックの選択や加工、再生順序等を異ならせて、高音質のエンジン音を再現するようにしている。
【０１３９】
ステップＳ９１１で、ＣＰＵ１０１は、周波数帯域Ａ１〜Ａ５毎に結合した音声ブロックをミキシング処理して全周波数帯域Ａ１〜Ａ５を含むエンジン音を合成する。
【０１４０】
以上のように、ＣＰＵ１０１は、周波数帯域毎に、音声生成処理を可変とし、単一のサンプル音声データを用いて少ないデータ量かつ少ない計算量で、高音質のエンジン音を再現することが可能となる。
【０１４１】
なお、本発明は、上述した実施の形態に限定されず、各種の変形例を適宜組み合わせて用いることができるし、各装置を一体にすることを妨げるものではない。また、上述した実施の形態におけるプログラムは、各種の記録媒体に固定して記憶させたものを含むものとする。
【符号の説明】
【０１４２】
１  外部パラメータ出力装置、２  音声生成装置、３  音声出力装置、４  サンプル音声録音装置、１１  データ記憶部、１２  データ分析部、１３  ブロック分割部、１４  周波数算出部、１５  ブロック選択部、１６  ブロック結合部、１７  音声波形データ出力部、２１，２２，２３，２４，２５，２６，２７，２７’，２７’’  音声ブロック、２８，２９  カット部、３０，３１  音声ブロック、３２  合成した音声ブロック、１０１  ＰＵ、１０２  ＲＯＭ、１０３  ＲＡＭ、１０４  操作入力部、１０５  ストレージ、１０６  入出力インターフェース
【図１】
2017021212.tif 000003
【図２】
2017021212.tif 000004
【図４】
2017021212.tif 000005
【図５】
2017021212.tif 000006
【図６】
2017021212.tif 000007
【図７】
2017021212.tif 000008
【図８】
2017021212.tif 000009
【図９】
2017021212.tif 000010
【図１０】
2017021212.tif 000011
【図１１】
2017021212.tif 000012
【図１２】
2017021212.tif 000013
【図１３】
2017021212.tif 000014
【図１４】
2017021212.tif 000015
【図１５】
2017021212.tif 000016
【図１６】
2017021212.tif 000017
【図１７】
2017021212.tif 000018
【図１８】
2017021212.tif 000019
【図１９】
2017021212.tif 000020
【図２０】
2017021212.tif 000021
【図３】
2017021212.tif 000022