JP2010002937A - 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム - Google Patents

音声分析合成装置、音声分析装置、音声合成装置、及びプログラム Download PDF

Info

Publication number
JP2010002937A
JP2010002937A JP2009232943A JP2009232943A JP2010002937A JP 2010002937 A JP2010002937 A JP 2010002937A JP 2009232943 A JP2009232943 A JP 2009232943A JP 2009232943 A JP2009232943 A JP 2009232943A JP 2010002937 A JP2010002937 A JP 2010002937A
Authority
JP
Japan
Prior art keywords
waveform
speech
sound source
analysis
voice
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2009232943A
Other languages
English (en)
Inventor
Katsu Setoguchi
克 瀬戸口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP2009232943A priority Critical patent/JP2010002937A/ja
Publication of JP2010002937A publication Critical patent/JP2010002937A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Abstract

【要約】
【課題】 元の音声波形を分析して抽出されるパラメータを用いて常に適切な音声波形を合成できるようにする技術を提供する。
【解決手段】 分析フェーズでは、A/D変換器8から出力された音声データをフレーム単位で分析する。パラメータとしては、PARCOR係数、その音声データが表す音声が有声音である度合いを示す有声音比率、などを抽出する。合成フェーズでは、指定されたピッチで生成したRosenberg 波、ピッチを持たないホワイトノイズ波を有声音比率に応じて混合する形で駆動音源波形を生成する。合成フィルタ部45は、その駆動音源波形、及びPARCOR係数を用いて1フレーム分の音声データを合成する。
【選択図】 図3

Description

