以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。
図1は、電子鍵盤楽器の一実施形態100の外観例を示す図である。電子鍵盤楽器100は、演奏操作子としての複数の鍵からなる鍵盤101と、音量の指定、ソング再生のテンポ設定、ソング再生開始、伴奏再生等の各種設定を指示する第1のスイッチパネル102と、ソングや伴奏の選曲や音色の選択等を行う第2のスイッチパネル103と、ソング再生時の歌詞、楽譜や各種設定情報を表示するLCD104(Liquid Crystal Display:液晶ディスプレイ)等を備える。また、電子鍵盤楽器100は、特には図示しないが、演奏により生成された楽音を放音するスピーカを裏面部、側面部、又は背面部等に備える。
図2は、図1の電子鍵盤楽器100の制御システム200の一実施形態のハードウェア構成例を示す図である。図2において、制御システム200は、CPU(中央演算処理装置)201、ROM(リードオンリーメモリ)202、RAM(ランダムアクセスメモリ)203、音源LSI(大規模集積回路)204、音声合成LSI205、図1の鍵盤101、第1のスイッチパネル102、及び第2のスイッチパネル103が接続されるキースキャナ206、及び図1のLCD104が接続されるLCDコントローラ208が、それぞれシステムバス209に接続されている。また、CPU201には、自動演奏のシーケンスを制御するためのタイマ210が接続される。更に、音源LSI204及び音声合成LSI205からそれぞれ出力される楽音出力データ218及び歌声音声出力データ217は、D/Aコンバータ211、212によりそれぞれアナログ楽音出力信号及びアナログ歌声音声出力信号に変換される。アナログ楽音出力信号及びアナログ歌声音声出力信号は、ミキサ213で混合され、その混合信号がアンプ214で増幅された後に、特には図示しないスピーカ又は出力端子から出力される。
CPU201は、RAM203をワークメモリとして使用しながらROM202に記憶された制御プログラムを実行することにより、図1の電子鍵盤楽器100の制御動作を実行する。また、ROM202は、上記制御プログラム及び各種固定データのほか、歌詞データ及び伴奏データを含む曲データを記憶する。
CPU201には、本実施形態で使用するタイマ210が実装されており、例えば電子鍵盤楽器100における自動演奏の進行をカウントする。
音源LSI204は、CPU201からの発音制御指示に従って、例えば特には図示しない波形ROMから楽音波形データを読み出し、D/Aコンバータ211に出力する。音源LSI204は、同時に最大256ボイスを発振させる能力を有する。
音声合成LSI205は、CPU201から、歌詞のテキストデータと音高に関する情報を歌声データ215として与えられると、それに対応する歌声の音声データを合成し、D/Aコンバータ212に出力する。
キースキャナ206は、図1の鍵盤101の押鍵/離鍵状態、第1のスイッチパネル102、及び第2のスイッチパネル103のスイッチ操作状態を定常的に走査し、CPU201に割り込みを掛けて状態変化を伝える。
LCDコントローラ609は、LCD505の表示状態を制御するIC(集積回路)である。
図3は、本実施形態における音声合成部、音響効果付加部、及び音声学習部の構成例を示すブロック図である。ここで、音声合成部302及び音響効果付加部320は、図2の音声合成LSI205が実行する一機能として電子鍵盤楽器100に内蔵される。
音声合成部302は、後述するソング再生処理により図1の鍵盤101上の押鍵に基づいて図2のキースキャナ206を介してCPU201から指示される歌詞及び音高の情報を含む歌声データ215を入力することにより、歌声音声出力データ321を合成し出力する。このとき音声合成部302のプロセッサは、鍵盤101上の複数の鍵(操作子)のなかのいずれかの鍵への操作に応じて、音響モデル部306に設定されている学習済み音響モデルに対して、歌詞情報と、いずれかの鍵に対応付けられている音高情報を含む歌声データ215を入力するとともに、その入力に応じて音響モデル部306が出力したスペクトル情報318と音源情報319とに基づいて、歌い手の歌声を推論した歌声音声出力データ321(第1音源情報使用推論歌声データ)を出力する音源情報使用推論歌声データ出力処理を実行する。
音響効果付加部320は、更に効果の情報が含まれる歌声データ215を入力することにより、音声合成部302が出力する歌声音声出力データ321に対して、ビブラート効果、トレモロ効果、又はワウ効果などの音響効果を付加し、最終的な歌声音声出力データ217(図2参照)を出力する。
音声学習部301は例えば、図3に示されるように、図1の電子鍵盤楽器100とは別に外部に存在するサーバコンピュータ300が実行する一機能として実装されてよい。或いは、図3には図示していないが、音声学習部301は、図2の音声合成LSI205の処理能力に余裕があれば、音声合成LSI205が実行する一機能として電子鍵盤楽器100に内蔵されてもよい。
図2の音声学習部301及び音声合成部302は、例えば下記非特許文献1に記載の「深層学習に基づく統計的音声合成」の技術に基づいて実装される。
(非特許文献1)
橋本佳,高木信二「深層学習に基づく統計的音声合成」日本音響学会誌73巻1号(2017),pp.55−62
図3に示されるように例えば外部のサーバコンピュータ300が実行する機能である図2の音声学習部301は、学習用テキスト解析部303と学習用音響特徴量抽出部304とモデル学習部305とを含む。
音声学習部301において、学習用歌声音声データ312としては、例えば適当なジャンルの複数の歌唱曲を或る歌い手が歌った音声を録音したものが使用される。また、学習用歌声データ311としては、各歌唱曲の歌詞テキストが用意される。
学習用テキスト解析部303は、歌詞テキストを含む学習用歌声データ311を入力してそのデータを解析する。この結果、学習用テキスト解析部303は、学習用歌声データ311に対応する音素、音高等を表現する離散数値系列である学習用言語特徴量系列313を推定して出力する。
学習用音響特徴量抽出部304は、上記学習用歌声データ311の入力に合わせてその学習用歌声データ311に対応する歌詞テキストを或る歌い手が歌うことによりマイク等を介して集録された学習用歌声音声データ312を入力して分析する。この結果、学習用音響特徴量抽出部304は、学習用歌声音声データ312に対応する音声の特徴を表す学習用音響特徴量系列314を抽出して出力する。
モデル学習部305は、下記(1)式に従って、学習用言語特徴量系列313(これを
と置く)と、音響モデル(これを
と置く)とから、学習用音響特徴量系列314(これを
と置く)が生成される確率(これを
と置く)を最大にするような音響モデル
を、機械学習により推定する。即ち、テキストである言語特徴量系列と音声である音響特徴量系列との関係が、音響モデルという統計モデルによって表現される。
ここで、
は、その右側に記載される関数に関して最大値を与える、その下側に記載されている引数を算出する演算を示す。
モデル学習部305は、(1)式によって機械学習を行った結果算出される音響モデル
を表現するモデルパラメータを学習結果315として出力する。
この学習結果315(モデルパラメータ)は例えば、図3に示されるように、図1の電子鍵盤楽器100の工場出荷時に、図2の電子鍵盤楽器100の制御システムのROM202に記憶され、電子鍵盤楽器100のパワーオン時に、図2のROM202から音声合成LSI205内の後述する音響モデル部306にロードされてよい。或いは、学習結果315は例えば、図3に示されるように、演奏者が電子鍵盤楽器100の第2のスイッチパネル103を操作することにより、特には図示しないインターネットやUSB(Universal Serial Bus)ケーブル等のネットワークからネットワークインタフェース219を介して、音声合成LSI205内の後述する音響モデル部306にダウンロードされてもよい。
音声合成LSI205が実行する機能である音声合成部302は、テキスト解析部307と音響モデル部306と発声モデル部308とを含む。音声合成部302は、歌詞テキストを含む歌声データ215に対応する歌声音声出力データ321を、音響モデル部306に設定された音響モデルという統計モデルを用いて予測することにより合成する、統計的音声合成処理を実行する。
テキスト解析部307は、自動演奏に合わせた演奏者の演奏の結果として、図2のCPU201より指定される歌詞の音素、音高等に関する情報を含む歌声データ215を入力し、そのデータを解析する。この結果、テキスト解析部307は、歌声データ215に対応する音素、品詞、単語等を表現する言語特徴量系列316を解析して出力する。
音響モデル部306は、言語特徴量系列316を入力することにより、それに対応する音響特徴量系列317を推定して出力する。即ち音響モデル部306は、下記(2)式に従って、テキスト解析部307から入力する言語特徴量系列316(これを再度
と置く)と、モデル学習部305での機械学習により学習結果315として設定された音響モデル
とに基づいて、音響特徴量系列317(これを再度
と置く)が生成される確率(これを
と置く)を最大にするような音響特徴量系列317の推定値
を推定する。
発声モデル部308は、音響特徴量系列317を入力することにより、CPU201より指定される歌詞テキストを含む歌声データ215に対応する歌声音声出力データ321を生成する。歌声音声出力データ321は、後述する音響効果付加部320にて音響効果が付加されて最終的な歌声音声出力データ217に変換され、図2のD/Aコンバータ212からミキサ213及びアンプ214を介して出力され、特には図示しないスピーカから放音される。
学習用音響特徴量系列314や音響特徴量系列317で表される音響特徴量は、人間の声道をモデル化したスペクトル情報と、人間の声帯をモデル化した音源情報とを含む。スペクトル情報(パラメータ)としては例えば、メルケプストラムや線スペクトル対(Line Spectral Pairs:LSP)等を採用できる。音源情報としては、人間の音声のピッチ周波数を示す基本周波数(F0)及びパワー値を採用できる。発声モデル部308は、音源生成部309と合成フィルタ部310とを含む。音源生成部309は、人間の声帯をモデル化した部分であり、音響モデル部306から入力する音源情報319の系列を順次入力することにより、例えば、音源情報319に含まれる基本周波数(F0)及びパワー値で周期的に繰り返されるパルス列(有声音音素の場合)、又は音源情報319に含まれるパワー値を有するホワイトノイズ(無声音音素の場合)、或いはそれらが混合された信号からなる音源信号を生成する。合成フィルタ部310は、人間の声道をモデル化した部分であり、音響モデル部306から順次入力するスペクトル情報318の系列に基づいて声道をモデル化するデジタルフィルタを形成し、音源生成部309から入力する音源信号を励振源信号として、デジタル信号の歌声音声出力データ321を生成し出力する。
学習用歌声音声データ312に対するサンプリング周波数は、例えば16KHz(キロヘルツ)である。また、学習用音響特徴量系列314及び音響特徴量系列317に含まれるスペクトルパラメータとして、例えばメルケプストラム分析処理により得られるメルケプストラムパラメータが採用される場合、その更新フレーム周期は、例えば5msec(ミリ秒)である。更に、メルケプストラム分析処理の場合、分析窓長は25msec、窓関数はブラックマン窓、分析次数は24次である。
音声合成部302から出力される歌声音声出力データ321は更に、音声合成LSI205内の音響効果付加部320により、ビブラート効果、トレモロ効果、又はワウ効果などの音響効果が付加される。
ビブラート効果とは、歌唱において音を伸ばすとき、音高の高さを所定の振れ幅(深さ)で周期的に振らす効果をいう。ビブラート効果を付加するための音響効果付加部320の構成としては、例えば下記特許文献2又は3に記載の技術を採用することができる。
<特許文献2>
特開平06−167976号公報
<特許文献3>
特開平07−199931号公報
トレモロ効果とは、同一又は複数の音を小刻みに演奏する効果をいう。トレモロ効果を付加するための音響効果付加部320の構成としては、例えば下記特許文献4に記載の技術を採用することができる。
<特許文献4>
特開平07−028471号公報
ワウ効果とは、バンドパスフィルタの利得がピークとなる周波数を動かすことによって、「ワウワウ」としゃべっているような効果を得るものである。ワウ効果を付加するための音響効果付加部320の構成としては、例えば下記特許文献5に記載の技術を採用することができる。
<特許文献5>
特開平05−006173号公報
演奏者は、歌声音声を指示するための鍵盤101(図1)上の第1鍵(第1操作子)によって、歌声音声出力データ321の出力を継続させている状態(第1鍵を押している状態)で、鍵盤101上の第2鍵(第2操作子)を繰り返し連打する操作を行うと、音響効果付加部320において、ビブラート効果、トレモロ効果、又はワウ効果のうち、第1のスイッチパネル102(図1)で予め選択した音響効果を付加させることができる。
この場合更に、演奏者は、歌声指定している第1鍵の音高に対して、連打する第2鍵を、第2鍵と第1鍵の音高差が所望の音高差となるように指定することにより、音響効果付加部320における音高効果の程度を可変させることができる。例えば、第2鍵と第1鍵の間の音高差が1オクターブ離れていれば、音響効果の深さ(デプス)の最大値が設定され、音高差が小さくなるにつれて音響効果の程度が弱くなるように可変させることができる。
なお、連打する鍵盤101上の第2鍵は、白鍵でもよいが、例えば黒鍵とした場合には、歌声音声の音高を指定するための第1鍵の演奏操作を邪魔しにくくて済む。
このように、本実施形態では、音声合成部302から出力される歌声音声出力データ321に対して、音響効果付加部320にて更に多彩な音響効果を付加させて、最終的な歌声音声出力データ217を生成することが可能となる。
なお、設定された時間(たとえば、数百ミリ秒)、第2鍵に対する押鍵を検出しない場合に、音響効果の付加を終了する。
別の実施例として、第1鍵が押されている状態で第2鍵が1度押されただけで、すなわち上述のように第2鍵が連打されていなくても、このような音響効果を付加してもよい。この場合も、第1鍵と第2鍵との間の音高差に応じて、このような音響効果の深さを変更してもよい。また、第2鍵が押されている間、音響効果を付加させて、第2鍵に対する離鍵の検出に応じて、音響効果の付加を終了してもよい。
また別の実施例としては、第1鍵が押されている状態で第2鍵が押された後、第1鍵が離鍵されても、このような音響効果を付加してもよい。また、第1鍵及び第2鍵を連打する「トリル」を検出することにより、このような音高効果を付加してもよい。
なお、本明細書においては、これらの音響効果を付加する演奏法のことを、便宜上、「いわゆるレガート奏法」と言う場合がある。
次に、図3の音声学習部301及び音声合成部302からなる統計的音声合成処理の第1の実施形態について説明する。統計的音声合成処理の第1の実施形態では、音響モデル部306に設定される学習結果315(モデルパラメータ)によって表現される音響モデルとして、前述した非特許文献1、及び下記非特許文献2に記載のHMM(Hidden Markov Model:隠れマルコフモデル)を用いる。
(非特許文献2)
酒向慎司、才野慶二郎、南角吉彦、徳田恵一、北村正「声質と歌唱スタイルを自動学習可能な歌声合成システム」情報処理学会研究報告音楽情報科学(MUS)2008(12(2008−MUS−074)),pp.39−44,2008−02−08
統計的音声合成処理の第1の実施形態では、ユーザが或るメロディーにそった歌詞を発声する際、声帯の振動や声道特性の歌声の特徴パラメータがどのような時間変化をしながら発声されるかが、HMM音響モデルによって学習される。より具体的には、HMM音響モデルは、学習用の歌声データから求めたスペクトル、基本周波数、およびそれらの時間構造を音素単位でモデル化したものである。
まず、HMM音響モデルが採用される図3の音声学習部301の処理について説明する。音声学習部301内のモデル学習部305は、学習用テキスト解析部303が出力する学習用言語特徴量系列313と、学習用音響特徴量抽出部304が出力する上記学習用音響特徴量系列314とを入力することにより、前述した(1)式に基づいて、尤度が最大となるHMM音響モデルの学習を行う。HMM音響モデルの尤度関数は下記(3)式で示される。
ここで、
はフレームtにおける音響特徴量、Tはフレーム数、
はHMM音響モデルの状態系列、
はフレームtにおけるHMM音響モデルの状態番号を表す。また、
は状態
から状態
への状態遷移確率を表し、
は平均ベクトル
、共分散行列
の正規分布であり、状態
の出力確率分布を表す。尤度最大化基準によるHMM音響モデルの学習は、期待値最大化(Expectation Maximization:EM)アルゴリズムを利用することで効率良く行われる。
歌声音声のスペクトルパラメータは、連続HMMによってモデル化することができる。一方、対数基本周波数(F0)は有声区間では連続値をとり、無声区間では値を持たない可変次元の時間系列信号であるため、通常の連続HMMや離散HMMで直接モデル化することはできない。そこで、可変次元に対応した多空間上の確率分布に基づくHMMであるMSD−HMM(Multi−Space probability DistributionHMM)を用い、スペクトルパラメータとしてメルケプストラムを多次元ガウス分布、対数基本周波数(F0)の有声音を1次元空間、無声音を0次元空間のガウス分布として同時にモデル化する。
また、歌声を構成する音素の特徴は、音響的な特徴は同一の音素であっても、様々な要因の影響を受けて変動することが知られている。例えば、基本的な音韻単位である音素のスペクトルや対数基本周波数(F0)は、歌唱スタイルやテンポ、或いは、前後の歌詞や音高等によって異なる。このような音響特徴量に影響を与える要因のことをコンテキストと呼ぶ。第1の実施形態の統計的音声合成処理では、音声の音響的な特徴を精度良くモデル化するために、コンテキストを考慮したHMM音響モデル(コンテキスト依存モデル)を採用することができる。具体的には、学習用テキスト解析部303は、フレーム毎の音素、音高だけでなく、直前、直後の音素や、現在位置、直前、直後のビブラートやアクセント等も考慮した学習用言語特徴量系列313を出力してよい。更に、コンテキストの組合せの効率化のために、決定木に基づくコンテキストクラスタリングが用いられてよい。これは、二分木を用いてHMM音響モデルの集合を木構造に分割することで、類似したコンテキストの組合せごとにHMM音響モデルをクラスタリングする手法である。木の各ノードには、「直前の音素は/a/であるか?」等のコンテキストを二分する質問があり、各リーフノードには、特定のHMM音響モデルに相当する学習結果315(モデルパラメータ)がある。任意のコンテキストの組合せは、ノードにある質問に沿って木を辿ることで、何れかのリーフノードに到達でき、そのリーフノードに対応する学習結果315(モデルパラメータ)を選択できる。適切な決定木構造を選択することで、高精度かつ汎化性能の高いHMM音響モデル(コンテキスト依存モデル)を推定することができる。
図4は、統計的音声合成処理の第1の実施形態における、HMMの決定木についての説明図である。コンテキストに依存するそれぞれの音素について、その音素の各状態は、例えば図4(a)に示される#1、#2、#3の3つの状態401からなるHMMに対応付けられる。各状態に対して入出力する矢印は、状態遷移を示している。例えば、状態401(#1)は例えば、その音素の開始付近をモデル化する状態である。また、状態401(#2)は例えば、その音素の中心付近をモデル化する状態である。更に、状態401(#3)は例えば、その音素の終了付近をモデル化する状態である。
また、音素長に依存して、図4(a)のHMMが示す#1から#3の各状態401が継続する長さが、図4(b)の状態継続長モデルにより決定される。図3のモデル学習部305は、図3の学習用テキスト解析部303が図3の学習用歌声データ311から抽出した状態継続長に関する多数の音素のコンテキストに対応する学習用言語特徴量系列313から、状態継続長を決定するための状態継続長決定木402を学習により生成し、学習結果315として音声合成部302内の音響モデル部306に設定する。
また、図3のモデル学習部305は例えば、図3の学習用音響特徴量抽出部304が図3の学習用歌声音声データ312から抽出したメルケプストラムパラメータに関する多数の音素に対応する学習用音響特徴量系列314から、メルケプストラムパラメータを決定するためのメルケプストラムパラメータ決定木403を学習により生成し、学習結果315として音声合成部302内の音響モデル部306に設定する。
更に、図3のモデル学習部305は例えば、図3の学習用音響特徴量抽出部304が図3の学習用歌声音声データ312から抽出した対数基本周波数(F0)に関する多数の音素に対応する学習用音響特徴量系列314から、対数基本周波数(F0)を決定するための対数基本周波数決定木404を学習により生成し、学習結果315として音声合成部302内の音響モデル部306に設定する。なお、前述したように、対数基本周波数(F0)の有声区間と無声区間はそれぞれ、可変次元に対応したMSD−HMMにより、1次元及び0次元のガウス分布としてモデル化され、対数基本周波数決定木404が生成される。
その他、図3のモデル学習部305は、図3の学習用テキスト解析部303が図3の学習用歌声データ311から抽出した状態継続長に関する多数の音素のコンテキストに対応する学習用言語特徴量系列313から、音高のビブラートやアクセント等のコンテキストを決定するための決定木を学習により生成し、学習結果315として音声合成部302内の音響モデル部306に設定してもよい。
次に、HMM音響モデルが採用される図3の音声合成部302の処理について説明する。音響モデル部306は、テキスト解析部307が出力する歌詞の音素、音高、その他のコンテキストに関する言語特徴量系列316を入力することにより、コンテキスト毎に図4に例示される各決定木402、403、404等を参照してHMMを連結し、連結した各HMMから出力確立が最大となる音響特徴量系列317(スペクトル情報318と音源情報319)を予測する。
このとき、音響モデル部306は、前述した(2)式に従って、テキスト解析部307から入力する言語特徴量系列316(=
)と、モデル学習部305での機械学習により学習結果315として設定された音響モデル(=
)とに基づいて、音響特徴量系列317(=
)が生成される確率(=
)を最大にするような音響特徴量系列317の推定値(=
)を推定する。ここで、前述した(2)式は、図4(b)の状態継続長モデルによって推定される状態系列
を用いることで、下記(4)式により近似される。
ここで、
であり、
と
はそれぞれ状態
における平均ベクトルと共分散行列である。言語特徴量系列
を用い、音響モデル部306に設定された各決定木を辿ることにより、平均ベクトルと共分散行列が算出される。(4)式より、音響特徴量系列317の推定値(=
)は平均ベクトル(=
)によって得られるが、
は状態が遷移する部分で階段状に変化する不連続な系列となる。このような不連続な音響特徴量系列317から合成フィルタ部310が歌声音声出力データ321を合成した場合、自然性という観点からは低品質な合成音声となってしまう。そこで、統計的音声合成処理の第1の実施形態では、モデル学習部305において動的特徴量を考慮した学習結果315(モデルパラメータ)の生成アルゴリズムが採用されてよい。静的特徴量
と動的特徴量
からフレームtにおける音響特徴量系列(=
)が構成されるとき、各時刻の音響特徴量系列(=
)は、下記(5)式で示される。
ここで、
は静的特徴量系列
から動的特徴量を含む音響特徴量系列
を求める行列である。モデル学習部305は、上述の(5)式を制約として前述の(4)式を、下記(6)式に示されるように解く。
ここで、
は、動的特徴量を制約としながら出力確率が最大となる静的特徴量系列である。動的特徴量を考慮することで状態境界の不連続が解決され、滑らかに変化する音響特徴量系列317を得ることができ、合成フィルタ部310において、高品質な歌声音声出力データ321を生成することが可能となる。
ここで、歌声データの音素境界は楽譜が定める音符の境界とは一致しないことが多い。このような時間的な揺らぎは、音楽表現という観点からは本質的なものといえる。そこで、上述のHMM音響モデルを採用した統計的音声合成処理の第1の実施形態において、歌声の発声において、発声する際の音韻の違いや音高やリズムなど、様々な影響を受けた時間の偏りがあると仮定し、学習データにおける発声のタイミングと楽譜とのずれをモデル化する技術が採用されてもよい。具体的には、音符単位のずれモデルとして、音符単位に見た歌声と楽譜のずれを1次元ガウス分布によって表し、他のスペクトルパラメータや対数基本周波数(F0)等と同様にして、コンテキストに依存したHMM音響モデルとして扱ってよい。このような、「ずれ」のコンテキストを含むHMM音響モデルを用いた歌声合成では、まず楽譜の表す時間境界を定めた後、音符単位のずれモデルと音素状態継続長モデルの両者の同時確率を最大化することで、学習データにおける音符の揺らぎを考慮した時間構造を決定することが可能となる。
次に、図3の音声学習部301及び音声合成部302からなる統計的音声合成処理の第2の実施形態について説明する。統計的音声合成処理の第2の実施形態では、言語特徴量系列316から音響特徴量系列317を予測するために、音響モデル部306がディープニューラルネットワーク(Deep Neural Network:DNN)により実装される。これに対応して、音声学習部301内のモデル学習部305は、言語特徴量から音響特徴量へのDNN内の各ニューロンの非線形変換関数を表すモデルパラメータを学習し、そのモデルパラメータを学習結果315として音声合成部302内の音響モデル部306のDNNに出力する。
通常、音響特徴量は例えば5.1msec(ミリ秒)幅のフレームを単位として算出され、言語特徴量は音素を単位として算出される。従って、音響特徴量と言語特徴量は時間単位が異なる。HMM音響モデルを採用した統計的音声合成処理の第1の実施形態では、音響特徴量と言語特徴量の対応はHMMの状態系列によって表現され,モデル学習部305は、音響特徴量と言語特徴量の対応関係を、図3の学習用歌声データ311及び学習用歌声音声データ312に基づき自動学習した。これに対して、DNNを採用した統計的音声合成処理の第2の実施形態では、音響モデル部306に設定されるDNNは、入力である言語特徴量系列316と出力である音響特徴量系列317の一対一の対応関係を表すモデルであるため、時間単位の異なる入出力データ対を用いてDNNを学習させることはできない。このため、統計的音声合成処理の第2の実施形態では、予めフレーム単位の音響特徴量系列と音素単位の言語特徴量系列の対応関係が設定され、フレーム単位の音響特徴量と言語特徴量の対が生成される。
図5は、上述の対応関係を示す音声合成LSI205の動作説明図である。例えば、童謡「きらきら星」の歌い出しの歌詞文字列「き」「ら」「き」(図5(a))に対応する言語特徴量系列である歌声音素列「/k/」「/i/」「/r/」「/a/」「/k/」「/i/」(図5(b))が得られているときに、これらの言語特徴量系列が、フレーム単位の音響特徴量系列(図5(c))に対して、1対多の関係(図5の(b)と(c)の関係)で対応付けられる。なお、言語特徴量は音響モデル部306におけるDNNへの入力として使用されるため、数値データとして表現する必要がある。このため、言語特徴量系列としては、「直前の音素は「/a/」であるか?」や「現在の単語に含まれる音素の数は?」等のコンテキストに関する質問に対する二値のデータ(0又は1)、或いは、連続値での回答を連結して得られる数値データが用意される。
統計的音声合成処理の第2の実施形態における図3の音声学習部301内のモデル学習部305は、図5の破線矢印群501として示されるように、フレーム単位で、図5(b)に対応する学習用言語特徴量系列313の音素列と図5(c)に対応する学習用音響特徴量系列314の対を音響モデル部306のDNNに順次与えて学習を行う。なお、音響モデル部306内のDNNは、図5のグレー色の丸印群として示されるように、入力層、1つ以上の中間層、及び出力層からなるニューロン群を含む。
一方、音声合成時には、上記フレーム単位で、図5(b)に対応する言語特徴量系列316の音素列が音響モデル部306のDNNに入力される。この結果、音響モデル部306のDNNは、図5の太実線矢印群502として示されるように、上記フレーム単位で、音響特徴量系列317を出力する。従って、発声モデル部308においても、上述のフレーム単位で、音響特徴量系列317に含まれる音源情報319及びスペクトル情報318がそれぞれ音源生成部309及び合成フィルタ部310に与えられて、音声合成が実行される。
この結果、発声モデル部308は、図5の太実線矢印群503として示されるように、フレーム毎に、例えば225サンプル(samples)ずつの歌声音声出力データ321を出力する。フレームは5.1msecの時間幅を有するため、1サンプルは「5.1msec÷225≒0.0227msec」であり、従って、歌声音声出力データ321のサンプリング周波数は1/0.0227≒44kHz(キロヘルツ)である。
DNNの学習は、フレーム単位の音響特徴量と言語特徴量の対を用いて、下記の(7)式で演算される二乗誤差最小化基準によって行われる。
ここで、
と
はそれぞれt番目のフレームtにおける音響特徴量と言語特徴量、
は音響モデル部306のDNNのモデルパラメータ、
はDNNによって表される非線形変換関数である。DNNのモデルパラメータは誤差逆伝播法によって効率良く推定することができる。前述した(1)式によって表される統計的音声合成におけるモデル学習部305の処理との対応関係を考慮すると、DNNの学習は下記の(8)式のように表すことができる。
ここで、下記(9)式が成立する。
上記(8)式及び(9)式のように、音響特徴量と言語特徴量の関係は、DNNの出力を平均ベクトルとする正規分布
によって表すことができる。DNNを用いた統計的音声合成処理の第2の実施形態では、通常、言語特徴量系列
に非依存な共分散行列、即ち全てのフレームにおいて同じ共分散行列
が用いられる。また、共分散行列
を単位行列とすると、(8)式は(7)式と等価な学習処理を示している。
図5で説明したように、音響モデル部306のDNNは、フレーム毎に独立に音響特徴量系列317を推定する。このため、得られる音響特徴量系列317には、合成音声の品質を低下させるような不連続が含まれる。そこで、本実施形態では例えば、統計的音声合成処理の第1の実施形態の場合と同様な、動的特徴量を用いたパラメータ生成アルゴリズムを利用することにより、合成音声の品質を改善することができる。
図3から図5で説明した統計的音声合成処理を利用した図1及び図2の電子鍵盤楽器100の実施形態の動作について、以下に詳細に説明する。図6は、本実施形態において、図2のROM202からRAM203に読み込まれる曲データのデータ構成例を示す図である。このデータ構成例は、MIDI(Musical Instrument Digital Interface)用ファイルフォーマットの一つであるスタンダードMIDIファイルのフォーマットに準拠している。この曲データは、チャンクと呼ばれるデータブロックから構成される。具体的には、曲データは、ファイルの先頭にあるヘッダチャンクと、それに続く歌詞パート用の歌詞データが格納されるトラックチャンク1と、伴奏パート用の演奏データが格納されるトラックチャンク2とから構成される。
ヘッダチャンクは、ChunkID、ChunkSize、FormatType、NumberOfTrack、及びTimeDivisionの4つの値からなる。ChunkIDは、ヘッダチャンクであることを示す"MThd"という半角4文字に対応する4バイトのアスキーコード「4D 54 68 64」(数字は16進数)である。ChunkSizeは、ヘッダチャンクにおいて、ChunkIDとChunkSizeを除く、FormatType、NumberOfTrack、及びTimeDivisionの部分のデータ長を示す4バイトデータであり、データ長は6バイト:「00 00 00 06」(数字は16進数)に固定されている。FormatTypeは、本実施形態の場合、複数トラックを使用するフォーマット1を意味する2バイトのデータ「00 01」(数字は16進数)である。NumberOfTrackは、本実施形態の場合、歌詞パートと伴奏パートに対応する2トラックを使用することを示す2バイトのデータ「00 02」(数字は16進数)である。TimeDivisionは、4分音符あたりの分解能を示すタイムベース値を示すデータであり、本実施形態の場合、10進法で480を示す2バイトのデータ「01 E0」(数字は16進数)である。
トラックチャンク1、2はそれぞれ、ChunkID、ChunkSizeと、DeltaTime_1[i]及びEvent_1[i](トラックチャンク1/歌詞パートの場合)又はDeltaTime_2[i]及びEvent_2[i](トラックチャンク2/伴奏パートの場合)からなる演奏データ組(0≦i≦L:トラックチャンク1/歌詞パートの場合、0≦i≦M:トラックチャンク2/伴奏パートの場合)とからなる。ChunkIDは、トラックチャンクであることを示す"MTrk"という半角4文字に対応する4バイトのアスキーコード「4D 54 72 6B」(数字は16進数)である。ChunkSizeは、各トラックチャンクにおいて、ChunkIDとChunkSizeを除く部分のデータ長を示す4バイトデータである。
DeltaTime_1[i]は、その直前のEvent_1[i−1]の実行時刻からの待ち時間(相対時間)を示す1〜4バイトの可変長データである。同様に、DeltaTime_2[i]は、その直前のEvent_2[i−1]の実行時刻からの待ち時間(相対時間)を示す1〜4バイトの可変長データである。Event_1[i]は、トラックチャンク1/歌詞パートにおいて、歌詞の発声タイミングと音高を指示するメタイベント(タイミング情報)である。Event_2[i]は、トラックチャンク2/伴奏パートにおいて、ノートオン又はノートオフを指示するMIDIイベント、又は拍子を指示するメタイベント(タイミング情報)である。トラックチャンク1/歌詞パートに対して、各演奏データ組DeltaTime_1[i]及びEvent_1[i]において、その直前のEvent_1[i−1]の実行時刻からDeltaTime_1[i]だけ待った上でEvent_1[i]が実行されることにより、歌詞の発声進行が実現される。一方、トラックチャンク2/伴奏パートに対して、各演奏データ組DeltaTime_2[i]及びEvent_2[i]において、その直前のEvent_2[i−1]の実行時刻からDeltaTime_2[i]だけ待った上でEvent_2[i]が実行されることにより、自動伴奏の進行が実現される。
図7は、本実施形態における電子楽器の制御処理例を示すメインフローチャートである。この制御処理は例えば、図2のCPU201が、ROM202からRAM203にロードされた制御処理プログラムを実行する動作である。
CPU201は、まず初期化処理を実行した後(ステップS701)、ステップS702からS708の一連の処理を繰り返し実行する。
この繰返し処理において、CPU201はまず、スイッチ処理を実行する(ステップS702)。ここでは、CPU201は、図2のキースキャナ206からの割込みに基づいて、図1の第1のスイッチパネル102又は第2のスイッチパネル103のスイッチ操作に対応する処理を実行する。
次に、CPU201は、図2のキー・スキャナ206からの割込みに基づいて図1の鍵盤101の何れかの鍵が操作されたか否かを判定して処理する鍵盤処理を実行する(ステップS703)。ここでは、CPU201は、演奏者による何れかの鍵の押鍵又は離鍵の操作に応じて、図2の音源LSI204に対して、発音開始又は発音停止を指示する楽音制御データ216を出力する。
次に、CPU201は、図1のLCD104に表示すべきデータを処理し、そのデータを、図2のLCDコントローラ208を介してLCD104に表示する表示処理を実行する(ステップS704)。LCD104に表示されるデータとしては、例えば演奏される歌声音声出力データ217に対応する歌詞とその歌詞に対応するメロディの楽譜や、各種設定情報がある。
次に、CPU201は、ソング再生処理を実行する(ステップS705)。この処理においては、CPU201が、演奏者の演奏に基づいて図5で説明した制御処理を実行し、歌声データ215を生成して音声合成LSI205に出力する。
続いて、CPU201は、音源処理を実行する(ステップS706)。音源処理において、CPU201は、音源LSI204における発音中の楽音のエンベロープ制御等の制御処理を実行する。
続いて、CPU201は、音声合成処理を実行する(ステップS707)。音声合成処理において、CPU201は、音声合成LSI205による音声合成の実行を制御する。
最後にCPU201は、演奏者が特には図示しないパワーオフスイッチを押してパワーオフしたか否かを判定する(ステップS708)。ステップS708の判定がNOならば、CPU201は、ステップS702の処理に戻る。ステップS708の判定がYESならば、CPU201は、図7のフローチャートで示される制御処理を終了し、電子鍵盤楽器100の電源を切る。
図8(a)、(b)、及び(c)はそれぞれ、図7のステップS701の初期化処理、図7のステップS702のスイッチ処理における後述する図9のステップS902のテンポ変更処理、及び同じく図9のステップS906のソング開始処理の詳細例を示すフローチャートである。
まず、図7のステップS701の初期化処理の詳細例を示す図8(a)において、CPU201は、TickTimeの初期化処理を実行する。本実施形態において、歌詞の進行及び自動伴奏は、TickTimeという時間を単位として進行する。図6の曲データのヘッダチャンク内のTimeDivision値として指定されるタイムベース値は4分音符の分解能を示しており、この値が例えば480ならば、4分音符は480TickTimeの時間長を有する。また、図6の曲データのトラックチャンク内の待ち時間DeltaTime_1[i]値及びDeltaTime_2[i]値も、TickTimeの時間単位によりカウントされる。ここで、1TickTimeが実際に何秒になるかは、曲データに対して指定されるテンポによって異なる。今、テンポ値をTempo[ビート/分]、上記タイムベース値をTimeDivisionとすれば、TickTimeの秒数は、次式により算出される。
TickTime[秒]=60/Tempo/TimeDivision (10)
そこで、図8(a)のフローチャートで例示される初期化処理において、CPU201はまず、上記(10)式に対応する演算処理により、TickTime[秒]を算出する(ステップS801)。なお、テンポ値Tempoは、初期状態では図2のROM202に所定の値、例えば60[ビート/秒]が記憶されているとする。或いは、不揮発性メモリに、前回終了時のテンポ値が記憶されていてもよい。
次に、CPU201は、図2のタイマ210に対して、ステップS801で算出したTickTime[秒]によるタイマ割込みを設定する(ステップS802)。この結果、タイマ210において上記TickTime[秒]が経過する毎に、CPU201に対して歌詞進行及び自動伴奏のための割込み(以下「自動演奏割込み」と記載)が発生する。従って、この自動演奏割込みに基づいてCPU201で実行される自動演奏割込み処理(後述する図10)では、1TickTime毎に歌詞進行及び自動伴奏を進行させる制御処理が実行されることになる。
続いて、CPU201は、図2のRAM203の初期化等のその他初期化処理を実行する(ステップS803)。その後、CPU201は、図8(a)のフローチャートで例示される図7のステップS701の初期化処理を終了する。
図8(b)及び(c)のフローチャートについては、後述する。図9は、図7のステップS702のスイッチ処理の詳細例を示すフローチャートである。
CPU201はまず、図1の第1のスイッチパネル102内のテンポ変更スイッチにより歌詞進行及び自動伴奏のテンポが変更されたか否かを判定する(ステップS901)。その判定がYESならば、CPU201は、テンポ変更処理を実行する(ステップS902)。この処理の詳細は、図8(b)を用いて後述する。ステップS901の判定がNOならば、CPU201は、ステップS902の処理はスキップする。
次に、CPU201は、図1の第2のスイッチパネル103において何れかのソング曲が選曲されたか否かを判定する(ステップS903)。その判定がYESならば、CPU201は、ソング曲読込み処理を実行する(ステップS904)。この処理は、図6で説明したデータ構造を有する曲データを、図2のROM202からRAM203に読み込む処理である。なお、ソング曲読込み処理は、演奏中でなくても、演奏開始前でもよい。これ以降、図6に例示されるデータ構造内のトラックチャンク1又は2に対するデータアクセスは、RAM203に読み込まれた曲データに対して実行される。ステップS903の判定がNOならば、CPU201は、ステップS904の処理はスキップする。
続いて、CPU201は、図1の第1のスイッチパネル102においてソング開始スイッチが操作されたか否かを判定する(ステップS905)。その判定がYESならば、CPU201は、ソング開始処理を実行する(ステップS906)。この処理の詳細は、図8(c)を用いて後述する。ステップS905の判定がNOならば、CPU201は、ステップS906の処理はスキップする。
続いて、CPU201は、図1の第1のスイッチパネル102においてエフェクト選択スイッチが操作されたか否かを判定する(ステップS907)。その判定がYESならば、CPU201は、エフェクト選択処理を実行する(ステップS908)。ここでは、前述したように、図3の音響効果付加部320が歌声音声出力データ321の発声音声に対して音響効果を付加するときに、ビブラート効果、トレモロ効果、又はワウ効果のうちどの音響効果を付加するかを、第1のスイッチパネル102によって演奏者に選択させる。この選択の結果、CPU201は、上記音響効果のうち演奏者が選択した何れかを、音声合成LSI205内の音響効果付加部320に設定する。ステップS907の判定がNOならば、CPU201は、ステップS908の処理はスキップする。
設定によっては、複数の効果を同時に付加するようにしてもよい。
最後に、CPU201は、図1の第1のスイッチパネル102又は第2のスイッチパネル103においてその他のスイッチが操作されたか否かを判定し、各スイッチ操作に対応する処理を実行する(ステップS909)。その後、CPU201は、図9のフローチャートで例示される図7のステップS702のスイッチ処理を終了する。
図8(b)は、図9のステップS902のテンポ変更処理の詳細例を示すフローチャートである。前述したように、テンポ値が変更されるとTickTime[秒]も変更になる。図8(b)のフローチャートでは、CPU201は、このTickTime[秒]の変更に関する制御処理を実行する。
まず、CPU201は、図7のステップS701の初期化処理で実行された図8(a)のステップS801の場合と同様にして、前述した(10)式に対応する演算処理により、TickTime[秒]を算出する(ステップS811)。なお、テンポ値Tempoは、図1の第1のスイッチパネル102内のテンポ変更スイッチにより変更された後の値がRAM203等に記憶されているものとする。
次に、CPU201は、図7のステップS701の初期化処理で実行された図8(a)のステップS802の場合と同様にして、図2のタイマ210に対して、ステップS811で算出したTickTime[秒]によるタイマ割込みを設定する(ステップS812)。その後、CPU201は、図8(b)のフローチャートで例示される図9のステップS902のテンポ変更処理を終了する。
図8(c)は、図9のステップS906のソング開始処理の詳細例を示すフローチャートである。
まず、CPU201は、自動演奏の進行において、TickTimeを単位として、直前のイベントの発生時刻からの相対時間をカウントするためのRAM203上の変数DeltaT_1(トラックチャンク1)及びDeltaT_2(トラックチャンク2)の値を共に0に初期設定する。次に、CPU201は、図6に例示される曲データのトラックチャンク1内の演奏データ組DeltaTime_1[i]及びEvent_1[i](1≦i≦L−1)の夫々iの値を指定するためのRAM203上の変数AutoIndex_1と、同じくトラックチャンク2内の演奏データ組DeltaTime_2[i]及びEvent_2[i](1≦i≦M−1)の夫々iを指定するためのRAM203上の変数AutoIndex_2の各値を共に0に初期設定する(以上、ステップS821)。これにより、図6の例では、初期状態としてまず、トラックチャンク1内の先頭の演奏データ組DeltaTime_1[0]とEvent_1[0]、及びトラックチャンク2内の先頭の演奏データ組DeltaTime_2[0]とEvent_2[0]がそれぞれ参照される。
次に、CPU201は、現在のソング位置を指示するRAM203上の変数SongIndexの値を0に初期設定する(ステップS822)。
更に、CPU201は、歌詞及び伴奏の進行をするか(=1)しないか(=0)を示すRAM203上の変数SongStartの値を1(進行する)に初期設定する(ステップS823)。
その後、CPU201は、演奏者が、図1の第1のスイッチパネル102により歌詞の再生に合わせて伴奏の再生を行う設定を行っているか否かを判定する(ステップS824)。
ステップS824の判定がYESならば、CPU201は、RAM203上の変数Bansouの値を1(伴奏有り)に設定する(ステップS825)。逆に、ステップS824の判定がNOならば、CPU201は、変数Bansouの値を0(伴奏無し)に設定する(ステップS826)。ステップS825又はS826の処理の後、CPU201は、図8(c)のフローチャートで示される図9のステップS906のソング開始処理を終了する。
図10は、図2のタイマ210においてTickTime[秒]毎に発生する割込み(図8(a)のステップS802又は図8(b)のステップS812を参照)に基づいて実行される自動演奏割込み処理の詳細例を示すフローチャートである。以下の処理は、図6に例示される曲データのトラックチャンク1及び2の演奏データ組に対して実行される。
まず、CPU201は、トラックチャンク1に対応する一連の処理(ステップS1001からS1006)を実行する。始めにCPU201は、SongStart値が1であるか否か、即ち歌詞及び伴奏の進行が指示されているか否かを判定する(ステップS1001)。
CPU201は、歌詞及び伴奏の進行が指示されていないと判定した(ステップS1001の判定がNOである)場合には、CPU201は、歌詞及び伴奏の進行は行わずに図10のフローチャートで例示される自動演奏割込み処理をそのまま終了する。
CPU201は、歌詞及び伴奏の進行が指示されていると判定した(ステップS1001の判定がYESである)場合には、トラックチャンク1に関する前回のイベントの発生時刻からの相対時刻を示すDeltaT_1値が、AutoIndex_1値が示すこれから実行しようとする演奏データ組の待ち時間DeltaTime_1[AutoIndex_1]に一致したか否かを判定する(ステップS1002)。
ステップS1002の判定がNOならば、CPU201は、トラックチャック1に関して、前回のイベントの発生時刻からの相対時刻を示すDeltaT_1値を+1インクリメントさせて、今回の割込みに対応する1TickTime単位分だけ時刻を進行させる(ステップS1003)。その後、CPU201は、後述するステップS1007に移行する。
ステップS1002の判定がYESになると、CPU201は、トラックチャック1に関して、AutoIndex_1値が示す演奏データ組のイベントEvent[AutoIndex_1]を実行する(ステップS1004)。このイベントは、歌詞データを含むソングイベントである。
続いて、CPU201は、トラックチャンク1内の次に実行すべきソングイベントの位置を示すAutoIndex_1値を、RAM203上の変数SongIndexに格納する(ステップS1004)。
更に、CPU201は、トラックチャンク1内の演奏データ組を参照するためのAutoIndex_1値を+1インクリメントする(ステップS1005)。
また、CPU201は、トラックチャンク1に関して今回参照したソングイベントの発生時刻からの相対時刻を示すDeltaT_1値を0にリセットする(ステップS1006)。その後、CPU201は、ステップS1007の処理に移行する。
次に、CPU201は、トラックチャンク2に対応する一連の処理(ステップS1007からS1013)を実行する。始めにCPU201は、トラックチャンク2に関する前回のイベントの発生時刻からの相対時刻を示すDeltaT_2値が、AutoIndex_2値が示すこれから実行しようとする演奏データ組の待ち時間DeltaTime_2[AutoIndex_2]に一致したか否かを判定する(ステップS1007)。
ステップS1007の判定がNOならば、CPU201は、トラックチャック2に関して、前回のイベントの発生時刻からの相対時刻を示すDeltaT_2値を+1インクリメントさせて、今回の割込みに対応する1TickTime単位分だけ時刻を進行させる(ステップS1008)。その後、CPU201は、図10のフローチャートで示される自動演奏割込み処理を終了する。
ステップS1007の判定がYESならば、CPU201は、伴奏再生を指示するRAM203上の変数Bansouの値が1(伴奏有り)であるか否かを判定する(ステップS1009)(図8(c)のステップS824からS826を参照)。
ステップS1009の判定がYESならば、CPU201は、AutoIndex_2値が示すトラックチャック2に関する伴奏に関するイベントEvent_2[AutoIndex_2]を実行する(ステップS1010)。ここで実行されるイベントEvent_2[AutoIndex_2]が、例えばノートオンイベントであれば、そのノートオンイベントにより指定されるキーナンバー及びベロシティにより、図2の音源LSI204に対して伴奏用の楽音の発音命令が発行される。一方、イベントEvent_2[AutoIndex_2]が、例えばノートオフイベントであれば、そのノートオフイベントにより指定されるキーナンバー及びベロシティにより、図2の音源LSI204に対して発音中の伴奏用の楽音の消音命令が発行される。
一方、ステップS1009の判定がNOならば、CPU201は、ステップS1010をスキップすることにより、今回の伴奏に関するイベントEvent_2[AutoIndex_2]は実行せずに、歌詞に同期した進行のために、次のステップS1011の処理に進んで、イベントを進める制御処理のみを実行する。
ステップS1010の後又はステップS1009の判定がNOの場合に、CPU201は、トラックチャンク2上の伴奏データのための演奏データ組を参照するためのAutoIndex_2値を+1インクリメントする(ステップS1011)。
また、CPU201は、トラックチャンク2に関して今回実行したイベントの発生時刻からの相対時刻を示すDeltaT_2値を0にリセットする(ステップS1012)。
そして、CPU201は、AutoIndex_2値が示す次に実行されるトラックチャンク2上の演奏データ組の待ち時間DeltaTime_2[AutoIndex_2]が0であるか否か、即ち、今回のイベントと同時に実行されるイベントであるか否かを判定する(ステップS1013)。
ステップS1013の判定がNOならば、CPU201は、図10のフローチャートで示される今回の自動演奏割込み処理を終了する。
ステップS1013の判定がYESならば、CPU201は、ステップS1009に戻って、AutoIndex_2値が示すトラックチャンク2上で次に実行される演奏データ組のイベントEvent_2[AutoIndex_2]に関する制御処理を繰り返す。CPU201は、今回同時に実行される回数分だけ、ステップS1009からS1013の処理を繰り返し実行する。以上の処理シーケンスは、例えば和音等のように複数のノートオンイベントが同時タイミングで発音されるような場合に実行される。
図11は、図7のステップS705のソング再生処理の詳細例を示すフローチャートである。
まずCPU201は、図10の自動演奏割込み処理におけるステップS1004で、RAM203上の変数SongIndexに、値がセットされてNull値でなくなっているか否かを判定する(ステップS1101)。このSongIndex値は、現在のタイミングが歌声の再生タイミングになっているか否かを示すものである。
ステップS1101の判定がYESになった、即ち現時点がソング再生のタイミングになったら、CPU201は、図7のステップS703の鍵盤処理により演奏者による図1の鍵盤101上で新たな押鍵が検出されているか否かを判定する(ステップS1102)。
ステップS1102の判定がYESならば、CPU201は、演奏者による押鍵により指定された音高を、発声音高として特には図示しないレジスタ又はRAM203上の変数にセットする(ステップS1103)。
続いて、CPU201は、RAM203上の変数SongIndexが示すRAM203上の曲データのトラックチャンク1上のソングイベントEvent_1[SongIndex]から、歌詞文字列を読み出す。CPU201は、読み出した歌詞文字列に対応する歌声音声出力データ321を、ステップS1103で設定された押鍵に基づく音高がセットされた発声音高で発声させるための歌声データ215を生成し、音声合成LSI205に対して発声処理を指示する(ステップS1105)。音声合成LSI205は、図3から図5を用いて説明した統計的音声合成処理の第1の実施形態又は第2の実施形態を実行することにより、RAM203から曲データとして指定される歌詞を、演奏者が鍵盤101上で押鍵した鍵の音高にリアルタイムに対応して歌う歌声音声出力データ217を合成して出力する。
一方、ステップS1101の判定により現時点がソング再生のタイミングになったと判定されると共に、ステップS1102の判定がNO、即ち現時点で新規押鍵が検出されていないと判定された場合には、CPU201は、RAM203上の変数SongIndexが示すRAM203上の曲データのトラックチャンク1上のソングイベントEvent_1[SongIndex]から音高のデータを読み出し、この音高を発声音高として特には図示しないレジスタ又はRAM203上の変数にセットする(ステップS1104)。
その後、CPU201は、前述したステップS1105の処理を実行することにより、ソングイベントEvent_1[SongIndex]から読み出した歌詞文字列に対応する歌声音声出力データ321を、ステップS1104で設定された発声音高で発声させるための歌声データ215を生成し、音声合成LSI205に対して発声処理を指示する(ステップS1105)。音声合成LSI205は、図3から図5を用いて説明した統計的音声合成処理の第1の実施形態又は第2の実施形態を実行することにより、演奏者が鍵盤101上でいずれの鍵も押鍵していなくても、RAM203から曲データとして指定される歌詞を、同じく曲データとしてデフォルト指定されている音高に対応して歌う歌声音声出力データ321を合成して出力する。
ステップS1105の処理の後、CPU201は、RAM203上の変数SongIndexが示す再生を行ったソング位置を、RAM203上の変数SongIndex_preに記憶させる(ステップS1106)。
更に、CPU201は、変数SongIndexの値をNull値にクリアして、これ以降のタイミングをソング再生のタイミングでない状態にする(ステップS1107)。その後、CPU201は、図11のフローチャートで示される図7のステップS705のソング再生処理を終了する。
前述したステップS1101の判定がNOである、即ち現時点がソング再生のタイミングではないときには、CPU201は、図7のステップS703の鍵盤処理により演奏者による図1の鍵盤101上で効果付加のための「いわゆるレガート奏法」が検出されているか否かを判定する(ステップS1108)。前述したように、このレガート奏法は、例えば、ステップS1102でソング再生のための第1鍵が押鍵がされている状態で、他の第2鍵を繰り返し連打する奏法である。この場合、CPU201は、ステップS11080において、第2鍵の押鍵を検出したときに、その押鍵の繰返し速度が所定の速度以上であるときに、レガート奏法が実行されていると判定する。
ステップS1108の判定がNOならば、CPU201はそのまま、図11のフローチャートで示される図7のステップS705のソング再生処理を終了する。
ステップS1108の判定がYESの場合には、CPU201は、ステップS1103で設定されている発声音高と、「いわゆるレガート奏法」により図1の鍵盤101上で繰り返し連打されている鍵の音高との音高差を計算する(ステップS1109)。
続いて、CPU201は、ステップS1109で計算した音高差に応じたエフェクト量を、図2の音声合成LSI205内の音響効果付加部320(図3)に設定する(ステップS1110)。この結果、音響効果付加部320は、音声合成部302内の合成フィルタ部310かから出力される歌声音声出力データ321に対して、図9のステップS908で選択された音響効果の付加処理を上記エフェクト量で実行し、最終的な歌声音声出力データ217(図2、図3)を出力する。
以上のステップS1109とステップS1110の処理により、音声合成部302から出力される歌声音声出力データ321に対して、ビブラート効果、トレモロ効果、又はワウ効果などの音響効果を付加することが可能となり、多彩な歌声表現が実現される。
ステップS1110の処理の後、CPU201は、図11のフローチャートで示される図7のステップS705のソング再生処理を終了する。
図3及び図4を用いて説明したHMM音響モデルを採用した統計的音声合成処理の第1の実施形態では、特定の歌い手や歌唱スタイルなどの微妙な音楽表現を再現することが可能となり、接続歪みのない滑らかな歌声音質を実現することが可能となる。更に、学習結果315(モデルパラメータ)の変換により、別の歌い手への適応や、多様な声質や感情を表現することが可能となる。更に、HMM音響モデルにおける全てのモデルパラメータを、学習用歌声データ311及び学習用歌声音声データ312からから自働学習できることにより、特定の歌い手の特徴をHMM音響モデルとして獲得し、合成時にそれらの特徴を再現するような歌声合成システムを自動的に構築することが可能となる。歌声の基本周波数や長さは楽譜のメロディやテンポに従うものであり、ピッチの時間変化やリズムの時間構造を楽譜から一意に定めることもできるが、そこから合成される歌声は単調で機械的なものになり,歌声としての魅力に欠けるものである。実際の歌声には,楽譜通りの画一化されたものだけではなく,声質のほかに声の高さやそれらの時間的な構造の変化により、それぞれの歌い手独自のスタイルが存在している。HMM音響モデルを採用する統計的音声合成処理の第1の実施形態では、歌声におけるスペクトル情報とピッチ情報の時系列変化をコンテキストに基づいてモデル化することができ、さらに楽譜情報を考慮することで、実際の歌声により近い歌声再生が可能となる。更に、統計的音声合成処理の第1の実施形態で採用されるHMM音響モデルは、あるメロディに沿った歌詞を発声する際、歌い手の声帯の振動や声道特性における歌声の音響特徴量系列がどのような時間変化をしながら発声されるか、という生成モデルに相当する。更に、統計的音声合成処理の第1の実施形態において、音符と歌声の「ずれ」のコンテキストを含むHMM音響モデルを用いることにより、歌い手の発声特性に依存して複雑に変化する傾向を有する歌唱法を正確に再現できる歌声音声の合成が実現される。このようなHMM音響モデルを採用する統計的音声合成処理の第1の実施形態の技術が、例えば電子鍵盤楽器100によるリアルタイム演奏の技術と融合されることにより、素片合成方式等による従来の電子楽器では不可能であった、モデルとなる歌い手の歌唱法及び声質を正確に反映させることのでき、まるでその歌い手が実際に歌っているような歌声の演奏を、電子鍵盤楽器100の鍵盤演奏等に合わせて、実現することが可能となる。
図3及び図5を用いて説明したDNN音響モデルを採用した統計的音声合成処理の第2の実施形態では、言語特徴量系列と音響特徴量系列の関係の表現として、統計的音声合成処理の第1の実施形態における決定木に基づくコンテキストに依存したHMM音響モデルが、DNNに置き換えられる。これにより、決定木では表現することが困難な複雑な非線形変換関数によって言語特徴量系列と音響特徴量系列の関係を表現することが可能となる。また、決定木に基づくコンテキストに依存したHMM音響モデルでは、決定木に基づいて対応する学習データも分類されるため、各コンテキストに依存したHMM音響モデルに割り当てられる学習データが減少してしまう。これに対し、DNN音響モデルでは学習データ全体から単一のDNNを学習するため、学習データを効率良く利用することが可能となる。このため、DNN音響モデルはHMM音響モデルよりも高精度に音響特徴量を予測することが可能となり、合成音声の自然性を大幅に改善することが可能となる。更に、DNN音響モデルでは、フレームに関する言語特徴量系列を利用可能することが可能となる。即ち、DNN音響モデルでは、予め音響特徴量系列と言語特徴量系列の時間的な対応関係が決められるため、HMM音響モデルでは考慮することが困難であった「現在の音素の継続フレーム数」、「現在のフレームの音素内位置」などのフレームに関する言語特徴量を利用することが可能となる。これにより、フレームに関する言語特徴量を用いることで、より詳細な特徴をモデル化することが可能となり,合成音声の自然性を改善することが可能となる。このようなDNN音響モデルを採用する統計的音声合成処理の第2の実施形態の技術が、例えば電子鍵盤楽器100によるリアルタイム演奏の技術と融合されることにより、鍵盤演奏等に基づく歌声の演奏を、モデルとなる歌い手の歌唱法及び声質に更に自然に近づけることが可能となる。
以上説明した実施形態では、音声合成方式として統計的音声合成処理の技術を採用することにより、従来の素片合成方式に比較して格段に少ないメモリ容量を実現することが可能となる。例えば、素片合成方式の電子楽器では、音声素片データのために数百メガバイトに及ぶ記憶容量を有するメモリが必要であったが、本実施形態では、図3の学習結果315のモデルパラメータを記憶させるために、わずか数メガバイトの記憶容量を有するメモリのみで済む。このため、より低価格の電子楽器を実現することが可能となり、高音質の歌声演奏システムをより広いユーザ層に利用してもらうことが可能となる。
更に、従来の素片データ方式では、素片データの人手による調整が必要なため、歌声演奏のためのデータの作成に膨大な時間(年単位)と労力を必要としていたが、本実施形態によるHMM音響モデル又はDNN音響モデルのための学習結果315のモデルパラメータの作成では、データの調整がほとんど必要ないため、数分の一の作成時間と労力で済む。これによっても、より低価格の電子楽器を実現することが可能となる。また、一般ユーザが、クラウドサービスとして利用可能なサーバコンピュータ300や或いは音声合成LSI205に内蔵された学習機能を使って、自分の声、家族の声、或いは有名人の声等を学習させ、それをモデル音声として電子楽器で歌声演奏させることも可能となる。この場合にも、従来よりも格段に自然で高音質な歌声演奏を、より低価格の電子楽器として実現することが可能となる。
以上説明した実施形態は、電子鍵盤楽器について本発明を実施したものであるが、本発明は電子弦楽器等他の電子楽器にも適用することができる。
また、図3の発声モデル部308として採用可能な音声合成方式は、ケプストラム音声合成方式には限定されず、LSP音声合成方式をはじめとして様々な音声合成方式を採用することが可能である。
更に、以上説明した実施形態では、HMM音響モデルを用いた統計的音声合成処理の第1の実施形態又はDNN音響モデルを用いた遠後の第2の実施形態の音声合成方式について説明したが、本発明はこれに限られるものではなく、例えばHMMとDNNを組み合わせた音響モデル等、統計的音声合成処理を用いた技術であればどのような音声合成方式が採用されてもよい。
以上説明した実施形態では、歌詞情報は曲データとして与えられたが、演奏者がリアルタイムに歌う内容を音声認識して得られるテキストデータが歌詞情報としてリアルタイムに与えられてもよい。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
各音高情報がそれぞれ対応付けられている複数の操作子と、
学習用歌詞情報及び学習用音高情報を含む学習用楽譜データと、歌い手の学習用歌声データと、を用いた機械学習処理により学習させた学習済み音響モデルであって、歌わせる歌詞情報と、音高情報と、を入力することにより、前記歌い手の声道をモデル化したスペクトル情報と、前記歌い手の声帯をモデル化した音源情報と、を出力する学習済み音響モデルを記憶しているメモリと、
プロセッサと、
を含み、
前記プロセッサは、前記複数の操作子のなかのいずれかの操作子への操作に応じて、前記学習済み音響モデルに対して、前記歌詞情報と、前記いずれかの操作子に対応付けられている音高情報と、を入力するとともに、前記入力に応じて前記学習済み音響モデルが出力した前記スペクトル情報と、前記音源情報と、に基づいて前記歌い手の歌声を推論した第1音源情報使用推論歌声データを出力する音源情報使用推論歌声データ出力処理、
を実行する電子楽器。
(付記2)
付記1に記載の電子楽器において、
前記メモリは、メロディデータと、自動演奏させる伴奏データと、を有する曲データを記憶しており、
前記メロディデータは、各音高情報と、前記各音高情報に応じた音を出力する各タイミング情報と、前記各音高情報に対応付けられている各歌詞情報と、を含み、
前記プロセッサは、
前記伴奏データに基づいて発音部に発音させる伴奏データ自動演奏処理と、
前記学習済み音響モデルに対して、操作された前記いずれかの操作子に対応付けられている音高情報を入力する代わりに、前記メロディデータに含まれる音高情報を入力するとともに、前記メロディデータに含まれる歌詞情報を入力する入力処理と、
を実行し、
前記音源情報使用推論歌声データ出力処理は、前記メロディデータに含まれるタイミング情報が示すタイミングに応じて前記複数の操作子のなかのいずれの操作子も演奏者に操作されなかった場合に、前記入力処理に応じて前記学習済み音響モデルから出力された前記スペクトル情報と、前記音源情報と、に基づいて、前記歌い手の歌声を推論した第2音源情報使用推論歌声データを、前記メロディデータに含まれるタイミング情報が示すタイミングに合わせて出力する。
(付記3)
付記1または付記2に記載の電子楽器において、
前記複数の操作子は、操作された前記いずれかの操作子としての第1操作子と、前記第1操作子からみて設定された条件を満たす第2操作子と、を含み、
前記音源情報使用推論歌声データ出力処理により前記第1音源情報使用推論歌声データが出力されている際に、前記第1操作子への操作が継続している状態で前記第2操作子が繰り返し操作された場合に、前記第1音源情報使用推論歌声データに対して少なくともビブラート、トレモロ及びワウワウのいずれかのエフェクトをかけるエフェクト処理、
を実行する。
(付記4)
付記3に記載の電子楽器において、
前記エフェクト処理は、前記第1操作子に対応付けられている音高情報が示す音高と、前記第2操作子に対応付けられている音高情報が示す音高と、の音高差に応じて前記エフェクトの程度を変更している。
(付記5)
付記3または4に記載の電子楽器において、
前記第2操作子は、黒鍵である。
(付記6)
各音高情報がそれぞれ対応付けられている複数の操作子と、
学習用歌詞情報及び学習用音高情報を含む学習用楽譜データと、歌い手の学習用歌声データと、を用いた機械学習処理により学習させた学習済み音響モデルであって、歌わせる歌詞情報と、音高情報と、を入力することにより、前記歌い手の声道をモデル化したスペクトル情報と、前記歌い手の声帯をモデル化した音源情報と、を出力する学習済み音響モデルを記憶しているメモリと、
を含む電子楽器のコンピュータに、
前記複数の操作子のなかのいずれかの操作子への操作に応じて、前記学習済み音響モデルに対して、前記歌詞情報と、前記いずれかの操作子に対応付けられている音高情報と、を入力するとともに、前記入力に応じて前記学習済み音響モデルが出力した前記スペクトル情報と、前記音源情報と、に基づいて前記歌い手の歌声を推論した第1音源情報使用推論歌声データを出力する音源情報使用推論歌声データ出力処理、
を実行させる方法。
(付記7)
各音高情報がそれぞれ対応付けられている複数の操作子と、
学習用歌詞情報及び学習用音高情報を含む学習用楽譜データと、歌い手の学習用歌声データと、を用いた機械学習処理により学習させた学習済み音響モデルであって、歌わせる歌詞情報と、音高情報と、を入力することにより、前記歌い手の声道をモデル化したスペクトル情報と、前記歌い手の声帯をモデル化した音源情報と、を出力する学習済み音響モデルを記憶しているメモリと、
を含む電子楽器のコンピュータに、
前記複数の操作子のなかのいずれかの操作子への操作に応じて、前記学習済み音響モデルに対して、前記歌詞情報と、前記いずれかの操作子に対応付けられている音高情報と、を入力するとともに、前記入力に応じて前記学習済み音響モデルが出力した前記スペクトル情報と、前記音源情報と、に基づいて前記歌い手の歌声を推論した第1音源情報使用推論歌声データを出力する音源情報使用推論歌声データ出力処理、
を実行させるプログラム。