JP7183556B2 - 合成音生成装置、方法、及びプログラム - Google Patents

合成音生成装置、方法、及びプログラム Download PDF

Info

Publication number
JP7183556B2
JP7183556B2 JP2018057343A JP2018057343A JP7183556B2 JP 7183556 B2 JP7183556 B2 JP 7183556B2 JP 2018057343 A JP2018057343 A JP 2018057343A JP 2018057343 A JP2018057343 A JP 2018057343A JP 7183556 B2 JP7183556 B2 JP 7183556B2
Authority
JP
Japan
Prior art keywords
fundamental wave
data
wave data
storage
unit
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.)
Active
Application number
JP2018057343A
Other languages
English (en)
Other versions
JP2019168620A (ja
Inventor
淳一郎 副島
博康 井手
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 JP2018057343A priority Critical patent/JP7183556B2/ja
Publication of JP2019168620A publication Critical patent/JP2019168620A/ja
Application granted granted Critical
Publication of JP7183556B2 publication Critical patent/JP7183556B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Electrophonic Musical Instruments (AREA)

Description

本発明は、音声波形を接続して合成音を生成する合成音生成装置、方法、及びプログラムに関する。
従来、複数の音素片データ(以下「素片データ」と記する)を接続して合成音を生成する合成音生成装置が知られている。素片接続型の音声合成において、より自然な聴感を得るためには、指定されたピッチ遷移に忠実であること、かつ、素片同士の接続部が滑らかに連続していることなどが必須である。これらを同時に実現するためには、なるべく連続する区間を採用できるような、元音声情報を大量に搭載する音素片辞書、あるいは、音素の切れ目が正確に定義されている音素片辞書が必要となる。
しかしながら、例えば、「あ」「い」「う」「え」「お」などの母音を使って、歌声の入力や楽器の演奏に合わせてハミング音声を合成して発声するような合成音生成装置を実現しようとする場合に、歌声や楽器演奏により入力される音高(音階)毎に素片データを記憶させる必要がある。このため、あまり長い素片データを記憶させることはコスト的に難しく、500~1000msec(ミリ秒)程度の長さの素片データが用いられることが多い。この場合に、上記時間長以上の長さの音符長のハミング音声を合成する場合には、上記時間長の素片データが繰り返し再生されることになる。上記時間長の素片データは、例えば母音「あ」が安定したピッチで発声される音声データから作成されるが、このような素片データの開始位置と終了位置とでは、微妙なピッチや声質の差がある。このため、このような素片データが繰り返し再生されると、上記500~1000msecの時間長の周期を有する、うなりのような周期音が聞こえてしまう。
このような課題を解決するために、次のような従来技術が知られている(例えば特許文献1)。この従来技術では、時間軸上の異なる位置から抽出され、記憶された複数の単位波形がランダムに選択されるとともに、選択された複数の単位波形をクロスフェードすることによって合成音が生成される。この場合、複数の単位波形の各々の位相が、隣り合う各々の単位波形間の相互相関関数が最大となるように、調整される。
特許第5915264号
しかし、上述した従来の合成音生成装置では、ランダムに選択された複数の単位波形を互いに接続することによって合成音が生成されるので、相関の低い単位波形同士が接続される場合があり、その場合には、それにより合成音が劣化してしまう。
そこで、本発明は、品質の劣化を抑えることのできる合成音を合成することを目的とする。
態様の一例である合成音生成装置では、複数の音素片データと、前記複数の音素片データをピッチ周期毎に分割して得られる複数の基本波データの夫々について前記基本波データと相関の高い他の基本波データの記憶位置を示す記憶位置情報を前記相関の高い順に並べて登録した基本波相関テーブルと、を記憶する記憶部と、前記記憶部に記憶される前記複数の基本波データのうちから、先の基本波データを選択して読み出した後に、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち前記相関が高い記憶位置情報を優先的に選択し、前記選択した記憶位置情報に対応する記憶位置に記憶されている基本波データを前記先の基本データに類似する次の基本波データとして読み出し、読み出された前記先の基本波データと前記次の基本波データとを接続することにより合成音を生成する生成部と、を有する。
本発明によれば、品質の劣化を抑えることのできる合成音を合成することが可能となる。
合成音生成装置の実施形態のハードウェア構成例を示す図である。 基本波相関テーブルの説明図である。 基本波相関テーブルを用いた本実施形態の動作説明図(その1)である。 基本波相関テーブルを用いた本実施形態の動作説明図(その2)である。 合成用音声データベースのデータ構成例を示す図である。 セグメントデータのデータ構成例を示す図である。 本実施形態の制御処理を示すメインフローチャートである。 セグメンテーション処理の詳細例を示すフローチャートである。 合成処理の詳細例を示すフローチャートである。
以下、本発明を実施するための形態について図面を参照しながら詳細に説明する。図1は、合成音生成装置の実施形態のハードウェア構成例を示す図である。
図1に示す合成音生成装置100は、CPU(セントラルプロセッシングユニット:中央演算処理装置)101、ROM(リードオンリーメモリ)102、RAM(ランダムアクセスメモリ)103、外部記憶装置104、入力装置105、表示装置106、通信インタフェース107、および可搬記録媒体108aが挿入される可搬記録媒体駆動装置108、歌唱者の音声を入力するマイクロフォン及びA/Dコンバータ等を含む音声取得部110、及び合成音を放音するためのD/Aコンバータ、アンプ、及びスピーカ等を含む音声出力部111を有し、これらがシステムバス109によって相互に接続された構成を有する。同図に示される構成は上記制御装置100を実現できるコンピュータの一例であり、そのようなコンピュータはこの構成に限定されるものではない。
CPU101は、当該合成音生成装置100全体の制御を行う。ROM102は、制御処理プログラム及びそのプログラムの実行時に必要な定数データ等を記憶する読出し専用メモリである。RAM103は、上記プログラムまたはデータを一時的に格納する読み書き可能メモリである。CPU101は、上記制御処理プログラム等をROM102からRAM103に読み出して実行することにより、全体の制御を行う。
外部記憶装置104は、例えばSSDなどの半導体ディスク記憶装置である。主に後述する素片データや基本波相関テーブルの保存に用いられる。
入力装置105は、ユーザによるキーボードやマウス等による入力操作を検出し、その検出結果をCPU101に通知する。
表示装置106は、CPU101の制御によって送られてくる各種表示データを表示するディスプレイ装置である。
通信インタフェース107は、例えばLAN(ローカルエリアネットワーク)またはWAN(ワイドエリアネットワーク)の通信回線を接続するための装置である。
可搬記録媒体駆動装置108は、USBメモリ、SDカードメモリ、コンパクトフラッシュ(登録商標)メモリや、CD-ROM、DVD、光ディスク等の可搬記録媒体108aを収容するもので、外部記憶装置104の補助の役割を有する。
本実施形態の合成音生成装置100は、後述する図6から図8のフローチャート等で実現される制御処理プログラムをCPU101が実行する。このプログラムは、例えば外部記憶装置104や可搬記録媒体108aに記録して配布してもよく、或いは通信インタフェース107によりネットワークから取得できるようにしてもよい。
図1に示される合成音生成装置100の実施形態の動作について、以下に詳細に説明する。本実施形態は例えば、歌唱者が歌う歌声に合わせて、ハミング音声を合成音として合成して歌唱演奏を行う歌唱装置などとして実現される。このような合成音生成装置100は例えば、発話可能なロボットに組み込まれて使用される。これにより例えば、ロボットの近くにいる歌唱者が歌を歌うと、ロボットがそれに合わせてハミングをするというような効果を奏することが実現される。
このような機能を有する合成音生成装置100においては、まず、記憶部として機能する外部記憶装置104は、複数の音高をそれぞれ有する複数の素片データ(音素片データ)を記憶する。なお、素片データ200は、後述する制御処理の開始時に、外部記憶装置104からRAM103にロードされてもよい。このような素片データは例えば、歌手が様々な音高で口ずさんだ500~数千msec程度の長さのハミング音声を録音してデジタル化したものである。ハミング音声はそれぞれ例えば、所定の音高に対応するピッチ周期を有する母音(「あ」「い」「う」「え」「お」の何れか)のみからなる有声音である。
ここで、図1の音声取得部110は、例えば、マイクロフォンなどで構成されており、例えば合成音生成装置100がロボットに搭載される場合、ロボットのユーザが歌った入力音声を取得する。これに対して、CPU101は、入力音声を分析する例えば数msecの時間単位であるフレーム毎に、入力音声からピッチ周波数を取得し、各ピッチ周波数に対して所定の変換(例えば半音アップ又はダウン等)を行った上で目標ピッチを決定する(目標ピッチ決定部)。次に、CPU101は、フレーム毎に決定された目標ピッチに基づいて、入力音声に対して、それぞれが同じ素片データを連続して割り当てることが可能な期間であるセグメントにセグメンテーションする(セグメンテーション部)。そして、CPU101は、上記セグメント毎に、そのセグメントに対応する素片データを外部記憶装置104等から読み出して、合成音を生成する(生成部)。
ここで、各セグメントの時間長が、そのセグメントに対して読み出される素片データの時間長よりも長い場合に、なんらかの制御処理によりその素片データからそのセグメントの時間長分のデータを合成する必要がある。このとき、「背景技術」において説明したように、単純に、素片データを先頭から末尾まで再生した後に再び先頭から再生してセグメントに対応する時間長を有するデータを合成した場合には、素片データの時間長に対応する周期音が発生してしまう。
そこで、本実施形態では、生成部として動作するCPU101が、セグメントに対応する素片データを外部記憶装置104等に対して指定するときに、その素片データをピッチ周期毎に分割して得られる複数の基本波データのうちから、最初の1つの基本波データを選択して読み出した後に現在読み出した基本波データに類似する基本波データを次に選択して読み出すようにして、順次読み出された基本波データを接続することにより、セグメントに対応する所望の時間長を有する合成音を生成する。
より具体的には、素片データ毎に、その素片データをピッチ周期毎に分割して得られる複数の基本波データの夫々について、その基本波データと相関の高い他の基本波データの記憶位置を示す記憶位置情報を、相関の高い順に並べて登録した基本波相関テーブルが、予め作成されて図1の外部記憶装置104等に記憶される。
図2は、基本波相関テーブルの説明図である。まず、図2の200は、素片データの時間域波形の例を示す図である。本実施形態で使用される素片データ200は、ピッチ周期で周期的に繰り返す201(#0)、201(#1)、201(#2)、201(#3)、・・・として示される波形セット、即ち上述した基本波データ201が接続されたものである。
上述のような素片データ200に対して、予め、図2に示される基本波相関テーブル202が作成される。この基本波相関テーブル202は、後述する制御処理の実行開始時に、例えば外部記憶装置104(又はROM102)からRAM103にロードされる。基本波相関テーブル202において、左端上から下方向に0から18までの数字で示される基本波インデックスは、図2の#0から#3の4本の破線矢印203で示されるように、素片データ200の先頭の基本波データ201(#0)のインデックスを0番目として、それ以降順次、1番目、2番目、3番目、・・・の各基本波データ201(#1)、201(#2)、201(#3)のインデックスに対応している。図2では、18番目までしか示されていないが、実際には、素片データ200に含まれる基本波データ201の数をpitchWaveCountとすれば、末尾の基本波データ201(pitchWaveCount-1)に対応するインデックスpitchWaveCount-1まで登録されている。
次に、基本波相関テーブル202上の左端上から下方向のインデックス毎に、そのインデックスを有する基本波データ201(これを「接続元基本波データ201」と呼ぶ)と他の各基本波データ201との相関が計算される。そして、相関の高い例えば1位から10位までの他の基本波データ201の各インデックスが、基本波相関テーブル202上の上記接続元基本波データ201のインデックスに対応する横方向の行と、基本波相関テーブル202の上端左横から右横方向の0から9までの数字で示される相関順位に対応する縦方向の各列との交差部分に対応する記憶位置に登録される。
例えば、図2の基本波データ201(#0)に対応する破線矢印203(#0)で示されるインデックス0の行において、相関順位0の列には、基本波データ201(#0)と最も相関が高い基本波データ201(#1)を示すインデックス値1が登録される。同様に、インデックス0の行において、相関順位1の列には、基本波データ201(#0)と2番目に相関が高い基本波データ201(#16)に対応するインデックス値16が登録される。以下同様に、相関順位2~9の各列には、基本波データ201(#0)と3~10番目に相関が高い各基本波データ201に対応するインデックス値が登録される。
図2の#1~#3の各基本波データ201に対応する#1~#3の各破線矢印203で示される各インデックス1、2、3の各行において、相関順位0~9の各列には、#1~#3の基本波データ201とそれぞれ1~10番目に相関が高い他の各基本波データ201に対応するインデックス値が登録される。以下、左端上から下方向の値が4以降の各基本波データ201のインデックスについても、同様である。
素片データ200から合成音を生成するときに、発声されるべきセグメントの時間長が素片データ200の時間長よりも短ければ、素片データ200を、その先頭サンプルから順に、上記セグメントの時間長分だけ読み出して合成音を生成すれば、素片データ200を作成したときの原音に最も忠実な高音質の合成音を発声させることができる。
しかし、セグメントの時間長が、そのセグメントに対して読み出される素片データの時間長よりも長い場合には、前述したように、単純に素片データを先頭から末尾まで再生した後に再び先頭から再生してセグメントに対応する時間長を有するデータを合成した場合には、素片データの時間長に対応する周期音が発生してしまう。そこで、本実施形態では、CPU101は、前述したように、現在読み出した基本波データ201に類似する基本波データ201を次に選択して読み出すときに、図2の基本波相関テーブル202上で現在読み出した基本波データ201のインデックス(左端上から下方向の数値)に関して例えば相関順位0~9に対応して登録されているインデックスのうち、相関が高いインデックスを優先的に選択し、その選択したインデックスに対応する基本波データ201を次に読み出す。
図3及び図4は、基本波相関テーブル202を用いた上述の本実施形態の動作の説明図である。図3は、生成される合成音の基本波データ201の連番である「合成音#」と、各合成音#に対して読み出される素片データ200中の基本波データ201のインデックスである「基本波#」と、読み出された基本波#に対して次に参照される基本波相関テーブル202上の「相関順位」(図2参照)と、上記基本波#と相関順位とに対応する基本波相関テーブル202上の登録位置から読み出されるインデックスであって、上記基本波#の基本波データ201の次に読み出される基本波データ201のインデックスである「次基本波#」との関係を説明するテーブルである。図4は、図3のテーブルに対応して順次読み出される素片データ200中の各基本波データ201のインデックスと、それに対応して順次生成される合成音300中の各基本波データ201のインデックスとの関係例を示す図である。
CPU101は、図3に示されるように、合成音#=0の基本波データ201として、素片データ200中の基本波#=0の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#0))。次に、CPU101は、基本波相関テーブル202において、基本波#=0に対応する行と相関順位=0に対応する列の交差位置に対応する記憶位置から、次基本波#=1のインデックスを選択する。なお、CPU101は、基本波#=0については最高の相関順位=0の列を優先的に参照する。
この結果、CPU101は、図3に示されるように、合成音#=1の基本波データ201として、素片データ200中の基本波#=1の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#1))。次に、CPU101は、基本波相関テーブル202において、基本波#=1に対応する行と相関順位=1に対応する列の交差位置に対応する記憶位置から、次基本波#=16のインデックスを選択する。なお、基本波#=0以外の基本波#についてはデフォルトでは2番目の相関順位=1の列を参照する。2番目の相関順位が参照される理由は、1番目の相関順位だと基本波#を参照した元の基本波データ201のインデックスが次基本波#として選択されてしまう可能性が高く、選択が2つの基本波データ201の間で循環してしまう可能性があるので、それを回避するためである。
この結果、CPU101は、図3に示されるように、合成音#=2の基本波データ201として、素片データ200中の基本波#=16の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#2))。次に、CPU101は、基本波相関テーブル202において、基本波#=16に対応する行と相関順位=1に対応する列の交差位置に対応する記憶位置から、次基本波#=15のインデックスを選択する。
この結果、CPU101は、図3に示されるように、合成音#=3の基本波データ201として、素片データ200中の基本波#=15の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#3))。次に、CPU101は、基本波相関テーブル202において、基本波#=15に対応する行と相関順位=1に対応する列の交差位置に対応する記憶位置から、次基本波#=17のインデックスを選択する。
この結果、CPU101は、図3に示されるように、合成音#=4の基本波データ201として、素片データ200中の基本波#=17の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#4))。次に、CPU101は、基本波相関テーブル202において、基本波#=17に対応する行と相関順位=1に対応する列の交差位置に対応する記憶位置から、次基本波#=16のインデックスを選択する。
この結果、CPU101は、図3に示されるように、合成音#=5の基本波データ201として、素片データ200中の基本波#=16の基本波データ201を選択して図1の外部記憶装置104等から読み出す(図4の401(#5))。次に、CPU101は、基本波相関テーブル202において、基本波#=16に対応する行と相関順位=2に対応する列の交差位置に対応する記憶位置から、次基本波#=17のインデックスを選択する。デフォルトの相関順位=1ではなく相関順位=2の列が参照されるのは、図3に示されるように、基本波#=16に関しては、CPU101は、合成音#=2の生成時に一度基本波相関テーブル202の相関順位=1の列を参照しているため、基本波#の選択に関して循環が発生するのを回避するためであり、そのためにCPU101は、合成音#=2の生成時の相関順位とは異なる相関順位(例えば+1された相関順位)の列を参照する。
以下同様にして、CPU101は、基本波相関テーブル202を参照しながら、合成音の生成時に、素片データ200中の基本波データ201を順次接続してゆくときに、隣り合う基本波データ201の相関が高くなるように基本波データ201を並び替えて接続してゆく。このようにして本実施形態によれば、素片データ200の時間長に起因する周期音の発生を抑制できると同時に、基本波データ201をランダムに接続する場合に比較して、異なる位置の基本波データ201の接続によるノイズの発生を抑制し、高音質の合成音を生成することが可能となる。
図5は、図1の外部記憶装置104等に記憶される複数の素片データ200を含む合成用音声データベースのデータ構成例を示す図である。本実施形態は、前述したように、ハミング音声を合成音として合成するため、この音声データベースを例えばHummingDatabaseと称する。このHummingDatabaseは、基本情報として、解析フレームの時間長を示すframe period、サンプリングレートを示すfs、及び最初の素片データ200へのポインタであるwavedataの各データを有する。
図5において、外部記憶装置104等に記憶されるN個の素片データ200の各先頭アドレスは、DataWave[0]、DataWave[1]、・・・DataWave[N-1]で示される。DataWave[i](0≦i≦N-1)で指示される各素片データ200は、次のデータ群からなる。pcmは、素片データ200のPCM(Pulse Code Modulation)形式の実体データへのポインタを示す。pcm samplesは、上記PCM形式の実体データのサンプル数を示す。f0 averageは、素片データ200のF0周波数(ピッチ周波数)の平均値を示す。pitchWaveCountは、素片データ200中の基本波データ201(図2参照)の数を示す。pitchWaves[0]~pitchWaves[pitchWaveCount-1](図5中ではpitchWaves[pitchWaveCount-1]と記載)は、各基本波データ201の先頭位置(サンプル)を示す配列データである。pitchConnectTab[0][0]~pitchConnectTab[0][9]、・・・pitchConnectTab[pitchWaveCount-1][0]~pitchConnectTab[pitchWaveCount-1][9](図5中ではpitchConnectTab[pitchWaveCount-1][]と記載)は、図2に例示した基本波相関テーブル202を示す2次元配列データである。この2次元配列データの第1番目の配列番号は図2に例示した基本波相関テーブル202の縦方向のインデックス値(0~pitchWaveCount-1)を示し、第2番目の配列番号は図2に例示した基本波相関テーブル202の横方向の相関順位(0~9)を示す。pitchConnectIndex[0]~pitchConnectIndex[pitchWaveCount-1](図5中ではpitchConnectIndex[pitchWaveCount-1]と記載)は、基本波相関テーブル202において基本波データ201のインデックス毎に次に参照される相関順位を示す。prevは、外部記憶装置104等上で記憶されている現在の素片データ200の前の素片データ200へのポインタを示す。nextは、外部記憶装置104等上で記憶されている現在の素片データ200の次の素片データ200へのポインタを示す。
図6は、後述するセグメンテーション処理により生成されるセグメントデータのデータ構成例を示す図である。セグメンテーションの結果、RAM103上に得られるM個のセグメントデータは、その先頭アドレスがWavePiece[0]~WavePiece[M-1]によって示される。WavePiece[j](0≦j≦M-1)で指示される各セグメントデータは、次のデータ群からなる。dwは、そのセグメントを構成する素片データ200の先頭アドレス(図5のDataWave[0]~DataWave[N-1]の何れか)へのポインタである。frame_startは、そのセグメントの入力音声上での先頭フレーム位置(サンプル)である。frame_durationは、そのセグメントの入力音声上でのフレーム長である。prevは、外部記憶装置104等上で記憶されている現在のセグメントデータの前に接続するセグメントデータへのポインタを示す。nextは、外部記憶装置104等上で記憶されている現在のセグメントデータの次に接続するセグメントデータへのポインタを示す。
図7は、本実施形態の制御処理を示すメインフローチャートである。この制御処理は、図1のCPU101が、ROM102又は外部記憶装置104から制御処理プログラムをRAM103にロードし、実行する処理を示すものである。
ユーザが入力装置105等から電源をオンすると、図7のメインフローチャートによる制御処理が起動する。この結果、CPU101はまず、RAM103上の各種変数を初期化するほか、図5のデータ構成例を有する合成用音声データベース(HummingDatabase)と、図2のデータ構成例を有する基本波相関テーブル202を、例えば外部記憶装置104からRAM103にロードする(ステップS701)。なお、例えば合成用音声データベースのデータサイズが大きい場合には、CPU101は、RAM103にはロードせずに、外部記憶装置104上の合成用音声データベースに対して直接アクセスしてもよい。
ステップS701の処理の後、CPU101は、待機状態となり、以下の2つの入力待ちとなる(ステップS702の判定がNO→ステップS703の判定がNO→ステップS702の判定がNOの繰返し)。
上記待機処理において、ユーザが入力装置105等から終了指示を行うと、ステップS702の判定がYESとなって、図7のフローチャートで示される制御処理が終了し、電源オフする。
上記待機処理において、ユーザが図1の音声取得部110の特には図示しないマイクロフォンから歌唱音声の入力(以下「入力音声」と呼ぶ)を行うと、ステップS703の判定がYESとなる。
この結果、CPU101はまず、入力音声のフレーム単位で、F0周波数(ピッチ周波数)の抽出を行うF0抽出処理を実行する(ステップS704)。CPU101は、F0抽出処理において、例えばフレーム単位の入力音声に対して、パワー判定により無声音又は有声音の判別を行い、有声音と判別したフレームに対して、例えば自己相関分析又はケプストラム分析等によってF0周波数の抽出を行う。
次に、CPU101は、目標ピッチの決定処理を実行する(ステップS705)。この処理において、CPU101は、合成用音声データベースで保有するピッチ周波数範囲や、log軸上での平行移動の有無など、目的に応じて、ステップS704で抽出したF0周波数を変換し、フレーム毎に目標ピッチを決定する。
続いて、CPU101は、セグメンテーション処理を実行する(ステップS706)。この処理において、CPU101は、入力音声を、同じ音素が連続する区間であるセグメントに分割する処理を実行する。この処理の詳細例は、図8のフローチャートを用いて後述する。
最後に、CPU101は、合成処理を実行する(ステップS707)。この処理において、CPU101は、ステップS706で決定されたセグメント毎に、前述した図2~図4の動作原理に基づく合成音の生成処理を実行する。この処理の詳細例は、図9のフローチャートを用いて後述する。その後、CPU101は、ステップS702の待機処理に戻る。
図8は、図7のステップS706のセグメンテーション処理の詳細例を示すフローチャートである。CPU101はまず、有声音区間のフレーム毎に、そのフレームに対して図7のステップS705で決定された目標ピッチに対して、外部記憶装置104又はRAM103上の合成用音声データベース上で、最も近いF0平均値(図5のf0 averageの値)を持つ素片データ200(図5のDataWave[0]からDataWave[N-1]の何れか)を抽出し、上記フレームにアサインする(ステップS801)。
次に、CPU101は、有声音区間のフレーム毎に、F0平均値(図5のf0 average)の揺らぎを吸収しながら、そのフレームの前後一定フレーム範囲内でステップS801でアサインされた素片データ200のうち最も出現頻度が多い素片データ200を、そのフレームの新素片データに変更する(ステップS802)。
その後、CPU101は、ステップS802の処理を所定回数繰り返したか、又は前回のステップS802の結果から変化がなくなったか否かを判定する(ステップS803)。
ステップS803の判定がNOならば、CPU101は、ステップS802の処理を繰返し実行する。
ステップS803の判定がYESになったら、CPU101は、有声音区間内のフレームにおいて、アサインされた素片データ200が同じものが連続する1つ以上の連続するフレーム区間を1つのセグメントとするセグメントデータを、例えば図6のデータフォーマットで図1のRAM103上に生成する(ステップS804)。その後、CPU101は、図8のフローチャートで例示される図7のステップS706のセグメンテーション処理を終了する。
以上のセグメンテーション処理により、例えば入力音声の歌唱を構成する各音符毎にそれぞれセグメントが割り当てられたセグメントデータが生成される。各セグメントにはそれぞれ、外部記憶装置104又はRAM103上の合成用音声データベース内の1つの素片データ200が対応付けられる。
図9は、図7のステップS707の合成処理の詳細例を示すフローチャートである。CPU101はまず、図7のステップS706のセグメンテーション処理で得られた入力音声に対応する各セグメントのうち、最初のセグメントを図6のデータ構成から選択する(ステップS901)。
次に、CPU101は、全てのセグメントデータの検索が終了したか否かを判定する(ステップS902)。
ステップS902の判定がNOならば、CPU101は、現在のセグメントデータのframe_start及びframe_durationのデータ(図6参照)から、合成音300(図3参照)として合成範囲(サンプル数)を決定する(ステップS903)。なお、セグメントの接続部分のオーバーラップなどを考慮して、合成範囲を前後伸長させてもよい。
次に、CPU101は、現在のセグメントデータのdwポインタ(図6参照)から参照される素片データ200(図5のDataWave[0]からDataWave[N-1]の何れか)において、pitchConnectIndex[]配列(pitchConnectIndex[0]~pitchConnectIndex[pitchWaveCount-1])の内容を初期化する。図3で説明したように、CPU101は、例えばpitchConnectIndex[0]は相関順位0に初期化し、pitchConnectIndex[1]~pitchConnectIndex[pitchWaveCount-1]はそれぞれ相関順位1に初期化する。
次に、CPU101は、素片データ200中の基本波データ201群から選択される基本波データ201のインデックス値が格納されるRAM103上の変数waveIndexに、最初の基本波データ201(#0)のインデックス値0を格納する(ステップS905)。これは、図3の合成音#=0に対する基本波#=0(図4の401(#0))に対応する。
その後、CPU101は、ステップS903で決定した現在の合成範囲内について、以下のステップS908~S912の一連の処理による基本波データ201の全てのアサインが終了したか否かを判定する(ステップS906)。
ステップS906の判定がNOならば、CPU101は、RAM103上のwaveIndex変数を用いて参照される、セグメントデータ内のdwポインタから参照される素片データ200内のdw->pitchWaves[waveIndex]からdw->pitchWaves[waveIndex+1]-1までのサンプル範囲を取得し、更に、dw->pcm(図5)を参照し、PCM実体上の上記サンプル範囲から基本波データ201を取得する(ステップS908)。この際、接続時の滑らかなピッチ変更を行いたい、ビブラート処理を行いたい等の条件があれば、この基本波データ201を取得する際に、PSOLA法又はリサンプリング法等によってピッチ変更を行ってもよい。
次に、CPU101は、接続部分のオーバーラップなどの必要があるならば、振幅収縮係数をROM102から取得し、この係数をステップS908で取得した基本波データ201に乗算してもよい(ステップS909)。
CPU101は、ステップS908及びS909で得た基本波データ201を、RAM103上の合成音300用の出力バッファ領域に加算する(ステップS910)。
続いて、CPU101は、現在の基本波データ201のインデックス(図3の基本波#に対応)を示すwaveIndex変数を第1配列要素に指定し、このインデックスに対応する現在の相関順位(図3の相関順位に対応)を示すセグメントデータ内のdwポインタから参照される素片データ200内のdw->pitchConnectIndex[waveIndex]を第2配列要素に指定して、セグメントデータ内のdwポインタから参照される素片データ200内のdw->pitchConnectTab[waveIndex][dw->pitchConnectIndex[waveIndex]]、即ち基本波相関テーブル202を参照することにより、次に参照される基本波データ201のインデックス(図3の次基本波#に対応)を取得し、その値を新たにwaveIndex変数に格納する(ステップS911)。これにより、基本波相関テーブル202から次に参照されるべき基本波データ201のインデックスが決定される。
最後に、CPU101は、現在の基本波データ201のインデックスに対応する相関順位(図3の相関順位に対応)を示すセグメントデータ内のdwポインタから参照される素片データ200内のdw->pitchConnectIndex[waveIndex]に+1した値を、新たにdw->pitchConnectIndex[waveIndex]に格納する(ステップS912)。これにより、基本波相関テーブル202上で次にその基本波データ201のインデックスからその次の基本波データ201のインデックスが参照されるときの相関順位が、1つ下げられ、基本波データ201の循環的な参照が回避される。
ステップS912の処理の後、CPU101は、ステップS906の処理に戻る。
以上の現在の基本波データ201の読出しと、その次の基本波データ201の検索の処理が繰り返されることにより、現在の合成範囲内で全ての合成音300のサンプルが生成されると、ステップS906の判定がYESとなる。この結果、CPU101は、RAM103上の図6のデータ構成上でnextポインタを辿ることにより次のセグメントデータへ制御を移動させた後(ステップS907)、ステップS902の処理に戻り、次のセグメントデータに関して、対応する合成音300の生成処理を繰返し実行する。
全てのセグメントデータの検索が終了すると、ステップS902の判定がYESとなって、CPU101は、図9のフローチャートで示される図7のステップS707の処理を終了する。
以上説明した実施形態により、素片接続方式の音声合成において、連続する音声区間に依存することはないが、相関の高い基本波形を合成していくことで、合成音声の音質を担保するとともに、目標継続長に対して素片継続長が短い場合であっても、ループバックを行う必要がないため、繰り返しによる周期感を与えることなく継続長の伸長を行うことが可能となる。
また、本実施形態によれば、歌詞込みの歌唱音声を合成するのではなく、入力の歌唱音声に合ったハミング音声を合成することが可能となり、歌詞を考慮しない合成なので、合成用として保持する素片データ200のデータ量が少なくなり、また、時間軸での処理であるので、解析・合成にかかる処理も軽量となるという特徴を有する。
以上説明した実施形態は、歌唱された入力音声に基づいてハミング音声の合成音が生成され発声されるが、本発明はこれに限られるものではなく、例えば電子鍵盤楽器の鍵盤の鍵の押鍵や自動演奏により指定された音高に基づいて、ハミング音声の合成音が生成され発声されるようにしてもよい。
また、本発明は、ハミング音声の合成に限られるものではなく、例えば波形読出し方式の電子楽器において、ループ再生を行う代わりに、ピッチ周期単位で分割した楽音波形の基本波データを隣り合う基本波データの相関が高くなるように接続して楽音波形データの時間長以上の時間長の再生を行う技術に、本発明による合成音生成方法を実施してもよい。
以上、開示の実施形態とその利点について詳しく説明したが、当業者は、特許請求の範囲に明確に記載した本発明の範囲から逸脱することなく、様々な変更、追加、省略をすることができる。
その他、本発明は上述した実施形態に限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で種々に変形することが可能である。また、上述した実施形態で実行される機能は可能な限り適宜組み合わせて実施しても良い。上述した実施形態には種々の段階が含まれており、開示される複数の構成要件による適宜の組み合せにより種々の発明が抽出され得る。例えば、実施形態に示される全構成要件からいくつかの構成要件が削除されても、効果が得られるのであれば、この構成要件が削除された構成が発明として抽出され得る。
以上の実施形態に関して、更に以下の付記を開示する。
(付記1)
音素片データを記憶する記憶部と、
前記記憶部に記憶される前記音素片データをピッチ周期毎に分割して得られる複数の基本波データのうちから、1つの基本波データを選択して読み出した後に、当該読み出した基本波データである先の基本波データの次の基本波データとして、前記先の基本波データに類似する基本波データを選択して読み出すようにして、順次読み出された前記基本波データを接続することにより合成音を生成する生成部と、
を有する合成音生成装置。
(付記2)
前記記憶部は更に、前記複数の基本波データの夫々について、当該基本波データと相関の高い他の基本波データの前記記憶部内での記憶位置を示す記憶位置情報を、前記相関の高い順に並べて登録した基本波相関テーブルを記憶し、
前記生成部は、前記次の基本波データを選択して読み出すときに、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち前記相関が高い記憶位置情報を優先的に選択し、前記選択した記憶位置情報に対応する記憶位置に記憶されている基本波データを前記次の基本波データとして前記記憶部から読み出す、付記1に記載の合成音生成装置。
(付記3)
前記生成部は、前記次の基本波データを選択して読み出すときに、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち、当該先の基本波データに関していままで選択されておらず、かつ直前の前記先の基本波データ以外の基本波データに対応する前記相関が高い記憶位置情報を選択する、付記2に記載の合成音生成装置。
(付記4)
前記記憶部は、複数の音高をそれぞれ有する複数の前記音素片データを記憶し、
指定された音高に基づいて前記複数の音素片データのうちの1つを指定する音素片データ指定部を更に有し、
前記生成部は、前記記憶部が記憶する前記複数の音素片データのうち前記音素片データ指定部が指定した音素片データを用いて、前記合成音を生成する、付記1乃至3の何れかに記載の合成音生成装置。
(付記5)
前記音素片データ指定部は、
入力音声を取得する音声取得部と、
前記入力音声を分析する時間単位であるフレーム毎に、前記入力音声からピッチ周波数を取得し、前記ピッチ周波数に基づいて目標ピッチを決定する目標ピッチ決定部と、
前記フレーム毎の目標ピッチに基づいて、前記入力音声をそれぞれが同じ前記音素片データを連続して割り当てることが可能な期間であるセグメントにセグメンテーションするセグメンテーション部と、を有し、
前記生成部は、前記セグメンテーション部がセグメンテーションした前記セグメント毎に、該セグメントに対応する前記音素片データを前記記憶部から読み出して、前記合成音を生成する、付記4に記載の合成音生成装置。
(付記6)
音素片データを記憶する記憶ステップと、
前記記憶される前記音素片データをピッチ周期毎に分割して得られる複数の基本波データのうちから、の1つの基本波データを選択して読み出した後に、当該読み出した基本波データである先の基本波データの次の基本波データとして、前記先の基本波データに類似する基本波データを選択して読み出すようにして、順次読み出された前記基本波データを接続することにより合成音を生成する生成ステップと、
を含むことを特徴とする合成音生成方法。
(付記7)
合成音を生成する合成音生成装置のコンピュータに、
音素片データを記憶する記憶機能と、
前記記憶される前記音素片データをピッチ周期毎に分割して得られる複数の基本波データのうちから、1つの基本波データを選択して読み出した後に、当該読み出した基本波データである先の基本波データの次の基本波データとして、前記先の基本波データに類似する基本波データを選択して読み出すようにして、順次読み出された前記基本波データを接続することにより合成音を生成する生成機能と、
を実現させるプログラム。
101 CPU
102 ROM
103 RAM
104 外部記憶装置
105 入力装置
106 表示装置
107 通信インタフェース
108 可搬記録媒体駆動装置
108a 可搬記録媒体
109 システムバス
110 音声取得部
111 音声出力部
200 素片データ
201 基本波データ
202 基本波相関テーブル
300 合成音

Claims (6)

  1. 複数の音素片データと、前記複数の音素片データをピッチ周期毎に分割して得られる複数の基本波データの夫々について前記基本波データと相関の高い他の基本波データの記憶位置を示す記憶位置情報を前記相関の高い順に並べて登録した基本波相関テーブルと、を記憶する記憶部と、
    前記記憶部に記憶される前記複数の基本波データのうちから、先の基本波データを選択して読み出した後に、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち前記相関が高い記憶位置情報を優先的に選択し、前記選択した記憶位置情報に対応する記憶位置に記憶されている基本波データを前記先の基本データに類似する次の基本波データとして読み出し、読み出された前記先の基本波データと前記次の基本波データとを接続することにより合成音を生成する生成部と、
    を有する合成音生成装置。
  2. 前記生成部は、前記次の基本波データを選択して読み出すときに、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち、前記先の基本波データに関していままで選択されておらず、かつ直前の前記先の基本波データ以外の基本波データに対応する前記相関が高い記憶位置情報を選択する、請求項に記載の合成音生成装置。
  3. 前記記憶部に記憶される複数の音素片データは夫々が複数の音高を有するとともに、指定された音高に基づいて前記複数の音素片データのうちの1つを指定する音素片データ指定部を更に有し、
    前記生成部は、前記記憶部が記憶する前記複数の音素片データのうち前記音素片データ指定部が指定した音素片データを用いて、前記合成音を生成する、請求項1又は2に記載の合成音生成装置。
  4. 前記音素片データ指定部は、
    入力音声を取得する音声取得部と、
    前記入力音声を分析する時間単位であるフレーム毎に、前記入力音声からピッチ周波数を取得し、前記ピッチ周波数に基づいて目標ピッチを決定する目標ピッチ決定部と、
    前記フレーム毎の目標ピッチに基づいて、前記入力音声をそれぞれが同じ前記音素片データを連続して割り当てることが可能な期間であるセグメントにセグメンテーションするセグメンテーション部と、を有し、
    前記生成部は、前記セグメンテーション部がセグメンテーションした前記セグメント毎に、該セグメントに対応する前記音素片データを前記記憶部から読み出して、前記合成音を生成する、請求項に記載の合成音生成装置。
  5. 複数の音素片データと、前記複数の音素片データをピッチ周期毎に分割して得られる複数の基本波データの夫々について前記基本波データと相関の高い他の基本波データの記憶位置を示す記憶位置情報を前記相関の高い順に並べて登録した基本波相関テーブルと、を記憶する記憶部から、先の基本波データを選択して読み出した後に、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち前記相関が高い記憶位置情報を優先的に選択し、前記選択した記憶位置情報に対応する記憶位置に記憶されている基本波データを前記先の基本データに類似する次の基本波データとして読み出し、読み出された前記先の基本波データと前記次の基本波データとを接続することにより合成音を生成する生成ステップを含むことを特徴とする合成音生成方法。
  6. 合成音を生成する合成音生成装置のコンピュータに、
    複数の音素片データと、前記複数の音素片データをピッチ周期毎に分割して得られる複数の基本波データの夫々について前記基本波データと相関の高い他の基本波データの記憶位置を示す記憶位置情報を前記相関の高い順に並べて登録した基本波相関テーブルと、を記憶する記憶部から、先の基本波データを選択して読み出した後に、前記基本波相関テーブル上で前記先の基本波データについて登録されている前記記憶位置情報のうち前記相関が高い記憶位置情報を優先的に選択し、前記選択した記憶位置情報に対応する記憶位置に記憶されている基本波データを前記先の基本データに類似する次の基本波データとして読み出し、読み出された前記先の基本波データと前記次の基本波データとを接続することにより合成音を生成する生成機能を実現させるためのプログラム。
JP2018057343A 2018-03-26 2018-03-26 合成音生成装置、方法、及びプログラム Active JP7183556B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018057343A JP7183556B2 (ja) 2018-03-26 2018-03-26 合成音生成装置、方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018057343A JP7183556B2 (ja) 2018-03-26 2018-03-26 合成音生成装置、方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2019168620A JP2019168620A (ja) 2019-10-03
JP7183556B2 true JP7183556B2 (ja) 2022-12-06

Family

ID=68107441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018057343A Active JP7183556B2 (ja) 2018-03-26 2018-03-26 合成音生成装置、方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP7183556B2 (ja)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005024794A (ja) 2003-06-30 2005-01-27 Toshiba Corp 音声合成方法と装置および音声合成プログラム
JP2015064482A (ja) 2013-09-25 2015-04-09 三菱電機株式会社 音声合成装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005024794A (ja) 2003-06-30 2005-01-27 Toshiba Corp 音声合成方法と装置および音声合成プログラム
JP2015064482A (ja) 2013-09-25 2015-04-09 三菱電機株式会社 音声合成装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
世木 寛之 Hiroyuki Segi,放送現業・コンテンツ制作 Broadcasting Field and Content Production,映像情報メディア学会誌 第62巻 第1号 The Journal of The Institute of Image Information and Television Engineers,日本,(社)映像情報メディア学会 The Institute of Image Information and Television Engineers,2008年01月01日,第62巻第1号,69~76

Also Published As

Publication number Publication date
JP2019168620A (ja) 2019-10-03

Similar Documents

Publication Publication Date Title
JP5293460B2 (ja) 歌唱合成用データベース生成装置、およびピッチカーブ生成装置
JP4130190B2 (ja) 音声合成システム
JP4516863B2 (ja) 音声合成装置、音声合成方法及びプログラム
JP2016161919A (ja) 音声合成装置
JP2003108178A (ja) 音声合成装置及び音声合成用素片作成装置
JP4287785B2 (ja) 音声合成装置、音声合成方法及びプログラム
JP2013164609A (ja) 歌唱合成用データベース生成装置、およびピッチカーブ生成装置
JP4648878B2 (ja) 様式指定型音声合成方法、及び様式指定型音声合成装置とそのプログラムと、その記憶媒体
JP7183556B2 (ja) 合成音生成装置、方法、及びプログラム
JP4264030B2 (ja) 音声データ選択装置、音声データ選択方法及びプログラム
JP5360489B2 (ja) 音素符号変換装置および音声合成装置
JP4490818B2 (ja) 定常音響信号のための合成方法
JP5157922B2 (ja) 音声合成装置、およびプログラム
JP6578544B1 (ja) 音声処理装置、および音声処理方法
JP4640063B2 (ja) 音声合成方法,音声合成装置,およびコンピュータプログラム
JP5560769B2 (ja) 音素符号変換装置および音声合成装置
JP2005018036A (ja) 音声合成装置、音声合成方法及びプログラム
JP2020204755A (ja) 音声処理装置、および音声処理方法
JP5387410B2 (ja) 音声合成装置、音声合成方法および音声合成プログラム
JP3081300B2 (ja) 残差駆動型音声合成装置
WO2023182291A1 (ja) 音声合成装置、音声合成方法及びプログラム
JP6587308B1 (ja) 音声処理装置、および音声処理方法
JP4209811B2 (ja) 音声選択装置、音声選択方法及びプログラム
JP2987089B2 (ja) 音声素片作成方法および音声合成方法とその装置
JP2001312300A (ja) 音声合成装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20190415

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210311

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211109

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220106

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220531

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220613

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221025

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221107

R150 Certificate of patent or registration of utility model

Ref document number: 7183556

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150