以下、本発明の実施形態について図面を参照して詳細に説明する。
(1.装置構成)
まず、本発明の装置構成について説明する。図1は、本発明に係る音響信号に対する情報の埋め込み装置の構成図である。図1において、100は電子透かし埋め込み手段、200は電子透かし抽出・照合手段、300は記憶手段、301は音響信号記憶部、302は付加情報記憶部、303は改変音響信号記憶部、304は埋込ログ記憶部、305は抽出ログ記憶部である。
(2.電子透かし埋め込み手段)
図2は、電子透かし埋め込み手段100の詳細を示す機能ブロック図である。図2において、10は音響フレーム読込手段、20は抽出ログ読込手段、30は付加情報読込手段、40は周波数変換手段、50は低周波成分変更手段、60は周波数逆変換手段、70は埋込ログ記録手段、80は改変音響フレーム出力手段である。なお、図2に示す装置は、ステレオ音響信号、モノラル音響信号の両方に対応可能であるが、ここでは、ステレオ音響信号に対して処理を行う場合について説明していく。
音響フレーム読込手段10は、付加情報の埋め込み対象とする元のステレオ音響信号の各チャンネルから所定数のサンプルを1フレームとして読み込む機能を有している。抽出ログ読込手段20は、抽出ログ記憶部305に抽出ログファイルが存在する場合に、抽出ログファイルを読み込み、音響フレーム読込手段10が読み込んだ音響フレームに対応する抽出ログデータを参照し、その音響フレームに対して付加情報を構成するビット値を埋め込み禁止とすべきか否かを判断する機能を有している。抽出ログファイルは、電子透かし抽出・照合手段200によりエラーが発生した音響フレームについての抽出ログデータを記録したファイルである。付加情報読込手段30は、付加情報記憶部302から付加情報を抽出する機能を有している。なお、付加情報とは、音響情報に付加して埋め込むべき情報であり、タイトルやアーティスト名等の属性情報、および属性情報以外の他の情報を含むものである。
周波数変換手段40は、音響フレーム読込手段10が読み込んだ音響信号のフレームをフーリエ変換等により周波数変換してフレームスペクトルを生成する機能を有している。低周波成分変更手段50は、生成されたフレームスペクトルから3つの所定周波数範囲に相当するスペクトル集合を3セット抽出し、付加情報記憶部302から抽出した付加情報に基づいて、低周波強度データのスペクトル集合間の割合(比率)を変更する機能を有している。周波数逆変換手段60は、変更された低周波強度データを含む複数のフレームスペクトルに対して周波数逆変換を行うことにより、改変音響フレームを生成する機能を有している。埋込ログ記録手段70は、各改変音響フレームに対して、どのような情報を埋め込んだかを埋込ログファイルに記録する機能を有している。改変音響フレーム出力手段80は、生成された改変音響フレームを順次出力する機能を有している。記憶手段300は、付加情報を埋め込む対象とするステレオ音響信号を記憶した音響信号記憶部301と、ビット配列として構成され、ステレオ音響信号に埋め込まれる付加情報を記憶した付加情報記憶部302と、付加情報埋め込み後の改変音響信号を記憶する改変音響信号記憶部303を有しており、その他処理に必要な各種情報を記憶するものである。図2に示した各構成手段は、現実にはコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。図2に示した電子透かし埋め込み手段100は、特許文献10に記載の埋め込み装置とほぼ同様の機能を有するものとなっている。
(2.1.電子透かし埋め込み手段の処理動作)
次に、図2に示した電子透かし埋め込み手段100の処理動作について図3のフローチャートに従って説明する。ここでは、音響信号として、L(左)、R(右)の2チャンネルを有するステレオ音響信号に対して処理を行う場合について説明していく。図3は、付加情報1バイトの処理に対応したものとなっている。まず、付加情報読込手段30は、付加情報記憶部302から付加情報を1バイト単位で読み込む(S101)。具体的には、音響信号に対する情報の埋め込み装置として用いられるコンピュータ内のレジスタに1バイト読み込むことになる。続いて、モードを区切りモードに設定する(S102)。モードは区切りモードと、ビットモードの2種類が存在する。区切りモードは1バイト単位の区切りにおける処理を行うモードを示し、ビットモードは1バイトの各ビットの値に基づいた処理を行うモードを示している。付加情報記憶部302から1バイト読み込んだ場合には、その直後に必ず区切りモードに設定されることになる。
続いて、音響フレーム読込手段10が、音響信号記憶部301に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルを1音響フレームとして読み込む(S104)。音響フレーム読込手段10が読み込む1音響フレームのサンプル数は、適宜設定することができるが、サンプリング周波数が44.1kHzの場合、4096サンプル程度とすることが望ましい。したがって、音響フレーム読込手段10は、左チャンネル、右チャンネルについてそれぞれ4096サンプルずつ、順次音響フレームとして読み込んでいくことになる。この際、抽出ログ読込手段20は、抽出ログ記憶部305に抽出ログファイルが存在するかどうかを判断する。抽出ログファイルが存在し、読み込んだ音響フレームに対応する抽出ログデータが存在する場合には、その音響フレームに対して付加情報を構成するビット値を埋め込み禁止とすべきであると判断する。
続いて、周波数変換手段40は、読み込んだ各音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る(S105)。具体的には、各音響フレームについて、3つの窓関数を用いて行う。周波数変換としては、フーリエ変換、ウェーブレット変換その他公知の種々の手法を用いることができる。本実施形態では、フーリエ変換を用いた場合を例にとって説明する。
ここで、一般的なフーリエ変換を行う場合について説明しておく。所定の信号に対してフーリエ変換を行う場合、信号を所定の長さに区切って行う必要があるが、この場合、所定長さの信号に対してそのままフーリエ変換を行うと、区切り部分が不連続になる。そこで、一般にフーリエ変換を行う場合には、ハニング窓と呼ばれる窓関数を用いて、信号の値を変化させた後、変化後の値に対してフーリエ変換を実行する。
ここで、一般的なフーリエ変換を行う場合の信号波形の変化の様子を図4に示す。図4において、横軸は時間軸(t)であり、図4(a)〜図4(c)は全て対応したものとなっている。また、図4(a)、図4(c)において縦軸は信号の振幅値(レベル)を示す。図4(b)において縦軸は窓関数W(t)の値を示している。なお、W(t)=0.5−0.5・cos(2πt/T)であり、W(t)の最大値は1である。
一般的なフーリエ変換の場合、図4(a)に示すような所定長さの信号に対して、図4(a)に示すような窓関数W(t)を乗じて、図4(c)に示すような信号に変換する。そして、図4(c)に示すような波形の信号をフーリエ変換対象としてフーリエ変換を実行することになる。
電子透かし埋め込み手段100では、フーリエ変換後の不連続性を除去するためではなく、一つの音響フレームから、情報を埋め込むための複数の状態を作り出すため、複数の窓関数を用意し、一つの音響フレームに対して、各窓関数を利用してフーリエ変換を行い、複数のスペクトルを得る。ここで、1音響フレームの信号波形および複数の窓関数W(1,i)、W(2,i)、W(3,i)の様子を図5に示す。図5において、横軸は時間軸(i)である。iは、後述するように、各音響フレーム内のN個のサンプルに付した通し番号であるため時刻tに比例している。また、図5(a)(e)(f)(g)において縦軸は信号の振幅値(レベル)を示す。図5(b)〜(d)において縦軸は窓関数W(1,i)、W(2,i)、W(3,i)の値を示しており、W(1,i)、W(2,i)、W(3,i)の最大値はいずれも1である。
第1窓関数W(1,i)は、音響フレームの前部を抽出するためのものであり、図5(b)に示すように前部の所定のサンプル番号iの位置において、最大値1をとり、後部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、第1窓関数W(1,i)の設計によって異なってくる。第1窓関数W(1,i)を乗じることにより、図5(a)に示すような音響フレームの信号波形は、図5(e)に示すように、前部に信号成分が残り、後部の信号成分が削除されたものとなり、これがフーリエ変換対象となる。また、第2窓関数W(2,i)は、音響フレームの中央部を抽出するためのものであり、図5(c)に示すように、中央部の所定のサンプル番号iの位置において、最大値1をとり、前部、後部においては、最小値0をとるように設定されている。第2窓関数W(2,i)を乗じることにより、図5(a)に示すような音響フレームの信号波形は、図5(f)に示すように、中央部に信号成分が残り、前部と後部の信号成分が削除されたものとなり、これがフーリエ変換対象となる。また、第3窓関数W(3,i)は、音響フレームの後部を抽出するためのものであり、図5(d)に示すように、前部においては最小値0をとり、後部の所定のサンプル番号iの位置において、最大値1をとるように設定されている。第3窓関数W(3,i)を乗じることにより、図5(a)に示すような音響フレームの信号波形は、図5(g)に示すように、前部の信号成分が削除され、後部に信号成分が残ったものとなり、これがフーリエ変換対象となる。このように前部、中央部、後部を抽出した後、フーリエ変換を実行するため、前部、中央部、後部に対応したスペクトルが得られることになる。1つの音響フレームにビット値を埋め込むためには、本来、前部と後部の2つに分けられれば良いのであるが、抽出側においては、必ずしも、信号を同期して読み込むことができるとは限らず、したがって、前部と後部をはっきりと区別するため、本発明では、中央部の信号も抽出することとしている。
具体的には、各窓関数は、ハニング窓関数W(i)=0.5−0.5・cos(2πi/N)を基本として窓分割を行うための窓分離関数Wc(i)を以下の〔数式1〕に示すように定義し、この窓分離関数Wc(i)を用いて定められる。
〔数式1〕
3N/8≦i≦5N/8のとき、Wc(i)=0.5−0.5・cos(8π(i−3N/8)/N)
i<3N/8またはi>5N/8のとき、Wc(i)=0.0
そして、この窓分離関数Wc(i)を利用して、第1窓関数W(1,i)、第2窓関数W(2,i)、第3窓関数W(3,i)を以下の〔数式2〕に示すように定義する。
〔数式2〕
W(2,i)=W(i)・Wc(i)
i≦N/2のとき、W(1,i)={1−Wc(i)}W(i)、W(3,i)=0.0
i>N/2のとき、W(1,i)=0.0、W(3,i)={1−Wc(i)}W(i)
図5および上記〔数式1〕〔数式2〕からわかるように、第1窓関数、第2窓関数、第3窓関数は、ハニング窓関数を1音響フレームにおいて時間軸上で分割したものである。このうち、第1窓関数と第2窓関数、第2窓関数と第3窓関数は、同一時刻において、双方が同時に0でない値をもつような箇所が存在するように、すなわち時間軸上で互いにオーバーラップして設定される。また、第1窓関数と第3窓関数は、一方が0でない値をもつ場合に他方は必ず0となるように、すなわち時間軸上で互いにオーバーラップしないように設定される。また、第1窓関数、第3窓関数は、図5(b)(d)に示すように、その両側が非対称な余弦関数をもつように設定される。これは、第1窓関数を通して処理された結果と第3窓関数を通して処理された結果との違いが明瞭になるようにするためで、処理された音響フレームが時間軸上でずれが発生しても、互いに逆の窓関数で解析されるのを防ぐことができる。
S105においてフーリエ変換を行う場合、具体的には、左チャンネル信号xl(i)、右チャンネル信号xr(i)(i=0,…,N−1)に対して、上記〔数式2〕に従った3つの窓関数である第1窓関数W(1,i)、第2窓関数W(2,i)、第3窓関数W(3,i)を用いて、以下の〔数式3〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(1,j)、Al(2,j)、Al(3,j)、虚部Bl(1,j)、Bl(2,j)、Bl(3,j)、右チャンネルに対応する変換データの実部Ar(1,j)、Ar(2,j)、Ar(3,j)、虚部Br(1,j)、Br(2,j)、Br(3,j)を得る。なお、窓関数W(1,i)、W(2,i)、W(3,i)は、それぞれ音響フレームの前部(先頭)付近、中央付近、後部付近において値が大きくなる関数となっている。
〔数式3〕
Al(1,j)=Σi=0,…,N-1W(1,i)・xl(i)・cos(2πij/N)
Bl(1,j)=Σi=0,…,N-1W(1,i)・xl(i)・sin(2πij/N)
Al(2,j)=Σi=0,…,N-1W(2,i)・xl(i)・cos(2πij/N)
Bl(2,j)=Σi=0,…,N-1W(2,i)・xl(i)・sin(2πij/N)
Al(3,j)=Σi=0,…,N-1W(3,i)・xl(i)・cos(2πij/N)
Bl(3,j)=Σi=0,…,N-1W(3,i)・xl(i)・sin(2πij/N)
Ar(1,j)=Σi=0,…,N-1W(1,i)・xr(i)・cos(2πij/N)
Br(1,j)=Σi=0,…,N-1W(1,i)・xr(i)・sin(2πij/N)
Ar(2,j)=Σi=0,…,N-1W(2,i)・xr(i)・cos(2πij/N)
Br(2,j)=Σi=0,…,N-1W(2,i)・xr(i)・sin(2πij/N)
Ar(3,j)=Σi=0,…,N-1W(3,i)・xr(i)・cos(2πij/N)
Br(3,j)=Σi=0,…,N-1W(3,i)・xr(i)・sin(2πij/N)
上記〔数式3〕において、iは、各音響フレーム内のN個のサンプルに付した通し番号であり、i=0,1,2,…N−1の整数値をとる。また、jは周波数の値について、値の小さなものから順に付した通し番号であり、iと同様にj=0,1,2,…N−1の整数値をとる。サンプリング周波数が44.1kHz、N=4096の場合、jの値が1つ異なると、周波数が10.8Hz異なることになる。
上記〔数式3〕に従った処理を実行することにより、各音響フレームの信号成分を周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、低周波成分変更手段50が、生成されたフレームスペクトルから3つの所定周波数範囲のスペクトル集合を抽出する。人間の聴覚は、200〜300Hz程度までの低周波成分については、方向性を感知しにくくなっていることが知られている(コロナ社1990年10月30日発行「音響工学講座1.基礎音響工学、日本音響学会編」p247図9・26参照)。したがって、本実施形態では、低周波成分を200Hz程度以下としている。周波数200Hz付近は、上記jが20に相当するので、上記〔数式3〕により算出された実部Al(1,j)、Al(2,j)、Al(3,j)、虚部Bl(1,j)、Al(2,j)、Al(3,j)、実部Ar(1,j)、Ar(2,j)、Ar(3,j)、虚部Br(1,j)、Br(2,j)、Br(3,j)のうち、j≦20のものを抽出することになる。
続いて、低周波成分変更手段50は、抽出した実部Al(1,j)等((2,j)(3,j)も含む、他の実部、虚部についても同様)、虚部Bl(1,j)等、実部Ar(1,j)等、虚部Br(1,j)等のうち、左チャンネルの実部Al(1,j)等、虚部Bl(1,j)等を利用して、以下の〔数式4〕により、合算値E1、合算値E2を算出する。
〔数式4〕
E1=Σj=1,…,M-3{Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}
E2=Σj=1,…,M-3{Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}
上記〔数式4〕により算出されたE1は音響フレーム前部付近のスペクトル集合の成分強度の合算値、E2は音響フレーム後部付近のスペクトル集合の成分強度の合算値を示すことになる。続いて、この合算値E1、E2がレベル下限値Lev以上であるかどうかの判定を行う。レベル下限値Levは、音響信号xl(i)、xr(i)の振幅最大値が1に正規化されており、M=20に設定されている場合、0.05に設定する。この条件において、経験的にアナログ変換への耐性が維持できるレベルは“0.5”となり、上記特許文献10においてもそのように設定しているが、本発明においては、後述するように、電子透かし抽出・照合手段200において照合を行うため、余裕を持たせておく必要がある。したがって、本実施形態においては、アナログ変換への耐性が維持できるレベルの1/10程度の0.05に設定している。なお、上記〔数式4〕において、総和を計算する範囲を1〜M−3までとし、M−2、M−1、Mを除外しているのは、後述するように、非埋め込み領域との分離を明瞭にするためである。
合算値E1、E2がレベル下限値Lev以上であるかどうかを判断するのは、信号の強度が小さいと、信号を変化させても、その変化を抽出側で検出することができないためである。また、本実施形態では、第1の値(例えば“1”)と第2の値(例えば“0”)をとり得るビット値が“1”の場合、窓3成分に、ビット値が“0”の場合、窓1成分に、埋め込むこととしている。したがって、埋め込むビット値が“1”の場合は、合算値E1が下限値Lev未満であるとき、埋め込むビット値が“0”の場合は、合算値E2がレベル下限値Lev未満であるとき、付加情報のビット値に応じた記録をせず、先頭ビットから再度処理するため、読み込み位置を先頭ビットに戻し、モードを区切りモードに設定する(S106)。一方、埋め込むビット値が“1”で合算値E1がレベル下限値Lev以上であるか、埋め込むビット値が“0”で合算値E2がレベル下限値Lev以上であるときには、モードを判断することになる。
低周波成分変更手段50は、モードが区切りモードである場合、左(L)チャンネル信号において、窓1成分と窓3成分を均等(全て0となる場合も含む)とする処理を行う(S108)。具体的には、以下の〔数式5〕に従って、L側の双方を0に設定する処理を実行することになる。この場合、右(R)チャンネル信号の窓1成分と窓3成分は必ずしも均等ではない。
〔数式5〕
j=1〜Mに対して、
Al´(1,j)=0
Bl´(1,j)=0
Al´(3,j)=0
Bl´(3,j)=0
ステレオの場合、右信号に対応した以下も算出
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Ar´(1,j)=Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Ar´(3,j)=Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=Br(3,j)・E(3,j)/{Ar(3,j)2+Br(1,j)2}1/2
上記〔数式5〕に従った処理を実行することにより、左チャンネルのフレームスペクトルの低周波数成分は、窓1成分と窓3成分共に“0” で同一となる。この窓1成分と窓3成分が均等のパターンは、付加情報の先頭位置(区切り)を示す情報となる。なお、上記〔数式5〕においては、窓1成分と窓3成分ともにAl´(j)=Bl´(j)=0としているが、抽出側で区切りであることが認識可能とすることを目的としているため、十分小さな値であれば、必ずしも0とする必要はない。また、必ずしも窓1成分と窓3成分において同一である必要はなく、差が小さければ良い。この意味で、ここでは「均等」という言葉を用いている。
一方、低周波成分変更手段50は、モードがビットモードである場合、付加情報記憶部302から抽出した付加情報のビット配列のビット値に応じて、左チャンネル信号の窓1成分と窓3成分のスペクトル強度の割合を窓1成分が優位か、窓3成分が優位かのいずれかの状態に変更する処理を行う(S107)。ここで、「優位」とは、一方の窓成分のスペクトル集合におけるスペクトル強度が、他方の窓成分のスペクトル集合におけるスペクトル強度よりも大きいことを示す。そこで、S107においては、第1の値と第2の値をとり得るビット値に応じて以下の〔数式6〕、〔数式7〕のいずれかに従った処理を実行することにより、窓1成分のスペクトル強度と、窓3成分のスペクトル強度の大小関係を変更し、窓1成分が優位か、窓3成分が優位かのいずれかに変更する処理を行う。例えば、第1の値を1、第2の値を0とした場合、ビット値が1のとき、窓1成分に対して、以下の〔数式6〕に従った処理を実行する。
〔数式6〕
j=1〜Mに対して
Al´(1,j)=0
Bl´(1,j)=0
ステレオの場合、右信号に対応した以下も算出
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Ar´(1,j)=Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
なお、上記〔数式6〕において、最後の3つの式を用いて、E(3,j)、Al´(3,j)、Bl´(3,j)を算出している点は、上記特許文献10とは異なる点である。このように、情報が埋め込まれる左チャンネル信号の窓3成分に、右チャンネル信号の対応する周波数成分を加算して、Al´(3,j)、Bl´(3,j)を得ることにより、窓3成分と他の窓成分の強度の大小が明確となり、抽出側において、情報の抽出が行い易くなる。
なお、この場合、窓3成分の一部の周波数成分に対しては、以下の〔数式7〕に従った処理を実行する。
〔数式7〕
j=M−2、M−1、Mの3成分に対して
Al´(3,j)=0
Bl´(3,j)=0
ステレオの場合、右信号に対応した以下も算出
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Ar´(3,j)=Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
ビット値が0のとき、窓3成分に対して、以下の〔数式8〕に従った処理を実行する。
〔数式8〕
j=1〜Mの各成分に対して
Al´(3,j)=0
Bl´(3,j)=0
ステレオの場合、右信号に対応した以下も算出
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Ar´(3,j)=Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
なお、上記〔数式8〕において、最後の3つの式を用いて、E(1,j)、Al´(1,j)、Bl´(1,j)を算出している点は、上記〔数式6〕の場合と同様、上記特許文献10とは異なる点である。このように、情報が埋め込まれる左チャンネル信号の窓1成分に、右チャンネル信号の対応する周波数成分を加算して、Al´(1,j)、Bl´(1,j)を得ることにより、窓1成分と他の窓成分の強度の大小が明確となり、抽出側において、情報の抽出が行い易くなる。
なお、この場合、窓1成分の一部の周波数成分に対しては、以下の〔数式9〕に従った処理を実行する。
〔数式9〕
j=M−2、M−1、Mの3成分に対して
Al´(1,j)=0
Bl´(1,j)=0
ステレオの場合、右信号に対応した以下も算出
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Ar´(1,j)=Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
上記〔数式8〕〔数式9〕による処理を行った結果、窓1成分のj=M−2、M−1、Mにおいては、値が“0”となるが、他は所定値以上の信号成分が存在することになる。したがって、この場合、窓1成分が優位な状態にスペクトル強度の割合が変更されたことになる。
上記〔数式6〕および〔数式7〕、又は〔数式8〕および〔数式9〕のいずれかに従った処理を実行することにより、付加情報のビット配列の各ビット値に応じて、左チャンネル信号の窓1成分が優位か、窓3成分が優位かのどちらかのパターンに変更されることになる。
この場合、高周波帯と低周波数帯の間には、必ず信号成分が“0”の部分が存在し、これにより、高周波帯と低周波数帯の信号成分が混在することを防いでいる。結局、低周波成分変更手段50は、区切りモードの場合に〔数式5〕に基づく処理をS108において行い、ビットモードの場合に〔数式6〕〔数式7〕又は〔数式8〕〔数式9〕に基づく処理をS107において行うことになる。
上記S107、S108いずれの場合であっても、次に、低周波成分変更手段50は、窓2成分の削除を行う(S109)。具体的には、窓2成分に対して、以下の〔数式10〕に従った処理を実行することになる。
〔数式10〕
j=1〜Mの各成分に対して
Al´(2,j)=0
Bl´(2,j)=0
ステレオの場合、右信号に対応した以下も算出
E(2,j)={Al(2,j)2+Bl(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
Ar´(2,j)=Ar(2,j)・E(2,j)/{Ar(2,j)2+Br(2,j)2}1/2
Br´(2,j)=Br(2,j)・E(2,j)/{Ar(2,j)2+Br(2,j)2}1/2
なお、S104において抽出ログ読込手段20が埋め込み禁止と判断した場合には、低周波成分変更手段50は、上記〔数式4〕による合算値E1、合算値E2の算出処理を行わず、S106に進んで区切りモードに設定し、S108に進んで窓1成分と窓3成分を均等に設定する処理を行う。
次に、周波数逆変換手段60が、上記S107〜S109の処理により各窓成分のスペクトル集合間の割合が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う(S110)。この周波数逆変換は、当然のことながら、周波数変換手段40がS105において実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段40において、フーリエ逆変換を施しているため、周波数逆変換手段60は、フーリエ逆変換を実行することになる。具体的には、上記〔数式5〕〜〔数式10〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(1,j)等、虚部Bl´(1,j)等、右チャンネルの実部Ar´(1,j)等、虚部Br´(1,j)等を用いて、以下の〔数式11〕に従った処理を行い、xl´(i)、xr´(i)を算出する。なお、上記〔数式5〕〜〔数式10〕において処理されていない周波数成分については、Al´(1,j)等、Bl´(1,j)等、Ar´(1,j)等、Br´(1,j)等として、Al(1,j)等、Bl(1,j)等、Ar(1,j)等、Br(1,j)等を用いる。
〔数式11〕
xl´(i)=1/N・{ΣjAl´(1,j)・cos(2πij/N)−ΣjBl´(1,j)・sin(2πij/N)}+1/N・{ΣjAl´(2,j)・cos(2πij/N)−ΣjBl´(2,j)・sin(2πij/N)}+1/N・{ΣjAl´(3,j)・cos(2πij/N)−ΣjBl´(3,j)・sin(2πij/N)}+xlp(i+N/2)
xr´(i)=1/N・{ΣjAr´(1,j)・cos(2πij/N)−ΣjBr´(1,j)・sin(2πij/N)}+1/N・{ΣjAr´(2,j)・cos(2πij/N)−ΣjBr´(2,j)・sin(2πij/N)}+1/N・{ΣjAr´(3,j)・cos(2πij/N)−ΣjBr´(3,j)・sin(2πij/N)}+xrp(i+N/2)
上記〔数式11〕においては、式が繁雑になるのを防ぐため、Σj=0,…,N-1をΣjとして示している。
上記〔数式11〕における第1式の“+xlp(i+N/2)”、第2式の“+xrp(i+N/2)”の項は、直前に改変された改変音響フレームのデータxlp(i)、xrp(i)が存在する場合に、時間軸上N/2サンプル分重複することを考慮して加算するためのものである。上記〔数式11〕により改変音響フレームの左チャンネルの各サンプルxl´(i)、右チャンネルの各サンプルxr´(i)、が得られることになる。改変音響フレーム出力手段80は、得られた改変音響フレームを順次出力ファイルに出力する(S111)。また、この際、その音響フレームに、第1の値、第2の値、区切り情報のいずれの情報を埋め込んだかを、その音響フレームの番号と対応付けて埋込ログ記録手段70が埋込ログファイルに記録する。こうして1つの音響フレームに対する処理を終えたら、モードをビットモードに設定した後(S112)、付加情報読込手段30が付加情報のビット配列中の次のビットを読み込む(S103)。以上のような処理を音響信号の両チャンネルの全サンプルに渡って実行していく。すなわち、所定数のサンプルを音響フレームとして読み込み、音響信号から読み込むべき音響フレームがなくなったら(S104)、処理を終了する。なお、S101において読み込んだ1バイトのデータの各ビットに対応する処理を終えた場合、S103からS101に戻り、付加情報の次のバイトを読み込み処理をすることになる。付加情報の全バイトに対して、処理が終了した場合は、付加情報の先頭バイトに戻って処理を行う。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段300内の改変音響信号記憶部303に出力され、記憶される。
以上の処理による左チャンネル信号の変化の様子を図6を用いて説明する。図6において、図面左右方向は、時間軸であり、サンプル数に比例する。また、図中多数存在する矩形は、改変音響フレームの窓1成分、窓3成分を示している。窓成分を示す矩形の横幅はサンプル数、縦幅は強度を示しているが、図3においては、横幅、縦幅とも正確に示したものではなく、窓1成分に対応する先頭部分に強い信号成分があるか、窓3成分に対応する後部部分に強い信号成分があるかということを示すものである。図6(a)は、上記〔数式4〕により算出された合算値E1、E2がレベル下限値Lev未満となる音響フレームが存在しない場合、すなわち、付加情報を埋め込むには、良好な信号である場合を示している。図6(b)は、上記〔数式4〕により算出された合算値E1、E2がレベル下限値Lev未満となる音響フレームが存在する場合、すなわち、付加情報を埋め込むには、良好でない信号である場合を示している。
例えば、付加情報として、1バイト目が「11011100」、2バイト目が「11000001」の2バイトのビット配列を埋め込むとする。まず、各バイトの先頭には、区切りを示す情報として、窓3成分、窓1成分が均等な状態に設定されることになる。これは、S102により区切りモードに設定され、S108において、上記〔数式5〕に従った処理を実行した結果得られる。また、図6(a)の例では、合算値E1、E2がレベル下限値Lev未満となる音響フレームが存在しないため、1バイトが連続してS107により処理されることになる。これは、S103からS112を経由するループが8回連続して繰り返され、その間レベル下限値未満であるとしてS106およびS108を経由することがなかったことを示している。図6に示すように、付加情報のビット値が1の場合は、窓3成分に低周波成分が存在し、付加情報のビット値が0の場合は、窓1成分に低周波成分が存在する。上記〔数式6〕〜〔数式9〕からもわかるように、この場合は他方の窓成分の低周波成分は0となる。
図6(b)の例では、埋め込むべきビット値に対応したE1、E2がレベル下限値Lev未満となる音響フレームが存在するので、この場合S106およびS108を経由して、上記〔数式5〕に従った処理を実行した結果窓1成分、窓3成分が均等な状態に設定される。この場合、S106において、読み込み位置が先頭ビットに戻されるため、再び同じビットを読むことになる。図6(b)の例では、1バイト目の「11011100」を埋め込む場合に、最初は「11」の2ビット処理した時点でレベル下限値Lev未満の音響フレームが出現し、2度目は「11011」の5ビット処理した時点でレベル下限値Lev未満の音響フレームが出現し、3度目でようやく8ビット処理することができたことを示している。
しかし、図3に従った処理を行った場合には、図6(b)に示したように、低周波成分の信号レベルが小さい音響フレームが出現するたびに、1バイト単位で先頭から繰り返して処理することになるため、効率が悪い。そこで、図3に代えて、図7に示すような処理を行うようにしても良い。
図7に示す処理で、図3に示す処理と大きく異なるのは、区切りモード、ビットモードの他に継続識別モードを備え、3つのモードとし、低周波成分の信号レベルが小さい音響フレームが出現した場合であっても、先頭に戻らず、継続して処理するようにした点である。そのため、継続識別モードにおいては、次のビットが先頭から始まる新規なものか、中断されたために継続されたものであるかを識別するための情報を記録することになる。なお、図7の処理では、付加情報の処理をバイト単位でなく、ワード単位で行っている。これは、図3のS106に示したように、強制的に読み込み位置を先頭に戻す処理がないため、バイト以外の単位で処理するのが容易であるためである。1ワードのビット数は自由に設定でき、1バイトに設定することもできる。
図7の処理については、図3の処理と共通する部分が多いため、異なる部分を中心に説明していく。まず、付加情報読込手段30は、付加情報記憶部302から付加情報を1ワード単位で読み込む(S201)。その後、モードを区切りモードに設定し(S202)、音響フレーム読込手段10が、音響信号記憶部301に記憶されたステレオ音響信号の左右各チャンネルから、音響フレームを読み込み(S204)、周波数変換手段40が、読み込んだ各音響フレームに対して、〔数式1〕に従って周波数変換を行ってフレームスペクトルを得て(S205)、低周波成分変更手段50が、抽出した実部Al(1,j)等、虚部Bl(1,j)等、実部Ar(1,j)等、虚部Br(1,j)等を利用して、〔数式4〕により合算値E1、E2を算出し、合算値E1、E2がレベル下限値Lev以上であるかどうかを判断するところまでは同一である。ただし、図7の処理においては、合算値E1、E2がレベル下限値Lev未満である場合は、モードを区切りモードに設定するだけである(S206)。一方、合算値E1、E2がレベル下限値Lev以上である場合には、モードを判断することになる。
低周波成分変更手段50は、モードが区切りモードである場合、上記〔数式5〕に従って、L側の窓1成分と窓3成分を均等とする処理を行う(S208)。一方、低周波成分変更手段50は、モードがビットモードである場合、上記〔数式6〕〜〔数式9〕に従って、付加情報記憶部302から抽出した付加情報のビット配列のビット値に応じて、スペクトル強度の窓1成分、窓3成分間の割合を変更する処理を行う(S207)。また、S207においては、図3のS107と異なり、継続識別モードである場合にも処理を行う。継続識別モードである場合、新規であるときは〔数式6〕に従って低周波成分の窓1成分、窓3成分間の分布を窓3成分が優位な状態に変更し、継続であるときは〔数式7〕に従って低周波成分の窓1成分、窓3成分間の分布を窓1成分が優位な状態に変更する。
上記S207、S208いずれの場合であっても、次に、低周波成分変更手段50は、窓2成分の削除を行う(S209)。具体的には、窓3成分に対して、上記〔数式10〕に従った処理を実行することになる。
次に、周波数逆変換手段60が、スペクトル集合間の割合が変更されたフレームスペクトルを〔数式11〕に従って周波数逆変換して改変音響フレームを得る処理を行い(S210)、改変音響フレーム出力手段80は、得られた改変音響フレームを順次出力ファイルに出力する(S211)。こうして1つの音響フレームに対する処理を終えたら、モードの判定を行い(S212)、モードが区切りモードである場合は、モードを継続識別モードに設定した後(S213)、音響フレーム読込手段10が、音響フレームを読み込む(S204)。一方、モードがビットモード又は継続識別モードである場合は、モードをビットモードに設定した後(S214)、低周波成分変更手段50が付加情報のビット配列中の次のビットを読み込む(S203)。そして、全音響フレームの処理を行い、音響信号から読み込むべき音響フレームがなくなったら(S204)、処理を終了する。
図7に従った処理による左チャンネル信号の変化の様子を図8を用いて説明する。図8においては、図6と同様、左右方向は時間軸であり、図中多数存在する矩形は、改変音響フレームの窓1成分、窓3成分を示している。図8(a)は、図6(a)と同様、上記〔数式4〕により算出された合算値E1、E2が、レベル下限値Lev以上となる音響フレームが存在しない場合を示しており、図8(b)は、図6(b)と同様、上記〔数式4〕により算出された合算値E1、E2が、レベル下限値Lev未満となる音響フレームが存在する場合を示している。
また、図3の処理との比較のため、埋め込む付加情報も、図6の場合と同様、1バイト目が「11011100」、2バイト目が「11000001」の2バイトのビット配列とする。図6と同様、各バイトの先頭には、区切りを示す情報として、窓1成分、窓3成分が均等な状態に設定されることになる。これは、S202により区切りモードに設定され、S208において、上記〔数式5〕に従った処理を実行した結果得られる。続いて、付加情報の各ビットに対応した処理を行う前に、新規であるか継続であるかを示す情報を記録することになる。図3に示す処理によれば、レベル下限値Lev未満となる音響フレームが存在した場合には、処理するビットを各バイトの先頭に戻して処理するため、全て新規となるが、図7に示す処理では、レベル下限値Lev未満となる音響フレームが存在した場合であっても、その時点で処理したビットは有効とし、そこから継続して行うため、そのビットが新規であるか継続であるかの情報を記録しておく必要がある。そこで、区切りを示す情報を記録した後には、新規であるか継続であるかを示す情報を記録する。具体的には、区切りモードの状態で、モード判断を行うことにより(S212)、継続識別モードに設定され(S213)、付加情報のビットを読み込むことなく、音響フレームの抽出を行う(S204)。そして、周波数変換後(S205)、新規である場合には、〔数式6〕に従った処理により、低周波成分の窓1成分、窓3成分間の分布を窓3成分が優位な状態に変更する(S207)。
このようにして、新規か継続かを示す情報を記録した後は、継続識別モードの状態でモード判断を行うため(S212)、ビットモードに設定され(S214)、レジスタから先頭のビットを読み込み(S203)、音響フレームの抽出を行う(S204)。図8(a)の例では、レベル下限値Lev未満となる音響フレームが存在しないため、1バイトが連続してS207により処理されることになる。これは、S203からS214を経由するループが8回連続して繰り返され、その間レベル下限値Lev未満であるとしてS206およびS208、S213を経由することがなかったことを示している。
図8(b)の例では、上記〔数式4〕に従った処理の結果、レベル下限値Lev未満となる音響フレームが存在するので、この場合S206およびS208を経由して、上記〔数式5〕に従った処理を実行した結果、窓1成分と窓3成分が均等な状態に設定される。この場合、S206において、区切りモードに設定されるため、S212を経由して、新規か継続かを示す情報を記録することになる。図8(b)の例では、1バイト目の「11011100」を埋め込む場合に、最初は第1ビット目の「1」の1ビット処理した時点でレベル下限値Lev未満の音響フレームが出現しているため、区切りを示す情報を記録した後、継続を示す情報を記録し、継続して第2ビット目の「1」から処理をしている。そして、第2ビット目から第5ビット目の「1011」を処理した時点でレベル下限値Lev未満の音響フレームが出現しているため、区切りを示す情報を記録した後、継続を示す情報を記録し、継続して第6ビット目の「1」から処理をしている。
なお、図8の例では、図6との比較のため、付加情報がバイト単位で記録されている場合について説明したが、図7に示す処理は、新規か継続かを示す情報を記録するため、付加情報を任意のビット数単位で記録することが可能である。
上記の例では、固定長のバイト単位又は可変長のワード単位で区切りを示す情報を挿入するようにしたが、さらにビット単位で区切りを示す情報を挿入することも可能である。この場合、音響フレーム読込手段10が音響フレームの抽出を行う際、前後の音響フレームに重複する重複音響フレームを抽出し、この重複音響フレームに対して、〔数式1〕に従って周波数変換を行い、さらに、〔数式5〕に従って窓1成分と窓3成分を均等にする処理を行う。重複音響フレームは、前後の音響フレームと半数づつサンプルが重複するように設定する。例えば、先行する音響フレームがサンプル番号1から4096まで、後続する音響フレームがサンプル番号4097から8192までである場合、この間に設定される重複音響フレームはサンプル番号2049から6144までとなる。同様にして、音響信号の全区間について、重複音響フレームを読み込み、窓1成分と窓3成分を均等にする処理を行うことになる。
上記S107、S108またはS207、S208において設定された“均等”“窓1成分優位” “窓3成分優位”を示す3値の情報は、各フレームごとに埋込ログファイルに記録される。そして、1つの音響信号における全音響フレームに対して、上記処理を行った結果、電子透かし埋め込み手段100の出力として、埋込ログファイルが得られる。
上記のように、重複音響フレームを設定して、その窓1成分と窓3成分を均等にする処理を行った場合、これを改変音響信号に反映させるため、窓1成分と窓3成分を均等にする処理後の重複フレームスペクトルに対して周波数逆変換を行って改変重複音響フレームを得て、さらに改変音響フレームと連結する処理を行う必要がある。
上記のようにして得られた改変音響信号の左チャンネルのうち、付加情報が埋め込まれている部分については、低周波成分は、窓1成分と窓3成分が均等となっているか、あるいは窓1成分が優位か、窓3成分が優位かの3通りの分布しかないことになる。しかし、高周波成分については、元の音響信号のままであるので、制作者の設定に基づいた種々な分布になる。また、上記の例で示したように、ステレオ音響信号を利用した場合には、左チャンネルにおいて変化させられた低周波成分は、上記〔数式5〕〜〔数式10〕の処理からも明らかなように、必ず右チャンネルの低周波成分に付加されている。したがって、右チャンネルが左チャンネルにおいて削除された成分を補っているため、両チャンネル全体として見ると、信号の劣化がない。人間の聴覚は、高周波成分については、方向性を感知し易いが、低周波成分については、方向性を感知しにくくなっている。したがって、低周波成分が一方に偏っていても、聴いている人にとっては、通常の音響信号と変わりなく聴こえることになる。
(3.電子透かし抽出・照合手段)
次に、電子透かし抽出・照合手段200について説明する。図9は、電子透かし抽出・照合手段200の詳細を示す機能ブロック図である。図9において、210は改変音響フレーム読込手段、220は第2の周波数変換手段、230は符号判定パラメータ算出手段、240は符号出力手段、250は埋込ログ読込手段、260は抽出ログ記録手段である。
改変音響フレーム読込手段210は、付加情報が埋め込まれたステレオ改変音響信号の各チャンネルから所定数のサンプルを1フレームとして読み込む機能を有している。第2の周波数変換手段220は、図2に示した周波数変換手段40と同様の機能を有している。符号判定パラメータ算出手段230は、生成されたフレームスペクトルから所定の周波数以下に相当する各低周波強度データを抽出し、窓1成分、窓3成分ごとに各低周波強度データの合算値E1、E2を算出し、この合算値E1、E2を符号判定パラメータとし、この符号判定パラメータE1、E2の比率に基づいて、所定の状態であると判断する機能を有している。
符号出力手段240は、改変音響フレームの低周波成分の3つの状態に対応する3値の符号を出力する機能を有している。埋込ログ読込手段250は、埋込ログ記憶部304に記憶された埋込ログファイルから、改変音響フレーム読込手段210が読み込んだ改変音響フレームに対応する埋め込み符号を読み込む機能を有している。抽出ログ記録手段260は、符号出力手段240により出力された符号と、埋込ログ読込手段250により読み込まれた埋め込み符号が一致しない場合に、埋め込み禁止を示す抽出ログデータを抽出ログファイルに書き込む機能を有している。図9に示した各構成手段は、現実には情報処理機能を有する小型のコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。特に、本発明の目的をより簡易に達成するためには、携帯型端末装置をハードウェアとして用いることが望ましい。図9に示した電子透かし抽出・照合手段200は、特許文献10に記載の抽出装置とほぼ同様の機能を有するものとなっている。ただし、特許文献10に記載の抽出装置は、再生されてアナログ系を経由した音響信号から情報を抽出するため、最適な位相を決定して音響フレームを設定するが、電子透かし抽出・照合手段200では、改変音響信号記憶部303に記憶された改変音響信号の先頭から改変音響フレームを抽出できるため、最適位相を決定する機能を有する必要がない。
(3.1.電子透かし抽出・照合手段の処理動作)
次に、図9に示した電子透かし抽出・照合手段200の処理動作について図10のフローチャートに従って説明する。まず、本装置では、平均符号レベルHL1、HL2が初期化される。これらについて説明する。平均符号レベルHL1、HL2は、ビット値に対応する2値が埋め込まれていたと判断される音響フレーム(以下、有効フレームと呼ぶことにする)についての、下記〔数式12〕で算出される低周波成分の合算値Ec1、Ec2の平均値、すなわち、過去の有効フレームにおける合算値Ec1、Ec2の平均値で与えられるものであり、初期値は、上記埋め込み装置においても用いられるレベル下限値Levの2倍に設定されている。したがって、本実施形態では、HL1、HL2の初期値はともに“0.1”に設定されることになる。
抽出・照合手段200は、電子透かし埋め込み手段100により付加情報が埋め込まれた改変音響信号、埋込ログファイルを読み込む。
続いて、改変音響フレーム読込手段210が、所定数のサンプルで構成される改変音響フレームを抽出する(S301)。改変音響フレーム読込手段210が読み込む1改変音響フレームのサンプル数は、図2に示した音響フレーム読込手段10で設定されたものと同一にする必要がある。したがって、本実施形態の場合、改変音響フレーム読込手段210は、4096サンプルずつ、順次改変音響フレームとして読み込んでいくことになる。
続いて、第2の周波数変換手段220、符号判定パラメータ算出手段230が、読み込んだ各音響フレームから、埋め込まれている情報を判定し、対応する符号を出力する(S302)。出力される情報の形式は、埋め込み側のビット値に対応する2値、および区切りとして入力された値の3値の形式となる。
ここで、ステップS302の符号判定処理の詳細を図11のフローチャートに従って説明する。まず、第2の周波数変換手段220が、読み込んだ各改変音響フレームに対して、周波数変換を行ってフレームスペクトルを得る(S401)。この処理は、図2に示した周波数変換手段40における処理と同様である。ただし、抽出に用いるのは、左チャンネルだけであるので、上記〔数式1〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(1,j)等、虚部Bl(1,j)等を得る。
上記第2の周波数変換手段220における処理により、周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、符号判定パラメータ算出手段230は、平均符号レベルHL1、HL2の算出を行う(S402)。具体的には、過去窓1成分が優位な状態と判断された音響フレームについての合算値Ec1の積算値であるv1を、過去窓1成分が優位な状態と判断された音響フレームの数であるn1で除算することによりHL1を算出し、過去窓3成分が優位な状態と判断された音響フレームについての合算値Ec2の積算値であるv2を、過去窓3成分が優位な状態と判断された音響フレームの数であるn2で除算することによりHL2を算出する。したがって、平均符号レベルHL1、HL2は、過去対応する窓成分が優位な状態と判断された音響フレームの低周波強度データの合算値の平均値に近くなる。厳密な平均値とならないのは、上述のように、HL1、HL2の初期値はともに“0.1”が設定されており、この初期値に合算値Ec1、合算値Ec2を分子に加算していくためである。また、平均符号レベルHL1、HL2の算出のための分母として用いるn1、n2は最大値nmaxを超えないようにし、n1=nmaxとなった場合には、HL1=“0.1”に再設定し、n2=nmaxとなった場合には、HL2=“0.1”に再設定する。
さらに、符号判定パラメータ算出手段230は、生成されたフレームスペクトルから所定の周波数範囲の各低周波強度データを抽出する。抽出すべき周波数範囲は、埋め込み装置と対応させる必要がある。したがって、ここでは、周波数が200Hz程度以下の低周波強度データを抽出することになり、埋め込み装置の場合と同様、上記〔数式1〕により算出された左チャンネルの実部Al(j)、虚部Bl(j)のうち、j≦20のものを抽出する。そして、符号判定パラメータ算出手段230は、以下の〔数式12〕に従った処理を実行することにより左チャンネル信号の窓1成分の合算値Ec1、窓3成分の合算値Ec2を算出する。電子透かし抽出・照合手段200においては、このEc1、Ec2を符号判定パラメータとして用いる。
〔数式12〕
Ec1=Σj=1,…,M-3{Al(1,j)2+Bl(1,j)2}
Ec2=Σj=1,…,M-3{Al(3,j)2+Bl(3,j)2}
続いて、符号判定パラメータ算出手段230は、窓1成分の合算値Ec1、窓3成分の合算値Ec2がそれぞれ所定値以下であるかどうかの判定を行う(S404)。具体的には、所定値としてそれぞれ平均符号レベルHL1、HL2に0.001を乗じた値を設定する。合算値Ec1が0.001HL1未満であり、かつ、合算値Ec2が0.001HL2未満である場合、符号判定パラメータ算出手段230は、区切り情報であると判定する(S408)。
一方、合算値Ec1、Ec2のうちいずれか一方が所定値以上である場合、すなわち、Ec1>0.001HL1またはEc2>0.001HL2の条件を満たす場合、符号判定パラメータ算出手段230は、上記算出された符号判定パラメータEc1、Ec2の比較判定を以下の〔数式13〕に従って行い(S405)、比較結果に対応する符号を出力する。
〔数式13〕
Ec2>0.001HL2かつEc2/Ec1>2の場合、窓3成分が優位な状態
Ec1>0.001HL1かつEc1/Ec2>2の場合、窓1成分が優位な状態
Ec2/Ec1≦2かつEc1/Ec2≦2の場合、両窓成分が均等
符号判定パラメータ算出手段230は、各音響フレーム単位で、上記判定結果に応じて3値の符号を出力する。すなわち、窓3成分が優位な状態と判定した場合には、第1のビット値(例えば“1”)を出力し(S406)、窓1成分が優位な状態と判定した場合には、第2のビット値(例えば“0”)を出力し(S407)、両窓成分が均等と判定した場合には、区切り情報を示す符号を出力する(S408)。
再び図10のフローチャートに戻って説明する。S302による処理の結果、ビット値に相当する符号が出力された場合には、平均符号レベルのパラメータの更新を行う(S303)。具体的には、平均符号レベルHL1、HL2算出の際の分子となる積算値v1、v2にそれぞれ合算値Ec1、Ec2を加算して積算値v1、v2を更新し、分母となるフレーム数n1、n2にそれぞれ1を加算してフレーム数n1、n2を更新する。続いて、出力された符号に対応するビット値と埋込ログファイルの同一フレームに記録された符号の比較を行う(S304)。これは、その改変音響フレームに記録された符号がビット値である場合に限り行う。ここで、埋込ログファイルの同一フレームに記録された内容が区切り情報である場合に比較処理を行わず、仮に比較の結果、異なっている場合でも、エラーと判断しないのは、いずれの場合においても、当該フレームに対して次回の埋め込み処理で区切り情報を埋め込むことになるため、当該フレームに対して何度も埋め込み処理を繰り返しても永遠にエラーと判断されるような無限ループに陥るのを防ぐためである。比較の結果、異なっている場合、即ち埋込ログファイルの同一フレームに記録されている符号と異なるビット値が抽出された場合(埋め込み側0に対して1が抽出された場合、あるいはその逆の場合)、または区切り情報が抽出された場合、エラーが発生したと判断し、フレーム番号とエラーである旨を対応付けて抽出ログファイルに記録する(S305)。
S301において全ての改変音響フレームが抽出されたと判断された場合には、処理を終了する。
上記のようにして作成された抽出ログファイルは、エラーとなったフレームが1つも存在しない場合には、作成されない。1つでもエラーとなったフレームが存在する場合は、抽出ログファイルは、記憶手段に格納される。
そして、電子透かし埋め込み手段100は、記憶手段に抽出ログファイルが記録されたことを認識すると、抽出・照合手段200が作成した抽出ログファイルと前回電子透かし埋め込み手段100が作成した埋込ログファイルを参照して、再度図に示したフローチャートに従った処理を行い、新たな仮埋め込み音響信号を作成するとともに、新たな埋込ログファイルを作成する。この際、抽出ログファイルにおいてエラーが記録されているフレームについては、モードが区切りモードであるかビットモードであるかに関わらず、強制的にS108において均等に設定する処理を行う。
以上のようにして、全フレームについて処理を行い、新たな仮埋め込み音響信号と、新たな埋込ログファイルが得られたら、抽出・照合手段200は上記と同様にして、抽出ログファイルを作成する。このようにして、電子透かし埋め込み手段100と抽出・照合手段200は繰り返し処理を行い、抽出・照合手段200が抽出ログファイルを作成しなかった場合、あるいは、抽出ログファイルを作成しても、記録するエラー件数が所定数未満の場合、そのときの仮埋め込み音響信号を埋め込み音響信号として出力する。
(4.従来との比較)
ここで、従来の手法との比較を行う。従来の手法では、埋め込み装置が抽出・照合手段200に相当する機能を備えておらず、電子透かし埋め込み手段100に相当する機能しか備えていなかったため、埋め込み装置により埋め込まれた情報を実際に抽出装置が音響信号から抽出し、抽出不良があるようであれば、合算値E1、E2との比較対象である閾値をさらに高く設定した後、再度埋め込み装置により埋め込みを行う、という処理を繰り返していた。従来法による埋め込み状態の変化の様子を図12に示す。
図12においては、音響信号の4つのフレームに対して処理を行った場合を示している。図12(a)に示すように、フレームA、フレームB、フレームDの低周波強度E1またはE2(埋め込むビット値が“0”の場合はE1、埋め込むビット値が“1”の場合はE2)が閾値より大きく、フレームCの低周波強度E1またはE2は閾値より小さいため、図12(b)に示すように、フレームA、フレームB、フレームDにはビット値の埋め込みが行われ、フレームCには区切り情報の埋め込みが行われる。
図12(b)のように埋め込みが行われた音響信号を、抽出装置で抽出した結果、図12(c)に示すようにフレームA、フレームDからはビット値が抽出され、フレームB、フレームCからは区切り情報が抽出されたとする。この場合、フレームA、フレームC、フレームDについては、埋め込んだ情報と同じであるが、フレームBについては、埋め込んだ情報と異なる情報が抽出されたことになる。図12(a)に示すように、フレームBの低周波強度E1またはE2は、フレームDの低周波強度E1またはE2より大きいが、フレームBからはビット値が抽出できないのに対し、フレームDからはビット値が抽出できている。本来は、低周波強度E1またはE2の値が大きい方が、ビット値を抽出できる可能性が高いはずであるが、図12(c)の例で逆転しているのは、前後のフレームの信号が影響しているためである。
図12(b)と図12(c)に示した関係のように、埋め込んだ情報と異なる情報が抽出されるような場合には、閾値をより大きく設定し、再度埋め込み装置が埋め込みを行う。図12(d)に示すように閾値を設定した場合、フレームAの低周波強度E1またはE2(埋め込むビット値が“0”の場合はE1、埋め込むビット値が“1”の場合はE2)が閾値より大きく、フレームB、フレームC、フレームDの低周波強度E1またはE2は閾値より小さいため、図12(e)に示すように、フレームAにはビット値の埋め込みが行われ、フレームB、フレームC、フレームDには区切り情報の埋め込みが行われる。この結果、ビット値が埋め込まれるのは、フレームAのみとなり、埋め込み効率が落ちることになる。従来法では、このような傾向が高くなる。
同じ低周波強度E1またはE2を有するフレームA、フレームB、フレームC、フレームDに対して本発明により処理した例を図13に示す。本発明では、従来の閾値の1/10程度のレベル下限値Levを設定する。図13(a)に示すように、フレームA、フレームB、フレームC、フレームDの低周波強度E1またはE2はいずれもレベル下限値Levより大きいため、電子透かし埋め込み手段100により、図13(b)に示すように、フレームA、フレームB、フレームC、フレームDにビット値の埋め込みが行われる。
図13(b)のように埋め込みが行われた音響信号を、電子透かし抽出・照合手段200が抽出した結果、図13(c)に示すようにフレームA、フレームC、フレームDからはビット値が抽出され、フレームBからは区切り情報が抽出されたとする。この場合、フレームA、フレームC、フレームDについては、埋め込んだ情報と同じであるが、フレームBについては、埋め込んだ情報と異なる情報が抽出されたことになる。図13(a)に示すように、フレームBの低周波強度E1またはE2は、フレームC、フレームDの低周波強度E1またはE2より大きいが、フレームBからはビット値が抽出できないのに対し、フレームC、フレームDからはビット値が抽出できている。これは、図12の場合と同様、前後のフレームの信号が影響しているためである。
図13(b)と図13(c)に示した関係のように、あるフレームについて、ビット値を埋め込んだにも関わらず、区切り情報が抽出された場合、あるいは異なるビット値が抽出された場合には、そのフレームへのビット値の埋め込みを禁止する。具体的には、電子透かし抽出・照合手段200が抽出ログファイルに、フレームBの番号とエラーである旨の情報を対応付けて記録することになる。全フレームに対して処理を行った後、電子透かし埋め込み手段100は、再度埋め込み処理を行うが、この際、抽出ログファイルを参照し、エラーが発生したフレームには、ビット値が埋め込み可能であっても、区切り情報を埋め込む。他のフレームについては、同様に処理が行われるため、結果として、図13(e)に示すように、フレームA、フレームC、フレームDにはビット値の埋め込みが行われ、フレームBには区切り情報の埋め込みが行われる。この結果、図12の従来例では、4フレーム中1フレームにビット値の埋め込みが行われたが、図13の本発明では、4フレーム中3フレームにビット値の埋め込みが行われ、ビット値の埋め込み効率が高いことがわかる。
図14のフローチャートは、電子透かし埋め込み手段100において、付加情報をバイト単位で記録したものに対応している。電子透かし埋め込み手段100で付加情報をワード単位で記録している場合には、図10のフローチャートに従った処理を行うことになる。まず、図14のS301と同様、改変音響フレーム読込手段210が、改変音響信号記憶部303に記憶されたステレオ改変音響信号の各チャンネルから、それぞれ所定数のサンプルを1改変音響フレームとして読み込む(S501)。
続いて、図10のS301と同様、第2の周波数変換手段220、符号判定パラメータ算出手段230が、読み込んだ各改変音響フレームに埋め込まれている情報に対応する符号を出力する(S502)。このS502における処理の詳細は、S302と同様、図11に示したようなものとなる。
S502による処理の結果、ビット値に相当する符号が抽出された場合には、S303と同様、平均符号レベルHL1、HL2いずれかのパラメータの更新を行う(S503)。続いて、S304と同様、出力された符号に対応するビット値と埋込ログファイルの同一フレームに記録された符号の比較を行う(S504)。比較の結果、異なっている場合は、S305と同様、エラーが発生したと判断し、フレーム番号とエラーである旨を対応付けて抽出ログファイルに記録する(S505)。S501において全ての基準フレームが抽出されたと判断された場合には、処理を終了する。
(5.モノラル音響信号の場合)
上記実施形態においては、左右のチャンネルを有するステレオ音響信号の左チャンネル信号に付加情報を埋め込む場合を例にとって説明したが、逆に右チャンネル信号に付加情報を埋め込むようにしても良い。本発明は、左右の特性には無関係だからである。また、1つのチャンネルしかないモノラル音響信号に対して処理を行う場合は、上記実施形態において、左チャンネル信号に対して行った処理を行うことになる。本発明は、1つのチャンネル信号に対して付加情報を埋め込み、また抽出を行うので、モノラル音響信号であってもステレオ音響信号であっても同様に行うことができる。
図15にステレオ音響信号とモノラル音響信号に対して、本発明により付加情報を埋め込む場合の概念図を示す。図15(a)はステレオ音響信号の場合、図15(b)はモノラル音響信号の場合である。なお、図15の例では、音響フレーム1つ分の低周波成分を波形で表現しており、ビット値“0”を埋め込む場合を例に示している。
ステレオ音響信号の場合、埋め込みは左チャンネル(L−ch)信号に対して行われる。図15(a)に示すように、周波数変換後、信号分離し、さらに、ビット埋め込み処理を行う。具体的には、〔数式5〕〜〔数式10〕の処理の結果、ビット埋め込みがなされることになる。ここで、上述のように、“0”を埋め込む場合は〔数式8〕および〔数式9〕を用いる。したがって、ビット埋め込み処理後は、音響フレームの中央付近(窓2に相当)と後部付近(窓3に相当)は、低周波数帯の信号成分は0(図中、波形がないことで表現)となる。この際、〔数式8〕および〔数式9〕の内容から明らかなように、左チャンネル信号の削除された信号成分は、右チャンネル(R−ch)信号に加算される。したがって、図15(a)の下段に示すように、右チャンネル信号の低周波成分は大きくなる。一方、上記〔数式6〕の最後の3つの式から明らかなように、左チャンネル信号の残っている信号成分に対応する右チャンネル(R−ch)信号の成分は、左チャンネル信号に加算される。したがって、図15(a)の上段に示すように、左チャンネル信号の窓1に相当する低周波成分は大きくなる。ビット埋め込み処理後は、高周波成分を含めて信号合成された後、周波数逆変換され、改変音響信号が得られることになる。
モノラル音響信号の場合、図15(b)に示すように処理が行われるが、図15(a)の上段と比較するとわかるように、ステレオ音響信号の左チャンネルと同様の処理が行われることになる。
(6.信号成分が小さくても情報の埋め込みを可能とする手法)
ここまで、説明してきた処理においては、窓1成分、窓3成分に所定の大きさ以上の信号成分が存在していることが必要となり、窓1成分、窓3成分が共に所定の大きさ以下の場合には、情報の埋め込みを行うことができない。そこで、以下、窓1成分、窓3成分が共に所定の大きさ以下であっても、信号の埋め込みを可能とする手法について説明する。
この場合、図1に示した埋め込み装置における情報の埋め込み処理は、図16のフローチャートに従って行われる。図16のフローチャートにおいて、図2のフローチャートと異なる点は、S705における周波数変換処理において低周波成分変更手段50がレベルの判定を行わず、さらに、S106に相当する区切りモードへの設定処理が存在しない点である。これは、図16に従った処理では、信号レベルが小さくても強制的に情報を埋め込むこととしているため、情報の埋め込みが不可能な信号レベルが小さい部分が存在するかどうかを判断し、区切りモードに設定する必要がないからである。
したがって、S706における窓1成分、窓3成分のいずれかを優位な状態に設定する処理としては、まず、以下の〔数式14〕に従って算出される固定値Vを、第0低周波数帯の強度として、上記合算値E1、E2に代えて設定する。
〔数式14〕
V={0.5・Lev/(M−3)}1/2
そして、第1の値を1、第2の値を0とした場合、ビット値が1のとき、上記〔数式6〕および〔数式7〕に従った処理を実行した後、以下の〔数式15〕に従った処理を実行する。
〔数式15〕
窓3成分に対して
Al´(3,j)=Al(3,j)・V/{Ar(3,j)2+Br(3,j)2}1/2
Bl´(3,j)=Bl(3,j)・V/{Ar(3,j)2+Br(3,j)2}1/2
ビット値が0の場合、上記〔数式8〕および〔数式9〕に従った処理を実行した後、以下の〔数式16〕に従った処理を実行する。
〔数式16〕
窓1成分に対して
Al´(1,j)=Al(1,j)・V/{Ar(1,j)2+Br(1,j)2}1/2
Bl´(1,j)=Bl(1,j)・V/{Ar(1,j)2+Br(1,j)2}1/2
S706における上記処理を行った後、窓2成分削除処理(S708)以降の処理は、図2に示したS209以降の処理と同様にして行われる。
上記のように、周波数成分が小さい場合に情報を埋め込んだ場合であっても、電子透かし抽出・照合手段200の構成は図9と同一であり、処理動作は図10のフローチャートに従ったものと同一である。
図17にステレオ音響信号とモノラル音響信号に対して、信号成分が小さい場合に、付加情報を埋め込む場合の概念図を示す。図17(a)はステレオ音響信号の場合、図17(b)はモノラル音響信号の場合である。なお、図17の例では、図15の場合と同様に、音響フレーム1つ分の低周波成分を波形で表現しており、ビット値“0”を埋め込む場合を例に示している。
図17において、図15の場合と異なるのは、元の信号成分が小さい点である。図17(a)に示す例のように、信号分離後の段階では、窓1成分、窓3成分の値が小さい場合であっても、上記〔数式14〕〜〔数式16〕の処理に従ってビット埋め込みを行うことにより、図15と同様な信号成分を有することとなる。
モノラル音響信号の場合、図17(b)に示すように処理が行われるが、図17(a)の上段と比較するとわかるように、ステレオ音響信号の左チャンネルと同様の処理が行われることになる。