<第1実施形態>
図1は、この発明の第1実施形態による電子透かし情報の埋め込み装置100を含む音声合成装置の構成を示すブロック図である。この音声合成装置は、音声合成部10と、本実施形態による埋め込み装置100とにより構成されている。音声合成部10は、入力されるテキスト情報に基づいて音声信号を合成する装置である。埋め込み装置100は、音声合成部10が出力する合成音声信号を用いて、電子透かし情報が埋め込まれた音声信号を合成し、この合成した音声信号を元の合成音声信号に加算し、埋め込み済み合成音声信号として出力する装置である。なお、音声合成装置またはその一部である埋め込み装置100は、電子透かし情報の埋め込まれた合成音声信号を生成する処理または音声信号に電子透かし情報を埋め込む処理を実行する専用のハードウェアとして実現してもよいし、そのような処理をコンピュータに実行させるコンピュータプログラムとして実現してもよい。
本実施形態による埋め込み装置100は、擬似雑音生成部110と、埋め込み雑音合成部120と、加算器130とにより構成されている。ここで、擬似雑音生成部110は、2値のシンボル(すなわち、bit)を示すM系列、Gold系列等の一定符号長の擬似雑音信号を各々生成する機能を有している。これらの擬似雑音はDCを除いたナイキスト周波数までの全ての帯域でフラットな振幅特性を持つ。従って、電子透かしを入力音声信号の帯域より狭いかつ特定の帯域のみに挿入したい場合には、予め同擬似雑音をローパスフィルタあるいはバンドパスフィルタを用いて帯域制限した信号を埋込に使用することで実現が可能である
擬似雑音生成部110は、埋め込み装置100が合成音声信号への電子透かし情報の埋め込みを行う場合に、埋め込み対象である電子透かし情報を示すシンボル列を事前に取得し、同シンボル列を構成する各シンボルに対応した擬似雑音信号を順次生成する。好ましい態様において、擬似雑音生成部110は、シンボル“0”に対応した擬似雑音信号およびシンボル“1”に対応した擬似雑音信号として、+1または−1の信号の羅列であって、互いに無相関のまたは相互相関係数が極めて低い別個の擬似雑音信号を生成する。他の好ましい態様では、擬似雑音生成部110は、ある内容の擬似雑音信号をシンボル“0”に対応した擬似雑音信号として生成し、このシンボル“0”に対応した擬似雑音信号を極性反転したものをシンボル“1”に対応した擬似雑音信号として生成する。すなわち、この態様において、シンボル“0”に対応した擬似雑音信号とシンボル“1”に対応した擬似雑音信号は負の相関を持つ。擬似雑音信号は、音として出力されたときの聴感上の影響を少なくし、かつ、後述する抽出装置200でのシンボルの抽出を容易にするため、広い周波数帯域に亙って振幅スペクトラムがフラットな信号であることが好ましく、そのためには擬似雑音信号の符号長は十分な長さを持っていることが必要である。また、擬似雑音信号は、音声合成部10が出力する合成音声信号のスペクトラム分布との相互相関が低いスペクトラム分布を持つもの、理想的には合成音声信号のスペクトラムの周波数とは異なる周波数にスペクトラムを有するものであることが好ましい。
なお、電子透かし情報の埋め込み伝送の信頼性を高めるために、電子透かし情報を示すシンボル列を誤り訂正符号化し、この電子透かし情報の誤り訂正符号列を擬似雑音生成部110に与えるようにしてもよい。また、電子透かし情報の秘匿性を高めるために、電子透かし情報を示すシンボル列を暗号化し、暗号化されたシンボル列を擬似雑音生成部110に与えるようにしてもよい。
埋め込み雑音合成部120は、擬似雑音生成部110が出力する電子透かし情報の各シンボルに対応した擬似雑音信号を用いて音声合成部10が出力する合成音声信号と同様のスペクトラムエンベロープを持った埋め込み雑音信号を合成する装置である。図2は、この埋め込み雑音合成部120の処理内容を示す図である。以下、図1および図2を参照し、埋め込み雑音合成部120の各部について説明する。
窓掛け部121は、音声合成部10が出力する合成音声信号のサンプルxp(n)の列を1ハーフフレーム当たりNサンプル(N=M/2)のハーフフレームxp(n)(n=0〜N−1)に区切る処理と、現時点から1/2ハーフフレーム(N/2サンプル)遅れた位置から始まる2ハーフフレーム(=1フレーム)分のサンプルxp(n)(n=0〜2N−1)に窓関数を乗じて時間/周波数変換部122に供給する処理を繰り返す。図2では、窓掛け部121がハーフフレームHF3まで合成音声信号のサンプルxp(n)の列を区切ったとき、ハーフレームHF3の中央からハーフフレームHF1の中央までの2ハーフフレーム(=1フレーム)分のサンプル列xp(n)(n=0〜2N−1)に窓関数を乗じて時間/周波数変換部122に供給する例が示されている。
時間/周波数変換部122は、1フレーム(2Nサンプル)分の窓掛け済みのサンプル列が供給される都度、そのサンプル列に2N点FFT(Fast Fourier Transform;高速フーリエ変換)を施し、2N個の複素スペクトラムの列を生成する。絶対値算出部123は、時間/周波数変換部122が1フレーム分のサンプル列から生成する各複素スペクトラムについて、各々の実部の2乗と虚部の2乗の和の平方根を演算することにより、複素スペクトラムの絶対値、すなわち、振幅スペクトラムを算出する。
スペクトラムエンベロープ算出部124は、絶対値算出部123が出力する1フレーム分の振幅スペクトラムの列を周波数軸上に並べたときの各振幅スペクトラムのエンベロープ、すなわち、スペクトラムエンベロープを算出する。時間/周波数逆変換部125は、スペクトラムエンベロープ算出部124が算出したスペクトラムエンベロープに2N点IFFT(Inverse Fast Fourier Transform;逆高速フーリエ変換)等の時間/周波数逆変換を施し、時間領域の2N個のフィルタ係数の列f(n)(n=−N〜N−1)を生成する。この時間領域のフィルタ係数列は、時間軸上において時間t=0を対称軸として対称な偶関数のサンプル列である。
以上のように、埋め込み雑音合成部120における窓掛け部121から時間/周波数逆変換部125までの各要素からなる部分は、音声合成部10が1ハーフフレーム分の合成信号のサンプル列を出力する毎に、過去1フレーム分の合成音声信号のスペクトラムエンベロープに対応した時間領域の情報であるフィルタ係数列を出力する。
畳み込み部126は、擬似雑音生成部110が出力する擬似雑音信号のサンプル列に時間/周波数逆変換部125が出力するフィルタ係数列を畳み込む。さらに詳述すると、本実施形態において、擬似雑音生成部110は、音声合成部10が1ハーフフレーム(Nサンプル)分の合成信号のサンプル列を出力し、埋め込み雑音合成部120の時間/周波数逆変換部125が1フレーム(2Nサンプル)分の合成音声信号のスペクトラムエンベロープに対応したフィルタ係数列を出力するのに同期し、1シンボルフレーム(Nサンプル)分の擬似雑音信号のサンプル列を出力する。畳み込み部126は、時間/周波数逆変換部125が2Nサンプルからなるフィルタ係数列f(n)(n=−N〜N−1)を出力した場合に、1シンボルフレーム(Nサンプル)分の擬似雑音信号のサンプル列とそのフィルタ係数列f(n)(n=−N〜N−1)との畳み込み演算を行い、畳み込み演算結果である3N−1個のサンプルの列を生成する。
具体的には、1シンボルフレーム(Nサンプル)分の擬似雑音信号のサンプル列に対する1フレーム(2Nサンプル)分のフィルタ係数列f(n)(n=−N〜N−1)の位相関係をずらしながら擬似雑音信号のN個のサンプル列の各々とそれらに対応するフィルタ係数との乗算を行うとともにN個の乗算結果の加算を行い、1個の畳み込み演算結果を生成する動作を繰り返す。図2に示す例では、フィルタ係数列f(n)(n=−N〜N−1)における最後尾のフィルタ係数f(N−1)が擬似雑音信号のサンプル列PN2の先頭のサンプルと対向している状態からフィルタ係数列f(n)(n=−N〜N)における先頭のフィルタ係数f(−N)が擬似雑音信号のサンプル列PN2の最後尾のサンプルとが対向している状態になるまでフィルタ係数列f(n)(n=−N〜N−1)の位相を1サンプルずつシフトしつつ、擬似雑音信号のN個のサンプル列の各々とそれらに対応するフィルタ係数との乗算およびN個の乗算結果の加算を繰り返す様子が示されている。なお、擬似雑音信号のサンプルと対向するフィルタ係数f(n)がない場合には、0値がフィルタ係数の代わりに擬似雑音信号のサンプルに乗算される。
そして、畳み込み部126は、1フレーム(2Nサンプル)分のフィルタ係数列と1シンボルフレーム分の擬似雑音信号のサンプル列とが発生する毎にこのような畳み込み演算を実行し、各畳み込み演算において得られる3N−1個のサンプルの列の最後尾に0値サンプルを1個追加して3N個のサンプルの列とする。そして、このようにして得られる各3N個のサンプルの各列を、先行するサンプル列の最後尾のN個のサンプルと後続のサンプル列の先頭のNサンプルとを互いにオーバラップさせて出力する。その際、オーバラップ部分は各畳み込む演算結果を加算して1つの出力サンプルとする。図2には、先行する擬似雑音信号のサンプル列PN2に対する3Nサンプル分の畳み込み演算結果と後続の擬似雑音信号のサンプル列PN3に対する3Nサンプル分の畳み込み演算結果とがNサンプル(=1シンボルフレーム)だけオーバラップして出力される様子が示されている。
このような畳み込み演算が行われることにより、周波数軸上において合成音声信号のスペクトラムエンベロープと同様なスペクトラムエンベロープを持ち、かつ、時間軸上におけるスペクトラムエンベロープの変化が緩和されたサンプル列が得られる。ここで、時間/周波数逆変換部125が出力するフィルタ係数列f(n)(n=−N〜N−1)は、前述した通り、時間軸上において時間t=0を対称軸として対称な偶関数のサンプル列であるので、このフィルタ係数列の畳み込みを行うフィルタ処理は、直線位相特性を持つ。従って、畳み込み部126によるフィルタ処理では、位相歪みは発生しない。
なお、以上の説明では、時間領域においてフィルタ係数列f(n)(n=−N〜N−1)と擬似雑音信号のサンプル列との畳み込み演算を行ったが、この畳み込み演算を次のような周波数領域の操作に置き換えてもよい。
a1.フィルタ係数列f(n)(n=−N〜N−1)の後にN−1個の0値サンプルを追加して3N−1個のフィルタ係数列とし、この3N−1個のフィルタ係数列に3N−1点FFTを施して、3N−1個のフーリエ変換係数を生成する。
b1.畳み込み演算の対象となる1シンボルフレーム(Nサンプル)分の擬似雑音信号のサンプル列の後に2N−1個の0値サンプルを追加して、3N−1個のサンプル列とし、この3N−1個のサンプル列に3N−1点FFTを施して、3N−1個のフーリエ変換係数を生成する。
c1.上記a1.により得られる3N−1個のフーリエ変換係数と上記b1.により得られる3N−1個のフーリエ変換係数とを同一周波数に対応したもの同士乗算し、乗算結果である3N−1個のフーリエ変換係数にIFFTを施し、時間領域の3N−1個のサンプルの列を生成する。
d1.上記a1.〜c1.が繰り返される毎に得られる3N−1個のサンプルの列の最後尾に1個の0値サンプルを追加して3N個のサンプルの列とし、先行するサンプル列と後続のサンプル列を時間軸上においてNサンプルだけオーバラップさせて出力する。
ゲイン算出部127は、次式に従い、乗算器128に供給するゲインαを算出し、乗算器128はこのゲインαを畳み込み部126が出力するサンプル列に乗算し、埋め込み雑音信号のサンプル列として出力する。
α=√{(Ps/Pw)10−SWR/10} ……(1)
ここで、Psは、1フレーム分の合成音声信号の平均パワー、具体的には絶対値算出部123により算出された全ての振幅スペクトラムの平均2乗和である。また、Pwは、擬似雑音生成部110が出力する擬似雑音信号の平均パワーである。そして、SWRは、埋め込み先である合成音声信号のパワーを基準とした埋め込み雑音信号のパワーの減衰量の目標値であり、例えば20dBである。
以上のように、埋め込み雑音合成部120は、音声合成部10が出力する合成音声信号と同様のスペクトラムエンベロープを有し、かつ、合成音声信号よりもSWRだけ平均パワーの減衰した埋め込み雑音信号を擬似雑音信号を用いて合成する。加算器130は、この埋め込み雑音信号を合成音声信号と加算し、埋め込み済み合成音声信号として出力する。以上が本実施形態による埋め込み装置100を備えた音声合成装置の詳細である。
図3は、本実施形態による電子透かし情報の抽出装置200の構成を示すブロック図である。また、図4は抽出装置200の各部の処理内容を示す図である。この抽出装置200は、本実施形態による埋め込み装置100から出力された埋め込み済み合成音声信号から電子透かし情報のシンボル列を抽出するものである。
バッファ210は、埋め込み済み合成音声信号を蓄積する装置である。前述した埋め込み装置100により出力された埋め込み済み合成音声信号のサンプル列は、例えばアナログ信号に変換された後、音として空気中に放音され、図示しない収音装置により収音されてデジタル化され、バッファ210に蓄積される。あるいは、埋め込み済み合成音声信号のサンプル列は、一旦、何らかの記録媒体に記録され、その記録媒体から読み出されてバッファ210に蓄積される場合もあり得る。
バッファ210内の埋め込み済み合成音声信号のサンプル列は、古いものから順に読み出され、窓掛け部211の処理を経て時間/周波数変換部212に供給される。なお、バッファ210から埋め込み済み合成音声信号のサンプル列を読み出す手段については後述する。
窓掛け部211は、埋め込み装置100の窓掛け部121と同様の構成のものであり、バッファ210から読み出される埋め込み済み合成音声信号のサンプルxp’(n)の列を先頭から順にNサンプルのハーフフレームに区切る処理と、現時点までに区切った最新の1ハーフフレーム(1シンボルフレーム)分のオーディオサンプルxp’(n)(n=0〜N−1)に窓関数を乗じて時間/周波数変換部212に供給する処理を繰り返す。
時間/周波数変換部212は、埋め込み装置100の時間/周波数変換部122と同様の構成のものであり、1ハーフフレーム分の窓掛け済みのサンプル列が供給される都度、そのサンプル列にFFTを施し、複素スペクトラム列を生成する。スペクトラム振幅平坦化部213は、時間/周波数変換部212が1ハーフフレーム分のサンプル列から生成する各複素スペクトラムについて、各々の振幅が1となるように実部と虚部の大きさを調整する。具体的には、各複素スペクトラムについて、実部と虚部の2乗和の平方根(すなわち、複素スペクトラムの振幅値(絶対値))を求め、実部と虚部をこの平方根により除算する。
擬似雑音生成部220は、埋め込み装置100の擬似雑音生成部110が生成するものと同様なシンボル“0”に対応した擬似雑音信号とシンボル“1”に対応した擬似雑音信号を生成する機能を備えている。ここで、擬似雑音信号は、広い周波数帯域に亙ってフラットな振幅スペクトラム、具体的には振幅が1である振幅スペクトラムを有している。時間/周波数変換部221は、シンボル“0”に対応した擬似雑音信号とシンボル“1”に対応した擬似雑音信号の各々にFFTを施し、シンボル“0”に対応した擬似雑音信号の複素スペクトラム列とシンボル“1”に対応した擬似雑音信号の複素スペクトラム列とを生成する。複素共役化部222は、シンボル“0”に対応した擬似雑音信号の複素スペクトラム列とシンボル“1”に対応した擬似雑音信号の複素スペクトラム列の各複素スペクトラムについて、各々の虚部の符号を反転し、元の複素スペクトラムと複素共役をなす複素スペクトラムに変換する。
相関算出部230は、スペクトラム振幅平坦化部213から出力された複素スペクトラム列の各複素スペクトラムと、複素共役化部222の処理を経たシンボル“0”に対応した擬似雑音信号の複素スペクトラム列の各複素スペクトラムとを同一周波数に対応したもの同士乗算し、各乗算結果にIFFTを施して時間領域のサンプル列に変換する。そして、その中で最も高いピーク値を第1の相互相関係数として出力する。同様に、相関算出部230は、スペクトラム振幅平坦化部213から出力された複素スペクトラム列の各複素スペクトラムと、複素共役化部222の処理を経たシンボル“1”に対応した擬似雑音信号の複素スペクトラム列の各複素スペクトラムとを同一周波数に対応したもの同士乗算し、各乗算結果にIFFTを施して時間領域のサンプル列に変換する。そして、その中で最も高いピーク値を第2の相互相関係数として出力する。
ここで、仮に窓掛け部211が埋め込み装置100の窓掛け部121と同じ区切り位置において、バッファ210から読み出される合成音声信号をフレームに区切るとした場合、スペクトラム振幅平坦化部213から出力される複素スペクトラム列は、上述の畳み込み部126が出力した埋め込み雑音信号の複素スペクトラムの振幅を1にしたものと、上述の音声合成部10が出力した合成音声信号の複素スペクトラムの振幅を1にしたものを含んでいる。
そして、スペクトラム振幅平坦化部213から出力される複素スペクトラム列がシンボル“0”に対応した擬似雑音信号から得られた埋め込み雑音信号の各複素スペクトラムであって振幅が1であるものを含む場合には、これらの各複素スペクトラムと複素共役化部222の処理を経たシンボル“0”に対応した擬似雑音信号の各複素スペクトラムとの乗算結果が各々1となる。この結果、第1の相互相関係数が大きな値となる。また、スペクトラム振幅平坦化部213から出力される複素スペクトラム列がシンボル“1”に対応した擬似雑音信号から得られた埋め込み雑音信号の各複素スペクトラムであって振幅が1であるものを含む場合には、これらの各複素スペクトラムと複素共役化部222の処理を経たシンボル“1”に対応した擬似雑音信号の各複素スペクトラムとの乗算結果が各々1となる。この結果、第2の相互相関係数が大きな値となる。なお、音声合成部10が出力する合成音声信号の複素スペクトラムと、シンボル“0”および“1”に対応した各擬似雑音信号から得られる埋め込み雑音信号の各複素スペクトラムとの相互相関係数が低い場合、合成音声信号の複素スペクトラムの第1の相互相関係数および第2の相互相関係数に与える影響は少ない。
同期化制御部231は、以上説明した各部に同期探索フェーズでの動作を行わせ、その後、データ抽出フェーズでの動作を行わせる制御を行う。ここで、同期化制御部231は、同期探索フェーズでは、バッファ210内の埋め込み済み合成音声信号のサンプル列における読み出し開始位置を更新しつつ、バッファ210からサンプル列を繰り返し読み出し、窓掛け部211、時間/周波数変換部212、スペクトラム振幅平坦化部213、擬似雑音生成部220、時間/周波数変換部221、複素共役化部222および相関算出部230に上述した動作を行わせ、第1の相互相関係数および第2の相互相関係数を算出させる制御を繰り返す。この制御の過程において、窓掛け部211が埋め込み装置100の窓掛け部121と同じ区切り位置において、バッファ210から読み出される合成音声信号をシンボルフレームに区切ると、その時点において、第1の相互相関係数または第2の相互相関係数が最大となる。これを以って同期化制御部231は、データ抽出フェーズでの制御に移行する。
同期化制御部231は、このデータ抽出フェーズでは、第1の相互相関係数または第2の相互相関係数の実部が最大となる区切り位置において窓掛け部211がバッファ210から読み出される合成音声信号をシンボルフレームに区切るようにバッファ210から合成音声信号のサンプル列を読み出し、窓掛け部211、時間/周波数変換部212、スペクトラム振幅平坦化部213、擬似雑音生成部220、時間/周波数変換部221、複素共役化部222および相関算出部230に上述した動作を行わせ、第1の相互相関係数および第2の相互相関係数を算出させる制御を繰り返す。シンボル判定部232は、相関算出部230が第1の相互相関係数および第2の相互相関係数を出力する毎に、第1の相互相関係数および第2の相互相関係数を比較し、第1の相互相関係数が第2の相互相関係数よりも大きければ埋め込み済み合成音声信号に埋め込まれたシンボルは“0”であると判定し、第2相互相関係数が第1の相互相関係数よりも大きければ埋め込み済み合成音声信号に埋め込まれたシンボルは“1”であると判定する。
以上が本実施形態による抽出装置200の詳細である。
なお、以上説明した態様では、演算量を削減するために、抽出装置200の窓掛け部211は埋め込み済み合成音声信号のサンプル列を1ハーフフレーム(Nサンプル)のサンプル列に区切って窓関数の乗算を行い、時間/周波数変換部212および221はN点のFFTを実行した。しかし、演算量の削減よりも演算精度を重視する場合、窓掛け部211には、1ハーフフレーム分の埋め込み済み合成音声信号のサンプル列がバッファ210から読み出される都度、過去3ハーフフレーム分のサンプル列に対する窓関数の乗算を行わせ、時間/周波数変換部212および221には3N点のFFTを実行させるようにしてもよい。
以上説明した本実施形態によれば次の効果が得られる。まず、埋め込み装置100では、合成音声信号と同様のスペクトラムエンベロープを持った埋め込み雑音信号を生成し、これを合成音声信号に加算して埋め込み済み合成音声信号として出力するので、合成音声信号が音として放音されたときの聴感上の違和感を少なくすることができる。また、シンボルを示す埋め込み雑音信号は、広い周波数帯域に亙ってフラットな振幅スペクトラムを含む。そして、抽出装置200側では、埋め込み済み合成音声信号の複素スペクトラム列の各複素スペクトラムの振幅を1に調整してから、埋め込み済み合成音声信号の複素スペクトラム列とシンボルを示す擬似雑音信号の複素スペクトラム列との乗算と周波数/時間変換操作を用いて相互相関係数を求め、その相互相関係数に基づいてシンボルの判定を行う。従って、埋め込む済み合成音声信号の伝送過程のおいて埋め込み済み合成音声信号の一部の周波数帯域のスペクトラムに減衰が与えられる状況下においても、安定してシンボルの抽出を行うことができる。
<第2実施形態>
本実施形態は、特許文献4に開示された歌唱合成装置に電子透かし情報の埋め込み装置としての機能を付加したものである。図5は、本実施形態による歌唱合成装置の構成を示すブロック図である。この歌唱合成装置は、音声を出力する機能を有するパーソナルコンピュータなどのコンピュータに対し、歌唱合成プログラムと透かし埋め込みプログラムをインストールしたものである。図5において、CPU1は、この歌唱合成装置の各部を制御する制御中枢である。ROM2は、ローダなど、この歌唱合成装置の基本的な動作を制御するための制御プログラムを記憶した読み出し専用メモリである。表示部3は、装置の動作状態や入力データおよび操作者に対するメッセージなどを表示するための装置である。操作部4は、ユーザからコマンドや各種の情報を受け取るための手段であり、キーボードやマウスなどの各種の操作子により構成されている。インタフェース群5は、ネットワークを介して他の装置との間でデータ通信を行うためのネットワークインタフェースや、磁気ディスクやCD−ROMなどの外部記憶媒体との間でデータの授受を行うためのドライバなどにより構成されている。HDD(ハードディスク装置)6は、各種のプログラムやデータベースなどの情報を記憶するための不揮発性記憶装置である。RAM7は、CPU1によってワークエリアとして使用される揮発性メモリである。CPU1は、操作部4を介して与えられる指令に従い、HDD6内のプログラムをRAM7にロードして実行する。サウンドシステム8は、この歌唱合成装置において合成された音声を出力する手段であり、合成音声のサンプルデータであるデジタル音声信号をアナログ音声信号に変換するD/A変換器と、このアナログ音声信号を増幅するアンプと、このアンプの出力信号を音として出力するスピーカ等により構成されている。
HDD6に記憶される情報として、曲編集プログラム61と、曲データ62と、音声素片データベース63と、歌唱合成プログラム64と、透かし埋め込みプログラム67と、透かし埋め込み済み歌唱データ68がある。曲データ62は、曲を構成する一連の音符を表す音符データと、音符に合わせて発声する歌詞を表す歌詞データと、曲に音楽的表情を与えるためのダイナミックス情報等のその他の情報からなるデータであり、曲毎に編集されてHDD6に格納される。曲編集プログラム61は、曲データを編集するためにCPU1によって実行されるプログラムである。好ましい態様において、この曲編集プログラム61は、ピアノの鍵盤の画像からなるGUI(グラフィカルユーザインタフェース)を表示部3に表示させる。ユーザは、表示部3に表示された鍵盤における所望の鍵の画像を操作部4の操作により指定し、また、その音符に合わせて発声する歌詞を操作部4の操作により入力することができる。曲編集プログラム61は、このようにして、音符とその音符に合わせて発声する歌詞に関する情報をユーザから操作部4を介して受け取り、音符毎に音符データと歌詞データとを曲データ62としてHDD6内に格納する。さらにユーザは操作部4の操作によりダイナミックス情報等を曲データ62に追加することができる。なお、このように曲データ62の全てを操作部4の操作により入力させるのではなく、歌唱合成装置に鍵盤を接続し、ユーザによる鍵盤の操作を検知することにより音符データを生成し、この音符データに対応させる歌詞を操作部4の操作により入力させるようにしてもよい。
1個の音符に対応した音符データは、音符の発生時刻、音高、音符の長さを示す各情報を含んでいる。歌詞データは、音符に合わせて発音すべき歌詞を音符毎に定義したデータである。曲データ62は、曲の開始からの発生順序に合わせて、個々の音符に対応した音符データと歌詞データとを時系列的に並べたものであり、曲データ62内において音符データと歌詞データは音符単位で対応付けられている。
歌唱合成プログラム64は、この曲データ62に従って、歌唱音を合成させる処理をCPU1に実行させるプログラムである。また、透かし埋め込みプログラム67は、歌唱合成プログラムの実行により得られる歌唱音を示す歌唱データに対し、例えば歌唱曲の創作者を特定する情報や創作年月日等の著作権情報を示すシンボル列を埋め込む処理をCPU1に実行させるプログラムである。本実施形態による歌唱合成装置は、歌唱合成プログラム64と透かし埋め込みプログラム67を同時に実行可能な構成となっている。好ましい態様において、歌唱合成プログラム64、曲編集プログラム61および透かし埋め込みプログラム67は、例えばインターネット内のサイトからインタフェース群5の中の適当なものを介してダウンロードされ、HDD6にインストールされる。また、他の態様において、歌唱合成プログラム64等は、CD−ROM、MDなどのコンピュータ読み取り可能な記憶媒体に記憶された状態で取引される。この態様では、インタフェース群5の中の適当なものを介して記憶媒体から歌唱合成プログラム64等が読み出され、HDD6にインストールされる。
音声素片データベース63は、CV(子音から母音への遷移部)、VV(母音から他の母音への遷移部)、VC(母音から子音への遷移部)などの音素から音素への遷移部分(Articulation)や母音Vの伸ばし音(Stationary)など、歌声の素材となる各種の音声素片を示す音声素片データの集合体である。これらの音声素片データは、実際の人間が発した音声波形から抽出された音声素片に基づいて作成されたデータである。音声素片データベース63では、男性歌手、女性歌手、澄んだ声の歌手、ハスキーな声の歌手など、声質の異なった歌手毎に、各歌手の歌唱音声波形から得られた音声素片データのグループが用意されている。歌唱合成プログラム64による歌唱合成の際、ユーザは、操作部4の操作により、以上のような各種の音声素片データのグループの中から歌唱合成に使用する音声素片データのグループを選択することができる。本実施形態では、歌唱合成プログラム64とともに透かし埋め込みプログラム67が実行されるとき、ユーザが選択した音声素片データのグループを特定する情報が歌唱合成プログラム64から透かし埋め込みプログラム67に引き渡されるようになっている。
各音声素片データは、音声素片の波形を示す波形データを含んでいる。この波形データは、音声素片の波形を所定のサンプリングレートでサンプリングしたサンプル列に対し、上記第1実施形態において窓掛け部121および時間/周波数変換部122が行ったようなフレームへの分割、窓掛け処理およびFFTを行うことにより得られたフレーム毎の振幅スペクトラム列および位相スペクトラム列を含む。また、各音声素片データは、音声素片を構成する音素の種類と各音素の開始時刻を示すセグメンテーションデータを含む。
本実施形態では、音声素片データに含まれる波形データにピッチ変換を施して利用することにより、任意のメロディに対応した歌唱音声を合成する。このピッチ変換を行うために、その対象である波形データのピッチに関する情報が必要である。そこで、本実施形態では、歌唱合成の際のピッチ変換の便宜のため、音声素片の波形のピッチがフレーム毎に算出され、各フレームにおけるピッチを示す素片ピッチデータが音声素片データの一部として音声素片データベース63に格納される。
さらに本実施形態では、歌唱合成および電子透かし情報の埋め込み処理の便宜のため、上記素片ピッチデータに加えて、音声素片の振幅スペクトラムのエンベロープがフレーム毎に求められ、各フレームにおけるスペクトラムエンベロープを示すスペクトラムエンベロープデータが音声素片データの一部として音声素片データベース63に格納される。
図6は歌唱合成プログラム64の構成を示すブロック図である。図6に示すように、歌唱合成プログラム64は、各々所定の機能を実現するプログラムである歌唱合成スコア生成部641と、素片選択部642と、ピッチ変換部643と、素片連結部644とにより構成されている。なお、本実施形態では、CPU1が歌唱合成スコア生成部641等に相当する各プログラムを実行することにより歌唱音声の合成を行うが、これらの各プログラムを複数のプロセッサが分担して並列実行するように構成してもよい。また、歌唱合成スコア生成部641等の各プログラムの一部を電子回路により構成してもよい。
図6において、歌唱合成スコア生成部641は、操作部4の操作により指定された曲データ62から歌唱合成スコア650を生成するプログラムである。この歌唱合成スコア650は、音韻データトラック651と、ピッチデータトラック652と、ダイナミックス等のその他の合成パラメータのデータトラック653とにより構成される。これらの各データトラックは、時間軸を共通にするものである。音韻データトラック651は、1曲分の歌唱音声を合成するのに使用する複数の音声素片と、それらの各音声素片の時間軸上における位置(具体的には音声素片の開始タイミングおよび継続時間)を示すデータトラックである。ピッチデータトラック652は、合成すべき歌唱音声のピッチを示すデータトラックである。その他のデータトラック653は、ダイナミックス情報などのピッチ以外の合成パラメータを曲の進行に合わせて時系列化したデータトラックである。
歌唱合成スコア生成部641は、音韻データトラック651を生成するための手段として、音素列/音声素片変換手段と、タイミング合わせ手段とを有している。音素列/音声素片変換手段は、歌詞データが示す音素列を音声素片の列に変換する。通常、音素列において子音−母音−子音というように音韻が変化する場合、音素列/音声素片変換手段は、子音から母音への遷移部分の音声素片CVと、母音の伸ばし音の音声素片Vと、母音から子音への遷移部分の音声素片VCとを用いて、CV−V−VCなる音声素片列を構成する。例えば歌詞データが示す音素列が[sa−i−ta]である場合、音素列/音声素片変換手段は、これを#s、s−a、a、a−i、i、i−t、t−a、a#という音声素片の列に変換する。ここで、#sは、無音から子音sへの遷移部分である音声素片、s−aは子音sから母音aへの遷移部分である音声素片である。他の音声素片もこれと同じ表記方法による。なお、音素列において子音−母音−子音というように音韻が変化する場合において音符長が短い場合には、音素列/音声素片変換手段は、CV−VCなる音声素片列への変換を行ってもよい。
タイミング合わせ手段は、歌詞データから得られた各音声素片の発生時刻を決定し、それらの時刻において各音声素片を発生させることを示す音韻データトラック651を生成する。その際、歌唱合成スコア生成部641は、発生させる音声素片の音声素片データ内のセグメンテーションデータを参照して、音声素片における母音部分の開始時刻を求め、音符データが示すノートオンタイミングにおいて音声素片における母音部分の開始されるように各音声素片の発生時刻を決定する。
歌唱合成スコア生成部641は、基本的には音符データに従い、また、ビブラートやポルタメント、レガートの指示がある場合にはそれに従い、ピッチデータトラック652を生成する。ただし、ピッチデータトラックを音符データ通りのものにすると、ピッチの変化が階段状になり、不自然な歌唱音声になるので、本実施形態では、音符の切り換わり区間においてピッチが自然な動きをするように、ピッチデータトラック652が示すピッチに変化を与える。その他のデータトラック653は、曲データ62に含まれるダイナミックス情報等に基づいて作成される。
素片選択部642、ピッチ変換部643および素片連結部644は、歌唱合成スコア650に従って歌唱音声の波形を示すデジタル音声信号を生成する役割を担っている。ここで、歌唱合成スコア650からデジタル音声信号を生成する処理は、1曲分の歌唱合成スコア650の生成が完了した後に開始するようにしても良いし、歌唱合成スコア650の生成開始から少し遅れて開始されるようにしても良い。
素片選択部642は、歌唱合成スコア650の音韻データトラック651において指定されている音声素片の音声素片データを音声素片データベース63からロードし、その波形データをピッチ変換部643に引き渡すプログラムである。本実施形態における素片選択部642は、音声素片データに含まれる波形データをピッチ変換部643に引き渡す際に、その継続時間長を歌唱合成スコア650において指定された音声素片の継続時間長に合わせる機能を備えている。
ピッチ変換部643は、ピッチデータトラック652において指定されたピッチに対応した波形データとなるように、素片選択部642から引き渡された音声素片の波形データのピッチ変換を行うプログラムである。さらに詳述すると、例えば音声素片の波形データがフレーム毎に振幅スペクトラム列および位相スペクトラム列を含むとともにスペクトラムエンベロープデータを含む場合、ピッチ変換部643は、ピッチデータトラック652において指定されたピッチに対応するように、各フレームにおけるスペクトラムエンベロープを周波数軸方向に伸長または圧縮する。その際、基音および倍音に相当する周波数の近傍は、元のスペクトラムの概形が保たれるように、非線形な圧縮または伸長を行い、ピッチ変換後の振幅スペクトラムとする。また、ピッチ変換後においてもピッチ変換前のスペクトラムエンベロープが維持されるように、非線形な圧縮または伸張を経た振幅スペクトラムのレベル調整を行う。位相スペクトラムに関しては、元の位相スペクトラムをそのままピッチ変換後の位相スペクトラムとしてもよいが、振幅スペクトラムの周波数軸方向の圧縮または伸張に合わせて補正を行ったものをピッチ変換後の位相スペクトラムとする方が好ましい。
素片連結部644は、フレーム毎にピッチ変換部643の処理を経た波形データを時間領域のデジタル音声信号に変換し、1/2フレームずつオーバラップさせて繋ぎ合わせ、歌唱データとして出力するプログラムである。本実施形態では、歌唱合成プログラム64とともに透かし埋め込みプログラム67が実行されるとき、素片連結部644は、歌唱データと、各フレームにおけるスペクトラムエンベロープを示すスペクトラムエンベロープデータと、各フレームにおける平均エネルギーPsを示す情報を透かし埋め込みプログラム67に引き渡すようになっている。
なお、以上説明した歌唱合成プログラム64の詳細については特許文献4を参照されたい。
図7は透かし埋め込みプログラム67の構成を示すブロック図である。なお、この図において、上記第1実施形態の埋め込み装置100の各部と対応する部分には共通の符号が使用されている。図7において、上記第1実施形態と同様、擬似雑音生成部110Aは、電子透かし情報(例えば著作権情報)のシンボル列を構成するシンボル“0”および“1”に対応した各擬似雑音信号を生成するものである。ここで、擬似雑音信号は、そのスペクトラムが歌唱データのスペクトラムと干渉しないように、歌唱データのスペクトラムとの相互相関の低いものであることが望まれる。そして、歌唱データのスペクトラム分布は、歌唱データの合成に用いる音声素片データの発声者に依存する。そこで、本実施形態における擬似雑音生成部110Aは、例えば男性の音声素片データのグループ、女性の音声素片データのグループ等の音声素片データのグループ毎に、それらの音声素片データのスペクトラムとの干渉が少なく、それらの音声素片データを用いて合成された歌唱データに埋め込むのに適した擬似雑音信号を記憶している。擬似雑音生成部110Aは、歌唱合成に用いられる音声素片データのグループを特定する情報を歌唱合成プログラム64から受け取り、シンボルの歌唱データへの埋め込み時には、埋め込み対象であるシンボルを示す擬似雑音信号であって、歌唱合成プログラム64からの情報が示すグループのために用意された擬似雑音信号を埋め込み雑音合成部120Aに出力する。
埋め込み雑音合成部120Aは、上記第1実施形態における埋め込み雑音合成部120から窓掛け部121、時間/周波数変換部122、絶対値算出部123、スペクトラムエンベロープ算出部124を削除した構成となっている。本実施形態における時間/周波数逆変換部125は、歌唱合成プログラム64の素片連結部644(図6参照)がフレーム毎に出力するスペクトラムエンベロープデータを受け取り、このスペクトラムエンベロープデータにIFFTを施し、畳み込み部126に供給するフィルタ係数列を生成する。また、ゲイン算出部127は、同素片連結部644がフレーム毎に出力する歌唱音声の平均エネルギーPsを示す情報を受け取り、前掲式(1)にこの平均エネルギーPsを代入することにより乗算器128に供給するゲインαを算出する。他の点は、上記第1実施形態における埋め込み雑音合成部120と同様である。
埋め込み雑音合成部120Aは、以上の構成により、フレーム毎に歌唱データと同じスペクトラムエンベロープを持った埋め込み雑音信号を埋め込み対象のシンボルを示す擬似雑音信号を用いて合成する。そして、加算器130は、この埋め込み雑音信号を歌唱データに加算し、埋め込み済み歌唱データ68としてHDD6に格納する。ユーザは、このHDD6に格納された埋め込み済み歌唱データ68をインタフェース群5を介して例えばインターネット上のサーバにアップロードし、あるいは何らかの記録媒体に記録することができる。
図8は、以上説明した歌唱合成装置によって出力された埋め込み済み歌唱データから電子透かし情報(例えば著作権情報)を抽出する抽出装置200Aの構成を示すブロック図である。この抽出装置200Aは、上記第1実施形態における抽出装置200の擬似雑音生成部220を擬似雑音生成部220Aに置き換え、さらに音声認識部240を追加した構成となっている。擬似雑音生成部220Aは、例えば男性の音声素片データのグループ、女性の音声素片データのグループ等の音声素片データのグループ毎に、上記透かし埋め込みプログラム67の擬似雑音生成部110Aが記憶しているものと同じ擬似雑音信号を記憶している。音声認識部240は、バッファ210に蓄積された埋め込み済み歌唱データに音声認識処理を施し、埋め込み済み歌唱データがいずれのグループの音声素片データを用いて合成されたかを判定し、該当するグループを擬似雑音生成部220Aに通知する。擬似雑音生成部220Aは、埋め込み対象であるシンボルを示す擬似雑音信号として、音声認識部240から通知されたグループのものを選択し、時間/周波数変換部221に供給する。他の点は、上記第1実施形態における抽出装置200と同様である。
本実施形態によれば、上記第1実施形態の効果に加えて、さらに次の効果が得られる。まず、透かし埋め込みプログラム67に関しては、歌唱合成プログラム64が出力するスペクトラムエンベロープデータや平均エネルギーPsに関する情報を利用して埋め込み雑音信号を合成するので、埋め込み雑音信号の合成のための演算量を少なくすることができるという効果が得られる。また、歌唱合成に用いられる音声素片のスペクトラムと干渉しないスペクトラム分布を持った擬似雑音信号を生成して歌唱データに埋め込むようにしているので、抽出装置200A側において安定して電子透かし情報の抽出を行うことができるという効果が得られる。
<他の実施形態>
以上、この発明の第1および第2実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。例えば次の通りである。
(1)上記第1および第2実施形態では、電子透かし情報の抽出時に、擬似雑音生成部220または220Aが出力する擬似雑音信号を時間/周波数変換部221および複素共役化部222に処理させるようにした。しかし、予め各種の擬似雑音信号を生成して、時間/周波数変換部221および複素共役化部222に処理させた結果得られる複素スペクトラム列をメモリに記憶させておき、電子透かし情報の抽出時には、このメモリに記憶された複素スペクトラム列を相関算出部230に供給するように構成してもよい。この態様では、抽出装置200から時間/周波数変換部221および複素共役化部222を削除することができる。
(2)上記第2実施形態では、歌唱合成装置に同実施形態による電子透かし情報の埋め込み機能を持たせたが、歌唱ではない通常の話声を合成する音声合成装置に同実施形態による電子透かし情報の埋め込み機能を持たせてもよい。
(3)上記第1および第2実施形態において、抽出装置200側において埋め込み済み合成信号から電子透かし情報のシンボルを抽出する際の時間精度を高めるために、埋め込み装置100側において電子透かし情報であるデータシンボルを示す擬似雑音信号とともに抽出装置200側において内容が既知である同期用のパイロットシンボルを示す擬似雑音信号を合成音声信号に埋め込むようにしてもよい。この場合、抽出装置200側では、埋め込み済み合成音声信号内においてパイロットシンボルを示す擬似雑音信号が埋め込まれた区間を探索する制御を行い、この探索により求めた区間から電子透かし情報であるデータシンボルを抽出すればよい。パイロットシンボルを示す擬似雑音信号を合成音声信号に埋め込む態様に関しては各種考えられるが、例えば帯域分割を利用してもよい。この態様では、埋め込み装置100側では、データシンボルを示す擬似雑音信号およびパイロットシンボルを示す擬似雑音信号を互いにオーバラップしない高域と低域に帯域制限し、帯域制限された両擬似雑音信号を合成音声信号に埋め込んで伝送する。そして、抽出装置200側では、埋め込み済み合成音声信号を高域と低域に分割し、一方の帯域の埋め込み済み合成音声信号内においてパイロットシンボル列の所在区間を探索し、他方の帯域の埋め込み済み合成音声信号においてパイロットシンボル列の所在区間に対応する区間からデータシンボルの抽出を行うのである。