本発明は、音声波形を分析し、その分析結果を用いて音声波形を合成するための技術に関する。
音声波形を分析し、その分析結果を用いて音声波形を合成する音声分析合成装置は、入力した音声波形に対し声質を変化させるといった音響効果を付与する用途でも利用されている。
その声質の変化は、例えば音声(例えば人声)のフォルマントを操作したり、或いは音声をバンドパスフィルタ(BPF)に通してバンド別に振幅値を特定し、特定した振幅値から構成したフィルタに音声を通すことで行われる。後者の方式は、鍵盤等により指定されたピッチ(音高)で人声を発音させるボコーダー(音声分析合成装置)に主に採用されている。その後者の方式を採用した音声分析合成装置としては、例えば特許文献1に記載されたものがある。
その特許文献1に記載された従来の音声分析合成装置では、入力した音声波形を分析してパラメータを抽出し、指定されたピッチに対応した駆動音源波形を生成し、抽出したパラメータと駆動音源波形とを用いて出力用の音声波形を合成していた。その駆動音源波形としては三角波や異なるパルス幅を持った波形などのパルス波形を生成していた。しかし、そのようなパルス波形を用いた場合、人の自然な音声を再現するのはできない。また、入力音声が有声音か否か判定し、駆動音源波形、及び無声音用のホワイトノイズ波形の何れかをその判定結果に応じて選択して音声波形の合成に用いているが、そのように切り換えると、合成する音声波形が急激に変化して不自然となることがある。判定結果に応じてそれらを単にクロスフェードさせたとしても、元の音声波形の変化に適切に追従するとは限らないため、合成した音声波形が不自然なものとなることを確実に回避することはできない。
不自然と感じられる音声は人に違和感を与えるのが普通である。その音声が聞き慣れた人のものであればなおさらである。このことから、合成後の音声が常に自然と感じられる適切なものとすることは非常に重要なことであると考えられる。
上記パラメータの抽出は音声符号化等のために行われる場合がある。その符号化では、元の情報をより再現することが望まれる。このことから、元の情報をより再現できるようにする意味からも、合成後の音声が常に自然と感じられるようにすることは非常に重要なことであると考えられる。
特開平09−204185号公報
本発明の課題は、元の音声波形を分析して抽出されるパラメータを用いて常に適切な音声波形を合成できるようにする技術を提供することにある。
本発明の第1、及び第2の態様の音声分析合成装置は共に、第1の音声波形を分析し、該分析結果を用いて第2の音声波形の合成を行うことを前提とし、それぞれ以下の手段を具備する。
第1の態様の音声分析合成装置は、第1の音声波形を分析してパラメータを抽出する第1の分析手段と、第1の音声波形を分析して該第1の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第2の分析手段と、音高を指定する音高指定手段と、声帯音源波形を模擬した音源波形を音高指定手段により指定された音高で生成する音源波形生成手段と、音高を持たない他の音源波形を生成する他の音源波形生成手段と、有声音比率を基に音源波形を他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及びパラメータを用いて第2の音声波形を合成する音声波形合成手段と、を具備する。
なお、上記第1の音声波形から得られるパラメータ、及び有声音比率は、該パラメータ、及び有声音比率からなるデータ群を複数、格納できる記憶手段に格納し、音声波形合成手段は、記憶手段に格納されたデータ群のうちの一つを用いて第2の音声波形を合成する、ことが望ましい。
また、第1及び第2の分析手段は、第1の音声波形の分析をフレーム単位で行い、第1の分析手段は、パラメータの一つとして第1の音声波形の音高を抽出する場合、該第1の音声波形の周波数振幅値、及び位相情報を抽出し、該周波数振幅値の自己相関値を算出し、該自己相関値が最大となった周波数振幅値、及び該位相情報から該第1の音声波形の音高を抽出する、ことが望ましい。
また、第1の分析手段は、フレーム間の音高変化、及び該音高変化の継続を基に、第1の音声波形から抽出した音高を採用すべきか否か判定し採用する、ことが望ましい。第2の分析手段は、第1の音声波形の周波数振幅値の自己相関値が分散している度合いを基に有声音比率を抽出する、ことが望ましい。
第2の態様の音声分析合成装置は、第1の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、テンポ値を指示するためのテンポ指示手段と、テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、音源波形、及びパラメータから第2の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
上記音声合成手段は、パラメータ取得手段が取得したパラメータのなかにテンポ値が存在する場合、該テンポ値、及びテンポ指示手段により指示されたテンポ値を基に、サイズを決定する、ことが望ましい。音源波形生成手段は、入力された音声から抽出された音高で音源波形を生成する、ことが望ましい。
本発明の第1及び第2の態様の音声分析装置は共に、音声波形からパラメータを抽出することを前提とし、それぞれ以下の手段を具備する。
第1の態様の音声分析装置は、音声波形を取得する音声波形取得手段と、音声波形取得手段が取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第1の分析手段と、音声波形取得手段が取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、合成フィルタに入力される音源波形生成用のパラメータとして抽出する第2の分析手段と、を具備する。
第2の態様の音声分析装置は、音声波形を取得する音声波形取得手段と、音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、分析手段が抽出したパラメータと併せて、テンポ値取得手段が取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存手段と、を具備する。
本発明の第1及び第2の態様の音声合成装置は、それぞれ以下の手段を具備する。
第1の態様の音声合成装置は、第1の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得手段と、有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成手段と、フィルタ係数、及び駆動音源波形を用いて第2の音声波形を合成する音声波形合成手段と、を具備する。
第2の態様の音声合成装置は、第1の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、テンポ値を指示するためのテンポ指示手段と、声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値をテンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、音源波形、及び該テンポ値以外のパラメータから第2の音声波形をフレーム単位で合成する音声合成手段と、を具備する。
本発明の第1〜第6の態様のプログラムは、上記第1、及び第2の態様の音声分析合成装置、第1、及び第2の態様の音声分析装置、第1、及び第2の態様の音声合成装置をそれぞれ実現させるための機能を搭載している。
本発明は、第1の音声波形の分析を行い、フィルタ係数等のパラメータに加えて、その第1の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する。
有声音、無声音は明確に区別されるわけではなく、音声が両者の中間的な状態となっている場合も存在する。このため、有声音比率を基に、有声音用の音源波形を無声音用の音源波形と混合することにより、中間的な状態を再現するうえでより適切な駆動音源波形を生成することができる。それにより、その駆動音源波形を用いてより適切な音声データを合成できるようになって、その音声データにより発音される音声もより自然なものとすることができる。
本発明は、指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、音源波形、及び音声分析時に抽出されたパラメータから音声データを合成する。そのようにフレームサイズをテンポ値に応じて変更することにより、分析により得られたパラメータによる音声データの合成を適切に行えるようになる。このため、合成された音声データによる発音も常に自然なものとすることができる。
本実施例による音声分析合成装置を搭載した電子楽器の構成図である。 スイッチ部を構成する一部のスイッチの配置を示す図である。 第1の実施例による音声分析合成装置の機能構成図である。 ピッチ抽出/有声音比率算出部の機能構成図である。 パラメータバッファに格納されるパラメータを説明する図である。 フレームの切り出し方法を説明する図である。 Rosenberg 波を説明する図である。 フレーム単位で合成した音声データのフレーム間の加算方法を説明する図である。 全体処理のフローチャートである。 スイッチ処理のフローチャートである。 鍵盤処理のフローチャートである。 フレーム合成処理のフローチャートである。 楽音タイマインタラプト処理のフローチャートである。 分析処理のフローチャートである。 PARCOR係数算出処理のフローチャートである。 ピッチ周波数算出処理のフローチャートである。 ピッチ補正処理のフローチャートである。 混合比算出処理のフローチャートである。 第2の実施例による音声分析合成装置の分析フェーズ用の機能構成図である。 第2の実施例による音声分析合成装置の合成フェーズ用の機能構成図である。 フレームサイズの変更方法を説明する図である。 スイッチ処理のフローチャートである(第2の実施例)。 フレーム修正処理のフローチャートである(第2の実施例)。 楽音タイマインタラプト処理のフローチャートである(第2の実施例)。
以下、本発明の実施例について、図面を参照しながら詳細に説明する。
<第1の実施例>
図1は、本実施例による音声分析合成装置を搭載した電子楽器の構成図である。
その電子楽器は、図1に示すように、楽器全体の制御を行うCPU1と、複数の鍵を備えた鍵盤2と、各種スイッチを備えたスイッチ部3と、CPU1が実行するプログラムや各種制御用データ等を格納したROM4と、CPU1のワーク用のRAM5と、例えば液晶表示装置(LCD)や複数のLEDなどを備えた表示部6と、特には図示しない端子に接続されたマイク7から入力されるアナログの音声信号のA/D変換を行いその音声データを出力するA/D変換器8と、CPU1の指示に従い楽音発音用の波形データを生成する楽音生成部9と、その生成部9が生成した波形データのD/A変換を行い、アナログのオーディオ信号を出力するD/A変換器10と、そのオーディオ信号の増幅を行うアンプ11と、そのアンプ11が増幅を行った後のオーディオ信号を音声に変換するスピーカ12と、例えば着脱自在な記憶媒体にアクセスする外部記憶装置13と、を備えて構成されている。それらの構成において、CPU1、鍵盤2、スイッチ部3、ROM4、RAM5、表示部6、A/D変換器8、楽音生成部9、及び外部記憶装置13の間はバスによって接続されている。なお、上記外部記憶装置13とは、例えばフレキシブルディスク装置、CD−ROM装置、或いは光磁気ディスク装置である。スイッチ部3は、例えばユーザが操作の対象とする各種スイッチの他に、各種スイッチの状態変化を検出するための検出回路を備えたものである。
CPU1は、ROM4、或いは外部記憶装置13がアクセス可能な記憶媒体に格納されている演奏再生用のシーケンスデータ(例えばスタンダードMIDIファイル(SMF))を処理することで自動演奏を実現させる。そのために、スイッチ部3を構成するスイッチとしては、図2に示すように、その自動演奏の開始を指示するためのスタート(START)スイッチ21、その終了を指示するためのストップ(STOP)スイッチ22、自動演奏時のテンポ値の変更を指示するためのテンポ(TEMPO)スイッチ23が設けられている。そのテンポスイッチ23として、テンポ値のアップを指示するためのアップ(UP)スイッチ23a、及びそのダウンを指示するためのダウン(DOWN)スイッチ23bが設けられている。その他には、特に図示していないが、マイク7から入力される音声の分析を指示するための分析スイッチ、その分析結果を用いた音声の合成を行わせるための合成スイッチ、その合成時に鍵盤2への操作による音高指定を有効とするか否か選択するためのピッチ選択スイッチ、及び保存している分析結果のなかで合成に用いられるものを選択するためのファイル選択スイッチ、などが設けられている。
上記構成の電子楽器において、本実施例による音声分析合成装置は、マイク7から入力した音声に対し、その音高(ピッチ)を指定された音高(ピッチ)に変換する音響効果を付与できるものとして実現されている。音声の入力は、外部記憶装置13を介して行っても良く、LAN、或いは公衆網等の通信ネットワークを介して行っても良い。
図3は、本実施例による音声分析合成装置の機能構成図である。
音響効果を付加した音声波形は、元の音声波形を分析してパラメータを抽出し、抽出したパラメータ、及び生成した音源波形を用いて生成するようになっている。このことから、図3に示すように、音声分析合成装置の機能構成は、分析を行う段階(分析フェーズ)用のものと、その分析結果を用いて音声波形を合成する段階(合成フェーズ)用のものと、に区別される。分析フェーズ用のものは、音声符号化等を行うためのもの、つまり音声分析装置を構成するものに相当し、合成フェーズ用のものは、音声復号化を行うためのもの、つまり音声合成装置を構成するものに相当する。
始めに、分析フェーズ用の構成、及び各部の動作について説明する。
図3に示すA/D変換器(ADC)8は、マイク7から出力されたアナログの音声信号をデジタルの音声データに変換するものである。例えばサンプリング周波数22,052Hz、16bitでAD変換を行う。以降、それがAD変換して得られる音声データについては便宜的に「元音声データ」、或いは「元波形データ」と呼び、マイク7に入力された音声については「元音声」と呼ぶことにする。
フレーム抽出部31は、その元音声データを入力し、予め定められたサイズでフレームを切り出すことで抽出する。そのサイズ、つまり音声データ数は例えば512であり、フレームの切り出しは、図6に示すように、フレームサイズをホップサイズで割った値であるオーバーラップファクタでオーバーラップさせて行う。図6に示す例は、そのファクタの値を8、つまりホップサイズを64(512/64=8)とした場合のものである。そのようにして抽出されたフレーム(フレームサイズ分の音声データ)はレベル算出部32、線形予測分析部33、及びピッチ抽出/有声音比率算出部34に送られる。
レベル算出部32は、送られたフレーム毎に音量レベルを示すレベル値(レベルパラメータ)を算出する。その算出は、例えばフレームを構成する元音声データの自乗和を求め、その自乗和をフレームサイズで除算することで行う。
線形予測分析部33は、送られたフレームを対象に線形予測分析を行い、パーコール(PARCOR)係数を算出する。線形予測分析(LPC:Linear Predictive Coding)の次数は、サンプリング周波数が22,050Hzの音声データでは26次もしくは28次が適当である。本実施例では26次としている。それにより、送られたフレームからLevinson-Durbin アルゴリズムを使って26個のPARCOR係数を算出している。
ピッチ抽出/有声音比率算出部34は、元音声のピッチ周波数(繰り返し周期)、及び元音声が有声音である度合いを示す有声音比率を算出する。
図4は、上記算出部34の機能構成図である。図4を参照して、その算出部34の機能構成、及び各部の動作について詳細に説明する。
フレーム抽出部31から送られたフレームはハイパスフィルタ(HPF)部51に入力される。そのHPF部51は、低域成分を除去したフレームを窓掛け部52に出力する。その窓掛け部52は、フレーム(1フレームサイズ分の音声データ)に対し窓関数、例えばハニング窓(Hanning Window)を乗算する。
高速フーリエ変換(FFT)部53は、窓関数乗算後のフレームを対象にFFTを行う。周波数振幅位相算出部54は、それによって算出された実数値、及び虚数値から周波数振幅値と位相を求める。周波数振幅自己相関算出部55は、求めた周波数振幅値を対象に自己相関を計算し相関値を算出する。算出された周波数振幅値をxi とすると、相関値rn は次式により算出する。その式から明らかなように、フレームの後半部分である値が256以上のインデクスではそれの前半部分の折り返しとなるため、前半部分である0〜255の計256個の周波数振幅値xi のみ算出すれば良い。
Figure 2010002937
周波数振幅値xi の自己相関を取ることにより、調波構造すなわち倍音成分を持った音声や楽音では相関値rn が大きくなる。このため、ノイズ等の影響を排除した正確なピッチ抽出を行うことができる。元音声として人の音声を前提としている場合、その音声が持つピッチとして考えられる範囲のみを対象とすれば良いので、40〜500Hzに相当するインデクス値が1≦n≦13の相関値rn のみを求めれば良いことになる。
相関値rn が最大となるnの値がピッチ周波数に対応する周波数振幅値xi のインデクス値となる。しかし、そのインデクス値から周波数を算出しても、高い精度は得られないことが多いのが実状である。このことから、元音声のピッチ周波数を高い精度で抽出するために、位相差計測法により正確なピッチ周波数を算出するようにしている。その算出を行うのが位相差計測法による周波数計算部(以降、「周波数計算部」と略記する)57である。その計算部57は、前フレームの位相データ56を参照してピッチ周波数を算出する。
周波数振幅値xi の自己相関を取って行うピッチ抽出法では、通常の話し言葉であれば高い精度でピッチを抽出することができる。しかし、歌唱時の音声や特殊な発音をした際の音声では、必ずしも高い精度でピッチを抽出することができない。このため、ピッチ補正部58は、周波数計算部57が算出したピッチ周波数の補正を行う。その補正後のピッチ周波数がピッチ抽出/有声音比率算出部34から出力される。
自己相関値の標準偏差算出部(以降「標準偏差算出部」と略記する)59は、周波数振幅自己相関算出部55から相関値rn を受け取り、その標準偏差を算出する。その標準偏差は、周知のように、分散(散らばり)の度合いを示す値である。このため、標準偏差が小さい程、特定周波数にパワーが集中していることになって有声音である可能性が高くなる。逆にそれが大きい程、様々な周波数に平均的にパワーが分散していることになって無声音である可能性が高くなる。標準偏差算出部59は、このことに着目し、算出した標準偏差から元音声が有声音である度合いを示す有声音比率mix(0≦mix≦1)を算出する。その有声音比率mixがピッチ抽出/有声音比率算出部34から出力される。
このようにして、レベル算出部32、線形予測分析部33、及びピッチ抽出/有声音比率算出部34は、図5に示すように、それぞれレベル値、PARCOR係数、有声音比率mix、及びピッチ周波数をフレーム毎に算出して出力する。それらは分析結果を示すパラメータとしてパラメータバッファ35に一旦、格納され、必要に応じてパラメータファイル36として保存される。なお、パラメータバッファ35、及びパラメータファイル36を保存するものは、例えばRAM5、或いは外部記憶装置13がアクセス可能な記憶媒体である。ここでは便宜的にRAM5であるとの前提で以降の説明を行うこととする。
上記分析フェーズ用の構成、つまりA/D変換器8が出力する元音声データの分析を行う各部31〜34は、例えばCPU1、スイッチ部3、ROM4、RAM5、及び外部記憶装置13によって実現される。合成フェーズ用の構成、つまりパラメータバッファ35に格納されたパラメータを用いて音声波形を合成しD/A変換器10に出力するための各部41〜47は、例えばCPU1、鍵盤2、スイッチ部3、ROM4、RAM5、楽音生成部9、及び外部記憶装置13によって実現される。
次に、合成フェーズ用の構成、及び各部の動作について説明する。
音声波形の合成では、パラメータバッファ35にはユーザが選択したパラメータファイル36が読み出されて格納される。
切り替えスイッチ41は、パラメータバッファ35にパラメータとして格納されているピッチ周波数、及び鍵盤2をユーザが操作することで指定するピッチ周波数のうちの一方をRosenberg 波生成部42に出力する。そのスイッチ41は、ピッチ選択スイッチへの操作に応じて、それらのうちの一方を選択して出力する。
Rosenberg 波生成部42は、図7に示すようなRosenberg 波を、切り替えスイッチ41から入力するピッチで生成する。そのRosenberg 波は、声帯音源波形を模擬した波形であり、声帯の開口期間長を制御するOQ(Open Quotient )パラメータは本実施例では0.5に固定している。振幅パラメータAVについては1としている。ホワイトノイズ生成部43は、ホワイトノイズ波を生成する。そのノイズ波は、周知のように、Rosenberg 波とは異なり音高を持たない。
Rosenberg 波生成部42が生成したRosenberg 波には、パラメータバッファ35に格納された有声音比率mixが乗算されて駆動音源バッファ44に格納される。ホワイトノイズ生成部43が生成したホワイトノイズ波には、1から有声音比率mixを減算した値(=1−mix)が乗算されて、駆動音源バッファ44に格納されたRosenberg 波に加算される。それにより、それらの波形を有声音比率mixに応じて混合した駆動音源波形を駆動音源バッファ44に用意する。
上記Rosenberg 波は有声音用の駆動音源波形であり、ホワイトノイズ波は無声音用の駆動音源波形である。しかし、有声音、無声音は明確に区別されるわけではなく、音声が両者の中間的な状態となっている場合も存在する。このことから、有声音比率mixを算出し、その比率mixに応じてRosenberg 波とホワイトノイズ波を混合して、中間的な状態を再現するうえでより適切な駆動音源波形を生成するようにしている。そのような駆動音源波形を生成することにより、常に自然と感じられる音声波形を合成することができることとなる。
合成フィルタ部45は、駆動音源バッファ44に用意された1フレーム分の駆動音源波形、及びパラメータバッファ35に格納されたPARCOR係数から1フレーム分の音声波形(音声データ)を生成する。駆動音源波形は入力として、PARCOR係数はフィルタ係数として用いられる。その一方では、生成した音声データ全体の自乗和を算出してフレームサイズ(ここでは512)で除算し、パラメータバッファ35のレベル値(元音声データで同様に算出された値)をその除算結果で除算し、その平方根を乗算係数として求めて乗算器46に出力する。
乗算器46は、合成フィルタ部45が生成した音声データに対し、乗算係数を乗算する。フレーム加算部47は、図8に示すように、乗算器46が出力する1フレーム分の音声データにハニング窓を乗算し、それによって得られた音声データを、分析フェーズのときと同じオーバーラップファクタで他のフレームと重畳(オーバーラップ加算)する。そのようにして重畳した後の音声データをD/A変換器(DAC)10に出力する。
そのフレーム加算部47は、例えばCPU1、ROM4、及びRAM5によって実現される。他のフレームとの重畳は、例えばRAM5に設けた領域である出力バッファを用いて行われる。このことから、楽音生成部9は、CPU1の指示に従って発音させるべき楽音を発音させるための波形データを生成してD/A変換器10に出力する他に、出力バッファから読み出されて送られた音声データをそのまま変換器10に出力できるようになっている。
本実施例による音声分析合成装置は、上述したようにして、元音声データの分析を行い、その分析結果を用いて音声データを合成しスピーカ12から放音させるものとして実現されている。以降は、その音声分析合成装置を実現させる電子楽器の動作について、図9〜図18に示す各種フローチャートを参照して詳細に説明する。
図9は、全体処理のフローチャートである。始めに図9を参照して、その全体処理について詳細に説明する。なお、その全体処理は、CPU1が、ROM4に格納されたプログラムを実行して電子楽器のリソースを使用することにより実現される。
先ず、ステップ901では、電源がオンされたことに伴い、初期化処理を実行する。続くステップ902では、スイッチ部3を構成するスイッチへのユーザの操作に対応するためのスイッチ処理を実行する。そのスイッチ処理は、例えばスイッチ部3を構成する検出回路に各種スイッチの状態を検出させてその検出結果を受け取り、その検出結果を解析して状態が変化したスイッチの種類、及びその変化を特定して行われる。
ステップ902に続くステップ903では、鍵盤2へのユーザの操作に対応するための鍵盤処理を実行する。その鍵盤処理を実行することにより、鍵盤2への演奏操作に応じて楽音がスピーカ12から放音される。ステップ904にはその後に移行する。
ステップ904では、表示部6を構成するLCD、或いはLEDを駆動してユーザに提供すべき情報を提供するための表示処理を実行する。その実行後は上記ステップ902に戻る。それにより、電源がオンされている間、ステップ902〜904で形成される処理ループを繰り返し実行する。
次に、上記全体処理内で実行されるサブルーチン処理について詳細に説明する。
図10は、上記ステップ902として実行されるスイッチ処理のフローチャートである。スイッチ部3を構成する検出回路から受け取った検出結果を解析した後に行われる処理の流れを表したものである。全体処理内で実行されるサブルーチン処理では、始めに図10を参照して、そのスイッチ処理について詳細に説明する。
先ず、ステップ1001では、分析スイッチがオン(操作)されたか否か判定する。そのスイッチをユーザが操作した場合、判定はYESとなり、ステップ1002で変数ana_flgの値を反転、即ちそれまでの値が1であれば0、それまでの値が0であれば1を新たに代入した後、ステップ1003に移行する。そうでない場合には、判定はNOとなってステップ1006に移行する。それに代入される値の1は、マイク7から入力される元音声の分析を行う状況であることを示している。
ステップ1003では、変数ana_flgの値が1か否か判定する。ユーザが分析スイッチを操作して元音声の分析を指示した場合、それには1が代入されることから、判定はYESとなり、ステップ1004でパラメータバッファ35をクリアし、それの先頭に位置するパラメータ保存用の領域(ここでは便宜的に「アドレス」と呼ぶ)を指定する値を変数param_buf_adrに代入した後、ステップ1006に移行する。そうでない場合には、判定はNOとなり、ステップ1005でバッファ35に保存した分析結果をパラメータファイル36としてRAM5に書き込んで保存した後、そのステップ1006に移行する。そのようにして、本実施例では、分析スイッチを操作してから再度、操作するまでの間、元音声の分析を行い、その分析結果をバッファ35に順次、保存するようにしている。
ステップ1006では、合成スイッチがオン(操作)されたか否か判定する。そのスイッチをユーザが操作した場合、判定はYESとなり、ステップ1007で変数syn_flgの値を反転させた後、ステップ1008に移行する。そうでない場合には、判定はNOとなってステップ1010に移行する。
ステップ1008では、変数syn_flgの値が1か否か判定する。その変数に1が代入されていた場合、判定はYESとなり、ステップ1009において変数file_numの値で指定されるパラメータファイル36をパラメータバッファ35に読み込んだ後、ステップ1010に移行する。そうでない場合には、判定はNOとなってそのステップ1010に移行する。このようにして、本実施例では、合成スイッチへの操作により合成に用いるパラメータファイル36の切り替えを行うようにしている。
ステップ1010では、ピッチ選択スイッチがオン(操作)されたか否か判定する。そのスイッチをユーザが操作した場合、判定はYESとなり、ステップ1011で変数pitch_selの値を反転させた後、ステップ1012に移行する。そうでない場合には、判定はNOとなり、直接そのステップ1012に移行する。
ステップ1012では、ファイル選択スイッチがオンされたか否か判定する。そのスイッチをユーザが操作した場合、判定はYESとなり、ステップ1013で変数file_numの値をサイクリックに変化(更新)し、更にステップ1014でその他のスイッチへの操作に対応するためのその他スイッチ処理を実行した後、一連の処理を終了する。そうでない場合には、判定はNOとなってそのステップ1014の処理を次に実行した後、一連の処理を終了する。
このように、変数file_numの値のサイクリックな更新は、例えば存在するパラメータファイル36の数、そのファイル番号に応じて行われる。それにより、存在するパラメータファイル36のうちの何れかをユーザがファイル選択スイッチを操作することで任意に選択できるようにさせている。そのようにして選択可能なパラメータファイル36が合成スイッチへの操作によってパラメータバッファ35に読み込まれる。
図11は、図9に示す全体処理内でステップ903として実行される鍵盤処理のフローチャートである。次に図11を参照して、その鍵盤処理について詳細に説明する。
先ず、ステップ1101では、例えば鍵盤2からそれに対してユーザが行った操作内容を表すイベントデータ(例えばMIDIデータ)を受け取り、その操作内容を判定する。操作内容を表すイベントデータを受け取らなかった場合、鍵盤2は状態の変化がなかったと判定し、ここで一連の処理を終了する。そのイベントデータが鍵への押鍵を示していた場合には、その旨が判定されてステップ1102に移行し、そのイベントデータが鍵の離鍵を示していた場合には、その旨が判定されたステップ1107に移行する。
ステップ1102では、変数syn_flgの値が1か否か判定する。その値が1でなかった場合、判定はNOとなり、押鍵された鍵に割り当てられた音高の楽音の発音を指示するコマンド(例えばMIDIデータ)を楽音発生部9に送出する処理をステップ1103で実行した後、一連の処理を終了する。そうでない場合には、判定はYESとなってステップ1104に移行する。
ステップ1104では、上記フレーム加算部47を構成する出力バッファをクリアし、その先頭に位置するアドレス(ここでは1音声データを格納する領域のことである)を指定する値を変数out_buf_adrに代入し、パラメータバッファ35の先頭に位置するアドレス(ここではパラメータデータを格納する領域のことである)を指定する値を変数param_buf_adrに代入する。続くステップ1105では、上述したようにして1フレーム分の音声データを合成するフレーム合成処理を実行し、それに続くステップ1106では、合成した音声データによる発音中であることを示す値である1を変数note_onに代入する。一連の処理はその後に終了する。
一方、上記ステップ1101で鍵盤2から受け取ったイベントデータが鍵の離鍵を示していたと判定することで移行するステップ1107では、変数syn_flgの値が1か否か判定する。その値が1でなかった場合、判定はNOとなり、離鍵された鍵に割り当てられた音高の楽音の消音を指示するコマンド(例えばMIDIデータ)を楽音発生部9に送出する処理をステップ1108で実行した後、一連の処理を終了する。そうでない場合には、判定はYESとなってステップ1109に移行し、合成した音声データを出力バッファから読み出すことで行う発音を終了させ、変数note_onに発音中でないことを示す値の0を代入してから、一連の処理を終了する。
このように、変数syn_flgの値が1であった場合、パラメータバッファ35に格納されたパラメータを用いて音声データを合成し、その音声データによる音声(楽音)の発音を行うようになっている。それにより、ユーザが合成スイッチを操作してから再度それを操作するまでの間、合成した音声を鍵盤2への操作内容、つまり押鍵した鍵(音高)、押鍵している期間に応じて発音させるようになっている。
図12は、上記ステップ1105として実行されるフレーム合成処理のフローチャートである。次に図12を参照して、その合成処理について詳細に説明する。
先ず、ステップ1201では、変数pitch_selの値が0か否か判定する。ユーザがピッチ選択スイッチを操作して、合成する音声の音高(ピッチ)を指定するうえでの鍵盤2への操作を有効とさせていた場合、その変数には0が代入されていることから、判定はYESとなり、ステップ1202で駆動音源波形のピッチとして押鍵された鍵に割り当てられているピッチを設定した後、ステップ1204に移行する。そうでない場合には、判定はNOとなり、ステップ1203でそのピッチとしてパラメータバッファ35にパラメータの形で格納されたピッチを設定した後、そのステップ1204に移行する。
ステップ1204では、パラメータバッファ35の変数param_buf_adrの値で指定されるアドレスからパラメータを読み込み、音声データの合成を行い、その合成によって得られた1フレーム分の音声データを既に生成した他のフレームに加算することにより、新たに合成した1フレーム分の音声データを出力バッファに保存された音声データに加える。具体的には、ステップ1202、或いは1203で設定したピッチのRosenberg 波、及びホワイトノイズ波を生成し、生成したそれらの波形を有声音比率mixに応じて混合することにより駆動音源波形を生成し、生成した駆動音源波形、及びPARCOR係数から音声データを合成し、合成した音声データのレベル調整を施し、更にハニング窓を乗算した後、変数out_buf_adrの値で指定されるアドレスから既に生成した他のフレームに加算して重畳し、その重畳後に次のフレームの書き込みを開始すべきアドレスを指定する値を変数out_buf_adrに代入して更新する。一連の処理はその後に終了する。
このようにして、本実施例では、音声データの合成を行う場合、鍵盤2で押鍵された鍵のピッチ、元音声のピッチのうちの何れかをピッチ選択スイッチへの操作により選択できるようにさせている。
図13は、楽音タイマインタラプト処理のフローチャートである。これは、元音声データの分析、或いは音声データの合成を行うために、例えばサンプリング周期で発生する割り込み信号により実行される処理である。例えば図10に示すスイッチ処理において、変数ana_flg、及びsyn_flgのうちの少なくとも一方に1を新たに代入したときに割り込み(実行)禁止が解除され(割り込みが有効とされ)、それらの値がともに0となったときに割り込みが禁止される(割り込みが無効とされる)ようになっている。次に図13を参照して、そのタイマインタラプト処理について詳細に説明する。
先ず、ステップ1301では、入力した元音声データを分析するための分析処理を実行する。続くステップ1302では、変数syn_flgの値が1か否か判定する。その変数に1が代入されていた場合、判定はYESとなってステップ1303に移行し、そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップ1303では、変数note_onの値が1か否か判定する。合成した音声データによる楽音を発音させるべき状況であった場合、それには1が代入されていることから、判定はYESとなり、ステップ1304で楽音生成部9を介して出力バッファの音声データをD/A変換器10に送出することにより楽音の発音を継続させる処理を実行した後、ステップ1305に移行する。
ステップ1305では、フレーム合成タイミングか否か判定する。そのタイミングであった場合、判定はYESとなり、パラメータバッファ35の最後に位置するフレームのパラメータを読み出していなければ次にパラメータを読み出すべきフレームに応じて変数param_buf_adrの値を更新し(ステップ1306)、その更新後に図12に示すフレーム合成処理を実行してから一連の処理を終了する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
上述したように、フレームサイズは512でオーバーラップファクタは8であった場合、楽音タイマインタラプト処理の実行間隔をサンプリング周期とすると、フレーム合成タイミングは、64回目毎に到来することになる。
このようにして、音声データの合成を行っている場合、その合成を開始してからの時間の経過に応じてパラメータバッファ35からパラメータを読み出す対象となるフレームを変更するようにしている。それにより、元音声の音質の変化を音声データの合成に反映させるようにしている。
次に上記ステップ1301として実行される分析処理について、図14に示すそのフローチャートを参照して詳細に説明する。
先ず、ステップ1401では、変数ana_flgの値が1か否か判定する。それに1が代入されていなかった場合、判定はNOとなり、ここで一連の処理を終了する。そうでない場合には、判定はYESとなり、A/D変換器8が出力する、A/D変換されてデジタル化された元音声データを取り込んで例えばRAM5に確保した領域(以降「入力バッファ」と呼ぶ)に格納してから(ステップ1402)、ステップ1403に移行する。
ステップ1403では、フレーム分析タイミングか否か判定する。そのタイミングが到来する時間間隔はフレーム合成タイミングと同じであり、そのタイミングであった場合、判定はYESとなってステップ1404に移行する。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップ1404では、入力バッファからフレームサイズの元音声データをオーバーラップファクタの値に応じて抽出し、ハニング窓を乗算する。次のステップ1405では、乗算後のフレームを対象に分析を行い、レベル値、PARCOR係数、ピッチ周波数、及び有声音比率mix等のパラメータを算出するパラメータ算出処理を実行する。その後は、算出したパラメータを変数param_buf_adrの値で指定されるアドレスからパラメータバッファ35に書き込み、その書き込みに応じてその値を更新してから(ステップ1406)ステップ1407に移行する。
ステップ1407では、パラメータバッファ35がフル、つまり次のフレームで抽出されるパラメータを書き込む容量がパラメータバッファ35に残っていないか否か判定する。その容量が残っていない場合、判定はYESとなり、ステップ1408でパラメータバッファ35に格納されたパラメータをパラメータファイル36として保存し、変数ana_flgに0を代入してから、一連の処理を終了する。それにより、パラメータバッファ35に書き込めるだけのパラメータを書き込むと、元音声データの分析を自動的に終了させる。そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
以降は、上記ステップ1405のパラメータ算出処理内で実行されるサブルーチン処理について詳細に説明する。ここでは、PARCOR係数、ピッチ周波数、その補正、及び有声音比率mixに係わるものについてのみ、図15〜図18に示す各種フローチャートを参照して詳細に説明する。
図15は、PARCOR係数算出処理のフローチャートである。始めに図15を参照して、その算出処理について詳細に説明する。上述したように、この算出処理では、Levinson-Durbin アルゴリズムを用いてPARCOR係数を算出する。
先ず、ステップ1501では、1フレーム分の音声データから短時間自己相関関数を計算する。その計算は、短時間自己相関関数をR、音声データをyで表すと、以下の式により計算して算出する。図中、シンボル「R」に添字として付したシンボル「P」、つまり次数Pの値は前述したように26である。
Figure 2010002937
ステップ1501に続くステップ1502では、配列変数Wの添字(括弧内の数字)が0で指定される要素(以降「W0 」と表記する。他の要素についても同様である)に自己相関関数R1 、配列変数Eの要素E0 に自己相関関数R0 、変数nに1、をそれぞれ代入する。その後はステップ1503に移行する。
ステップ1503では、配列変数kの要素kn には要素Wn-1 の値を要素En-1 の値で割った値(=Wn-1/En-1)を代入し、要素En には、1から要素kn の値を2乗した値を減算した値を要素En-1 の値に掛けて得られる値(=En-1・(1−kn 2))を代入する。要素kn に代入した値がPARCOR係数(偏自己相関係数)である。
ステップ1503に続くステップ1504では、配列変数αの2つの変数nの値で指定される要素(図中「αn (n)」と表記。以降、その表記法を用いる)に要素kn の負の値(=−kn )を代入し、要素αi (n)(変数nの値、及び変数iの値で指定される要素)に、要素αi (n-1)の値から、要素kn の値に要素αn-i (n-1)の値を掛けた値を減算して得られる値(=αi (n-1)−kn αn-i (n-1))を代入する。後者は、変数i(インデクス)の値が1≦i≦n−1の範囲内に存在する要素αi (n)を全て対象にして行う。そのような代入が終了した後、ステップ1505に移行する。
ステップ1506では、変数nの値が次数Pの値と等しいか否か判定する。それらの値が一致していた場合、判定はYESとなり、PARCOR係数の算出は終了したとして一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1506に移行する。
ステップ1506では、要素Wn に、以下の式により求めた値を代入する。その後は、ステップ1507で変数nの値をインクリメントしてから上記ステップ1503に戻る。
Figure 2010002937
このようにして、ステップ1503〜1507で形成される処理ループをステップ1505の判定がYESとなるまで繰り返し実行することにより、次数P分のPARCOR係数が変数nにより指定される各要素Wn に代入されることになる。
図16は、ピッチ周波数算出処理のフローチャートである。次に図16を参照して、その算出処理について詳細に説明する。
先ず、ステップ1601では、ハニング窓を乗算した後のフレームを対象にFFTを行い、それによって得られた実数値、及び虚数値から周波数振幅値x、及び位相を求め、上記(1)式を用いて周波数振幅値xの自己相関関数rを計算する。求めた位相は、1次元の配列変数phaseの各要素に代入する。このとき、それまで配列変数phaseの各要素に代入されていた値は、配列変数old_phaseの同じ値で指定される要素に代入されている。配列変数old_phaseの要素に代入された値は、図4に示す前フレームの位相データ56に対応する。そして、人の音声の周波数の範囲内で相関値rが最大となる添字nの値を特定し、その値を変数iに代入する。その変数iに代入される値は、ピッチ周波数に対応する周波数振幅値xのインデクス値である。
ステップ1601に続くステップ1602では、変数delta_phaseに、配列変数phaseの変数iの値で指定される要素phase[i]の値から配列変数old_phaseの要素old_phase[i]の値を減算して得られる値(位相ずれを示す位相ずれ値)を代入し、要素old_phase[n](1≦n≦13)に要素phase[n]の値を代入する。1≦n≦13の範囲に限定して代入を行うのは、人の音声が取りうる範囲の周波数のみを対象にピッチ周波数を探索すれば良いためである。そのような代入が終了した後にステップ1603に移行する。
ステップ1603では、変数offset_phaseに、FFTグリッド間角周波数Δω(=2π×Δf(=サンプリング周波数FS÷FFT点数(フレームサイズ))、変数i、及び前フレームとの時間差Δt(=ホップサイズH÷サンプリング周波数FS)の各値を乗算して得られる理論的位相進み値を変数delta_phaseの値から減算した値(=delta_phase−Δω・i・Δt)を算出して代入する。そのようにして算出される値は、FFTによる周波数グリッドとピッチ周波数とのずれに対応する。
次に移行するステップ1604では、変数offset_phaseの値が−π<offset_phase<πとなるように正規化処理を実行する。その後に移行するステップ1605では、正規化した変数offset_phaseの値を時間差Δtで除算して得られる値をその変数に新たに代入する。ステップ1606にはその代入後に移行する。新たに代入された値は、位相を角周波数の次元で表したものである。
ステップ1606では、変数deltaに、変数offset_phaseの値をグリッド間角周波数Δωで除算した値を代入する。そのようにして得られた値は、FFTの周波数グリッドとのずれ成分、即ち変数i(インデクス値)の小数成分となる。このことから、続くステップ1607では、変数iの値に変数deltaの値を加算した値をグリッド間周波数Δfに乗算してピッチ周波数(=(i+delta)×Δf)を算出し、それを変数freqに代入する。一連の処理はその後に終了する。
上述したように、調波構造すなわち倍音成分を持った音声や楽音では相関値rが大きくなる。このため、ノイズ等の影響を排除した正確なピッチ抽出を行うことができる。また、その後に行う位相差計測法によるFFTの周波数グリッド間における差分となる周波数の算出により、FFTの周波数分解能の低さはピッチ抽出に影響を及ぼさなくなる。これらの結果、ノイズ等に強い高精度なピッチ抽出が実現される。
上述したようにして求めたピッチ周波数は通常の話し言葉のような音声を対象とするのであれば高い精度が得られる。しかし、歌唱時や特殊な発音をした場合などの音声では必ずしも高い精度が得られない。このことから、本実施例では、このピッチ周波数算出処理の実行後、図17に示すピッチ補正処理を実行している。次にそのピッチ補正処理について、図17を参照して詳細に説明する。その図17中のシンボル「pitch」は変数freqに代入されたピッチ周波数を示し、シンボル「pitch_old」は前フレームで抽出(特定)したピッチ周波数を示している。
先ず、ステップ1701では、今回のピッチ周波数pitchから前回のピッチ周波数pitch_oldを減算し、その減算結果を変数xに代入する。次のステップ1702では、変数xに、それまでの値の絶対値を代入する。ステップ1703にはその後に移行する。
ステップ1703では、変数xの値が定数THRESHよりも大きいか否か判定する。その定数THRESHは、短時間(ここでは時間差Δtが対応)に生じることが考えにくい周波数変化が生じたか否か判定用に設定した定数である。このことから、ピッチ周波数にそのような変化が生じた場合、判定はYESとなってステップ1705に移行する。そうでない場合には、判定はNOとなり、ステップ1704で変数counterに0を代入するとともに、前フレームのピッチ周波数pitch_oldとして今回のピッチ周波数pitchを設定することにより、今回のピッチ周波数pitchが正確なものとして採用した後、一連の処理を終了する。
ステップ1705では、変数counterの値をインクリメントする。続くステップ1706では、変数counterの値が定数Hの値より小さいか否か判定する。前者が後者より小さかった場合、判定はYESとなり、ステップ1707で今回のピッチ周波数pitchとして前フレームのピッチ周波数pitch_oldを設定することにより、今回のピッチ周波数pitchが不正確である可能性が高いとして不採用とした後、一連の処理を終了する。そうでない場合には、判定はNOとなり、次に上記ステップ1704の処理を実行する。
このようにして、本実施例では、フレーム間におけるピッチ周波数変化が比較的に大きいと、その変化が定数Hで設定される回数、続かない限り不採用としている。それにより、一時的に不適切に抽出されたピッチ周波数を無効とするため、全体としてより適切、且つ安定的にピッチ周波数を抽出できることとなる。なお、上記定数THRESHの値は30程度、定数Hの値としては4程度が適当であることが確認できたが、これらは元音声を入力する人、その発生方法等に応じて適宜、調整することが望ましい。
図18は、混合比(有声音比率)算出処理のフローチャートである。最後に図18を参照して、その算出処理について詳細に説明する。
先ず、ステップ1801では、自己相関値rの標準偏差deviationを計算し、その値が定数CROSS_MIN以下か否か判定する。その定数CROSS_MINは完全な有声音と見なす基準として設定した定数であり、標準偏差deviationの値がそれ以下であった場合、判定はYESとなり、ステップ1802で混合比(有声音比率)mixとして1を設定した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1803に移行する。
ステップ1803では、標準偏差deviationの値が定数CROSS_MAX以上か否か判定する。その定数CROSS_MAXは完全な無声音と見なす基準として設定した定数であり、標準偏差deviationの値がそれ以上であった場合、判定はYESとなり、ステップ1804で混合比(有声音比率)mixとして0を設定した後、一連の処理を終了する。そうでない場合には、判定はNOとなってステップ1805に移行し、定数CROSS_MAXから標準偏差deviationの値を減算した減算結果を、定数CROSS_MAXから定数CROSS_MINを減算した減算結果で除算して得られる値を算出し、その算出値を混合比mixとして設定する。一連の処理はその後に移行する。
このようにして、本実施例では、完全に有声音と見なせる場合、或いは完全に無声音と見なせる場合、混合比mixとして1、或いは0を設定し、それら以外の場合には、標準偏差deviationの値に応じて値が変化する値を設定するようにしている。それにより、有声音、無声音と完全に見なせない音声のみを対象に混合比mixの値を0<mix<1の範囲内で変化させるようにして、必要な場合にのみ、駆動音源波形をRosenberg 波、及びホワイトノイズ波から生成するようにしている。そのようにして、駆動音源波形はより適切に生成できるようにさせている。このため、常に自然と感じられる音声データを合成できることとなる。なお、上記定数CROSS_MAXの値は0.36程度、定数CROSS_MINの値は0.14程度が適当であることが確認できたが、これらは元音声を入力する人、その発生方法等に応じて適宜、調整することが望ましい。
なお、本実施例では、元音声データから抽出したパラメータは一旦、パラメータファイル36として保存するようにしているが、その抽出(分析)、及び抽出したパラメータを用いた音声データの合成をリアルタイムで実施できるようにしても良い。外部装置に出力させるようにしても良い。
音声データの合成については、並行して複数、行えるようにしても良い。パラメータを操作して行えるようにしても良い。合成する音声データのピッチ指定については、弦楽器や吹奏楽器等を用いて行えるようにしても良く、SMFの再生により発音される楽音の音高を利用できるようにしても良い。
PARCOR係数は、線形分析による全極フィルタで抽出した形となっているが、そのフィルタはカルマンフィルタ等を使った極零フィルタであっても良い。格子型フィルタであっても良い。PARCOR係数以外のものをフィルタ係数として抽出するようにしても良い。
無声音用の音源波形としてホワイトノイズ波を生成しているが、音声分析時に残差信号を算出し、有声音比率mixが低い場合は、この残差信号をその音源波形として保存するようにして、合成時に用いるようにしても良い。分析の対象とする音声としては、人声を想定しているが、それに限定しなくとも良い。しかし、ピッチ抽出の精度を維持するうえからは、ピッチの範囲が予め特定できるようなものが望ましい。
<第2の実施例>
上記第1の実施例では、マイク7から入力した元音声の分析結果を基にした音声データの合成を、鍵盤2への操作に応じて行わせることができるようになっている。これに対し、第2の実施例は、音声データの合成を、シーケンスデータ(ここではSMF)の再生と同期させて行わせるようにしたものである。
第2の実施例による音声分析合成装置を搭載した電子楽器の構成は基本的に第1の実施例におけるそれと同じである。動作も大部分は同じか、或いは比較的に大きな差がない。このようなことから、同じ、或いは区別するほどの相違のないものについては、第1の実施例の説明で付した符号をそのまま用いつつ、第1の実施例から異なる部分に着目して説明を行うこととする。
シーケンスデータの再生では、テンポを指定することができる。このことから、第2の実施例では、テンポの変更をサポートするようにしている。また、合成する音声データのピッチとしては、入力された音声のそれを用いるようにしている。それにより、パラメータファイル36のなかから音声を入力する人とは別の人の音声の分析結果を格納したものが選択されていた場合には、声質の変換を実施する形で音声データの合成を行えるようにさせている。音声を入力する人としては、歌をうたう歌唱者を想定している。
図19は、第2の実施例による音声分析合成装置の分析フェーズ用の機能構成図である。始めに図19を参照して、分析フェーズ用の構成、及び各部の動作について具体的に説明する。なお、上述したように、第1の実施例と同じ、或いは区別するほどの相違のないものについては同一の符号を付している。これは、後述する合成フェーズ用の構成においても同様である。
テンポ指示手段1901は、歌唱者にテンポを指示するものであり、それに設定されたテンポ値はテンポ取得部1902によって取得され、パラメータとしてパラメータバッファ35に格納される。その指示手段1901としては、メトロノームもしくはリズムボックス等の外部装置であっても良い。
第2の実施例では、第1の実施例とは異なり、元音声のピッチ抽出は行わない。このため、ピッチ抽出/有声音比率算出部34の代わりに、有声音比率mixのみを算出する有声音比率算出部1903を搭載している。その算出方法は第1の実施例と同じである。
図20は、第2の実施例による音声分析合成装置の合成フェーズ用の機能構成図である。次に図20を参照して、合成フェーズ用の構成、及び各部の動作について具体的に説明する。
SMF2001は、再生の対象となるシーケンスデータであり、発生させるべき演奏上のイベントの内容を示すMIDI(イベント)データに対し、その処理タイミングを示すタイムデータが付加された形で構成されている。シーケンサー2002は、そのような構成のSMF2001の再生を行うものである。音声データの合成は、そのシーケンサー2002によるSMF2001の再生に同期させる形で行われる。
操作部2003は、図2に示すテンポスイッチ23へのユーザの操作に応じてテンポを変更するものである。当然のことながら、テンポの変更に伴い、SMF2001を再生する速度も変更しなければならない。このことから、時間制御部2004は、テンポの変更に伴う再生速度の変更を実現させる。その実現は、シーケンサー2002に供給するクロックの周期を変化させることで行う。
ピッチ抽出部2005は、A/D変換器8が出力した元音声データのピッチ抽出を第1の実施例と同じ手法で行い、それによって抽出したピッチ周波数を出力する。駆動音源生成部2006は、パラメータファイル36からパラメータバッファ35に読み込まれたパラメータ中の有声音比率(混合比)mixの値に応じて、生成するRosenberg 波、及びホワイトノイズ波のうちの少なくとも一方を用いて駆動音源波形を生成するものである。ピッチ抽出部2005が抽出したピッチ周波数は、Rosenberg 波の生成に反映させる。その駆動音源生成部2006は、図3中のRosenberg 波生成部42、及びホワイトノイズ生成部43を有し、それらが生成した波形に有声音比率mixの値、1からそれを減算した値をそれぞれ乗算して混合することにより駆動音源波形を生成し、駆動音源バッファ44に格納する。その駆動音源バッファ44に格納された駆動音源波形が合成フィルタ45に送られる。
ファイル制御部2007は、時間制御部2004の指示に従い、パラメータファイル36のうちの一つからパラメータを読み込んでパラメータバッファ35に格納する。その格納したパラメータは、時間制御部2004の指示により、その時間制御部2004や合成フィルタ45、及び出力制御部2008に随時、送る。
合成フィルタ部45は、ファイル制御部2007から送られたパラメータ(PARCOR係数)、及び駆動音源波形を用いて1フレーム分の音声データを合成し出力制御部2008に送る。
出力制御部2008は、出力バッファを備え、合成フィルタ部45が合成した1フレーム分の音声データにハニング窓を乗算し、それによって得られた音声データを、オーバーラップファクタで他のフレームと重畳するように出力バッファに格納する。
出力バッファから読み出された音声データは、シーケンサー2002が出力する波形データと加算器2009によって加算(ミックス)される。その加算後の音声データがD/A変換器10に出力される。
シーケンサー2002が出力する波形データは楽音生成部9によって生成される。出力バッファは、RAM5内に確保された領域である。このことから、楽音生成部9には、自身が生成したデータを他から入力したデータとミックスする機能を搭載させている。それにより、加算器2009は楽音生成部9により実現される。
音声波形の分析は512のフレームサイズで行われる。しかし、SMF2001の再生速度はテンポの変更に伴い変化するために、音声データの合成もその変化に合わせなければならない。パラメータファイル36にフレーム単位で格納されたパラメータの使用は、その再生速度に合わせる必要がある。
これらのことは、合成される音声データは、指定された音高(ここでは元音声の音高)を維持させつつ、時間軸方向の圧縮伸長を行わなければならないことを意味する。このことから、本実施例では、テンポスイッチ23(図2参照)への操作により指定されるテンポ値に応じてフレームサイズを変化させるようにしている。そのフレームサイズの決定は、時間制御部2004が行っており、具体的には以下のようにして決定する。図21を参照して具体的に説明する。
時間制御部2004は、指定されたテンポ値を操作部2003から、パラメータファイル36に格納されているテンポ値をファイル制御部2007からそれぞれ受け取る。ここでは便宜的に、前者のテンポ値を合成時テンポ値、後者のテンポ値を分析時テンポ値と呼ぶことにする。
合成時テンポ値が分析時テンポ値の2倍になると、図21に示すように、サンプリング周波数が等しければ、合成時には分析時の半分の時間で1フレーム分の音声データを出力しなければならない。このことから、フレームサイズは分析時の半分の256に決定する。ホップサイズも半分の32とすることで、オーバーラップファクタは合成時の値を維持させている。逆に、合成時テンポ値が分析時テンポ値の1/2倍であった場合には、合成時には分析時の2倍の時間で1フレーム分の音声データを出力しなければならないことから、フレームサイズは分析時の2倍の1024に決定し、オーバーラップファクタを維持させるためにホップサイズも2倍の128とする。
そのようにフレームサイズ(ここではホップサイズを含む)をテンポ値に応じて変更させることにより、分析により得られたパラメータによる音声データの合成を適切に行えるようになる。このため、SMF2001の再生と合わせた、合成された音声データによる発音も常に自然なものとなる。
フレームサイズ、ホップサイズは共に整数である。分析時テンポ値、合成時テンポ値の関係によってはそれらの値のうちの少なくとも一方が整数とならないことがある。このことから、実際の決定は、そうならないように考慮して行っている。
第2の実施例による音声変換装置を実現させるための電子楽器の動作については、分析処理(図14参照)では、分析時にテンポ値を取得してパラメータとして保存するようになっている部分、フレーム合成処理(図12参照)では、決定されたサイズで1フレーム分の音声データを合成するようになっている部分、が第1の実施例から主に異なっている。それ以外の処理では、図9に示す全体処理内でステップ902として実行されるスイッチ処理、及び楽音タイマインタラプト処理(図13参照)が第1の実施例が比較的に大きく異なっている。このことから、第2の実施例では、そのスイッチ処理、及びそのタイマインタラプト処理についてのみ説明することとする。
図22は、第2の実施例におけるスイッチ処理のフローチャートである。始めに図22を参照して、そのスイッチ処理について詳細に説明する。ここでは、第1の実施例と同じ、或いは特に区別する必要のないステップの処理には同一の符号を付して説明を省略することとする。
ステップ1001の判定がNOとなるか、ステップ1004、或いは1005の処理を実行することで移行するステップ2201では、スタートスイッチ21がオンされ、且つ変数play_flgの値が0か否か判定する。その変数play_flgは、SMF2001の再生を管理するための変数であり、0は未再生、1は再生中を示している。このことから、SMF2001が再生中でない状態でユーザがスタートスイッチ21を操作した場合、判定はYESとなり、変数file_numの値で指定されるパラメータファイル36をパラメータバッファ35に読み込み、SMF2001の再生の進行を管理するための単位時間計時用のタイマインタラプト処理の実行禁止を解除(図中では「同期クロック開始」と表記)し、更に変数play_flgに1を代入する処理をステップ2202で実行した後、ステップ2203に移行する。そうでない場合には、判定はNOとなって次にそのステップ2203の処理を実行する。
SMF2001を構成する時間データは、予め定められた単位時間(MIDIでは4分音符の1/24に相当する時間である)で時間が表現されている。上記タイマインタラプト処理(以降、便宜的に「計時用タイマインタラプト処理」と呼ぶ)は、その単位時間毎に発生する割り込み信号により実行される処理であり、その処理を実行することで更新される変数の値を参照することにより、時間データが表す処理タイミングの到来を判定するようにしている。その単位時間はテンポ値に応じて変動させることで、設定されたテンポ値に合った速さでSMF2001の再生を行えるようにしている。
ステップ2203では、ストップスイッチ22がオンされ、且つ変数play_flgの値が1か否か判定する。その変数play_flgの1が代入、即ちSMF2001の再生中にユーザがストップスイッチ22を操作した場合、判定はYESとなり、出力バッファをクリアしてそれに格納された音声データによる発音を終了させ、計時用タイマインタラプト処理の実行を禁止させ、更に変数play_flgに0を代入する処理をステップ2204で実行した後、ステップ2205に移行する。そうでない場合には、判定はNOとなって次にそのステップ2205の処理を実行する。
ステップ2205では、テンポ値を上げることを指示するためのアップスイッチ23aがオンされたか否か判定する。そのスイッチ23aをユーザが操作した場合、判定はYESとなり、ステップ2206でユーザ指定のテンポ値を代入した変数tempo_userの値をインクリメントし、更にステップ2207でフレームサイズを修正するフレーム修正処理を実行した後、ステップ2208に移行する。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ2208に移行する。
ステップ2208では、テンポ値を下げることを指示するためのダウンスイッチ23bがオンされたか否か判定する。そのスイッチ23bをユーザが操作した場合、判定はYESとなり、ステップ2209で変数tempo_userの値をデクリメントし、更にステップ2210でフレーム修正処理を実行した後、ステップ1012に移行する。そうでない場合には、判定はNOとなり、他のステップの処理を実行することなく、そのステップ1012に移行する。そのステップ1012以降の処理についての説明は省略する。
このように、第2の実施例では、ユーザがアップスイッチ23a、或いはダウンスイッチ23bを操作するたびに、合成時におけるフレームサイズを修正して更新するようにしている。それにより、常に適切なフレームサイズで音声データの合成を行えるようにしている。
図23は、上記ステップ2207、或いは2210として実行されるフレーム修正処理のフローチャートである。次に図23を参照して、その修正処理について詳細に説明する。
先ず、ステップ2301では、パラメータファイル36から読み出した分析時のテンポ値tempo_orgを変数tempo_userの値で除算し、その除算結果を分析時のホップサイズhop_sizeに乗算して得られる値の四捨五入した整数値(=INT(hop_size×tempo_org/tempo_user))を変数new_hop_sizeに代入する。続くステップ2302では、変数new_frame_sizeに、変数new_hop_sizeの値にオーバーラップファクタOLFの値(ここでは「8」を表記)を乗算した値を代入する。その次のステップ2303では、テンポ値tempo_orgに分析時のフレームサイズframe_sizeの値を乗算し、その乗算結果を変数new_frame_sizeの値で除算して得られる値の四捨五入した整数値(=INT(tempo_org×frame_size/new_frame_size))を変数tempoに代入する。一連の処理はその後に終了する。
このように、第2の実施例では、ユーザがテンポ値を変更すると、先ず、変更後のテンポ値に対応するホップサイズを整数値で求め、その求めたホップサイズから次に設定するフレームサイズを求め、求めたフレームサイズから実際に設定するテンポ値を求めている。それにより、ホップサイズ、フレームサイズ、及び実際のテンポ値を全て整数値で決定している。
図24は、第2の実施例における楽音タイマインタラプト処理のフローチャートである。これは、例えばサンプリング周期で発生する割り込み信号により実行される処理である。例えば図22に示すスイッチ処理において、変数ana_flg、及びplay_flgのうちの少なくとも一方に1を新たに代入したときに割り込み(実行)禁止が解除され(割り込みが有効とされ)、それらの値がともに0となったときに割り込みが禁止される(割り込みが無効とされる)ようになっている。最後に図24を参照して、そのタイマインタラプト処理について詳細に説明する。
先ず、ステップ2401では、入力した元音声データを分析するための分析処理を実行する。続くステップ2402では、変数play_flgの値が1か否か判定する。その変数に1が代入されていた場合、判定はYESとなってステップ2303に移行し、そうでない場合には、判定はNOとなり、ここで一連の処理を終了する。
ステップ2403では、上記計時用タイマインタラプト処理の実行によって更新される変数の値を参照してSMF2001の再生を進行させるSMF再生処理を実行する。その再生は、処理タイミングとなったMIDIデータを楽音発生部9に順次、送出していくことで行われる。その再生処理の実行後は、ステップ2404に移行する。
ステップ2404では、音声入力があるか否か判定する。マイク7に所定の音量以上の音量の元音声が入力されていなかった場合、音声入力はないとして判定はNOとなり、出力バッファに格納された音声データによる発音を終了させ、変数note_onに0を代入する処理をステップ2405で実行してから、一連の処理を終了する。そうでない場合には、判定はYESとなってステップ2406に移行する。その変数note_onはローカル変数であり、音声入力が継続している間、1を代入し、その間でなければ0を代入するようになっている。
ステップ2406では、変数note_onの値が1か否か判定する。音声入力が継続していた場合、それには1が代入されていることから、判定はYESとなってステップ2408に移行する。そうでない場合には、判定はNOとなり、出力バッファをクリアし、その先頭に位置するアドレス(ここでは1音声データを格納する領域のことである)を指定する値を変数out_buf_adrに代入し、パラメータバッファ35の先頭に位置するアドレス(ここではパラメータデータを格納する領域のことである)を指定する値を変数param_buf_adrに代入し、更に変数note_onに1を代入する処理をステップ2407で行った後、ステップ2411に移行する。
ステップ2408では、楽音生成部9を介して出力バッファの音声データをD/A変換器10に送出することにより楽音の発音を継続させる処理を実行する。このとき、MIDIデータで指示された楽音を発音中であった場合、楽音生成部9は、その楽音発音用に生成した波形データに音声データをmixさせる。
ステップ2408に続くステップ2409では、フレーム合成タイミングか否か判定する。そのタイミング(フレームサイズによってその周期は変動する)であった場合、判定はYESとなり、パラメータバッファ35の最後に位置するフレームのパラメータを読み出していなければ次にパラメータを読み出すべきフレームに応じて変数param_buf_adrの値を更新する(ステップ2410)。その更新後に移行するステップ2411では、パラメータバッファ35の変数param_buf_adrの値で指定されるアドレスからパラメータを読み込み、音声データの合成を行い、その合成によって得られた1フレーム分の音声データを既に生成した他のフレームに加算することにより、新たに合成した1フレーム分の音声データを出力バッファに保存された音声データに加える。具体的には、元音声データから抽出したピッチのRosenberg 波、及びホワイトノイズ波を生成し、生成したそれらの波形を有声音比率mixに応じて混合することにより駆動音源波形を生成し、生成した駆動音源波形、及びPARCOR係数から、テンポ値に応じて変化させるフレームサイズの音声データを合成し、合成した音声データにハニング窓を乗算した後、変数out_buf_adrの値で指定されるアドレスから既に生成した他のフレームに加算して重畳し、その重畳後に次のフレームの書き込みを開始すべきアドレスを指定する値をテンポ値に応じて変化させるホップサイズを考慮して決定し変数out_buf_adrに代入して更新する。一連の処理はその後に終了する。
このようにして、第2の実施例では、音声入力ありと判定した場合にのみ、音声データの合成を行うようにしている。それにより、音声データの合成を行わせる期間、そのタイミング、及びそれのピッチ(音高)を歌唱者が音声の発音を通して制御できるようにさせている。
なお、第2の実施例は、シーケンサーを搭載した電子楽器に本発明を適用したものであるが、シーケンサーを搭載していない装置に本発明を適用させても良い。その場合でも、SMPTE等の同期方法を使用することにより、シーケンサーによるシーケンスデータ(SMF等)の再生と同期させることができる。
フレームサイズの設定は、パラメータファイル36に格納された分析時テンポ値を基準にする形で行っているが、基準となるテンポ値としてはSMF2001等に設定されるテンポ値、或いはその再生時に設定されていたテンポ値などを採用するようにしても良い。そのテンポ値をユーザが任意に設定できるようにしても良い。このようなことから、分析時に必ずしもテンポ値をパラメータとして保存しなくとも良い。
本実施例(第1及び第2の実施例)は、音声分析と音声合成の両方を行えるようになっているが、それらは別の装置として実現させても良い。つまり本発明を適用させた音声分析装置、音声合成装置は必ずしも同じ装置に搭載しなくとも良い。そのようにしても、抽出したパラメータをデータファイルとして様々な人の間で交換することができる。
上述したような音声分析合成装置、音声分析装置、音声合成装置、或いはその変形例を実現させるようなプログラムは、CD−ROM、DVD、或いは光磁気ディスク等の記録媒体に記録させて配布しても良い。或いは、公衆網等で用いられる伝送媒体を介して、そのプログラムの一部、若しくは全部を配信するようにしても良い。そのようにした場合には、ユーザーはプログラムを取得してコンピュータなどのデータ処理装置にロードすることにより、そのデータ処理装置を用いて本発明を適用させた音声分析合成装置、音声分析装置、或いは音声合成装置を実現させることができる。このことから、記録媒体は、プログラムを配信する装置がアクセスできるものであっても良い。
1 CPU
3 スイッチ部
4 ROM
5 RAM
7 マイク
8 A/D変換器
9 楽音生成部
10 D/A変換器
11 アンプ
12 スピーカ
13 外部記憶装置

Claims (18)

  1. 第1の音声波形を分析し、該分析結果を用いて第2の音声波形の合成を行う音声分析合成装置において、
    前記第1の音声波形を分析してパラメータを抽出する第1の分析手段と、
    前記第1の音声波形を分析して該第1の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第2の分析手段と、
    音高を指定する音高指定手段と、
    声帯音源波形を模擬した音源波形を前記音高指定手段により指定された音高で生成する音源波形生成手段と、
    前記音高を持たない他の音源波形を生成する他の音源波形生成手段と、
    前記有声音比率を基に前記音源波形を前記他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及び前記パラメータを用いて前記第2の音声波形を合成する音声波形合成手段と、
    を具備することを特徴とする音声分析合成装置。
  2. 前記第1の音声波形から得られる前記パラメータ、及び有声音比率は、該パラメータ、及び有声音比率からなるデータ群を複数、格納できる記憶手段に格納し、
    前記音声波形合成手段は、前記記憶手段に格納されたデータ群のうちの一つを用いて前記第2の音声波形を合成する、
    ことを特徴とする請求項1記載の音声分析合成装置。
  3. 前記第1及び第2の分析手段は、前記第1の音声波形の分析をフレーム単位で行い、
    前記第1の分析手段は、前記パラメータの一つとして前記第1の音声波形の音高を抽出する場合、該第1の音声波形の周波数振幅値、及び位相情報を抽出し、該周波数振幅値の自己相関値を算出し、該自己相関値が最大となった周波数振幅値、及び該位相情報から該第1の音声波形の音高を抽出する、
    ことを特徴とする請求項1記載の音声分析合成装置。
  4. 前記第1の分析手段は、前記フレーム間の音高変化、及び該音高変化の継続を基に、前記第1の音声波形から抽出した音高を採用すべきか否か判定し採用する、
    ことを特徴とする請求項3記載の音声分析合成装置。
  5. 前記第2の分析手段は、前記第1の音声波形の周波数振幅値の自己相関値が分散している度合いを基に前記有声音比率を抽出する、
    ことを特徴とする請求項1、または3記載の音声分析合成装置。
  6. 第1の音声波形を分析し、該分析結果を用いて第2の音声波形の合成を行う音声分析合成装置において、
    前記第1の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得手段と、
    声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
    テンポ値を指示するためのテンポ指示手段と、
    前記テンポ指示手段により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第2の音声波形をフレーム単位で合成する音声合成手段と、
    を具備することを特徴とする音声分析合成装置。
  7. 前記音声合成手段は、前記パラメータ取得手段が取得したパラメータのなかにテンポ値が存在する場合、該テンポ値、及び前記テンポ指示手段により指示されたテンポ値を基に、前記サイズを決定する、
    ことを特徴とする請求項6記載の音声分析合成装置。
  8. 前記音源波形生成手段は、入力された音声から抽出された音高で前記音源波形を生成する、
    ことを特徴とする請求項6、または7記載の音声分析合成装置。
  9. 音声波形からパラメータを抽出する音声分析装置において、
    前記音声波形を取得する音声波形取得手段と、
    前記音声波形取得手段が取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第1の分析手段と、
    前記音声波形取得手段が取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、前記合成フィルタに入力される音源波形生成用のパラメータとして抽出する第2の分析手段と、
    を具備することを特徴とする音声分析装置。
  10. 音声波形を合成する音声合成装置において、
    第1の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得手段と、
    前記有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成手段と、
    前記フィルタ係数、及び前記駆動音源波形を用いて第2の音声波形を合成する音声波形合成手段と、
    を具備することを特徴とする音声合成装置。
  11. 音声波形からパラメータを抽出する音声分析装置において、
    前記音声波形を取得する音声波形取得手段と、
    前記音声波形取得手段が取得した音声波形を分析してパラメータをフレーム単位で抽出する分析手段と、
    前記音声波形取得手段が音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得手段と、
    前記分析手段が抽出したパラメータと併せて、前記テンポ値取得手段が取得したテンポ値をパラメータとして前記フレーム単位で保存するパラメータ保存手段と、
    を具備することを特徴とする音声分析装置。
  12. 音声波形を合成する音声合成装置において、
    第1の音声波形から抽出されたパラメータを取得するパラメータ取得手段と、
    テンポ値を指示するためのテンポ指示手段と、
    声帯音源波形を模擬した音源波形を生成する音源波形生成手段と、
    前記パラメータ取得手段が取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示手段により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第2の音声波形をフレーム単位で合成する音声合成手段と、
    を具備することを特徴とする音声合成装置。
  13. 第1の音声波形を分析し、該分析結果を用いて第2の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
    前記第1の音声波形を分析してパラメータを抽出する第1の分析機能と、
    前記第1の音声波形を分析して該第1の音声波形が表す音声が有声音である度合いを示す有声音比率を抽出する第2の分析機能と、
    音高を指定する音高指定機能と、
    声帯音源波形を模擬した音源波形を前記音高指定機能により指定された音高で生成する音源波形生成機能と、
    前記音高を持たない他の音源波形を生成する他の音源波形生成機能と、
    前記有声音比率を基に前記音源波形を前記他の音源波形と混合して駆動音源波形を生成し、該駆動音源波形、及び前記パラメータを用いて前記第2の音声波形を合成する音声波形合成機能と、
    を実現させるためのプログラム。
  14. 第1の音声波形を分析し、該分析結果を用いて第2の音声波形の合成を行う音声分析合成装置に実行させるプログラムであって、
    前記第1の音声波形をフレーム単位で分析して抽出されたパラメータを取得するパラメータ取得機能と、
    声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
    テンポ値を指示するためのテンポ指示機能と、
    前記テンポ指示機能により指示されたテンポ値を基に合成時におけるフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び前記パラメータから前記第2の音声波形をフレーム単位で合成する音声合成機能と、
    を実現させるためのプログラム。
  15. 音声波形からパラメータを抽出する音声分析装置に実行させるプログラムであって、
    前記音声波形を取得する音声波形取得機能と、
    前記音声波形取得機能により取得した音声波形を分析して、該音声波形の合成用の合成フィルタに用いられるフィルタ係数をパラメータとして抽出する第1の分析機能と、
    前記音声波形取得機能により取得した音声波形を分析して、該音声波形が表す音声が有声音である度合いを示す有声音比率を、前記合成フィルタに入力される音源波形生成用のパラメータとして抽出する第2の分析機能と、
    を実現させるためのプログラム。
  16. 音声波形を合成する音声合成装置に実行させるプログラムであって、
    第1の音声波形からパラメータとして抽出されたフィルタ係数、及び有声音比率を少なくとも取得するパラメータ取得機能と、
    前記有声音比率を基に、音高を有する音源波形、及び該音高を有さない他の音源波形から駆動音源波形を生成する駆動音源波形生成機能と、
    前記フィルタ係数、及び前記駆動音源波形を用いて第2の音声波形を合成する音声波形合成機能と、
    を実現させるためのプログラム。
  17. 音声波形からパラメータを抽出する音声分析装置に実行させるプログラムであって、
    前記音声波形を取得する音声波形取得機能と、
    前記音声波形取得機能により取得した音声波形を分析してパラメータをフレーム単位で抽出する分析機能と、
    前記音声波形取得機能により音声波形を取得した際に指定されていたテンポ値を取得するテンポ値取得機能と、
    前記分析機能により抽出したパラメータと併せて、前記テンポ値取得機能により取得したテンポ値をパラメータとしてフレーム単位で保存するパラメータ保存機能と、
    を実現させるためのプログラム。
  18. 音声波形を合成する音声合成装置に実行させるプログラムであって、
    第1の音声波形から抽出されたパラメータを取得するパラメータ取得機能と、
    テンポ値を指示するためのテンポ指示機能と、
    声帯音源波形を模擬した音源波形を生成する音源波形生成機能と、
    前記パラメータ取得機能により取得したパラメータにテンポ値が存在したとき、該テンポ値を前記テンポ指示機能により指示されたテンポ値と併せて考慮する形でフレームのサイズを決定し、該決定したサイズに従って、前記音源波形、及び該テンポ値以外のパラメータから第2の音声波形をフレーム単位で合成する音声合成機能と、
    を実現させるためのプログラム。
JP2009232943A 2009-10-07 2009-10-07 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム Pending JP2010002937A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2009232943A JP2010002937A (ja) 2009-10-07 2009-10-07 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009232943A JP2010002937A (ja) 2009-10-07 2009-10-07 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2003320310A Division JP4433734B2 (ja) 2003-09-11 2003-09-11 音声分析合成装置、音声分析装置、及びプログラム

Publications (1)

Publication Number Publication Date
JP2010002937A true JP2010002937A (ja) 2010-01-07

Family

ID=41584654

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009232943A Pending JP2010002937A (ja) 2009-10-07 2009-10-07 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム

Country Status (1)

Country Link
JP (1) JP2010002937A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011145326A (ja) * 2010-01-12 2011-07-28 Yamaha Corp 信号処理装置
JP2018054859A (ja) * 2016-09-28 2018-04-05 カシオ計算機株式会社 楽音生成装置、楽音生成方法、電子楽器、及びプログラム

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5814197A (ja) * 1981-07-17 1983-01-26 三菱電機株式会社 音声合成器
JPS6353999A (ja) * 1986-08-23 1988-03-08 株式会社日立製作所 電子装置のコネクタ嵌合診断を兼ねた焼損検出構造
JPH08202397A (ja) * 1995-01-30 1996-08-09 Olympus Optical Co Ltd 音声復号化装置
JPH09204185A (ja) * 1996-01-25 1997-08-05 Casio Comput Co Ltd 楽音発生装置
JPH10187188A (ja) * 1996-12-27 1998-07-14 Shinano Kenshi Co Ltd 音声再生方法と音声再生装置
JPH10268895A (ja) * 1997-03-28 1998-10-09 Yamaha Corp 音声信号処理装置
JP2000206972A (ja) * 1999-01-19 2000-07-28 Roland Corp 波形デ―タの演奏制御装置
JP2001255876A (ja) * 2000-03-13 2001-09-21 Yamaha Corp 時間軸方向における楽音波形信号の伸縮方法
JP2003044066A (ja) * 2001-07-31 2003-02-14 Daiichikosho Co Ltd ピッチシフター付きカラオケ装置
JP2005084660A (ja) * 2003-09-11 2005-03-31 Casio Comput Co Ltd 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5814197A (ja) * 1981-07-17 1983-01-26 三菱電機株式会社 音声合成器
JPS6353999A (ja) * 1986-08-23 1988-03-08 株式会社日立製作所 電子装置のコネクタ嵌合診断を兼ねた焼損検出構造
JPH08202397A (ja) * 1995-01-30 1996-08-09 Olympus Optical Co Ltd 音声復号化装置
JPH09204185A (ja) * 1996-01-25 1997-08-05 Casio Comput Co Ltd 楽音発生装置
JPH10187188A (ja) * 1996-12-27 1998-07-14 Shinano Kenshi Co Ltd 音声再生方法と音声再生装置
JPH10268895A (ja) * 1997-03-28 1998-10-09 Yamaha Corp 音声信号処理装置
JP2000206972A (ja) * 1999-01-19 2000-07-28 Roland Corp 波形デ―タの演奏制御装置
JP2001255876A (ja) * 2000-03-13 2001-09-21 Yamaha Corp 時間軸方向における楽音波形信号の伸縮方法
JP2003044066A (ja) * 2001-07-31 2003-02-14 Daiichikosho Co Ltd ピッチシフター付きカラオケ装置
JP2005084660A (ja) * 2003-09-11 2005-03-31 Casio Comput Co Ltd 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011145326A (ja) * 2010-01-12 2011-07-28 Yamaha Corp 信号処理装置
JP2018054859A (ja) * 2016-09-28 2018-04-05 カシオ計算機株式会社 楽音生成装置、楽音生成方法、電子楽器、及びプログラム

Similar Documents

Publication Publication Date Title
JP4207902B2 (ja) 音声合成装置およびプログラム
JP4645241B2 (ja) 音声処理装置およびプログラム
WO2018084305A1 (ja) 音声合成方法
JP6733644B2 (ja) 音声合成方法、音声合成システムおよびプログラム
JP2019061135A (ja) 電子楽器、電子楽器の楽音発生方法、及びプログラム
JP4433734B2 (ja) 音声分析合成装置、音声分析装置、及びプログラム
JP2007316269A (ja) 楽音合成装置及びプログラム
JP6737320B2 (ja) 音響処理方法、音響処理システムおよびプログラム
JP4844623B2 (ja) 合唱合成装置、合唱合成方法およびプログラム
JP4304934B2 (ja) 合唱合成装置、合唱合成方法およびプログラム
JP2010002937A (ja) 音声分析合成装置、音声分析装置、音声合成装置、及びプログラム
WO2018055892A1 (ja) 電子打楽器の音源
TW201027514A (en) Singing synthesis systems and related synthesis methods
JP2020166299A (ja) 音声合成方法
JPH11338480A (ja) カラオケ装置
JP4973426B2 (ja) テンポクロック生成装置およびプログラム
JP2000010597A (ja) 音声変換装置及び音声変換方法
JP2009237590A (ja) 音声効果付与装置
JP2004061753A (ja) 歌唱音声を合成する方法および装置
JP5953743B2 (ja) 音声合成装置及びプログラム
JP2000003200A (ja) 音声信号処理装置及び音声信号処理方法
JP5703555B2 (ja) 楽音信号処理装置及びプログラム
JP2011197564A (ja) 電子音楽装置及びプログラム
JP2018077281A (ja) 音声合成方法
JP3907838B2 (ja) 音声変換装置及び音声変換方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091008

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20091008

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20110831

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111004

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20120313