(57)【要約】【要約】【課題】 元の音声波形を分析して抽出されるパラメータを用いて常に適切な音声波形を合成できるようにする技術を提供する。【解決手段】 分析フェーズでは、Ａ／Ｄ変換器８から出力された音声データをフレーム単位で分析する。パラメータとしては、ＰＡＲＣＯＲ係数、その音声データが表す音声が有声音である度合いを示す有声音比率、などを抽出する。合成フェーズでは、指定されたピッチで生成したRosenberg 波、ピッチを持たないホワイトノイズ波を有声音比率に応じて混合する形で駆動音源波形を生成する。合成フィルタ部４５は、その駆動音源波形、及びＰＡＲＣＯＲ係数を用いて１フレーム分の音声データを合成する。【選択図】 図３
2010002937.tif 000002
【特許請求の範囲】
【請求項１】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置において、
前記第１の音声波形を分析してパラメータを抽出する第１の分析手段と、
前記第１の音声波形を分析して該第１の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第２の分析手段と、
音高を指定する音高指定手段と、
声帯音源波形を模擬した音源波形を前記音高指定手段により指定された音高で生成する音源波形生成手段と、
前記音高を持たない他の音源波形を生成する他の音源波形生成手段と、
前記有声音比率を基に前記音源波形を前記他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及び前記パラメータを用いて前記第２の音声波形を合成する音声波形合成手段と、
を具備することを特徴とする音声分析合成装置。
【請求項２】
前記第１の音声波形から得られる前記パラメータ、及び有声音比率は、該パラメータ、及び有声音比率からなるデータ群を複数、格納できる記憶手段に格納し、
前記音声波形合成手段は、前記記憶手段に格納されたデータ群のうちの一つを用いて前記第２の音声波形を合成する、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項３】
前記第１及び第２の分析手段は、前記第１の音声波形の分析をフレーム単位で行い、
前記第１の分析手段は、前記パラメータの一つとして前記第１の音声波形の音高を抽出する場合、該第１の音声波形の周波数振幅値、及び位相情報を抽出し、該周波数振幅値の自己相関値を算出し、該自己相関値が最大となった周波数振幅値、及び該位相情報から該第１の音声波形の音高を抽出する、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項４】
前記第１の分析手段は、前記フレーム間の音高変化、及び該音高変化の継続を基に、前記第１の音声波形から抽出した音高を採用すべきか否か判定し採用する、
ことを特徴とする請求項３記載の音声分析合成装置。
【請求項５】
前記第２の分析手段は、前記第１の音声波形の周波数振幅値の自己相関値が分散している度合いを基に前記有声音比率を抽出する、
ことを特徴とする請求項１、または３記載の音声分析合成装置。
【請求項６】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置において、
前記第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、
声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
テンポ値を指示するためのテンポ指示手段と、
前記テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声分析合成装置。
【請求項７】
前記音声合成手段は、前記パラメータ取得手段が取得したパラメータのなかにテンポ値が存在する場合、該テンポ値、及び前記テンポ指示手段により指示されたテンポ値を基に、前記サイズを決定する、
ことを特徴とする請求項６記載の音声分析合成装置。
【請求項８】
前記音源波形生成手段は、入力された音声から抽出された音高で前記音源波形を生成する、
ことを特徴とする請求項６、または７記載の音声分析合成装置。
【請求項９】
音声波形からパラメータを抽出する音声分析装置において、
前記音声波形を取得する音声波形取得手段と、
前記音声波形取得手段が取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第１の分析手段と、
前記音声波形取得手段が取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、前記合成フィルタに入力される音源波形生成用のパラメータとして抽出する第２の分析手段と、
を具備することを特徴とする音声分析装置。
【請求項１０】
音声波形を合成する音声合成装置において、
第１の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得手段と、
前記有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成手段と、
前記フィルタ係数、及び前記駆動音源波形を用いて第２の音声波形を合成する音声波形合成手段と、
を具備することを特徴とする音声合成装置。
【請求項１１】
音声波形からパラメータを抽出する音声分析装置において、
前記音声波形を取得する音声波形取得手段と、
前記音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、
前記音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、
前記分析手段が抽出したパラメータと併せて、前記テンポ値取得手段が取得したテンポ値をパラメータとして前記フレーム単位で保存するパラメータ保存手段と、
を具備することを特徴とする音声分析装置。
【請求項１２】
音声波形を合成する音声合成装置において、
第１の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、
テンポ値を指示するためのテンポ指示手段と、
声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
前記パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声合成装置。
【請求項１３】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
前記第１の音声波形を分析してパラメータを抽出する第１の分析機能と、
前記第１の音声波形を分析して該第１の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第２の分析機能と、
音高を指定する音高指定機能と、
声帯音源波形を模擬した音源波形を前記音高指定機能により指定された音高で生成する音源波形生成機能と、
前記音高を持たない他の音源波形を生成する他の音源波形生成機能と、
前記有声音比率を基に前記音源波形を前記他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及び前記パラメータを用いて前記第２の音声波形を合成する音声波形合成機能と、
を実現させるためのプログラム。
【請求項１４】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
前記第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得機能と、
声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
テンポ値を指示するためのテンポ指示機能と、
前記テンポ指示機能により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第２の音声波形をフレーム単位で合成する音声合成機能と、
を実現させるためのプログラム。
【請求項１５】
音声波形からパラメータを抽出する音声分析装置に実行させるプログラムであって、
前記音声波形を取得する音声波形取得機能と、
前記音声波形取得機能により取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第１の分析機能と、
前記音声波形取得機能により取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、前記合成フィルタに入力される音源波形生成用のパラメータとして抽出する第２の分析機能と、
を実現させるためのプログラム。
【請求項１６】
音声波形を合成する音声合成装置に実行させるプログラムであって、
第１の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得機能と、
前記有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成機能と、
前記フィルタ係数、及び前記駆動音源波形を用いて第２の音声波形を合成する音声波形合成機能と、
を実現させるためのプログラム。
【請求項１７】
音声波形からパラメータを抽出する音声分析装置に実行させるプログラムであって、
前記音声波形を取得する音声波形取得機能と、
前記音声波形取得機能により取得した音声波形を分析してパラメータをフレーム単位で抽出する分析機能と、
前記音声波形取得機能により音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得機能と、
前記分析機能により抽出したパラメータと併せて、前記テンポ値取得機能により取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存機能と、
を実現させるためのプログラム。
【請求項１８】
音声波形を合成する音声合成装置に実行させるプログラムであって、
第１の音声波形から抽出されたパラメータを取得するパラメータ取得機能と、
テンポ値を指示するためのテンポ指示機能と、
声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
前記パラメータ取得機能により取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示機能により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成機能と、
を実現させるためのプログラム。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、音声波形を分析し、その分析結果を用いて音声波形を合成するための技術に関する。
【背景技術】
【０００２】
音声波形を分析し、その分析結果を用いて音声波形を合成する音声分析合成装置は、入力した音声波形に対し声質を変化させるといった音響効果を付与する用途でも利用されている。
その声質の変化は、例えば音声（例えば人声）のフォルマントを操作したり、或いは音声をバンドパスフィルタ（ＢＰＦ）に通してバンド別に振幅値を特定し、特定した振幅値から構成したフィルタに音声を通すことで行われる。後者の方式は、鍵盤等により指定されたピッチ（音高）で人声を発音させるボコーダー（音声分析合成装置）に主に採用されている。その後者の方式を採用した音声分析合成装置としては、例えば特許文献１に記載されたものがある。
【０００３】
その特許文献１に記載された従来の音声分析合成装置では、入力した音声波形を分析してパラメータを抽出し、指定されたピッチに対応した駆動音源波形を生成し、抽出したパラメータと駆動音源波形とを用いて出力用の音声波形を合成していた。その駆動音源波形としては三角波や異なるパルス幅を持った波形などのパルス波形を生成していた。しかし、そのようなパルス波形を用いた場合、人の自然な音声を再現するのはできない。また、入力音声が有声音か否か判定し、駆動音源波形、及び無声音用のホワイトノイズ波形の何れかをその判定結果に応じて選択して音声波形の合成に用いているが、そのように切り換えると、合成する音声波形が急激に変化して不自然となることがある。判定結果に応じてそれらを単にクロスフェードさせたとしても、元の音声波形の変化に適切に追従するとは限らないため、合成した音声波形が不自然なものとなることを確実に回避することはできない。
【０００４】
不自然と感じられる音声は人に違和感を与えるのが普通である。その音声が聞き慣れた人のものであればなおさらである。このことから、合成後の音声が常に自然と感じられる適切なものとすることは非常に重要なことであると考えられる。
上記パラメータの抽出は音声符号化等のために行われる場合がある。その符号化では、元の情報をより再現することが望まれる。このことから、元の情報をより再現できるようにする意味からも、合成後の音声が常に自然と感じられるようにすることは非常に重要なことであると考えられる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０９−２０４１８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の課題は、元の音声波形を分析して抽出されるパラメータを用いて常に適切な音声波形を合成できるようにする技術を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の第１、及び第２の態様の音声分析合成装置は共に、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行うことを前提とし、それぞれ以下の手段を具備する。
第１の態様の音声分析合成装置は、第１の音声波形を分析してパラメータを抽出する第１の分析手段と、第１の音声波形を分析して該第１の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第２の分析手段と、音高を指定する音高指定手段と、声帯音源波形を模擬した音源波形を音高指定手段により指定された音高で生成する音源波形生成手段と、音高を持たない他の音源波形を生成する他の音源波形生成手段と、有声音比率を基に音源波形を他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及びパラメータを用いて第２の音声波形を合成する音声波形合成手段と、を具備する。
【０００８】
なお、上記第１の音声波形から得られるパラメータ、及び有声音比率は、該パラメータ、及び有声音比率からなるデータ群を複数、格納できる記憶手段に格納し、音声波形合成手段は、記憶手段に格納されたデータ群のうちの一つを用いて第２の音声波形を合成する、ことが望ましい。
【０００９】
また、第１及び第２の分析手段は、第１の音声波形の分析をフレーム単位で行い、第１の分析手段は、パラメータの一つとして第１の音声波形の音高を抽出する場合、該第１の音声波形の周波数振幅値、及び位相情報を抽出し、該周波数振幅値の自己相関値を算出し、該自己相関値が最大となった周波数振幅値、及び該位相情報から該第１の音声波形の音高を抽出する、ことが望ましい。
【００１０】
また、第１の分析手段は、フレーム間の音高変化、及び該音高変化の継続を基に、第１の音声波形から抽出した音高を採用すべきか否か判定し採用する、ことが望ましい。第２の分析手段は、第１の音声波形の周波数振幅値の自己相関値が分散している度合いを基に有声音比率を抽出する、ことが望ましい。
【００１１】
第２の態様の音声分析合成装置は、第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、テンポ値を指示するためのテンポ指示手段と、テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、音源波形、及びパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【００１２】
上記音声合成手段は、パラメータ取得手段が取得したパラメータのなかにテンポ値が存在する場合、該テンポ値、及びテンポ指示手段により指示されたテンポ値を基に、サイズを決定する、ことが望ましい。音源波形生成手段は、入力された音声から抽出された音高で音源波形を生成する、ことが望ましい。
【００１３】
本発明の第１及び第２の態様の音声分析装置は共に、音声波形からパラメータを抽出することを前提とし、それぞれ以下の手段を具備する。
第１の態様の音声分析装置は、音声波形を取得する音声波形取得手段と、音声波形取得手段が取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第１の分析手段と、音声波形取得手段が取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、合成フィルタに入力される音源波形生成用のパラメータとして抽出する第２の分析手段と、を具備する。
【００１４】
第２の態様の音声分析装置は、音声波形を取得する音声波形取得手段と、音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、分析手段が抽出したパラメータと併せて、テンポ値取得手段が取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存手段と、を具備する。
【００１５】
本発明の第１及び第２の態様の音声合成装置は、それぞれ以下の手段を具備する。
第１の態様の音声合成装置は、第１の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得手段と、有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成手段と、フィルタ係数、及び駆動音源波形を用いて第２の音声波形を合成する音声波形合成手段と、を具備する。
【００１６】
第２の態様の音声合成装置は、第１の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、テンポ値を指示するためのテンポ指示手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値をテンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【００１７】
本発明の第１〜第６の態様のプログラムは、上記第１、及び第２の態様の音声分析合成装置、第１、及び第２の態様の音声分析装置、第１、及び第２の態様の音声合成装置をそれぞれ実現させるための機能を搭載している。
【発明の効果】
【００１８】
本発明は、第１の音声波形の分析を行い、フィルタ係数等のパラメータに加えて、その第１の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する。
有声音、無声音は明確に区別されるわけではなく、音声が両者の中間的な状態となっている場合も存在する。このため、有声音比率を基に、有声音用の音源波形を無声音用の音源波形と混合することにより、中間的な状態を再現するうえでより適切な駆動音源波形を生成することができる。それにより、その駆動音源波形を用いてより適切な音声データを合成できるようになって、その音声データにより発音される音声もより自然なものとすることができる。
【００１９】
本発明は、指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、音源波形、及び音声分析時に抽出されたパラメータから音声データを合成する。そのようにフレームサイズをテンポ値に応じて変更することにより、分析により得られたパラメータによる音声データの合成を適切に行えるようになる。このため、合成された音声データによる発音も常に自然なものとすることができる。
【図面の簡単な説明】
【００２０】
【図１】本実施例による音声分析合成装置を搭載した電子楽器の構成図である。
【図２】スイッチ部を構成する一部のスイッチの配置を示す図である。
【図３】第１の実施例による音声分析合成装置の機能構成図である。
【図４】ピッチ抽出／有声音比率算出部の機能構成図である。
【図５】パラメータバッファに格納されるパラメータを説明する図である。
【図６】フレームの切り出し方法を説明する図である。
【図７】Rosenberg 波を説明する図である。
【図８】フレーム単位で合成した音声データのフレーム間の加算方法を説明する図である。
【図９】全体処理のフローチャートである。
【図１０】スイッチ処理のフローチャートである。
【図１１】鍵盤処理のフローチャートである。
【図１２】フレーム合成処理のフローチャートである。
【図１３】楽音タイマインタラプト処理のフローチャートである。
【図１４】分析処理のフローチャートである。
【図１５】ＰＡＲＣＯＲ係数算出処理のフローチャートである。
【図１６】ピッチ周波数算出処理のフローチャートである。
【図１７】ピッチ補正処理のフローチャートである。
【図１８】混合比算出処理のフローチャートである。
【図１９】第２の実施例による音声分析合成装置の分析フェーズ用の機能構成図である。
【図２０】第２の実施例による音声分析合成装置の合成フェーズ用の機能構成図である。
【図２１】フレームサイズの変更方法を説明する図である。
【図２２】スイッチ処理のフローチャートである（第２の実施例）。
【図２３】フレーム修正処理のフローチャートである（第２の実施例）。
【図２４】楽音タイマインタラプト処理のフローチャートである（第２の実施例）。
【発明を実施するための形態】
【００２１】
以下、本発明の実施例について、図面を参照しながら詳細に説明する。
＜第１の実施例＞
図１は、本実施例による音声分析合成装置を搭載した電子楽器の構成図である。
その電子楽器は、図１に示すように、楽器全体の制御を行うＣＰＵ１と、複数の鍵を備えた鍵盤２と、各種スイッチを備えたスイッチ部３と、ＣＰＵ１が実行するプログラムや各種制御用データ等を格納したＲＯＭ４と、ＣＰＵ１のワーク用のＲＡＭ５と、例えば液晶表示装置（ＬＣＤ）や複数のＬＥＤなどを備えた表示部６と、特には図示しない端子に接続されたマイク７から入力されるアナログの音声信号のＡ／Ｄ変換を行いその音声データを出力するＡ／Ｄ変換器８と、ＣＰＵ１の指示に従い楽音発音用の波形データを生成する楽音生成部９と、その生成部９が生成した波形データのＤ／Ａ変換を行い、アナログのオーディオ信号を出力するＤ／Ａ変換器１０と、そのオーディオ信号の増幅を行うアンプ１１と、そのアンプ１１が増幅を行った後のオーディオ信号を音声に変換するスピーカ１２と、例えば着脱自在な記憶媒体にアクセスする外部記憶装置１３と、を備えて構成されている。それらの構成において、ＣＰＵ１、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、表示部６、Ａ／Ｄ変換器８、楽音生成部９、及び外部記憶装置１３の間はバスによって接続されている。なお、上記外部記憶装置１３とは、例えばフレキシブルディスク装置、ＣＤ−ＲＯＭ装置、或いは光磁気ディスク装置である。スイッチ部３は、例えばユーザが操作の対象とする各種スイッチの他に、各種スイッチの状態変化を検出するための検出回路を備えたものである。
【００２２】
ＣＰＵ１は、ＲＯＭ４、或いは外部記憶装置１３がアクセス可能な記憶媒体に格納されている演奏再生用のシーケンスデータ（例えばスタンダードＭＩＤＩファイル（ＳＭＦ））を処理することで自動演奏を実現させる。そのために、スイッチ部３を構成するスイッチとしては、図２に示すように、その自動演奏の開始を指示するためのスタート（ＳＴＡＲＴ）スイッチ２１、その終了を指示するためのストップ（ＳＴＯＰ）スイッチ２２、自動演奏時のテンポ値の変更を指示するためのテンポ（ＴＥＭＰＯ）スイッチ２３が設けられている。そのテンポスイッチ２３として、テンポ値のアップを指示するためのアップ（ＵＰ）スイッチ２３ａ、及びそのダウンを指示するためのダウン（ＤＯＷＮ）スイッチ２３ｂが設けられている。その他には、特に図示していないが、マイク７から入力される音声の分析を指示するための分析スイッチ、その分析結果を用いた音声の合成を行わせるための合成スイッチ、その合成時に鍵盤２への操作による音高指定を有効とするか否か選択するためのピッチ選択スイッチ、及び保存している分析結果のなかで合成に用いられるものを選択するためのファイル選択スイッチ、などが設けられている。
【００２３】
上記構成の電子楽器において、本実施例による音声分析合成装置は、マイク７から入力した音声に対し、その音高（ピッチ）を指定された音高（ピッチ）に変換する音響効果を付与できるものとして実現されている。音声の入力は、外部記憶装置１３を介して行っても良く、ＬＡＮ、或いは公衆網等の通信ネットワークを介して行っても良い。
【００２４】
図３は、本実施例による音声分析合成装置の機能構成図である。
音響効果を付加した音声波形は、元の音声波形を分析してパラメータを抽出し、抽出したパラメータ、及び生成した音源波形を用いて生成するようになっている。このことから、図３に示すように、音声分析合成装置の機能構成は、分析を行う段階（分析フェーズ）用のものと、その分析結果を用いて音声波形を合成する段階（合成フェーズ）用のものと、に区別される。分析フェーズ用のものは、音声符号化等を行うためのもの、つまり音声分析装置を構成するものに相当し、合成フェーズ用のものは、音声復号化を行うためのもの、つまり音声合成装置を構成するものに相当する。
【００２５】
始めに、分析フェーズ用の構成、及び各部の動作について説明する。
図３に示すＡ／Ｄ変換器（ＡＤＣ）８は、マイク７から出力されたアナログの音声信号をデジタルの音声データに変換するものである。例えばサンプリング周波数２２，０５２Ｈｚ、１６ｂｉｔでＡＤ変換を行う。以降、それがＡＤ変換して得られる音声データについては便宜的に「元音声データ」、或いは「元波形データ」と呼び、マイク７に入力された音声については「元音声」と呼ぶことにする。
【００２６】
フレーム抽出部３１は、その元音声データを入力し、予め定められたサイズでフレームを切り出すことで抽出する。そのサイズ、つまり音声データ数は例えば５１２であり、フレームの切り出しは、図６に示すように、フレームサイズをホップサイズで割った値であるオーバーラップファクタでオーバーラップさせて行う。図６に示す例は、そのファクタの値を８、つまりホップサイズを６４（５１２／６４＝８）とした場合のものである。そのようにして抽出されたフレーム（フレームサイズ分の音声データ）はレベル算出部３２、線形予測分析部３３、及びピッチ抽出／有声音比率算出部３４に送られる。
【００２７】
レベル算出部３２は、送られたフレーム毎に音量レベルを示すレベル値（レベルパラメータ）を算出する。その算出は、例えばフレームを構成する元音声データの自乗和を求め、その自乗和をフレームサイズで除算することで行う。
線形予測分析部３３は、送られたフレームを対象に線形予測分析を行い、パーコール（ＰＡＲＣＯＲ）係数を算出する。線形予測分析（ＬＰＣ：Linear Predictive Coding）の次数は、サンプリング周波数が２２，０５０Ｈｚの音声データでは２６次もしくは２８次が適当である。本実施例では２６次としている。それにより、送られたフレームからLevinson-Durbin アルゴリズムを使って２６個のＰＡＲＣＯＲ係数を算出している。
【００２８】
ピッチ抽出／有声音比率算出部３４は、元音声のピッチ周波数（繰り返し周期）、及び元音声が有声音である度合いを示す有声音比率を算出する。
図４は、上記算出部３４の機能構成図である。図４を参照して、その算出部３４の機能構成、及び各部の動作について詳細に説明する。
【００２９】
フレーム抽出部３１から送られたフレームはハイパスフィルタ（ＨＰＦ）部５１に入力される。そのＨＰＦ部５１は、低域成分を除去したフレームを窓掛け部５２に出力する。その窓掛け部５２は、フレーム（１フレームサイズ分の音声データ）に対し窓関数、例えばハニング窓（Hanning Window）を乗算する。
【００３０】
高速フーリエ変換（ＦＦＴ）部５３は、窓関数乗算後のフレームを対象にＦＦＴを行う。周波数振幅位相算出部５４は、それによって算出された実数値、及び虚数値から周波数振幅値と位相を求める。周波数振幅自己相関算出部５５は、求めた周波数振幅値を対象に自己相関を計算し相関値を算出する。算出された周波数振幅値をｘi とすると、相関値ｒn は次式により算出する。その式から明らかなように、フレームの後半部分である値が２５６以上のインデクスではそれの前半部分の折り返しとなるため、前半部分である０〜２５５の計２５６個の周波数振幅値ｘi のみ算出すれば良い。
【００３１】
【数１】
2010002937.tif 000003
【００３２】
周波数振幅値ｘi の自己相関を取ることにより、調波構造すなわち倍音成分を持った音声や楽音では相関値ｒn が大きくなる。このため、ノイズ等の影響を排除した正確なピッチ抽出を行うことができる。元音声として人の音声を前提としている場合、その音声が持つピッチとして考えられる範囲のみを対象とすれば良いので、４０〜５００Ｈｚに相当するインデクス値が１≦ｎ≦１３の相関値ｒn のみを求めれば良いことになる。
【００３３】
相関値ｒn が最大となるｎの値がピッチ周波数に対応する周波数振幅値ｘi のインデクス値となる。しかし、そのインデクス値から周波数を算出しても、高い精度は得られないことが多いのが実状である。このことから、元音声のピッチ周波数を高い精度で抽出するために、位相差計測法により正確なピッチ周波数を算出するようにしている。その算出を行うのが位相差計測法による周波数計算部（以降、「周波数計算部」と略記する）５７である。その計算部５７は、前フレームの位相データ５６を参照してピッチ周波数を算出する。
【００３４】
周波数振幅値ｘi の自己相関を取って行うピッチ抽出法では、通常の話し言葉であれば高い精度でピッチを抽出することができる。しかし、歌唱時の音声や特殊な発音をした際の音声では、必ずしも高い精度でピッチを抽出することができない。このため、ピッチ補正部５８は、周波数計算部５７が算出したピッチ周波数の補正を行う。その補正後のピッチ周波数がピッチ抽出／有声音比率算出部３４から出力される。
【００３５】
自己相関値の標準偏差算出部（以降「標準偏差算出部」と略記する）５９は、周波数振幅自己相関算出部５５から相関値ｒn を受け取り、その標準偏差を算出する。その標準偏差は、周知のように、分散（散らばり）の度合いを示す値である。このため、標準偏差が小さい程、特定周波数にパワーが集中していることになって有声音である可能性が高くなる。逆にそれが大きい程、様々な周波数に平均的にパワーが分散していることになって無声音である可能性が高くなる。標準偏差算出部５９は、このことに着目し、算出した標準偏差から元音声が有声音である度合いを示す有声音比率ｍｉｘ（０≦ｍｉｘ≦１）を算出する。その有声音比率ｍｉｘがピッチ抽出／有声音比率算出部３４から出力される。
【００３６】
このようにして、レベル算出部３２、線形予測分析部３３、及びピッチ抽出／有声音比率算出部３４は、図５に示すように、それぞれレベル値、ＰＡＲＣＯＲ係数、有声音比率ｍｉｘ、及びピッチ周波数をフレーム毎に算出して出力する。それらは分析結果を示すパラメータとしてパラメータバッファ３５に一旦、格納され、必要に応じてパラメータファイル３６として保存される。なお、パラメータバッファ３５、及びパラメータファイル３６を保存するものは、例えばＲＡＭ５、或いは外部記憶装置１３がアクセス可能な記憶媒体である。ここでは便宜的にＲＡＭ５であるとの前提で以降の説明を行うこととする。
【００３７】
上記分析フェーズ用の構成、つまりＡ／Ｄ変換器８が出力する元音声データの分析を行う各部３１〜３４は、例えばＣＰＵ１、スイッチ部３、ＲＯＭ４、ＲＡＭ５、及び外部記憶装置１３によって実現される。合成フェーズ用の構成、つまりパラメータバッファ３５に格納されたパラメータを用いて音声波形を合成しＤ／Ａ変換器１０に出力するための各部４１〜４７は、例えばＣＰＵ１、鍵盤２、スイッチ部３、ＲＯＭ４、ＲＡＭ５、楽音生成部９、及び外部記憶装置１３によって実現される。
【００３８】
次に、合成フェーズ用の構成、及び各部の動作について説明する。
音声波形の合成では、パラメータバッファ３５にはユーザが選択したパラメータファイル３６が読み出されて格納される。
切り替えスイッチ４１は、パラメータバッファ３５にパラメータとして格納されているピッチ周波数、及び鍵盤２をユーザが操作することで指定するピッチ周波数のうちの一方をRosenberg 波生成部４２に出力する。そのスイッチ４１は、ピッチ選択スイッチへの操作に応じて、それらのうちの一方を選択して出力する。
【００３９】
Rosenberg 波生成部４２は、図７に示すようなRosenberg 波を、切り替えスイッチ４１から入力するピッチで生成する。そのRosenberg 波は、声帯音源波形を模擬した波形であり、声帯の開口期間長を制御するＯＱ（Open Quotient ）パラメータは本実施例では０．５に固定している。振幅パラメータＡＶについては１としている。ホワイトノイズ生成部４３は、ホワイトノイズ波を生成する。そのノイズ波は、周知のように、Rosenberg 波とは異なり音高を持たない。
【００４０】
Rosenberg 波生成部４２が生成したRosenberg 波には、パラメータバッファ３５に格納された有声音比率ｍｉｘが乗算されて駆動音源バッファ４４に格納される。ホワイトノイズ生成部４３が生成したホワイトノイズ波には、１から有声音比率ｍｉｘを減算した値（＝１−ｍｉｘ）が乗算されて、駆動音源バッファ４４に格納されたRosenberg 波に加算される。それにより、それらの波形を有声音比率ｍｉｘに応じて混合した駆動音源波形を駆動音源バッファ４４に用意する。
【００４１】
上記Rosenberg 波は有声音用の駆動音源波形であり、ホワイトノイズ波は無声音用の駆動音源波形である。しかし、有声音、無声音は明確に区別されるわけではなく、音声が両者の中間的な状態となっている場合も存在する。このことから、有声音比率ｍｉｘを算出し、その比率ｍｉｘに応じてRosenberg 波とホワイトノイズ波を混合して、中間的な状態を再現するうえでより適切な駆動音源波形を生成するようにしている。そのような駆動音源波形を生成することにより、常に自然と感じられる音声波形を合成することができることとなる。
【００４２】
合成フィルタ部４５は、駆動音源バッファ４４に用意された１フレーム分の駆動音源波形、及びパラメータバッファ３５に格納されたＰＡＲＣＯＲ係数から１フレーム分の音声波形（音声データ）を生成する。駆動音源波形は入力として、ＰＡＲＣＯＲ係数はフィルタ係数として用いられる。その一方では、生成した音声データ全体の自乗和を算出してフレームサイズ（ここでは５１２）で除算し、パラメータバッファ３５のレベル値（元音声データで同様に算出された値）をその除算結果で除算し、その平方根を乗算係数として求めて乗算器４６に出力する。
【００４３】
乗算器４６は、合成フィルタ部４５が生成した音声データに対し、乗算係数を乗算する。フレーム加算部４７は、図８に示すように、乗算器４６が出力する１フレーム分の音声データにハニング窓を乗算し、それによって得られた音声データを、分析フェーズのときと同じオーバーラップファクタで他のフレームと重畳（オーバーラップ加算）する。そのようにして重畳した後の音声データをＤ／Ａ変換器（ＤＡＣ）１０に出力する。
【００４４】
そのフレーム加算部４７は、例えばＣＰＵ１、ＲＯＭ４、及びＲＡＭ５によって実現される。他のフレームとの重畳は、例えばＲＡＭ５に設けた領域である出力バッファを用いて行われる。このことから、楽音生成部９は、ＣＰＵ１の指示に従って発音させるべき楽音を発音させるための波形データを生成してＤ／Ａ変換器１０に出力する他に、出力バッファから読み出されて送られた音声データをそのまま変換器１０に出力できるようになっている。
【００４５】
本実施例による音声分析合成装置は、上述したようにして、元音声データの分析を行い、その分析結果を用いて音声データを合成しスピーカ１２から放音させるものとして実現されている。以降は、その音声分析合成装置を実現させる電子楽器の動作について、図９〜図１８に示す各種フローチャートを参照して詳細に説明する。
【００４６】
図９は、全体処理のフローチャートである。始めに図９を参照して、その全体処理について詳細に説明する。なお、その全体処理は、ＣＰＵ１が、ＲＯＭ４に格納されたプログラムを実行して電子楽器のリソースを使用することにより実現される。
先ず、ステップ９０１では、電源がオンされたことに伴い、初期化処理を実行する。続くステップ９０２では、スイッチ部３を構成するスイッチへのユーザの操作に対応するためのスイッチ処理を実行する。そのスイッチ処理は、例えばスイッチ部３を構成する検出回路に各種スイッチの状態を検出させてその検出結果を受け取り、その検出結果を解析して状態が変化したスイッチの種類、及びその変化を特定して行われる。
【００４７】
ステップ９０２に続くステップ９０３では、鍵盤２へのユーザの操作に対応するための鍵盤処理を実行する。その鍵盤処理を実行することにより、鍵盤２への演奏操作に応じて楽音がスピーカ１２から放音される。ステップ９０４にはその後に移行する。
ステップ９０４では、表示部６を構成するＬＣＤ、或いはＬＥＤを駆動してユーザに提供すべき情報を提供するための表示処理を実行する。その実行後は上記ステップ９０２に戻る。それにより、電源がオンされている間、ステップ９０２〜９０４で形成される処理ループを繰り返し実行する。
【００４８】
次に、上記全体処理内で実行されるサブルーチン処理について詳細に説明する。
図１０は、上記ステップ９０２として実行されるスイッチ処理のフローチャートである。スイッチ部３を構成する検出回路から受け取った検出結果を解析した後に行われる処理の流れを表したものである。全体処理内で実行されるサブルーチン処理では、始めに図１０を参照して、そのスイッチ処理について詳細に説明する。
【００４９】
先ず、ステップ１００１では、分析スイッチがオン（操作）されたか否か判定する。そのスイッチをユーザが操作した場合、判定はＹＥＳとなり、ステップ１００２で変数ａｎａ＿ｆｌｇの値を反転、即ちそれまでの値が１であれば０、それまでの値が０であれば１を新たに代入した後、ステップ１００３に移行する。そうでない場合には、判定はＮＯとなってステップ１００６に移行する。それに代入される値の１は、マイク７から入力される元音声の分析を行う状況であることを示している。
【００５０】
ステップ１００３では、変数ａｎａ＿ｆｌｇの値が１か否か判定する。ユーザが分析スイッチを操作して元音声の分析を指示した場合、それには１が代入されることから、判定はＹＥＳとなり、ステップ１００４でパラメータバッファ３５をクリアし、それの先頭に位置するパラメータ保存用の領域（ここでは便宜的に「アドレス」と呼ぶ）を指定する値を変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒに代入した後、ステップ１００６に移行する。そうでない場合には、判定はＮＯとなり、ステップ１００５でバッファ３５に保存した分析結果をパラメータファイル３６としてＲＡＭ５に書き込んで保存した後、そのステップ１００６に移行する。そのようにして、本実施例では、分析スイッチを操作してから再度、操作するまでの間、元音声の分析を行い、その分析結果をバッファ３５に順次、保存するようにしている。
【００５１】
ステップ１００６では、合成スイッチがオン（操作）されたか否か判定する。そのスイッチをユーザが操作した場合、判定はＹＥＳとなり、ステップ１００７で変数ｓｙｎ＿ｆｌｇの値を反転させた後、ステップ１００８に移行する。そうでない場合には、判定はＮＯとなってステップ１０１０に移行する。
【００５２】
ステップ１００８では、変数ｓｙｎ＿ｆｌｇの値が１か否か判定する。その変数に１が代入されていた場合、判定はＹＥＳとなり、ステップ１００９において変数ｆｉｌｅ＿ｎｕｍの値で指定されるパラメータファイル３６をパラメータバッファ３５に読み込んだ後、ステップ１０１０に移行する。そうでない場合には、判定はＮＯとなってそのステップ１０１０に移行する。このようにして、本実施例では、合成スイッチへの操作により合成に用いるパラメータファイル３６の切り替えを行うようにしている。
【００５３】
ステップ１０１０では、ピッチ選択スイッチがオン（操作）されたか否か判定する。そのスイッチをユーザが操作した場合、判定はＹＥＳとなり、ステップ１０１１で変数ｐｉｔｃｈ＿ｓｅｌの値を反転させた後、ステップ１０１２に移行する。そうでない場合には、判定はＮＯとなり、直接そのステップ１０１２に移行する。
【００５４】
ステップ１０１２では、ファイル選択スイッチがオンされたか否か判定する。そのスイッチをユーザが操作した場合、判定はＹＥＳとなり、ステップ１０１３で変数ｆｉｌｅ＿ｎｕｍの値をサイクリックに変化（更新）し、更にステップ１０１４でその他のスイッチへの操作に対応するためのその他スイッチ処理を実行した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってそのステップ１０１４の処理を次に実行した後、一連の処理を終了する。
【００５５】
このように、変数ｆｉｌｅ＿ｎｕｍの値のサイクリックな更新は、例えば存在するパラメータファイル３６の数、そのファイル番号に応じて行われる。それにより、存在するパラメータファイル３６のうちの何れかをユーザがファイル選択スイッチを操作することで任意に選択できるようにさせている。そのようにして選択可能なパラメータファイル３６が合成スイッチへの操作によってパラメータバッファ３５に読み込まれる。
【００５６】
図１１は、図９に示す全体処理内でステップ９０３として実行される鍵盤処理のフローチャートである。次に図１１を参照して、その鍵盤処理について詳細に説明する。
先ず、ステップ１１０１では、例えば鍵盤２からそれに対してユーザが行った操作内容を表すイベントデータ（例えばＭＩＤＩデータ）を受け取り、その操作内容を判定する。操作内容を表すイベントデータを受け取らなかった場合、鍵盤２は状態の変化がなかったと判定し、ここで一連の処理を終了する。そのイベントデータが鍵への押鍵を示していた場合には、その旨が判定されてステップ１１０２に移行し、そのイベントデータが鍵の離鍵を示していた場合には、その旨が判定されたステップ１１０７に移行する。
【００５７】
ステップ１１０２では、変数ｓｙｎ＿ｆｌｇの値が１か否か判定する。その値が１でなかった場合、判定はＮＯとなり、押鍵された鍵に割り当てられた音高の楽音の発音を指示するコマンド（例えばＭＩＤＩデータ）を楽音発生部９に送出する処理をステップ１１０３で実行した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１１０４に移行する。
【００５８】
ステップ１１０４では、上記フレーム加算部４７を構成する出力バッファをクリアし、その先頭に位置するアドレス（ここでは１音声データを格納する領域のことである）を指定する値を変数ｏｕｔ＿ｂｕｆ＿ａｄｒに代入し、パラメータバッファ３５の先頭に位置するアドレス（ここではパラメータデータを格納する領域のことである）を指定する値を変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒに代入する。続くステップ１１０５では、上述したようにして１フレーム分の音声データを合成するフレーム合成処理を実行し、それに続くステップ１１０６では、合成した音声データによる発音中であることを示す値である１を変数ｎｏｔｅ＿ｏｎに代入する。一連の処理はその後に終了する。
【００５９】
一方、上記ステップ１１０１で鍵盤２から受け取ったイベントデータが鍵の離鍵を示していたと判定することで移行するステップ１１０７では、変数ｓｙｎ＿ｆｌｇの値が１か否か判定する。その値が１でなかった場合、判定はＮＯとなり、離鍵された鍵に割り当てられた音高の楽音の消音を指示するコマンド（例えばＭＩＤＩデータ）を楽音発生部９に送出する処理をステップ１１０８で実行した後、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ１１０９に移行し、合成した音声データを出力バッファから読み出すことで行う発音を終了させ、変数ｎｏｔｅ＿ｏｎに発音中でないことを示す値の０を代入してから、一連の処理を終了する。
【００６０】
このように、変数ｓｙｎ＿ｆｌｇの値が１であった場合、パラメータバッファ３５に格納されたパラメータを用いて音声データを合成し、その音声データによる音声（楽音）の発音を行うようになっている。それにより、ユーザが合成スイッチを操作してから再度それを操作するまでの間、合成した音声を鍵盤２への操作内容、つまり押鍵した鍵（音高）、押鍵している期間に応じて発音させるようになっている。
【００６１】
図１２は、上記ステップ１１０５として実行されるフレーム合成処理のフローチャートである。次に図１２を参照して、その合成処理について詳細に説明する。
先ず、ステップ１２０１では、変数ｐｉｔｃｈ＿ｓｅｌの値が０か否か判定する。ユーザがピッチ選択スイッチを操作して、合成する音声の音高（ピッチ）を指定するうえでの鍵盤２への操作を有効とさせていた場合、その変数には０が代入されていることから、判定はＹＥＳとなり、ステップ１２０２で駆動音源波形のピッチとして押鍵された鍵に割り当てられているピッチを設定した後、ステップ１２０４に移行する。そうでない場合には、判定はＮＯとなり、ステップ１２０３でそのピッチとしてパラメータバッファ３５にパラメータの形で格納されたピッチを設定した後、そのステップ１２０４に移行する。
【００６２】
ステップ１２０４では、パラメータバッファ３５の変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒの値で指定されるアドレスからパラメータを読み込み、音声データの合成を行い、その合成によって得られた１フレーム分の音声データを既に生成した他のフレームに加算することにより、新たに合成した１フレーム分の音声データを出力バッファに保存された音声データに加える。具体的には、ステップ１２０２、或いは１２０３で設定したピッチのRosenberg 波、及びホワイトノイズ波を生成し、生成したそれらの波形を有声音比率ｍｉｘに応じて混合することにより駆動音源波形を生成し、生成した駆動音源波形、及びＰＡＲＣＯＲ係数から音声データを合成し、合成した音声データのレベル調整を施し、更にハニング窓を乗算した後、変数ｏｕｔ＿ｂｕｆ＿ａｄｒの値で指定されるアドレスから既に生成した他のフレームに加算して重畳し、その重畳後に次のフレームの書き込みを開始すべきアドレスを指定する値を変数ｏｕｔ＿ｂｕｆ＿ａｄｒに代入して更新する。一連の処理はその後に終了する。
【００６３】
このようにして、本実施例では、音声データの合成を行う場合、鍵盤２で押鍵された鍵のピッチ、元音声のピッチのうちの何れかをピッチ選択スイッチへの操作により選択できるようにさせている。
図１３は、楽音タイマインタラプト処理のフローチャートである。これは、元音声データの分析、或いは音声データの合成を行うために、例えばサンプリング周期で発生する割り込み信号により実行される処理である。例えば図１０に示すスイッチ処理において、変数ａｎａ＿ｆｌｇ、及びｓｙｎ＿ｆｌｇのうちの少なくとも一方に１を新たに代入したときに割り込み（実行）禁止が解除され（割り込みが有効とされ）、それらの値がともに０となったときに割り込みが禁止される（割り込みが無効とされる）ようになっている。次に図１３を参照して、そのタイマインタラプト処理について詳細に説明する。
【００６４】
先ず、ステップ１３０１では、入力した元音声データを分析するための分析処理を実行する。続くステップ１３０２では、変数ｓｙｎ＿ｆｌｇの値が１か否か判定する。その変数に１が代入されていた場合、判定はＹＥＳとなってステップ１３０３に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００６５】
ステップ１３０３では、変数ｎｏｔｅ＿ｏｎの値が１か否か判定する。合成した音声データによる楽音を発音させるべき状況であった場合、それには１が代入されていることから、判定はＹＥＳとなり、ステップ１３０４で楽音生成部９を介して出力バッファの音声データをＤ／Ａ変換器１０に送出することにより楽音の発音を継続させる処理を実行した後、ステップ１３０５に移行する。
【００６６】
ステップ１３０５では、フレーム合成タイミングか否か判定する。そのタイミングであった場合、判定はＹＥＳとなり、パラメータバッファ３５の最後に位置するフレームのパラメータを読み出していなければ次にパラメータを読み出すべきフレームに応じて変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒの値を更新し（ステップ１３０６）、その更新後に図１２に示すフレーム合成処理を実行してから一連の処理を終了する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００６７】
上述したように、フレームサイズは５１２でオーバーラップファクタは８であった場合、楽音タイマインタラプト処理の実行間隔をサンプリング周期とすると、フレーム合成タイミングは、６４回目毎に到来することになる。
このようにして、音声データの合成を行っている場合、その合成を開始してからの時間の経過に応じてパラメータバッファ３５からパラメータを読み出す対象となるフレームを変更するようにしている。それにより、元音声の音質の変化を音声データの合成に反映させるようにしている。
【００６８】
次に上記ステップ１３０１として実行される分析処理について、図１４に示すそのフローチャートを参照して詳細に説明する。
先ず、ステップ１４０１では、変数ａｎａ＿ｆｌｇの値が１か否か判定する。それに１が代入されていなかった場合、判定はＮＯとなり、ここで一連の処理を終了する。そうでない場合には、判定はＹＥＳとなり、Ａ／Ｄ変換器８が出力する、Ａ／Ｄ変換されてデジタル化された元音声データを取り込んで例えばＲＡＭ５に確保した領域（以降「入力バッファ」と呼ぶ）に格納してから（ステップ１４０２）、ステップ１４０３に移行する。
【００６９】
ステップ１４０３では、フレーム分析タイミングか否か判定する。そのタイミングが到来する時間間隔はフレーム合成タイミングと同じであり、そのタイミングであった場合、判定はＹＥＳとなってステップ１４０４に移行する。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７０】
ステップ１４０４では、入力バッファからフレームサイズの元音声データをオーバーラップファクタの値に応じて抽出し、ハニング窓を乗算する。次のステップ１４０５では、乗算後のフレームを対象に分析を行い、レベル値、ＰＡＲＣＯＲ係数、ピッチ周波数、及び有声音比率ｍｉｘ等のパラメータを算出するパラメータ算出処理を実行する。その後は、算出したパラメータを変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒの値で指定されるアドレスからパラメータバッファ３５に書き込み、その書き込みに応じてその値を更新してから（ステップ１４０６）ステップ１４０７に移行する。
【００７１】
ステップ１４０７では、パラメータバッファ３５がフル、つまり次のフレームで抽出されるパラメータを書き込む容量がパラメータバッファ３５に残っていないか否か判定する。その容量が残っていない場合、判定はＹＥＳとなり、ステップ１４０８でパラメータバッファ３５に格納されたパラメータをパラメータファイル３６として保存し、変数ａｎａ＿ｆｌｇに０を代入してから、一連の処理を終了する。それにより、パラメータバッファ３５に書き込めるだけのパラメータを書き込むと、元音声データの分析を自動的に終了させる。そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【００７２】
以降は、上記ステップ１４０５のパラメータ算出処理内で実行されるサブルーチン処理について詳細に説明する。ここでは、ＰＡＲＣＯＲ係数、ピッチ周波数、その補正、及び有声音比率ｍｉｘに係わるものについてのみ、図１５〜図１８に示す各種フローチャートを参照して詳細に説明する。
【００７３】
図１５は、ＰＡＲＣＯＲ係数算出処理のフローチャートである。始めに図１５を参照して、その算出処理について詳細に説明する。上述したように、この算出処理では、Levinson-Durbin アルゴリズムを用いてＰＡＲＣＯＲ係数を算出する。
先ず、ステップ１５０１では、１フレーム分の音声データから短時間自己相関関数を計算する。その計算は、短時間自己相関関数をＲ、音声データをｙで表すと、以下の式により計算して算出する。図中、シンボル「Ｒ」に添字として付したシンボル「Ｐ」、つまり次数Ｐの値は前述したように２６である。
【００７４】
【数２】
2010002937.tif 000004
【００７５】
ステップ１５０１に続くステップ１５０２では、配列変数Ｗの添字（括弧内の数字）が０で指定される要素（以降「Ｗ0 」と表記する。他の要素についても同様である）に自己相関関数Ｒ1 、配列変数Ｅの要素Ｅ0 に自己相関関数Ｒ0 、変数ｎに１、をそれぞれ代入する。その後はステップ１５０３に移行する。
【００７６】
ステップ１５０３では、配列変数ｋの要素ｋn には要素Ｗn-1 の値を要素Ｅn-1 の値で割った値（＝Ｗn-1／Ｅn-1）を代入し、要素Ｅn には、１から要素ｋn の値を２乗した値を減算した値を要素Ｅn-1 の値に掛けて得られる値（＝Ｅn-1・（１−ｋn2））を代入する。要素ｋn に代入した値がＰＡＲＣＯＲ係数（偏自己相関係数）である。
【００７７】
ステップ１５０３に続くステップ１５０４では、配列変数αの２つの変数ｎの値で指定される要素（図中「αn(n)」と表記。以降、その表記法を用いる）に要素ｋn の負の値（＝−ｋn ）を代入し、要素αi(n)（変数ｎの値、及び変数ｉの値で指定される要素）に、要素αi(n-1)の値から、要素ｋn の値に要素αn-i(n-1)の値を掛けた値を減算して得られる値（＝αi(n-1)−ｋn αn-i(n-1)）を代入する。後者は、変数ｉ（インデクス）の値が１≦ｉ≦ｎ−１の範囲内に存在する要素αi(n)を全て対象にして行う。そのような代入が終了した後、ステップ１５０５に移行する。
【００７８】
ステップ１５０６では、変数ｎの値が次数Ｐの値と等しいか否か判定する。それらの値が一致していた場合、判定はＹＥＳとなり、ＰＡＲＣＯＲ係数の算出は終了したとして一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１５０６に移行する。
【００７９】
ステップ１５０６では、要素Ｗn に、以下の式により求めた値を代入する。その後は、ステップ１５０７で変数ｎの値をインクリメントしてから上記ステップ１５０３に戻る。
【００８０】
【数３】
2010002937.tif 000005
【００８１】
このようにして、ステップ１５０３〜１５０７で形成される処理ループをステップ１５０５の判定がＹＥＳとなるまで繰り返し実行することにより、次数Ｐ分のＰＡＲＣＯＲ係数が変数ｎにより指定される各要素Ｗn に代入されることになる。
図１６は、ピッチ周波数算出処理のフローチャートである。次に図１６を参照して、その算出処理について詳細に説明する。
【００８２】
先ず、ステップ１６０１では、ハニング窓を乗算した後のフレームを対象にＦＦＴを行い、それによって得られた実数値、及び虚数値から周波数振幅値ｘ、及び位相を求め、上記（１）式を用いて周波数振幅値ｘの自己相関関数ｒを計算する。求めた位相は、１次元の配列変数ｐｈａｓｅの各要素に代入する。このとき、それまで配列変数ｐｈａｓｅの各要素に代入されていた値は、配列変数ｏｌｄ＿ｐｈａｓｅの同じ値で指定される要素に代入されている。配列変数ｏｌｄ＿ｐｈａｓｅの要素に代入された値は、図４に示す前フレームの位相データ５６に対応する。そして、人の音声の周波数の範囲内で相関値ｒが最大となる添字ｎの値を特定し、その値を変数ｉに代入する。その変数ｉに代入される値は、ピッチ周波数に対応する周波数振幅値ｘのインデクス値である。
【００８３】
ステップ１６０１に続くステップ１６０２では、変数ｄｅｌｔａ＿ｐｈａｓｅに、配列変数ｐｈａｓｅの変数ｉの値で指定される要素ｐｈａｓｅ［ｉ］の値から配列変数ｏｌｄ＿ｐｈａｓｅの要素ｏｌｄ＿ｐｈａｓｅ［ｉ］の値を減算して得られる値（位相ずれを示す位相ずれ値）を代入し、要素ｏｌｄ＿ｐｈａｓｅ［ｎ］（１≦ｎ≦１３）に要素ｐｈａｓｅ［ｎ］の値を代入する。１≦ｎ≦１３の範囲に限定して代入を行うのは、人の音声が取りうる範囲の周波数のみを対象にピッチ周波数を探索すれば良いためである。そのような代入が終了した後にステップ１６０３に移行する。
【００８４】
ステップ１６０３では、変数ｏｆｆｓｅｔ＿ｐｈａｓｅに、ＦＦＴグリッド間角周波数Δω（＝２π×Δｆ（＝サンプリング周波数ＦＳ÷ＦＦＴ点数（フレームサイズ））、変数ｉ、及び前フレームとの時間差Δｔ（＝ホップサイズＨ÷サンプリング周波数ＦＳ）の各値を乗算して得られる理論的位相進み値を変数ｄｅｌｔａ＿ｐｈａｓｅの値から減算した値（＝ｄｅｌｔａ＿ｐｈａｓｅ−Δω・ｉ・Δｔ）を算出して代入する。そのようにして算出される値は、ＦＦＴによる周波数グリッドとピッチ周波数とのずれに対応する。
【００８５】
次に移行するステップ１６０４では、変数ｏｆｆｓｅｔ＿ｐｈａｓｅの値が−π＜ｏｆｆｓｅｔ＿ｐｈａｓｅ＜πとなるように正規化処理を実行する。その後に移行するステップ１６０５では、正規化した変数ｏｆｆｓｅｔ＿ｐｈａｓｅの値を時間差Δｔで除算して得られる値をその変数に新たに代入する。ステップ１６０６にはその代入後に移行する。新たに代入された値は、位相を角周波数の次元で表したものである。
【００８６】
ステップ１６０６では、変数ｄｅｌｔａに、変数ｏｆｆｓｅｔ＿ｐｈａｓｅの値をグリッド間角周波数Δωで除算した値を代入する。そのようにして得られた値は、ＦＦＴの周波数グリッドとのずれ成分、即ち変数ｉ（インデクス値）の小数成分となる。このことから、続くステップ１６０７では、変数ｉの値に変数ｄｅｌｔａの値を加算した値をグリッド間周波数Δｆに乗算してピッチ周波数（＝（ｉ＋ｄｅｌｔａ）×Δｆ）を算出し、それを変数ｆｒｅｑに代入する。一連の処理はその後に終了する。
【００８７】
上述したように、調波構造すなわち倍音成分を持った音声や楽音では相関値ｒが大きくなる。このため、ノイズ等の影響を排除した正確なピッチ抽出を行うことができる。また、その後に行う位相差計測法によるＦＦＴの周波数グリッド間における差分となる周波数の算出により、ＦＦＴの周波数分解能の低さはピッチ抽出に影響を及ぼさなくなる。これらの結果、ノイズ等に強い高精度なピッチ抽出が実現される。
【００８８】
上述したようにして求めたピッチ周波数は通常の話し言葉のような音声を対象とするのであれば高い精度が得られる。しかし、歌唱時や特殊な発音をした場合などの音声では必ずしも高い精度が得られない。このことから、本実施例では、このピッチ周波数算出処理の実行後、図１７に示すピッチ補正処理を実行している。次にそのピッチ補正処理について、図１７を参照して詳細に説明する。その図１７中のシンボル「ｐｉｔｃｈ」は変数ｆｒｅｑに代入されたピッチ周波数を示し、シンボル「ｐｉｔｃｈ＿ｏｌｄ」は前フレームで抽出（特定）したピッチ周波数を示している。
【００８９】
先ず、ステップ１７０１では、今回のピッチ周波数ｐｉｔｃｈから前回のピッチ周波数ｐｉｔｃｈ＿ｏｌｄを減算し、その減算結果を変数ｘに代入する。次のステップ１７０２では、変数ｘに、それまでの値の絶対値を代入する。ステップ１７０３にはその後に移行する。
【００９０】
ステップ１７０３では、変数ｘの値が定数ＴＨＲＥＳＨよりも大きいか否か判定する。その定数ＴＨＲＥＳＨは、短時間（ここでは時間差Δｔが対応）に生じることが考えにくい周波数変化が生じたか否か判定用に設定した定数である。このことから、ピッチ周波数にそのような変化が生じた場合、判定はＹＥＳとなってステップ１７０５に移行する。そうでない場合には、判定はＮＯとなり、ステップ１７０４で変数ｃｏｕｎｔｅｒに０を代入するとともに、前フレームのピッチ周波数ｐｉｔｃｈ＿ｏｌｄとして今回のピッチ周波数ｐｉｔｃｈを設定することにより、今回のピッチ周波数ｐｉｔｃｈが正確なものとして採用した後、一連の処理を終了する。
【００９１】
ステップ１７０５では、変数ｃｏｕｎｔｅｒの値をインクリメントする。続くステップ１７０６では、変数ｃｏｕｎｔｅｒの値が定数Ｈの値より小さいか否か判定する。前者が後者より小さかった場合、判定はＹＥＳとなり、ステップ１７０７で今回のピッチ周波数ｐｉｔｃｈとして前フレームのピッチ周波数ｐｉｔｃｈ＿ｏｌｄを設定することにより、今回のピッチ周波数ｐｉｔｃｈが不正確である可能性が高いとして不採用とした後、一連の処理を終了する。そうでない場合には、判定はＮＯとなり、次に上記ステップ１７０４の処理を実行する。
【００９２】
このようにして、本実施例では、フレーム間におけるピッチ周波数変化が比較的に大きいと、その変化が定数Ｈで設定される回数、続かない限り不採用としている。それにより、一時的に不適切に抽出されたピッチ周波数を無効とするため、全体としてより適切、且つ安定的にピッチ周波数を抽出できることとなる。なお、上記定数ＴＨＲＥＳＨの値は３０程度、定数Ｈの値としては４程度が適当であることが確認できたが、これらは元音声を入力する人、その発生方法等に応じて適宜、調整することが望ましい。
【００９３】
図１８は、混合比（有声音比率）算出処理のフローチャートである。最後に図１８を参照して、その算出処理について詳細に説明する。
先ず、ステップ１８０１では、自己相関値ｒの標準偏差ｄｅｖｉａｔｉｏｎを計算し、その値が定数ＣＲＯＳＳ＿ＭＩＮ以下か否か判定する。その定数ＣＲＯＳＳ＿ＭＩＮは完全な有声音と見なす基準として設定した定数であり、標準偏差ｄｅｖｉａｔｉｏｎの値がそれ以下であった場合、判定はＹＥＳとなり、ステップ１８０２で混合比（有声音比率）ｍｉｘとして１を設定した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１８０３に移行する。
【００９４】
ステップ１８０３では、標準偏差ｄｅｖｉａｔｉｏｎの値が定数ＣＲＯＳＳ＿ＭＡＸ以上か否か判定する。その定数ＣＲＯＳＳ＿ＭＡＸは完全な無声音と見なす基準として設定した定数であり、標準偏差ｄｅｖｉａｔｉｏｎの値がそれ以上であった場合、判定はＹＥＳとなり、ステップ１８０４で混合比（有声音比率）ｍｉｘとして０を設定した後、一連の処理を終了する。そうでない場合には、判定はＮＯとなってステップ１８０５に移行し、定数ＣＲＯＳＳ＿ＭＡＸから標準偏差ｄｅｖｉａｔｉｏｎの値を減算した減算結果を、定数ＣＲＯＳＳ＿ＭＡＸから定数ＣＲＯＳＳ＿ＭＩＮを減算した減算結果で除算して得られる値を算出し、その算出値を混合比ｍｉｘとして設定する。一連の処理はその後に移行する。
【００９５】
このようにして、本実施例では、完全に有声音と見なせる場合、或いは完全に無声音と見なせる場合、混合比ｍｉｘとして１、或いは０を設定し、それら以外の場合には、標準偏差ｄｅｖｉａｔｉｏｎの値に応じて値が変化する値を設定するようにしている。それにより、有声音、無声音と完全に見なせない音声のみを対象に混合比ｍｉｘの値を０＜ｍｉｘ＜１の範囲内で変化させるようにして、必要な場合にのみ、駆動音源波形をRosenberg 波、及びホワイトノイズ波から生成するようにしている。そのようにして、駆動音源波形はより適切に生成できるようにさせている。このため、常に自然と感じられる音声データを合成できることとなる。なお、上記定数ＣＲＯＳＳ＿ＭＡＸの値は０．３６程度、定数ＣＲＯＳＳ＿ＭＩＮの値は０．１４程度が適当であることが確認できたが、これらは元音声を入力する人、その発生方法等に応じて適宜、調整することが望ましい。
【００９６】
なお、本実施例では、元音声データから抽出したパラメータは一旦、パラメータファイル３６として保存するようにしているが、その抽出（分析）、及び抽出したパラメータを用いた音声データの合成をリアルタイムで実施できるようにしても良い。外部装置に出力させるようにしても良い。
【００９７】
音声データの合成については、並行して複数、行えるようにしても良い。パラメータを操作して行えるようにしても良い。合成する音声データのピッチ指定については、弦楽器や吹奏楽器等を用いて行えるようにしても良く、ＳＭＦの再生により発音される楽音の音高を利用できるようにしても良い。
【００９８】
ＰＡＲＣＯＲ係数は、線形分析による全極フィルタで抽出した形となっているが、そのフィルタはカルマンフィルタ等を使った極零フィルタであっても良い。格子型フィルタであっても良い。ＰＡＲＣＯＲ係数以外のものをフィルタ係数として抽出するようにしても良い。
【００９９】
無声音用の音源波形としてホワイトノイズ波を生成しているが、音声分析時に残差信号を算出し、有声音比率ｍｉｘが低い場合は、この残差信号をその音源波形として保存するようにして、合成時に用いるようにしても良い。分析の対象とする音声としては、人声を想定しているが、それに限定しなくとも良い。しかし、ピッチ抽出の精度を維持するうえからは、ピッチの範囲が予め特定できるようなものが望ましい。
＜第２の実施例＞
上記第１の実施例では、マイク７から入力した元音声の分析結果を基にした音声データの合成を、鍵盤２への操作に応じて行わせることができるようになっている。これに対し、第２の実施例は、音声データの合成を、シーケンスデータ（ここではＳＭＦ）の再生と同期させて行わせるようにしたものである。
【０１００】
第２の実施例による音声分析合成装置を搭載した電子楽器の構成は基本的に第１の実施例におけるそれと同じである。動作も大部分は同じか、或いは比較的に大きな差がない。このようなことから、同じ、或いは区別するほどの相違のないものについては、第１の実施例の説明で付した符号をそのまま用いつつ、第１の実施例から異なる部分に着目して説明を行うこととする。
【０１０１】
シーケンスデータの再生では、テンポを指定することができる。このことから、第２の実施例では、テンポの変更をサポートするようにしている。また、合成する音声データのピッチとしては、入力された音声のそれを用いるようにしている。それにより、パラメータファイル３６のなかから音声を入力する人とは別の人の音声の分析結果を格納したものが選択されていた場合には、声質の変換を実施する形で音声データの合成を行えるようにさせている。音声を入力する人としては、歌をうたう歌唱者を想定している。
【０１０２】
図１９は、第２の実施例による音声分析合成装置の分析フェーズ用の機能構成図である。始めに図１９を参照して、分析フェーズ用の構成、及び各部の動作について具体的に説明する。なお、上述したように、第１の実施例と同じ、或いは区別するほどの相違のないものについては同一の符号を付している。これは、後述する合成フェーズ用の構成においても同様である。
【０１０３】
テンポ指示手段１９０１は、歌唱者にテンポを指示するものであり、それに設定されたテンポ値はテンポ取得部１９０２によって取得され、パラメータとしてパラメータバッファ３５に格納される。その指示手段１９０１としては、メトロノームもしくはリズムボックス等の外部装置であっても良い。
【０１０４】
第２の実施例では、第１の実施例とは異なり、元音声のピッチ抽出は行わない。このため、ピッチ抽出／有声音比率算出部３４の代わりに、有声音比率ｍｉｘのみを算出する有声音比率算出部１９０３を搭載している。その算出方法は第１の実施例と同じである。
図２０は、第２の実施例による音声分析合成装置の合成フェーズ用の機能構成図である。次に図２０を参照して、合成フェーズ用の構成、及び各部の動作について具体的に説明する。
【０１０５】
ＳＭＦ２００１は、再生の対象となるシーケンスデータであり、発生させるべき演奏上のイベントの内容を示すＭＩＤＩ（イベント）データに対し、その処理タイミングを示すタイムデータが付加された形で構成されている。シーケンサー２００２は、そのような構成のＳＭＦ２００１の再生を行うものである。音声データの合成は、そのシーケンサー２００２によるＳＭＦ２００１の再生に同期させる形で行われる。
【０１０６】
操作部２００３は、図２に示すテンポスイッチ２３へのユーザの操作に応じてテンポを変更するものである。当然のことながら、テンポの変更に伴い、ＳＭＦ２００１を再生する速度も変更しなければならない。このことから、時間制御部２００４は、テンポの変更に伴う再生速度の変更を実現させる。その実現は、シーケンサー２００２に供給するクロックの周期を変化させることで行う。
【０１０７】
ピッチ抽出部２００５は、Ａ／Ｄ変換器８が出力した元音声データのピッチ抽出を第１の実施例と同じ手法で行い、それによって抽出したピッチ周波数を出力する。駆動音源生成部２００６は、パラメータファイル３６からパラメータバッファ３５に読み込まれたパラメータ中の有声音比率（混合比）ｍｉｘの値に応じて、生成するRosenberg 波、及びホワイトノイズ波のうちの少なくとも一方を用いて駆動音源波形を生成するものである。ピッチ抽出部２００５が抽出したピッチ周波数は、Rosenberg 波の生成に反映させる。その駆動音源生成部２００６は、図３中のRosenberg 波生成部４２、及びホワイトノイズ生成部４３を有し、それらが生成した波形に有声音比率ｍｉｘの値、１からそれを減算した値をそれぞれ乗算して混合することにより駆動音源波形を生成し、駆動音源バッファ４４に格納する。その駆動音源バッファ４４に格納された駆動音源波形が合成フィルタ４５に送られる。
【０１０８】
ファイル制御部２００７は、時間制御部２００４の指示に従い、パラメータファイル３６のうちの一つからパラメータを読み込んでパラメータバッファ３５に格納する。その格納したパラメータは、時間制御部２００４の指示により、その時間制御部２００４や合成フィルタ４５、及び出力制御部２００８に随時、送る。
【０１０９】
合成フィルタ部４５は、ファイル制御部２００７から送られたパラメータ（ＰＡＲＣＯＲ係数）、及び駆動音源波形を用いて１フレーム分の音声データを合成し出力制御部２００８に送る。
出力制御部２００８は、出力バッファを備え、合成フィルタ部４５が合成した１フレーム分の音声データにハニング窓を乗算し、それによって得られた音声データを、オーバーラップファクタで他のフレームと重畳するように出力バッファに格納する。
【０１１０】
出力バッファから読み出された音声データは、シーケンサー２００２が出力する波形データと加算器２００９によって加算（ミックス）される。その加算後の音声データがＤ／Ａ変換器１０に出力される。
シーケンサー２００２が出力する波形データは楽音生成部９によって生成される。出力バッファは、ＲＡＭ５内に確保された領域である。このことから、楽音生成部９には、自身が生成したデータを他から入力したデータとミックスする機能を搭載させている。それにより、加算器２００９は楽音生成部９により実現される。
【０１１１】
音声波形の分析は５１２のフレームサイズで行われる。しかし、ＳＭＦ２００１の再生速度はテンポの変更に伴い変化するために、音声データの合成もその変化に合わせなければならない。パラメータファイル３６にフレーム単位で格納されたパラメータの使用は、その再生速度に合わせる必要がある。
【０１１２】
これらのことは、合成される音声データは、指定された音高（ここでは元音声の音高）を維持させつつ、時間軸方向の圧縮伸長を行わなければならないことを意味する。このことから、本実施例では、テンポスイッチ２３（図２参照）への操作により指定されるテンポ値に応じてフレームサイズを変化させるようにしている。そのフレームサイズの決定は、時間制御部２００４が行っており、具体的には以下のようにして決定する。図２１を参照して具体的に説明する。
【０１１３】
時間制御部２００４は、指定されたテンポ値を操作部２００３から、パラメータファイル３６に格納されているテンポ値をファイル制御部２００７からそれぞれ受け取る。ここでは便宜的に、前者のテンポ値を合成時テンポ値、後者のテンポ値を分析時テンポ値と呼ぶことにする。
【０１１４】
合成時テンポ値が分析時テンポ値の２倍になると、図２１に示すように、サンプリング周波数が等しければ、合成時には分析時の半分の時間で１フレーム分の音声データを出力しなければならない。このことから、フレームサイズは分析時の半分の２５６に決定する。ホップサイズも半分の３２とすることで、オーバーラップファクタは合成時の値を維持させている。逆に、合成時テンポ値が分析時テンポ値の１／２倍であった場合には、合成時には分析時の２倍の時間で１フレーム分の音声データを出力しなければならないことから、フレームサイズは分析時の２倍の１０２４に決定し、オーバーラップファクタを維持させるためにホップサイズも２倍の１２８とする。
【０１１５】
そのようにフレームサイズ（ここではホップサイズを含む）をテンポ値に応じて変更させることにより、分析により得られたパラメータによる音声データの合成を適切に行えるようになる。このため、ＳＭＦ２００１の再生と合わせた、合成された音声データによる発音も常に自然なものとなる。
【０１１６】
フレームサイズ、ホップサイズは共に整数である。分析時テンポ値、合成時テンポ値の関係によってはそれらの値のうちの少なくとも一方が整数とならないことがある。このことから、実際の決定は、そうならないように考慮して行っている。
第２の実施例による音声変換装置を実現させるための電子楽器の動作については、分析処理（図１４参照）では、分析時にテンポ値を取得してパラメータとして保存するようになっている部分、フレーム合成処理（図１２参照）では、決定されたサイズで１フレーム分の音声データを合成するようになっている部分、が第１の実施例から主に異なっている。それ以外の処理では、図９に示す全体処理内でステップ９０２として実行されるスイッチ処理、及び楽音タイマインタラプト処理（図１３参照）が第１の実施例が比較的に大きく異なっている。このことから、第２の実施例では、そのスイッチ処理、及びそのタイマインタラプト処理についてのみ説明することとする。
【０１１７】
図２２は、第２の実施例におけるスイッチ処理のフローチャートである。始めに図２２を参照して、そのスイッチ処理について詳細に説明する。ここでは、第１の実施例と同じ、或いは特に区別する必要のないステップの処理には同一の符号を付して説明を省略することとする。
【０１１８】
ステップ１００１の判定がＮＯとなるか、ステップ１００４、或いは１００５の処理を実行することで移行するステップ２２０１では、スタートスイッチ２１がオンされ、且つ変数ｐｌａｙ＿ｆｌｇの値が０か否か判定する。その変数ｐｌａｙ＿ｆｌｇは、ＳＭＦ２００１の再生を管理するための変数であり、０は未再生、１は再生中を示している。このことから、ＳＭＦ２００１が再生中でない状態でユーザがスタートスイッチ２１を操作した場合、判定はＹＥＳとなり、変数ｆｉｌｅ＿ｎｕｍの値で指定されるパラメータファイル３６をパラメータバッファ３５に読み込み、ＳＭＦ２００１の再生の進行を管理するための単位時間計時用のタイマインタラプト処理の実行禁止を解除（図中では「同期クロック開始」と表記）し、更に変数ｐｌａｙ＿ｆｌｇに１を代入する処理をステップ２２０２で実行した後、ステップ２２０３に移行する。そうでない場合には、判定はＮＯとなって次にそのステップ２２０３の処理を実行する。
【０１１９】
ＳＭＦ２００１を構成する時間データは、予め定められた単位時間（ＭＩＤＩでは４分音符の１／２４に相当する時間である）で時間が表現されている。上記タイマインタラプト処理（以降、便宜的に「計時用タイマインタラプト処理」と呼ぶ）は、その単位時間毎に発生する割り込み信号により実行される処理であり、その処理を実行することで更新される変数の値を参照することにより、時間データが表す処理タイミングの到来を判定するようにしている。その単位時間はテンポ値に応じて変動させることで、設定されたテンポ値に合った速さでＳＭＦ２００１の再生を行えるようにしている。
【０１２０】
ステップ２２０３では、ストップスイッチ２２がオンされ、且つ変数ｐｌａｙ＿ｆｌｇの値が１か否か判定する。その変数ｐｌａｙ＿ｆｌｇの１が代入、即ちＳＭＦ２００１の再生中にユーザがストップスイッチ２２を操作した場合、判定はＹＥＳとなり、出力バッファをクリアしてそれに格納された音声データによる発音を終了させ、計時用タイマインタラプト処理の実行を禁止させ、更に変数ｐｌａｙ＿ｆｌｇに０を代入する処理をステップ２２０４で実行した後、ステップ２２０５に移行する。そうでない場合には、判定はＮＯとなって次にそのステップ２２０５の処理を実行する。
【０１２１】
ステップ２２０５では、テンポ値を上げることを指示するためのアップスイッチ２３ａがオンされたか否か判定する。そのスイッチ２３ａをユーザが操作した場合、判定はＹＥＳとなり、ステップ２２０６でユーザ指定のテンポ値を代入した変数ｔｅｍｐｏ＿ｕｓｅｒの値をインクリメントし、更にステップ２２０７でフレームサイズを修正するフレーム修正処理を実行した後、ステップ２２０８に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、そのステップ２２０８に移行する。
【０１２２】
ステップ２２０８では、テンポ値を下げることを指示するためのダウンスイッチ２３ｂがオンされたか否か判定する。そのスイッチ２３ｂをユーザが操作した場合、判定はＹＥＳとなり、ステップ２２０９で変数ｔｅｍｐｏ＿ｕｓｅｒの値をデクリメントし、更にステップ２２１０でフレーム修正処理を実行した後、ステップ１０１２に移行する。そうでない場合には、判定はＮＯとなり、他のステップの処理を実行することなく、そのステップ１０１２に移行する。そのステップ１０１２以降の処理についての説明は省略する。
【０１２３】
このように、第２の実施例では、ユーザがアップスイッチ２３ａ、或いはダウンスイッチ２３ｂを操作するたびに、合成時におけるフレームサイズを修正して更新するようにしている。それにより、常に適切なフレームサイズで音声データの合成を行えるようにしている。
【０１２４】
図２３は、上記ステップ２２０７、或いは２２１０として実行されるフレーム修正処理のフローチャートである。次に図２３を参照して、その修正処理について詳細に説明する。
先ず、ステップ２３０１では、パラメータファイル３６から読み出した分析時のテンポ値ｔｅｍｐｏ＿ｏｒｇを変数ｔｅｍｐｏ＿ｕｓｅｒの値で除算し、その除算結果を分析時のホップサイズｈｏｐ＿ｓｉｚｅに乗算して得られる値の四捨五入した整数値（＝ＩＮＴ（ｈｏｐ＿ｓｉｚｅ×ｔｅｍｐｏ＿ｏｒｇ／ｔｅｍｐｏ＿ｕｓｅｒ））を変数ｎｅｗ＿ｈｏｐ＿ｓｉｚｅに代入する。続くステップ２３０２では、変数ｎｅｗ＿ｆｒａｍｅ＿ｓｉｚｅに、変数ｎｅｗ＿ｈｏｐ＿ｓｉｚｅの値にオーバーラップファクタＯＬＦの値（ここでは「８」を表記）を乗算した値を代入する。その次のステップ２３０３では、テンポ値ｔｅｍｐｏ＿ｏｒｇに分析時のフレームサイズｆｒａｍｅ＿ｓｉｚｅの値を乗算し、その乗算結果を変数ｎｅｗ＿ｆｒａｍｅ＿ｓｉｚｅの値で除算して得られる値の四捨五入した整数値（＝ＩＮＴ（ｔｅｍｐｏ＿ｏｒｇ×ｆｒａｍｅ＿ｓｉｚｅ／ｎｅｗ＿ｆｒａｍｅ＿ｓｉｚｅ））を変数ｔｅｍｐｏに代入する。一連の処理はその後に終了する。
【０１２５】
このように、第２の実施例では、ユーザがテンポ値を変更すると、先ず、変更後のテンポ値に対応するホップサイズを整数値で求め、その求めたホップサイズから次に設定するフレームサイズを求め、求めたフレームサイズから実際に設定するテンポ値を求めている。それにより、ホップサイズ、フレームサイズ、及び実際のテンポ値を全て整数値で決定している。
【０１２６】
図２４は、第２の実施例における楽音タイマインタラプト処理のフローチャートである。これは、例えばサンプリング周期で発生する割り込み信号により実行される処理である。例えば図２２に示すスイッチ処理において、変数ａｎａ＿ｆｌｇ、及びｐｌａｙ＿ｆｌｇのうちの少なくとも一方に１を新たに代入したときに割り込み（実行）禁止が解除され（割り込みが有効とされ）、それらの値がともに０となったときに割り込みが禁止される（割り込みが無効とされる）ようになっている。最後に図２４を参照して、そのタイマインタラプト処理について詳細に説明する。
【０１２７】
先ず、ステップ２４０１では、入力した元音声データを分析するための分析処理を実行する。続くステップ２４０２では、変数ｐｌａｙ＿ｆｌｇの値が１か否か判定する。その変数に１が代入されていた場合、判定はＹＥＳとなってステップ２３０３に移行し、そうでない場合には、判定はＮＯとなり、ここで一連の処理を終了する。
【０１２８】
ステップ２４０３では、上記計時用タイマインタラプト処理の実行によって更新される変数の値を参照してＳＭＦ２００１の再生を進行させるＳＭＦ再生処理を実行する。その再生は、処理タイミングとなったＭＩＤＩデータを楽音発生部９に順次、送出していくことで行われる。その再生処理の実行後は、ステップ２４０４に移行する。
【０１２９】
ステップ２４０４では、音声入力があるか否か判定する。マイク７に所定の音量以上の音量の元音声が入力されていなかった場合、音声入力はないとして判定はＮＯとなり、出力バッファに格納された音声データによる発音を終了させ、変数ｎｏｔｅ＿ｏｎに０を代入する処理をステップ２４０５で実行してから、一連の処理を終了する。そうでない場合には、判定はＹＥＳとなってステップ２４０６に移行する。その変数ｎｏｔｅ＿ｏｎはローカル変数であり、音声入力が継続している間、１を代入し、その間でなければ０を代入するようになっている。
【０１３０】
ステップ２４０６では、変数ｎｏｔｅ＿ｏｎの値が１か否か判定する。音声入力が継続していた場合、それには１が代入されていることから、判定はＹＥＳとなってステップ２４０８に移行する。そうでない場合には、判定はＮＯとなり、出力バッファをクリアし、その先頭に位置するアドレス（ここでは１音声データを格納する領域のことである）を指定する値を変数ｏｕｔ＿ｂｕｆ＿ａｄｒに代入し、パラメータバッファ３５の先頭に位置するアドレス（ここではパラメータデータを格納する領域のことである）を指定する値を変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒに代入し、更に変数ｎｏｔｅ＿ｏｎに１を代入する処理をステップ２４０７で行った後、ステップ２４１１に移行する。
【０１３１】
ステップ２４０８では、楽音生成部９を介して出力バッファの音声データをＤ／Ａ変換器１０に送出することにより楽音の発音を継続させる処理を実行する。このとき、ＭＩＤＩデータで指示された楽音を発音中であった場合、楽音生成部９は、その楽音発音用に生成した波形データに音声データをｍｉｘさせる。
【０１３２】
ステップ２４０８に続くステップ２４０９では、フレーム合成タイミングか否か判定する。そのタイミング（フレームサイズによってその周期は変動する）であった場合、判定はＹＥＳとなり、パラメータバッファ３５の最後に位置するフレームのパラメータを読み出していなければ次にパラメータを読み出すべきフレームに応じて変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒの値を更新する（ステップ２４１０）。その更新後に移行するステップ２４１１では、パラメータバッファ３５の変数ｐａｒａｍ＿ｂｕｆ＿ａｄｒの値で指定されるアドレスからパラメータを読み込み、音声データの合成を行い、その合成によって得られた１フレーム分の音声データを既に生成した他のフレームに加算することにより、新たに合成した１フレーム分の音声データを出力バッファに保存された音声データに加える。具体的には、元音声データから抽出したピッチのRosenberg 波、及びホワイトノイズ波を生成し、生成したそれらの波形を有声音比率ｍｉｘに応じて混合することにより駆動音源波形を生成し、生成した駆動音源波形、及びＰＡＲＣＯＲ係数から、テンポ値に応じて変化させるフレームサイズの音声データを合成し、合成した音声データにハニング窓を乗算した後、変数ｏｕｔ＿ｂｕｆ＿ａｄｒの値で指定されるアドレスから既に生成した他のフレームに加算して重畳し、その重畳後に次のフレームの書き込みを開始すべきアドレスを指定する値をテンポ値に応じて変化させるホップサイズを考慮して決定し変数ｏｕｔ＿ｂｕｆ＿ａｄｒに代入して更新する。一連の処理はその後に終了する。
【０１３３】
このようにして、第２の実施例では、音声入力ありと判定した場合にのみ、音声データの合成を行うようにしている。それにより、音声データの合成を行わせる期間、そのタイミング、及びそれのピッチ（音高）を歌唱者が音声の発音を通して制御できるようにさせている。
【０１３４】
なお、第２の実施例は、シーケンサーを搭載した電子楽器に本発明を適用したものであるが、シーケンサーを搭載していない装置に本発明を適用させても良い。その場合でも、ＳＭＰＴＥ等の同期方法を使用することにより、シーケンサーによるシーケンスデータ（ＳＭＦ等）の再生と同期させることができる。
【０１３５】
フレームサイズの設定は、パラメータファイル３６に格納された分析時テンポ値を基準にする形で行っているが、基準となるテンポ値としてはＳＭＦ２００１等に設定されるテンポ値、或いはその再生時に設定されていたテンポ値などを採用するようにしても良い。そのテンポ値をユーザが任意に設定できるようにしても良い。このようなことから、分析時に必ずしもテンポ値をパラメータとして保存しなくとも良い。
【０１３６】
本実施例（第１及び第２の実施例）は、音声分析と音声合成の両方を行えるようになっているが、それらは別の装置として実現させても良い。つまり本発明を適用させた音声分析装置、音声合成装置は必ずしも同じ装置に搭載しなくとも良い。そのようにしても、抽出したパラメータをデータファイルとして様々な人の間で交換することができる。
【０１３７】
上述したような音声分析合成装置、音声分析装置、音声合成装置、或いはその変形例を実現させるようなプログラムは、ＣＤ−ＲＯＭ、ＤＶＤ、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた音声分析合成装置、音声分析装置、或いは音声合成装置を実現させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
【符号の説明】
【０１３８】
１ ＣＰＵ
３ スイッチ部
４ ＲＯＭ
５ ＲＡＭ
７ マイク
８ Ａ／Ｄ変換器
９ 楽音生成部
１０ Ｄ／Ａ変換器
１１ アンプ
１２ スピーカ
１３ 外部記憶装置  
【図１】
2010002937.tif 000006
【図２】
2010002937.tif 000007
【図３】
2010002937.tif 000008
【図４】
2010002937.tif 000009
【図５】
2010002937.tif 000010
【図６】
2010002937.tif 000011
【図７】
2010002937.tif 000012
【図８】
2010002937.tif 000013
【図９】
2010002937.tif 000014
【図１０】
2010002937.tif 000015
【図１１】
2010002937.tif 000016
【図１２】
2010002937.tif 000017
【図１３】
2010002937.tif 000018
【図１４】
2010002937.tif 000019
【図１５】
2010002937.tif 000020
【図１６】
2010002937.tif 000021
【図１７】
2010002937.tif 000022
【図１８】
2010002937.tif 000023
【図１９】
2010002937.tif 000024
【図２０】
2010002937.tif 000025
【図２１】
2010002937.tif 000026
【図２２】
2010002937.tif 000027
【図２３】
2010002937.tif 000028
【図２４】
2010002937.tif 000029
【手続補正書】
【提出日】平成21年10月8日(2009.10.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】削除
【補正の内容】
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】削除
【補正の内容】
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】削除
【補正の内容】
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】削除
【補正の内容】
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
本発明の音声分析合成装置は、第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行うことを前提とし、第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、テンポ値を指示するためのテンポ指示手段と、記テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、音源波形、及びパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１２
【補正方法】削除
【補正の内容】
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】００１３
【補正方法】変更
【補正の内容】
【００１３】
本発明の音声分析装置は、音声波形からパラメータを抽出することを前提とし、音声波形を取得する音声波形取得手段と、音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、分析手段が抽出したパラメータと併せて、テンポ値取得手段が取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存手段と、を具備する。
【手続補正８】
【補正対象書類名】明細書
【補正対象項目名】００１４
【補正方法】削除
【補正の内容】
【手続補正９】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
本発明の音声合成装置は、第１の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、テンポ値を指示するためのテンポ指示手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値をテンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
【手続補正１０】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明のプログラムは、上記音声分析合成装置、音声分析装置及び音声合成装置をそれぞれ実現させるための機能を搭載している。
【手続補正１１】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】削除
【補正の内容】
【手続補正１２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置において、
前記第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、
声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
テンポ値を指示するためのテンポ指示手段と、
前記テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声分析合成装置。
【請求項２】
前記音声合成手段は、前記パラメータ取得手段が取得したパラメータのなかにテンポ値が存在する場合、該テンポ値、及び前記テンポ指示手段により指示されたテンポ値を基に、前記サイズを決定する、
ことを特徴とする請求項１記載の音声分析合成装置。
【請求項３】
前記音源波形生成手段は、入力された音声から抽出された音高で前記音源波形を生成する、
ことを特徴とする請求項１、または２記載の音声分析合成装置。
【請求項４】
音声波形からパラメータを抽出する音声分析装置において、
前記音声波形を取得する音声波形取得手段と、
前記音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、
前記音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、
前記分析手段が抽出したパラメータと併せて、前記テンポ値取得手段が取得したテンポ値をパラメータとして前記フレーム単位で保存するパラメータ保存手段と、
を具備することを特徴とする音声分析装置。
【請求項５】
音声波形を合成する音声合成装置において、
第１の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、
テンポ値を指示するためのテンポ指示手段と、
声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
前記パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成手段と、
を具備することを特徴とする音声合成装置。
【請求項６】
第１の音声波形を分析し、該分析結果を用いて第２の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
前記第１の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得機能と、
声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
テンポ値を指示するためのテンポ指示機能と、
前記テンポ指示機能により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第２の音声波形をフレーム単位で合成する音声合成機能と、
を実現させるためのプログラム。
【請求項７】
音声波形からパラメータを抽出する音声分析装置に実行させるプログラムであって、
前記音声波形を取得する音声波形取得機能と、
前記音声波形取得機能により取得した音声波形を分析してパラメータをフレーム単位で抽出する分析機能と、
前記音声波形取得機能により音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得機能と、
前記分析機能により抽出したパラメータと併せて、前記テンポ値取得機能により取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存機能と、
を実現させるためのプログラム。
【請求項８】
音声波形を合成する音声合成装置に実行させるプログラムであって、
第１の音声波形から抽出されたパラメータを取得するパラメータ取得機能と、
テンポ値を指示するためのテンポ指示機能と、
声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
前記パラメータ取得機能により取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示機能により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第２の音声波形をフレーム単位で合成する音声合成機能と、
を実現させるためのプログラム。