以下、本発明の実施形態について図面を参照して詳細に説明する。
(1.第1の実施形態)
まず、第1の実施形態について説明する。最初に第1の実施形態における埋め込み処理の前後における音響フレームの所定周波数成分の変化の状態について説明する。図1に、本実施形態による所定周波数成分の状態を1音響フレーム単位で示す。図1に示す各音響フレームにおいて、横軸は時間方向、縦軸は周波数方向を示している。また、網掛けされた部分は、周波数成分が存在している部分を示し、網掛けが濃いほど成分強度が強いことを示している。図1においては、縦軸の周波数方向において、周波数領域が3つに区分されているが、上から2番目の領域、すなわち、周波数F1以上F2以下の間が変更対象周波数帯であり、最上部すなわち周波数F2超、最下部すなわちF1未満は、変更対象でない周波数帯である。すなわち、本実施形態では、周波数F1以上F2以下を所定周波数範囲として、スペクトル集合の強度を変更することになる。図1(a)に示すように、変更対象周波数帯の前部におけるスペクトルをSP1、変更対象周波数帯の後部におけるスペクトルをSP3で表現することとする。
本実施形態で、符号1を埋め込む場合、図1(b)に示すように、L-chの信号の変更対象周波数帯の後部の成分を除去し、除去した成分と同等の成分をR-chの信号に加算する。また、L-chの信号の変更対象周波数帯の前部の成分強度を高め、R-chの信号の前部の各スペクトル集合の強度を弱めている。この状態を“状態1”と呼ぶことにする。符号2を埋め込む場合は、図1(c)に示すように、L-chの信号の変更対象周波数帯の前部の成分を除去し、除去した成分と同等の成分をR-chの信号に加算する。また、L-chの信号の変更対象周波数帯の後部の成分強度を高め、R-chの信号の後部の各スペクトル集合の強度を弱めている。この状態を“状態2”と呼ぶことにする。
本実施形態では、図1(b)、(c)に示すような2つの状態に周波数成分を変更することにより、情報の埋め込みを行っている。2つの状態であるので1ビット分の情報量に相当する。
本実施形態では、上記変更対象周波数帯F1〜F2を、“1.7kHz〜3.4kHz”または “3.4kHz〜6.8kHz”のいずれかに設定する。これは、以下のような理由による。
人間の音源定位感覚は高音部では増大傾向になるが、ソース音源のエネルギーは高音になるほど小さくなる特性があり、特に電話回線帯域(300Hz〜3.4kHz)を超えると倍音成分のみとなるため、結果的に聴取可能な音源定位変異は小さい。実験の結果、400Hz〜1.5kHzの領域では聴取可能な音源定位変異は増大していくが、1.5kHzを超えると減少傾向になり、更に4kHzを超えるとほとんどなくなる。これは、4kHz以上は音声の成分はほとんどなくなり、楽器音では基音が最高音域を超えることため倍音のみの成分となるためである。
そこで、どの周波数範囲に埋め込むべきかを具体的に検討する。音声通信として普及度の高い携帯電話機を受信端末として利用する場合、上限については、電話回線帯域および携帯電話機の上限である3.4kHzとする必要がある。そこで、下限については、上限の3.4kHzから1オクターブ下がった1.7kHzとすることとした。また、携帯電話機以外を受信端末として利用する場合には、可聴周波数の上限(22kHz)以下であれば3.4kHzより高い周波数領域を用いることができるが、10kHzを超える高音域では、圧縮・変調などの信号処理の影響を受け易く、スピーカによっては再生能力が低下するため、下限を電話回線帯域の上限である3.4kHzとし、上限を3.4kHzから1オクターブ上がった6.8kHzとすることとした。なお、“1.7kHz”“3.4kHz”“6.8kHz”という値は、代表的な値であり、必ずしも正確な値である必要はなく、そこから若干ずれた値であっても良い。なお、本明細書においては、“1.7kHz〜3.4kHz”を「電話高周波帯」、“3.4kHz〜6.8kHz”を「超電話周波帯」と呼ぶことにする。また、電話回線帯域の上限は上述のように3.4kHz近辺であるので、上記「電話高周波帯」、「超電話周波帯」はそれぞれ可聴周波数範囲で電話回線帯域の上限より若干低音側、若干高音側における所定の周波数帯に該当する。
(1.1.埋め込み装置の構成)
まず、音響信号に対する情報の埋め込み装置について説明する。図2は、音響信号に対する情報の埋め込み装置の構成を示す機能ブロック図である。図2において、10は音響フレーム読込手段、20は周波数変換手段、30は周波数成分変更手段、40は周波数逆変換手段、50は改変音響フレーム出力手段、60は記憶手段、61は音響信号記憶部、62は付加情報記憶部、63は改変音響信号記憶部、70はビット配列作成手段である。なお、図2に示す装置は、ステレオ音響信号、モノラル音響信号の両方に対応可能であるが、ここでは、ステレオ音響信号に対して処理を行う場合について説明していく。
音響フレーム読込手段10は、付加情報の埋め込み対象とする元のステレオ音響信号の各チャンネルから所定数のサンプルを1フレームとして読み込む機能を有している。周波数変換手段20は、音響フレーム読込手段10が読み込んだ音響信号のフレームをフーリエ変換等により周波数変換してフレームスペクトルを生成する機能を有している。周波数成分変更手段30は、生成されたフレームスペクトルから所定の周波数範囲に相当するスペクトル集合を複数抽出し、付加情報記憶部62から抽出し、ビット配列作成手段70が作成したビット配列に基づいて、周波数強度データのスペクトル集合の状態を変更する機能を有している。周波数逆変換手段40は、変更された周波数強度データを含む複数のフレームスペクトルに対して周波数逆変換を行うことにより、改変音響フレームを生成する機能を有している。改変音響フレーム出力手段50は、生成された改変音響フレームを順次出力する機能を有している。
記憶手段60は、付加情報を埋め込む対象とするステレオ音響信号を記憶した音響信号記憶部61と、ビット配列として構成され、ステレオ音響信号に埋め込まれる付加情報を記憶した付加情報記憶部62と、付加情報埋め込み後の改変音響信号を記憶する改変音響信号記憶部63を有しており、その他処理に必要な各種情報を記憶するものである。ビット配列作成手段70は、付加情報記憶部62から付加情報を抽出し、付加情報の各ワードに対して、1ビットの誤り検出ビット(パリティビット)を追加した後、さらに所定の規則により8ビットを追加したビット配列を作成する機能を有している。なお、付加情報とは、音響情報に付加して埋め込むべき情報であり、タイトルやアーティスト名等の属性情報、および属性情報以外の他の情報を含むものである。本実施形態では、付加情報のコード形式としてASCIIコードを採用するため、付加情報においては7ビットを1ワードとし、ビット配列作成手段70が作成するビット配列は、誤り検出ビットを付加した後、反転付加処理を施した16ビットを1ワードとする。図2に示した各構成手段は、現実にはコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
(1.2.埋め込み装置の処理動作)
次に、図2に示した音響信号に対する情報の埋め込み装置の処理動作について説明する。ここでは、音響信号として、L(左)、R(右)の2チャンネルを有するステレオ音響信号に対して処理を行う場合について説明していく。音響フレーム読込手段10は、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルを1音響フレームとして読み込む。音響フレーム読込手段10が読み込む1音響フレームのサンプル数は、適宜設定することができるが、サンプリング周波数が44.1kHzの場合、4096サンプル程度とすることが望ましい。したがって、音響フレーム読込手段10は、左チャンネル、右チャンネルについてそれぞれ4096サンプルずつ、順次音響フレームとして読み込んでいくことになる。
音響フレームとしては、AタイプとBタイプが存在する。Aタイプの音響フレーム、Bタイプの音響フレームは、それぞれ同タイプの先行する音響フレームの最後のサンプルの次のサンプルを先頭サンプルとして設定される。そして、AタイプとBタイプの音響フレームは互いに所定数(本実施形態では2048)のサンプルを重複して設定される。例えば、Aタイプの音響フレームを先頭からA1、A2、A3…とし、Bタイプの音響フレームを先頭からB1、B2、B3…とすると、A1はサンプル1〜4096、A2はサンプル4097〜8192、A3はサンプル8193〜12288、B1はサンプル2049〜6144、B2はサンプル6145〜10240、B3はサンプル10241〜14336となる。なお、AタイプとBタイプは相対的なものであるので、どちらが先であっても良い。すなわち、上記とは逆にA1がサンプル2049〜6144、A2がサンプル6145〜10240、A3がサンプル10241〜14336、B1がサンプル1〜4096、B2がサンプル4097〜8192、B3がサンプル8193〜12288であっても良い。
周波数変換手段20は、音響フレーム読込手段10が読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。具体的には、窓関数を利用して周波数変換を行う。周波数変換としては、フーリエ変換、ウェーブレット変換その他公知の種々の手法を用いることができる。本実施形態では、フーリエ変換を用いた場合を例にとって説明する。
一般に、所定の信号に対してフーリエ変換を行う場合、信号を所定の長さに区切って行う必要があるが、この場合、所定長さの信号に対してそのままフーリエ変換を行うと、擬似高調波成分が発生する。そこで、一般にフーリエ変換を行う場合には、ハニング窓と呼ばれる窓関数を用いて、信号の値を変化させた後、変化後の値に対してフーリエ変換を実行する。
本実施形態では、擬似高調波成分の発生を防止するためだけではなく、一つの音響フレームから、情報を埋め込むための複数の状態を作り出すため、複数の窓関数を用意し、一つの音響フレームに対して、各窓関数を利用してフーリエ変換を行い、複数のスペクトルを得る。複数の窓関数として、本実施形態では、図3(b)〜(d)に示したような第1窓関数W(1,i)、第2窓関数W(2,i)、第3窓関数W(3,i)を用意し、抽出側で認識し易いようにした。第1窓関数W(1,i)は、音響フレームの前部を抽出するためのものであり、図3(b)に示すように前部の所定のサンプル番号iの位置において、最大値1をとり、後部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(1,i)の設計によって異なってくるが、本実施形態では、後述する〔数式1〕で定義される。窓関数W(1,i)を乗じることにより、図3(a)に示すような音響フレームの信号波形は、図3(f)に示すように、前部に信号成分が残り、後部の信号成分が削除されたものとなり、これがフーリエ変換対象となる。
また、第2窓関数W(2,i)は、音響フレームの中央部を抽出するためのものであり、図3(c)に示すように、中央部の所定のサンプル番号iの位置において、最大値1をとり、前部、後部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(2,i)の設計によって異なってくるが、本実施形態では、後述する〔数式2〕で定義される。窓関数W(2,i)を乗じることにより、図3(a)に示すような音響フレームの信号波形は、図3(g)に示すように、中央部に信号成分が残り、前部と後部の信号成分が除去されたものとなり、これがフーリエ変換対象となる。
また、第3窓関数W(3,i)は、音響フレームの後部を抽出するためのものであり、図3(d)に示すように、前部においては最小値0をとり、後部の所定のサンプル番号iの位置において、最大値1をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(3,i)の設計によって異なってくるが、本実施形態では、後述する〔数式3〕で定義される。窓関数W(3,i)を乗じることにより、図3(a)に示すような音響フレームの信号波形は、図3(h)に示すように、前部の信号成分が除去され、後部に信号成分が残ったものとなり、これがフーリエ変換対象となる。
このように前部、中央部、後部を抽出した後、フーリエ変換を実行するため、前部、中央部、後部に対応したスペクトルが得られることになる。1つの音響フレームにビット値を埋め込むためには、本来、前部と後部の2つに分けられれば良いのであるが、抽出側においては、必ずしも、信号を同期して読み込むことができるとは限らず、したがって、前部と後部をはっきりと区別するため、本実施形態では、埋め込み時に中央部の信号成分を常に削除し、前部と後部を時間的に分離することとしている(ただし、抽出時は前部と後部だけを解析すればよく、中央部は無視してよい)。本実施形態において用いる窓関数は、窓関数W(1,i)と窓関数W(3,i)が左右非対称であるため、抽出時において、埋め込まれていた情報の誤認識が起こりにくくなる。
また、本発明では、音響フレームを重複させて読み込み、奇数フレーム(または偶数フレーム)については、窓関数W(1,i)、W(2,i)、W(3,i)を用い、偶数フレーム(または奇数フレーム)については、図3(e)に示したような第4窓関数W(4,i)を用いるようにした。
なお、本発明においては、音響フレームは重複して読み込まれる。すなわち、奇数番目の音響フレームと偶数番目の音響フレームは、所定数のサンプルを重複して読み込む。上記のように、奇数フレームと偶数フレームでは、用いられる窓関数が異なるが、奇数フレームと偶数フレームは単に奇数か偶数かの違いだけであるため、どちらに対してどちらの処理を行っても良い。したがって、本明細書では、奇数フレーム、偶数フレームの一方をAタイプフレーム、他方をBタイプフレームと呼ぶことにする。本実施形態では、奇数フレームをAタイプフレーム、偶数フレームをBタイプフレームとして説明するが、逆に偶数フレームをAタイプフレーム、奇数フレームをBタイプフレームとしても良い。
本実施形態では、窓関数W(1,i)〜W(4,i)は、以下の〔数式1〕〜〔数式4〕で定義される。なお、図3において、横軸は時間軸(i)である。iは、後述するように、各音響フレーム内のN個のサンプルに付した通し番号であるため時刻tに比例している。また、図3(a)(f)(g)(h)(i)において縦軸は信号の振幅値(レベル)を示す。図3(b)〜(e)において縦軸は窓関数W(1,i)、W(2,i)、W(3,i)、W(4,i)の値を示しており、W(1,i)、W(2,i)、W(3,i)、W(4,i)の最大値はいずれも1である。
〔数式1〕
i≦3N/8のとき、W(1,i)=0.5−0.5cos(8πi/(3N))
3N/8<i≦N/2のとき、W(1,i)=0.5−0.5cos(8π(i−N/4)/N)
i>N/2のとき、W(1,i)=0.0
〔数式2〕
i≦3N/8のとき、W(2,i)=0.0
3N/8<i≦N/2のとき、W(2,i)=0.5−0.5cos(8π(i−3N/8)/N)
N/2<i≦3N/4のとき、W(2,i)=0.5−0.5cos(4π(i−N/4)/N)
i>3N/4のとき、W(2,i)=0.0
〔数式3〕
i≦N/2のとき、W(3,i)=0.0
i>N/2のとき、W(3,i)=0.5−0.5cos(4π(i−N/2)/N)
〔数式4〕
i≦N/4のとき、W(4,i)=0.0
N/4<i≦N/2のとき、W(4,i)=0.5−0.5cos(4π(i−N/4)/N)
N/2<i≦7N/8のとき、W(4,i)=0.5−0.5cos(8π(i−N/8)/(3N))
i>7N/8のとき、W(4,i)=0.0
なお、図3および上記〔数式1〕〜〔数式4〕から明らかなように、窓関数W(1,i)とW(3,i)は、互いに非対称な形状である。これは、後述する抽出側において、両者の識別を容易にするためである。また、窓関数W(1,i)、W(2,i)、W(3,i)は、iが所定の値のときに最大値1をとり、iがその他の値をとる場合には、iの値に応じて単調増加、または単調減少する窓関数を分割したものであるため、窓関数W(1,i)とW(3,i)が定まると、窓関数W(2,i)も必然的に定まる。このため、窓関数W(2,i)は左右非対称の形状となっている。
本発明においては、奇数フレームと偶数フレームを、所定サンプルずつ重複して読み込むため、情報の埋め込みを行った後、音響信号に復元する際に、窓関数を乗じた奇数フレームと、窓関数を乗じた偶数フレームの重複サンプルを加算した場合に、ほぼ元の値に戻るようにしなければならない。このため、窓関数W(4,i)の形状は、窓関数W(1,i)、W(2,i)、W(3,i)の値に応じて必然的に定まる。すなわち、奇数フレームと偶数フレームの重複部分において、窓関数W(1,i)、W(2,i)、W(3,i)、W(4,i)を加算すると、全区間固定値1になるように定義されている。
周波数変換手段20が、Aタイプの音響フレームに対してフーリエ変換を行う場合は、左チャンネル信号Xl(i)、右チャンネル信号Xr(i)(i=0,…,N−1)に対して、3つの窓関数W(1,i)、W(2,i)、W(3,i)を用いて、以下の〔数式5〕に従った処理を行い、左チャンネルに対応する変換データの実部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)は、それぞれ音響フレームの前部(先頭)付近、中央付近、後部付近において値が大きくなる関数となっている。
〔数式5〕
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)
周波数変換手段20が、Bタイプの音響フレームに対してフーリエ変換を行う場合は、左チャンネル信号Xl(i)、右チャンネル信号Xr(i)(i=0,…,N−1)に対して、窓関数W(4,i)を用いて、以下の〔数式6〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(4,j)、虚部Bl(4,j)、右チャンネルに対応する変換データの実部Ar(4,j)、虚部Br(4,j)を得る。
〔数式6〕
Al(4,j)=Σi=0,…,N-1W(4,i)・Xl(i)・cos(2πij/N)
Bl(4,j)=Σi=0,…,N-1W(4,i)・Xl(i)・sin(2πij/N)
Ar(4,j)=Σi=0,…,N-1W(4,i)・Xr(i)・cos(2πij/N)
Br(4,j)=Σi=0,…,N-1W(4,i)・Xr(i)・sin(2πij/N)
上記〔数式5〕〔数式6〕において、iは、各音響フレーム内のN個のサンプルに付した通し番号であり、i=0,1,2,…N−1の整数値をとる。また、jは周波数の値について、値の小さなものから順に付した通し番号であり、iと同様にj=0,1,2,…N/2−1の整数値をとる。サンプリング周波数が44.1kHz、N=4096の場合、jの値が1つ異なると、周波数が10.8Hz異なることになる。
上記〔数式5〕〔数式6〕に従った処理を実行することにより、各音響フレームの信号成分を周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、周波数成分変更手段30が、生成されたフレームスペクトルから所定周波数範囲のスペクトル集合を抽出する。本実施形態では、F1以上F2以下の範囲のものを抽出する。
周波数成分変更手段30は、Aタイプの音響フレームについて、ビット配列作成手段70が作成したビット配列に応じて、周波数成分の割合を変更する処理を行う。本発明では、ビット配列を1ビットずつ読み込み、1音響フレームに対して1ビットの情報を埋め込む。埋め込まれる1ビットの値は、“0” “1”の2通りがある。本実施形態では、これらを値1、値2と定義する。この際、“0”“1”の2通りのうち、いずれを値1、値2と定義しても良い。抽出側において、埋め込み側で埋め込まれた1ビットが特定できれば良いためである。したがって、この定義は、埋め込み側と抽出側で一致している必要がある。
本発明では、L-chの信号の変更対象周波数帯における成分強度を高め、R-chの信号の対応するスペクトル集合の強度を弱める際に、周波数方向の値jに応じて変化する窓関数F(j)を用いる。この周波数方向窓関数F(j)は、以下の〔数式7〕で定義されるものである。
〔数式7〕
F(j)=1.0−(j−Pr)2/Pr2
上記〔数式7〕において、Pr=P/2である。また、Pは変更対象周波数帯の周波数方向の幅であり、変更対象周波数帯の下限の成分の番号をm、変更対象周波数帯の上限の成分の番号をMとした場合、P=M−mである。例えば、変更対象周波数帯として、1.7kHz〜3.4kHzを設定する場合、m=160、M=320であるので、P=160となる。この窓関数F(j)が描く曲線を図4に示す。図4に示すように、窓関数F(j)は、変更対象周波数帯における周波数の中心部分に重みを大きくした関数となっている。実際に窓関数F(j)を適用する際には、変更対象周波数帯の下限であるmだけjの値を補正して適用することになる。
埋め込むべき情報が“値1”である場合、以下の〔数式8〕に従った処理を実行することにより、周波数成分の状態を“状態1”、すなわち、図1(b)に示したような状態に変更する。
〔数式8〕
j=m〜M−1の各成分に対して
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
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
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=F(j−m)・Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Ar´(1,j)=(1.0−F(j−m))・Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=(1.0−F(j−m))・Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
上記〔数式8〕においては、j=m〜M−1において、Al´(3,j)、Bl´(3,j)を共に0としている。これは、図1(b)の上段に示すように、L-chにおいて、SP3内の各成分を0にすることを示しているが、“状態1”はSP1との差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。
埋め込むべき情報が“値2”である場合は、以下の〔数式9〕に従った処理を実行することにより、周波数成分の状態を“状態2” 、すなわち、図1(c)に示したような状態に変更する。
〔数式9〕
j=m〜M−1の各成分に対して
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
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
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=F(j−m)・Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Ar´(3,j)=(1.0−F(j−m))・Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=(1.0−F(j−m))・Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
上記〔数式9〕においては、j=m〜M−1において、Al´(1,j)、Bl´(1,j)を共に0としている。これは、図1(c)の上段に示すように、L-chにおいて、SP1内の各成分を0にすることを示しているが、“状態2”はSP3との差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。
上記のように、Aタイプの音響フレームに対しては、埋め込むべきビット値に応じて、周波数成分の変更を行う必要があるため、周波数成分変更手段30は、上記〔数式8〕〔数式9〕に従った処理を実行する。ところが、Bタイプの音響フレームは、Aタイプの音響フレームのみの場合に生じる両端部分の不連続性を防止するために用いられるものであるので、ビット値に応じて周波数成分の変更を行う必要はない。そこで、周波数成分変更手段30は、Bタイプの音響フレームについては、以下の〔数式10〕に従った処理を実行し、常にその変更対象周波数帯の成分を除去する。
〔数式10〕
j=0〜M−1の各成分に対して
Al´(4,j)=0
Bl´(4,j)=0
E(4,j)={Al(4,j)2+Bl(4,j)2+Ar(4,j)2+Br(4,j)2}1/2
Ar´(4,j)=Ar(4,j)・E(4,j)/{Ar(4,j)2+Br(4,j)2}1/2
Br´(4,j)=Br(4,j)・E(4,j)/{Ar(4,j)2+Br(4,j)2}1/2
周波数逆変換手段40は、上記のようにして、周波数成分の状態が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う。この周波数逆変換は、当然のことながら、周波数変換手段20が実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。
具体的には、Aタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(1,j)等、虚部Bl´(1,j)等、右チャンネルの実部Ar´(1,j)等、虚部Br´(1,j)等を用いて、以下の〔数式11〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。なお、上記〔数式8〕〔数式9〕において改変されていない周波数成分については、Al´(1,j)等として、元の周波数成分であるAl(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〕によりAタイプの改変音響フレームの左チャンネルの各サンプルXl´(i)、右チャンネルの各サンプルXr´(i)、が得られることになる。
Bタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式10〕により得られたスペクトルの左チャンネルの実部Al´(4,j)、虚部Bl´(4,j)、右チャンネルの実部Ar´(4,j)、虚部Br´(4,j)を用いて、以下の〔数式12〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。なお、上記〔数式10〕において改変されていない周波数成分については、以下の〔数式12〕においてはAl´(4,j)、Bl´(4,j)、Ar´(4,j)、Br´(4,j)として、元の値であるAl(4,j)、Bl(4,j)、Ar(4,j)、Br(4,j)を用いる。
〔数式12〕
Xl´(i)=1/N・{ΣjAl´(4,j)・cos(2πij/N)−ΣjBl´(4,j)・sin(2πij/N)}+Xlp(i+N/2)
Xr´(i)=1/N・{ΣjAr´(4,j)・cos(2πij/N)−ΣjBr´(4,j)・sin(2πij/N)}+Xrp(i+N/2)
上記〔数式12〕によりBタイプの改変音響フレームの左チャンネルの各サンプルXl´(i)、右チャンネルの各サンプルXr´(i)、が得られることになる。
改変音響フレーム出力手段50は、周波数逆変換手段40の処理により得られたAタイプの改変音響フレーム、Bタイプの改変音響フレームを順次出力ファイルに出力する。
次に、図2に示した音響信号に対する情報の埋め込み装置の処理の全体的な流れを、図5のフローチャートに従って説明する。図2に示した装置を構成する各構成要素は、連携して図5に従った処理を実行する。図5は、付加情報1ワード分の処理に対応したものとなっている。1ワードとしては、任意のビット数に設定することができるが、上述のように、本実施形態では誤り検出ビットを含めて1バイト(8ビット)に設定されている。また、情報の埋め込みは、Aタイプの音響フレームに対して行われるので、図5は、Aタイプの音響フレームについての説明となっている。Bタイプの音響フレームについては、Aタイプの音響フレームと並行して、音響フレーム読込手段10により読み込まれ、窓関数W(4,i)を利用して周波数変換手段20により周波数変換された後、周波数成分変更手段30により変更対象周波数帯の成分が除去され、周波数逆変換手段40により周波数逆変換された後、改変音響フレーム出力手段50により出力される。
図5においては、まず、ビット配列作成手段70は、付加情報記憶部62から抽出した付加情報に対して所定の処理を施し新たなビット配列を作成する(S101)。具体的には、まず、付加情報記憶部62から1ワード(7ビット)単位で抽出し、これに誤り検出ビットを1ビット付加して8ビットとする。そして、抽出した1ワード(7ビット)の各ビットを反転させて配置し、最後に誤り検出ビットと同じ値の1ビットを配置して16ビットのビット配列を作成する。この処理によるビット配列の変化の様子を図6に示す。図6(a)は、誤り検出ビット付加後のビット配列を示している。図6(a)において、第8ビットの“0”は誤り検出ビットである。このような場合、第1〜第7ビットの“1011110”を反転させた“0100001”を第9ビット〜第15ビットとし、第8ビットの“0”を複写して第16ビットとする新たなビット配列を作成する。この結果、図6(b)に示すような配列となる。
この図6(b)に示す配列では、前半の8ビットと後半の8ビットにおける対応する各ビットの順序が同じであるので、抽出時において、どのビットについても8ビット離れたビットとの比較を行うことになる。すなわち、図6(b)に示すように、第1ビットは第9ビット(第1ビット反転)、第2ビットは第10ビット(第2ビット反転)との比較を行うことになる。この場合、抽出時に、誤って第2ビットを先頭と判断しても、第10ビットとの比較になり、適合性が保たれることが多い。すると、第2ビットを先頭とした誤ったビット配列を抽出してしまう可能性がある。このような問題が発生するのを防ぐため、本実施形態では、さらに、16ビット中の後半8ビット内において、奇数番目のビットと偶数番目のビットの入れ替えを行う。この結果、図6(c)に示すような配列となる。そして、この16ビットが、音響信号に対する情報の埋め込み装置として用いられるコンピュータ内のレジスタに読み込まれることになる。このように、付加情報記憶部62においては、1ワードは7ビットであるが、埋め込み処理時は、この16ビットの配列で、付加情報内の1ワード分の処理を行う。このように作成されたビット配列のうち、前半のビット列を前半ビット列、後半のビット列を後半ビット列と呼ぶことにする。
次に、周波数成分変更手段30が、レジスタに保持された16ビットから1ビットを読み込む処理を行う(S102)。続いて、音響フレーム読込手段10が、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルを1音響フレームとして読み込む(S103)。続いて、周波数変換手段20および周波数成分変更手段30が、音響フレームの周波数成分の状態を“状態1”、“状態2”のいずれかに変更する処理を行う(S104)。具体的には、読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。すなわち、各音響フレームについて、3つの窓関数W(1,i)、W(2,i)、W(3,i)を用いて、上記〔数式5〕に従った処理を行うことになる。
続いて、周波数成分変更手段30は、ビット配列作成手段70から受け取った値1、値2に応じて上記〔数式8〕〔数式9〕に従った処理を実行し、変更対象周波数帯の成分の状態を“状態1”、“状態2”のいずれかに変更する。
次に、周波数逆変換手段40が、上記S104の処理により各窓成分のスペクトル集合間の割合が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う(S105)。この周波数逆変換は、当然のことながら、周波数変換手段20がS104において実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ逆変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。具体的には、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(1,j)等、虚部Bl´(1,j)等、右チャンネルの実部Ar´(1,j)等、虚部Br´(1,j)等を用いて、上記〔数式11〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。
改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する。こうして1つの音響フレームに対する処理を終えたら、周波数成分変更手段30がビット配列中の次の1ビットを読み込む(S102)。以上のような処理を音響信号の両チャンネルの全サンプルに渡って実行していく。すなわち、所定数のサンプルを音響フレームとして読み込み、音響信号から読み込むべき音響フレームがなくなったら(S103)、処理を終了する。なお、S101において読み込んだ1ワード分のビット配列(16ビット)の各ビットに対応する処理を終えた場合、S102からS101に戻り、付加情報の次のワードを読み込んでビット配列を作成する処理を行うことになる。付加情報の全ワードに対して処理が終了した場合は、付加情報の先頭ワードに戻って処理を行う。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段60内の改変音響信号記憶部63に出力され、記憶される。
なお、本実施形態では、付加情報を1ワード7ビットとし、誤り検出用の1ビットを付加した後、反転ビット等を加えて16ビットとして、付加情報1ワード分の処理をする場合について説明したが、抽出側と取り決めがある限り、付加情報の1ワードを任意のビット数単位で記録することが可能である。
上記のようにして得られた改変音響信号の左チャンネルのうち、付加情報が埋め込まれている部分については、変更対象周波数帯の成分は、上記状態1、状態2の2通りの分布しかないことになる。しかし、変更対象周波数帯の成分以外については、元の音響信号のままであるので、制作者の設定に基づいた種々な分布になる。また、上記の例で示したように、ステレオ音響信号を利用した場合には、左チャンネルにおいて変化させられた変更対象周波数帯の成分は、上記〔数式8〕〔数式9〕の処理からも明らかなように、必ず右チャンネルの変更対象周波数帯の成分に付加されている。したがって、右チャンネルが左チャンネルにおいて削除された成分を補っているため、両チャンネル全体として見ると、信号の劣化がない。
(1.3.音響信号からの情報の抽出装置)
次に、本発明に係る音響信号からの情報の抽出装置について説明する。図7は、本発明に係る音響信号からの情報の抽出装置の一実施形態を示す構成図である。図7において、100は音響信号入力手段、110は基準フレーム獲得手段、120は位相変更フレーム設定手段、130は周波数変換手段、140は符号判定パラメータ算出手段、150は符号出力手段、160は付加情報抽出手段、170は音響フレーム保持手段である。
音響信号入力手段100は、流れている音声をデジタル音響信号として取得し、入力する機能を有している。現実には、マイクロフォンおよびA/D変換器により実現される。マイクロフォンとしては、変更対象周波数帯の成分が検出可能なものであれば、モノラル無指向性のものであっても、ステレオ指向性のものであっても使用可能である。ステレオ指向性のものであっても一方のチャンネルだけ利用すれば良い。また、図2に示した装置で情報の埋め込みを行った場合には、特別精度の高いものでなく、一般的な精度のマイクロフォンを用いても情報の抽出が可能となる。基準フレーム獲得手段110は、入力されたデジタルのモノラル音響信号(あるいはステレオ音響信号の1チャンネル)から所定数のサンプルで構成される音響フレームを基準フレームとして読み込む機能を有している。位相変更フレーム設定手段120は、基準フレームと所定サンプルずつ移動させることにより位相を変更した音響フレームを位相変更フレームとして設定する機能を有している。周波数変換手段130は、図2に示した周波数変換手段20と同様の機能を有している。
符号判定パラメータ算出手段140は、生成されたフレームスペクトルから所定の周波数範囲に相当する各周波数強度データを抽出し、各成分に対応した各周波数強度データの強度値EC1、EC2を以下の〔数式13〕に基づいて算出し、この強度値EC1、EC2を符号判定パラメータとし、この符号判定パラメータEC1、EC2の比率等に基づいて、所定の状態であると判断する機能を有している。
〔数式13〕
EC1=Σj=m,…,M-1{Al(1,j)2+Bl(1,j)2}・F(j−m)・C
EC2=Σj=m,…,M-1{Al(3,j)2+Bl(3,j)2}・F(j−m)・C
なお、上記〔数式13〕における係数Cは、以下の〔数式14〕で定義される。
〔数式14〕
C=1.0/Σj=0,P-1F(j)
符号出力手段150は、1つの基準フレームに対応する音響フレーム(基準フレームおよび位相変更フレーム)の中から最適な位相であると判断されるものを判断し、その音響フレームの状態に対応する符号を出力する機能を有している。符号判定パラメータ算出手段140と符号出力手段150により符号化手段が構成される。付加情報抽出手段160は、符号出力手段150により出力された2値の配列を、所定の規則により変換して意味のある付加情報として抽出する機能を有している。音響フレーム保持手段170は、連続する2個の基準フレームを保持可能なバッファメモリである。図7に示した各構成手段は、現実には情報処理機能を有する小型のコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。特に、本発明においては、汎用のコンピュータより録音性能および演算処理性能の低い携帯ゲーム機、PDA、PHS端末、携帯電話機を抽出装置として用いることを想定している。
(1.4.抽出装置の処理動作)
次に、図7に示した音響信号からの情報の抽出装置の処理動作について説明する。本発明に係る抽出装置は、パリティ検査によりエラーを検出した際、エラー訂正を行わない設定とすることもできるし、1ビットのエラー訂正をするものと設定することもできる。ここからは、エラー訂正を行わない設定における抽出装置の処理動作を、図8のフローチャートに従って説明する。まず、本装置では、位相判定テーブルS(p)、位相決定ログ、位相確定フラグ、ビットカウンタを初期化する(S200)。位相判定テーブルS(p)は、位相を判定するためのテーブルであり、pは0〜5の整数値をとる。初期値はS(p)=0に設定されている。位相決定ログは、1つの基準フレームと5つの位相変更フレームの組ごとに、決定された位相すなわち位相番号pを記録するものであり、初期状態では0が設定されている。位相確定フラグは、位相が確定しているかどうかを示すフラグであり、初期状態ではOffに設定されている。ビットカウンタについては初期値として0を設定する。
このように、初期値が設定されている状態で、利用者が流れている音楽について、その楽曲名等の属性情報を知りたいと思った場合、まず、抽出装置に対して、抽出装置としての起動の指示を行う。これは、例えば、抽出装置を携帯電話機等の携帯端末で実現している場合は、所定のボタンを操作することにより実行できる。抽出装置は、指示が入力されると、音響信号入力手段100が、流れている音楽を録音し、デジタル化してデジタル音響信号として入力する。具体的には、無指向性マイクロフォン(または指向性マイクロフォンの一方のチャンネル)から入力される音声を、A/D変換器によりデジタル化する処理を行うことになる。この際、そのサンプリング周波数、量子化ビット数は機器の性能に依存するが、本実施形態では、携帯ゲーム機、PDA、PHS端末を想定しているため、サンプリング周波数22.05kHz、量子化ビット数12ビットでデジタル化する。
続いて、基準フレーム獲得手段110が、音響信号入力手段100から入力された音響信号から、所定数のサンプルで構成される音響フレームを基準フレームとして抽出する(S201)。具体的には、基準フレームを抽出して音響フレーム保持手段170に読み込むことになる。基準フレーム獲得手段110が基準フレームとして読み込む1音響フレームのサンプル数は、図2に示した音響フレーム読込手段10で設定されたものとは異なり、半分の2048個に設定してある。これは、音響信号入力手段100によるサンプリング周波数Fs´が22.05kHzであり、埋め込み装置で処理した元の音響信号のサンプリング周波数Fs(44.1kHz)の半分であるためである。すなわち、サンプリング周波数44.1kHz、サンプル数4096(N)の埋め込み装置における1音響フレームと、抽出装置における1音響フレームの秒数が同一となるように、抽出装置においては、1音響フレーム2048(N´=(N/2))サンプルと設定しているのである。すなわち、N´=N×Fs´/Fsとなるように、N´は設定されることになる。したがって、本実施形態の場合、基準フレーム獲得手段110は、2048サンプルずつ、順次基準フレームとして読み込んでいくことになる。なお、本実施形態では、音響信号入力手段100において量子化ビット数12ビットでサンプリングした場合、基準フレーム獲得手段110が16ビットに各サンプルをアップコンバートした後、抽出するようにしている。
音響フレーム保持手段170には、上述のように2個の基準フレームが格納可能となっており、新しい基準フレームが読み込まれると、古い基準フレームを破棄するようになっている。したがって、音響フレーム保持手段170には、常に基準フレーム2個分(連続する4096サンプル)が格納されていることになる。
抽出装置で処理する音響フレームは、先頭から途切れることなく隣接して設定される基準フレームと、この基準フレームと位相を変更した位相変更フレームとに分けることができる。基準フレームについては、最初の基準フレームとしてサンプル番号1からサンプル番号2048までを設定したら、次の基準フレームは、サンプル番号2049からサンプル番号4096、さらに次の基準フレームは、サンプル番号4097からサンプル番号6144、というように途切れることなく設定される。そして、各基準フレームについて、1/6フレーム(341サンプル)ずつ移動した5個の位相変更フレームを設定する。例えば、最初の基準フレームについては、サンプル番号342、684、1025、1366、1708から始まる2048のサンプルで構成される5個の位相変更フレームが設定されることになる。続いて、周波数変換手段130、符号判定パラメータ算出手段140が、読み込んだ各音響フレームについて、位相を特定した後、埋め込まれている情報を判定し、対応する符号を出力する(S202)。出力される情報の形式は、付加情報が埋め込まれる場合に対応する値1、値2の2通りの形式となる。
ここで、ステップS202の位相確定および符号判定の詳細を図9のフローチャートに従って説明する。まず、位相確定フラグがOnであるかOffであるかの確認を行う(S301)。位相確定フラグがOnである場合は、位相確定処理(S303〜S309)を行わず、符号判定処理のみを行う(S302)。ただし、初期状態では位相は確定しておらず、位相確定フラグがOffとなっているので、候補符号テーブルの初期化を行う(S303)。候補符号テーブルは、1つの基準フレームおよび5個の位相変更フレームを特定する0〜5の位相番号および、この6個の音響フレームの状態から得られる2値の符号を記録するものである。
続いて、符号判定パラメータ算出手段140は、符号判定処理を行う(S302)。ここで、符号判定処理の詳細を図10に示す。まず、周波数変換手段130が、読み込んだ各音響フレームに対して、周波数変換を行ってフレームスペクトルを得る(S401)。具体的には、図2に示した周波数変換手段20と同様、〔数式5〕に従った処理を実行する。ただし、〔数式5〕におけるNをN´(=N/2)に置き換えて実行する。また、〔数式5〕において用いるW(1,i)〜W(3,i)は、それぞれ〔数式1〕〜〔数式3〕におけるNをN´(=N/2)に置き換えたものを用いる。なお、抽出に用いるのは、左チャンネルだけであるので、上記〔数式5〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(1,j)等、虚部Bl(1,j)等を得る。
上記周波数変換手段130における処理により、周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、強度値EC1、強度値EC2を用いて、変更対象周波数帯の成分の状態がどのような状態であるか、すなわち、1ビットの値としてどのような値が埋め込まれていたかを判断する処理を行う(S402)。具体的には、まず、以下の判定処理を実行し、その結果、対応する状態であったと判断し、対応する値を出力する。
EC1>EC2の場合、“状態1”であると判断し、値1を出力する。
EC2≧EC1の場合、“状態2”であると判断し、値2を出力する。
符号判定パラメータ算出手段140は、各音響フレーム単位で、上記判定結果に応じて値1、値2のいずれかを設定する(S403)。また、上記判定の結果、値1、値2のいずれかを設定した場合には、さらに、以下の〔数式15〕に従って位相判定テーブルS(p)の更新を行う(S404)。
〔数式15〕
“状態1”であると判断し、値1を出力した場合、S(p)←S(p)+EC1/EC2
“状態2”であると判断し、値2を出力した場合、S(p)←S(p)+EC2/EC1
ここで、図9のフローチャートに戻って、符号判定パラメータ算出手段140は、候補符号テーブルに、最適位相となる候補を保存する(S304)。具体的には、位相判定テーブルに記録されているS(p)の値が最大となる位相番号pの値、前記S403により設定された2値のいずれかの符号、その音響フレームについての上記〔数式13〕に従った処理を実行することにより算出した、周波数成分に対応するEC1、EC2のいずれかを最適位相の候補として候補符号テーブルに保存する。
続いて、全ての位相番号pに対応する処理を終えたかどうかを判定する(S305)。これは、ある基準フレームに対して全ての位相変更フレームの処理を行ったかどうかを判定している。本実施形態では、pが0〜5までの値をとるので、6回分処理していない場合は、処理していた音響フレームから所定サンプル数ずらして、位相の異なる音響フレームを設定し、S302に戻って処理を繰り返す。なお、p=0の場合が基準フレームであり、p=1〜5の場合が位相変更フレームである。全ての位相番号pに対応する処理を終えた場合は、候補保存テーブルに記録されている位相番号pに対応する位相が最適位相であると判定し、候補保存テーブルに記録されている符号を出力する(S306)。
続いて、位相決定ログの更新を行う(S307)。位相決定ログとは、1つの基準フレームと5つの位相変更フレームの組ごとに、決定された位相すなわち位相番号pを記録するものである。そして、位相決定ログを参照して、位相が過去所定回数同一であったかどうかを判断する(S308)。本実施形態では、この回数を10回としている。位相が過去所定回数同一であった場合には、位相確定フラグをOnに設定する(S309)。これにより、同一位相が所定回数続いた場合には、必ず位相確定フラグがOnとなっているため、位相確定処理(S303〜S309)を行わず、符号判定処理(S302)のみを行うことになる。
再び図8のフローチャートに戻って説明する。位相確定および符号出力が行なわれたら、出力された符号の値に対応する1ビットをバッファに保存する(S203)。次に、ビットカウンタを“1”だけカウントアップする(S204)。
次に、ビットカウンタが15以下であるか16以上であるかを判断する(S205)。ビットカウンタが15以下の場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
ビットカウンタが16以上である場合は、バッファに保存されたビット配列のうち前半8ビットと後半8ビットの適合性の判断を行う(S206)。すなわち、図6(c)に示したように、16ビット中先頭から1ビット目と10ビット目、2ビット目と9ビット目、3ビット目と12ビット目、4ビット目と11ビット目、5ビット目と14ビット目、6ビット目と13ビット目、7ビット目と16ビット目が互いに反転した値となっており、8ビット目と15ビット目が一致しているかどうかの判断を行う。これらを満たしていれば適合していると判断し、満たしていなければ不適合と判断する。判断の結果、不適合である場合には、S201に戻って、次の基準フレームを抽出する処理を行う。判断の結果、適合している場合には、16ビット中の前半8ビットについてパリティ検査を行う(S207)。具体的には、16ビット中の前半8ビットを抽出し、そのうち前7ビットでパリティ計算を行い、その結果と8ビット目と照合を行う。パリティ検査が不合格の場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
パリティ検査が合格の場合は、付加情報抽出手段160が、前半8ビット中の前7ビットに1ビット付加して出力する(S208)。ここで、パリティ検査が合格の場合は、照合に用いた8ビット目が誤り検出ビットであった可能性が高いことになる。そうすると、その前の7ビットは元の付加情報における7ビットであると考えられる。このため、その先頭からの7ビットにビット0を付加することによりASCIIコードにおける1ワードとして出力するのである。逆にパリティ検査が不合格の場合は、照合に用いた8ビット目が誤り検出ビットでない可能性が高いことになる。そうすると、その時点で保持している7ビットは、元の付加情報における7ビットからずれたものであると考えられる。この場合は、先頭の1ビットを破棄して、S201からS204の処理により得られた新たな1ビットを得るための処理を行うのである。
このようにパリティ検査を行い、これに合格した場合は、その部分がワードの区切りである可能性が高いので、それが本当に区切りであれば、以降は16ビットずつ抽出すれば、全て正確にワード単位で抽出を行うことができる。逆に、パリティ検査に合格したとしても、それが偶然であり、実はワードの区切りではない場合も考えられる。このような場合は、次のパリティ検査の際に不合格となる可能性が高く、何回か繰り返しているうちに正しい区切りが正確に判断できることになる。S208において、前7ビットに1ビット付加して出力した場合には、ビットカウンタを0に初期化する(S209)。そして、S201に戻って、次の基準フレームを抽出する処理を行う。
図8に示す処理を各基準フレームに対して実行することにより、付加情報が抽出されることになる。S201において全ての基準フレームが抽出されたと判断された場合には、処理を終了する。
上記S208の処理において、付加情報抽出手段160は、まず、符号出力手段150により出力された値を、所定の規則により変換して意味のある付加情報として抽出する。所定の規則としては、情報を埋め込む者が意図した情報が受け取った者に認識可能な状態とできるものであれば、さまざまな規則が採用できるが、本実施形態では、ASCIIコードを採用している。すなわち、付加情報抽出手段160は、符号判定パラメータ算出手段140が判定し、符号出力手段150から出力される符号から得られるビット値の配列を1バイト(8ビット)単位で認識し、これをASCIIコードに従って文字情報を認識する。このようにして得られた文字情報は、表示装置(図示省略)の画面に表示出力される。
従って、埋め込み装置により音響信号に、その楽曲の曲名やアーチスト等の属性情報を文字情報として埋め込んでおけば、利用者は、その音楽が流れているのを聞いて、その曲名やアーチストを知りたいと思ったときに、抽出装置として機能する自身の携帯端末に所定の操作を行えば、自身の携帯端末の画面に曲名やアーチスト等の属性情報が文字情報として表示されることになる。
上記の例では、図8のフローチャートに従ってエラー訂正を行わない設定における抽出装置の処理動作を説明した。エラー訂正を行わない場合は、エラーが生じない場合にのみ、付加情報1ワードの出力が可能となる。例えば、図12(a)に示すような正常な配列(図6(c)の配列と同一)の場合、第1ビット〜第7ビットまでは、それぞれの反転ビットと照合を行い、第8ビットはその複写ビットと照合を行う。そして、その関係が適合している場合には、前半の第1ビット〜第8ビットにおいてパリティ検査を行う。図12(a)の例では、第1ビット〜第8ビットと第9ビット〜第16ビットが適合しており、前半の第1ビット〜第8ビットのパリティ検査も合格であるので、第1ビット〜第7ビットにビット0を付加することによりASCIIコードにおける1ワードとして出力する。
次に、1ビットのエラー訂正をする設定における抽出装置の処理動作を、図11のフローチャートに従って説明する。図11においては、図8と同一処理を行う部分が含まれている。そこで、図8と同一処理を行う部分については、同一符号を付して説明を省略する。図11の例においても、まず、初期化処理を行う(S200)。この初期化処理では、図8の例と同様、位相判定テーブルS(p)、位相決定ログ、位相確定フラグ、ビットカウンタを初期化するが、さらに、自動訂正モードをOFFにする設定を行う。
続いて、図8と同様、所定数のサンプルで構成される音響フレームを基準フレームとして抽出した後(S201)、読み込んだ各音響フレームについて、位相を特定した後、埋め込まれている情報を判定し、対応する符号を出力する(S202)。なお、S202の処理については、図9、図10に示したようなものとなる。
位相確定および符号出力が行なわれたら、出力された符号の値に対応する1ビットをバッファに保存して(S203)、ビットカウンタを“1”だけカウントアップする(S204)。そして、ビットカウンタが15以下であるか16以上であるかを判断し(S205)、ビットカウンタが15以下の場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
ビットカウンタが16以上である場合は、バッファに保存されたビット列のうち前半8ビットと後半8ビットの適合性の判断を行う(S206)。判断の結果、2ビット以上不適合の場合には、自動訂正モードをOFFに設定した後(S210)、S201に戻って、次の基準フレームを抽出する処理を行う。
一方、判断の結果、1ビット以下の不適合の場合には、さらに、適合か1ビットのみ不適合かを判断する。適合している場合には、16ビット中の前半8ビットについてパリティ検査を行う(S207)。パリティ検査が合格の場合は、自動訂正モードをONに設定した後(S211)、付加情報抽出手段160が、前半8ビット中の前7ビットに1ビット付加して出力する(S208)。
1ビットのみ不適合の場合は、自動訂正モードがONであるかOFFであるかの判断を行う(S212)。自動訂正モードがOFFである場合は、S201に戻って、次の基準フレームを抽出する処理を行う。自動訂正モードがONである場合は、16ビット中の前半8ビットについてパリティ検査を行う(S207)。パリティ検査が合格の場合は、付加情報抽出手段160が、前半8ビット中の前7ビットに1ビット付加して出力する(S208)。パリティ検査が不合格の場合は、前半の不適合ビットを反転訂正する(S213)。そして、付加情報抽出手段160が、前半8ビット中の前7ビットに1ビット付加して出力する(S208)。
S208において、前7ビットに1ビット付加して出力した場合には、ビットカウンタを0に初期化する(S209)。そして、S201に戻って、次の基準フレームを抽出する処理を行う。
図11の例のように、1ビットのエラー訂正をする設定の場合は、1ビットのエラーが生じた場合であっても、付加情報1ワードの出力が可能となる。例えば、図12(b)に示すように、第5ビット反転がエラーとなっている場合を考えてみる。この場合、第5ビットと第5ビット反転が同一の値であり、反転の関係となっておらず、不適合となる。しかし、前半のパリティ検査は合格となるので、前半の8ビット中、前7ビットに1ビットを付加して出力される。
次に、図13(a)に示すように、第5ビットがエラーとなっている場合を考えてみる。この場合、第5ビットと第5ビット反転が同一の値であり、反転の関係となっておらず、不適合となる。さらに、前半のパリティ検査は不合格となるので、前半の不適合ビットである第5ビットを反転訂正した後、訂正後の8ビット中、前7ビットに1ビットを付加して出力される。
次に、図13(b)に示すように、第8ビット複写がエラーとなっている場合を考えてみる。この場合、第8ビットと第8ビット複写が異なる値であり、複写の関係となっておらず、不適合となる。しかし、前半のパリティ検査は合格となるので、前半の8ビット中、前7ビットに1ビットを付加して出力される。
次に、図14(a)に示すように、第8ビットがエラーとなっている場合を考えてみる。この場合、第8ビットと第8ビット複写が異なる値であり、複写の関係となっておらず、不適合となる。さらに、前半のパリティ検査は不合格となるので、前半の不適合ビットである第8ビットを反転訂正した後、訂正後の8ビット中、前7ビットに1ビットを付加して出力される。
後半ビット列において奇数番目のビットと偶数番目のビットを入れ替えた場合は、図6(c)に示すように、前半ビット列の奇数番目のビットは9ビット離れたビットとの比較となり、前半ビット列の偶数番目のビットは7ビット離れたビットとの比較となる。すなわち、第1ビットは第10ビット(第1ビット反転)、第2ビットは第9ビット(第2ビット反転)との比較を行うことになる。この場合、抽出時に、誤って第2ビットを先頭と判断すると、第11ビットとの比較になり、これは第4ビット反転であるため、適合性が保たれない場合も多い。すると、第2ビットを先頭とした誤ったビット配列を抽出してしまう可能性が低くなる。このため、後半ビット列において奇数番目のビットと偶数番目のビットを入れ替えた場合、図6(b)のように前半ビット列と後半ビット列における対応する各ビットの順序が同じである場合に比べると、誤認識が低く、より精度の高い抽出を行うことが可能となる。
(1.5.位相補正処理について)
上記のように、抽出時には、埋め込み時に埋め込んだ音響フレームに対応して、音響信号を読み込むことができるとは限らない。そこで、音響フレームの位相をずらして複数通り(本実施形態では6通り)で読み込み、その中で最適な位相を決定し、その位相で特定される音響フレームに対応する符号を出力することにしている。例えば、6通りで読み込む場合、先頭の音響フレームは、本来サンプル番号1〜2048のサンプルであるが、サンプル番号1、342、684、1025、1366、1708から始まる2048のサンプルで構成される6個の各音響フレームに対して処理を行い、最適な音響フレームに対応する符号を出力することになる。なお、図9のフローチャートを用いて説明したように、本実施形態では、同一位相が所定回数連続した場合には、それ以降はその位相を確定したものとして処理を行う。
(1.6.モノラル音響信号の場合)
上記実施形態においては、埋め込み装置、抽出装置のいずれにおいても、左右のチャンネルを有するステレオ音響信号の左チャンネル信号に付加情報を埋め込む場合を例にとって説明したが、逆に右チャンネル信号に付加情報を埋め込むようにしても良い。本発明は、左右の特性には無関係だからである。また、1つのチャンネルしかないモノラル音響信号に対して処理を行う場合は、上記実施形態において、左チャンネル信号に対して行った処理を行うことになる。本発明は、1つのチャンネル信号に対して付加情報を埋め込み、また抽出を行うので、モノラル音響信号であってもステレオ音響信号であっても同様に行うことができる。
(1.7.信号成分が小さくても情報の埋め込みを確実に行う手法)
ここまでの説明のように、本発明では、元の信号成分の状態如何にかかわらず、常に変更対象周波数帯の信号成分を変更するものであるが、その成分の大きさは、両チャンネルの信号強度より大きくなることはない。このため、元の信号成分が存在しないか、または小さすぎる場合には、抽出に必要な信号成分が得られないため、情報の抽出を適切に行うことができず抽出エラーとなる。そこで、以下、元の信号成分が小さくても、情報の抽出を適切に行えるように信号の埋め込みを可能とする手法について説明する。
この場合、図2に示した埋め込み装置における情報の埋め込み処理も、図5のフローチャートに従って行われる。
したがって、S104における状態1、状態2に設定する処理としては、まず、以下の〔数式16〕に従って算出される固定値Vを、変更対象周波数帯の成分の強度として設定する。
〔数式16〕
V={0.5・Lev・C/P}1/2
そして、状態1とする場合は、上記〔数式8〕に従った処理を実行した後、以下の〔数式17〕に従った処理を実行する。
〔数式17〕
j=m〜M−1の各成分に対して
Al´(1,j)=F(j−m)・Al(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
状態2とする場合は、上記〔数式9〕に従った処理を実行した後、以下の〔数式18〕に従った処理を実行する。
〔数式18〕
j=m〜M−1の各成分に対して
Al´(3,j)=F(j−m)・Al(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
上記のように、周波数成分が小さい場合に情報を埋め込んだ場合であっても、抽出側の、音響信号からの情報の抽出装置の構成は図7と同一であり、処理動作は図8〜図11のフローチャートに従ったものと同一である。
(2.第2の実施形態)
次に、第2の実施形態について説明する。第2の実施形態では、図15に示すように、音響フレームの変更対象周波数帯の成分を4つの状態に変更し、2ビットの情報を埋め込むことを特徴とする。
図15に示す各音響フレームにおいても、図1と同様、横軸は時間方向、縦軸は周波数方向を示している。また、網掛けされた部分は、周波数成分が存在している部分を示し、網掛けが濃いほど成分強度が強いことを示している。図15においても、図1と同様、所定周波数範囲(変更対象周波数帯)はF1以上F2以下に設定されているが、図15においては、変更対象周波数帯がF1とF2の中間において2つに区分されている。したがって、図15に示すように、縦軸の周波数方向において、周波数領域が4つに区分されている。
本実施形態で、符号1、符号2を埋め込む場合は、図15(b)(c)に示すように、図1(b)(c)に示した第1の実施形態と同様に処理が行われる。
符号3を埋め込む場合、図15(d)に示すように、L-chの信号の前部の上位周波数成分と後部の下位周波数成分を除去し、除去した成分と同等の成分をR-chの信号に加算する。また、L-chの信号の変更対象周波数帯の下位周波数成分と後部の上位周波数成分の強度を高め、R-chの信号の対応する各スペクトル集合の強度を弱めている。この状態を“状態3”と呼ぶことにする。符号4を埋め込む場合は、図15(e)に示すように、L-chの信号の変更対象周波数帯の前部の下位周波数成分と後部の上位周波数成分を除去し、除去した成分と同等の成分をR-chの信号に加算する。また、L-chの信号の変更対象周波数帯の前部の上位周波数成分と後部の下位周波数成分の強度を高め、R-chの信号の対応する各スペクトル集合の強度を弱めている。この状態を“状態4”と呼ぶことにする。
本発明では、図15(b)〜(e)に示すような4つの状態に変更対象周波数帯の成分を変更することにより、情報の埋め込みを行っている。4つの状態を埋め込むことができるので、2ビット分の情報量に相当する。
(2.1.埋め込み装置)
第2の実施形態においても、埋め込み装置の構成は図2に示したものと同様であるが、主に周波数成分変更手段30の内容が異なっている。具体的には、周波数成分変更手段30は、Aタイプの音響フレームについて、ビット配列作成手段70が作成したビット配列に応じて、変更対象周波数帯の成分の割合を変更する処理を行うが、第2の実施形態では、ビット配列を2ビットずつ読み込み、1音響フレームに対して2ビットの情報を埋め込む。埋め込まれる2ビットの値は、“00”“01”“10”“11”の4通りがある。本実施形態では、これらを値1〜値4と定義する。この際、“00”〜“11”の4通りのうち、いずれを値1〜値4と定義しても良い。抽出側において、埋め込み側で埋め込まれた2ビットの配列が特定できれば良いためである。したがって、この定義は、埋め込み側と抽出側で一致している必要がある。
そして、周波数成分変更手段30は、この値1〜値4に応じて、周波数成分を状態1〜状態4のいずれかに変更する。
埋め込むべき2ビットが“値1”である場合、以下の〔数式19〕に従った処理を実行することにより、変更対象周波数帯の成分の状態を“状態1”、すなわち、図15(b)に示したような状態に変更する。
〔数式19〕
j=m〜m+P−1、m+P〜M−1の各成分に対して
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
j=m〜m+P−1の各成分に対して
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=F(j−m)・Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Ar´(1,j)=(1.0−F(j−m))・Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=(1.0−F(j−m))・Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
j=m+P〜M−1の各成分に対して
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=F(j−m−P)・Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m−P)・Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Ar´(1,j)=(1.0−F(j−m−P))・Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=(1.0−F(j−m−P))・Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
j=m〜M−1の各成分に対して
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
上記〔数式19〕においては、j=m〜m+P−1、m+P〜M−1において、Al´(3,j)、Bl´(3,j)を共に0としている。これは、図15(b)の上段に示すように、L-chにおいて、SP3U、SP3D内の各成分を0にすることを示しているが、“状態1”はSP1U、SP1Dとの差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。埋め込むべき2ビットが“値2”である場合は、以下の〔数式20〕に従った処理を実行することにより、変更対象周波数帯の成分の状態を“状態2”、すなわち、図15(c)に示したような状態に変更する。
〔数式20〕
j=m〜m+P−1、m+P〜M−1の各成分に対して
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
j=m〜m+P−1の各成分に対して
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=F(j−m)・Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Ar´(3,j)=(1.0−F(j−m))・Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=(1.0−F(j−m))・Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
j=m+P〜M−1の各成分に対して
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=F(j−m−P)・Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m−P)・Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Ar´(3,j)=(1.0−F(j−m−P))・Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=(1.0−F(j−m−P))・Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
j=m〜M−1の各成分に対して
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
上記〔数式20〕においては、j=m〜m+P−1、m+P〜M−1において、Al´(1,j)、Bl´(1,j)を共に0としている。これは、図15(c)の上段に示すように、L-chにおいて、SP1U、SP1D内の各成分を0にすることを示しているが、“状態2”はSP3U、SP3Dとの差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。埋め込むべき2ビットが“値3”である場合、以下の〔数式21〕に従った処理を実行することにより、変更対象周波数帯の成分の状態を“状態3” 、すなわち、図15(d)に示したような状態に変更する。
〔数式21〕
j=m〜m+P−1の各成分に対して
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
j=m+P〜M−1の各成分に対して
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
j=m〜m+P−1の各成分に対して
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=F(j−m)・Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Ar´(1,j)=(1.0−F(j−m))・Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=(1.0−F(j−m))・Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
j=m+P〜M−1の各成分に対して
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=F(j−m−P)・Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m−P)・Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Ar´(3,j)=(1.0−F(j−m−P))・Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=(1.0−F(j−m−P))・Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
j=m〜M−1の各成分に対して
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
上記〔数式21〕においては、j=m〜m+P−1においてAl´(3,j)、Bl´(3,j)を共に0とし、j=m+P〜M−1においてAl´(1,j)、Bl´(1,j)を共に0としている。これは、図15(d)の上段に示すように、L-chにおいて、SP3D、SP1U内の各成分を0にすることを示しているが、“状態3”はSP3U、SP1Dとの差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。埋め込むべき2ビットが“値4”である場合、以下の〔数式22〕に従った処理を実行することにより、変更対象周波数帯の成分の状態を“状態4” 、すなわち、図15(e)に示したような状態に変更する。
〔数式22〕
j=m〜m+P−1の各成分に対して
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
j=m+P〜M−1の各成分に対して
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
j=m〜m+P−1の各成分に対して
E(3,j)={Al(3,j)2+Bl(3,j)2+Ar(3,j)2+Br(3,j)2}1/2
Al´(3,j)=F(j−m)・Al(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・E(3,j)/{Al(3,j)2+Bl(3,j)2}1/2
Ar´(3,j)=(1.0−F(j−m))・Ar(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
Br´(3,j)=(1.0−F(j−m))・Br(3,j)・E(3,j)/{Ar(3,j)2+Br(3,j)2}1/2
j=m+P〜M−1の各成分に対して
E(1,j)={Al(1,j)2+Bl(1,j)2+Ar(1,j)2+Br(1,j)2}1/2
Al´(1,j)=F(j−m−P)・Al(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m−P)・Bl(1,j)・E(1,j)/{Al(1,j)2+Bl(1,j)2}1/2
Ar´(1,j)=(1.0−F(j−m−P))・Ar(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
Br´(1,j)=(1.0−F(j−m−P))・Br(1,j)・E(1,j)/{Ar(1,j)2+Br(1,j)2}1/2
j=m〜M−1の各成分に対して
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
上記〔数式22〕においては、j=m〜m+P−1においてAl´(1,j)、Bl´(1,j)を共に0とし、j=m+P〜M−1においてAl´(3,j)、Bl´(3,j)を共に0としている。これは、図15(e)の上段に示すように、L-chにおいて、SP1D、SP3U内の各成分を0にすることを示しているが、“状態4”はSP3D、SP1Uとの差を明確にすることができれば十分であるため、必ずしも0にする必要はなく、小さな値であれば良い。
また、第2の実施形態においても第1の実施形態と同様、周波数成分変更手段30は、Bタイプの音響フレームについては、上記〔数式10〕に従った処理を実行し、常にその変更対象周波数帯の成分を除去する。周波数成分変更手段30により上記のような処理が行われたら、周波数逆変換手段40、改変音響フレーム出力手段50については、第1の実施形態と同様の処理が行われる。
第2の実施形態における音響信号に対する情報の埋め込み装置の処理の全体的な流れについては、第1の実施形態と基本的には同じであるが、図5のフローチャートにおいて、S102のレジスタからの読み込みが2ビット単位である点、S104で状態1〜状態4のいずれかに設定する点で異なっている。
(2.2.抽出装置)
第2の実施形態においても、抽出装置の構成は図7に示したものと同様であるが、主に符号判定パラメータ算出手段140の内容が異なっている。具体的には、符号判定パラメータ算出手段140は、生成されたフレームスペクトルから所定周波数範囲に相当する各周波数強度データを抽出し、各成分に対応した各周波数強度データの強度値EC1〜EC4を以下の〔数式23〕に基づいて算出し、この強度値EC1〜EC4を符号判定パラメータとし、この符号判定パラメータEC1〜EC4の比率等に基づいて、所定の状態であると判断する機能を有している。
〔数式23〕
EC1=Σj=m,…,m+P-1{Al(1,j)2+Bl(1,j)2}・F(j−m)・C
EC2=Σj=m,…,m+P-1{Al(3,j)2+Bl(3,j)2}・F(j−m)・C
EC3=Σj=m+P,…,M-1{Al(1,j)2+Bl(1,j)2}・F(j−m−P)・C
EC4=Σj=m+P,…,M-1{Al(3,j)2+Bl(3,j)2}・F(j−m−P)・C
第2の実施形態における音響信号からの情報の抽出装置の処理の全体的な流れについては、第1の実施形態と基本的には同じであるが、図8のフローチャートにおいて、S202から値1〜値4が出力される点、S206においてビットカウンタに2だけ加算される点が異なっている。
また、ステップS202の位相確定および符号出力についても、第1の実施形態と同様、図9、図10のフローチャートに従って行われる。ただし、図10のS402〜S404の処理は、第1の実施形態とは異なっているので、以下に説明する。
図10の周波数成分の状態判定においては、符号判定パラメータ算出手段140は、強度値EC1〜強度値EC4を用いて、周波数成分の状態がどのような状態であるか、すなわち、2ビットの値としてどのような値が埋め込まれていたかを判断する処理を行う(S402)。具体的には、以下の4群の判定処理を実行し、各群における全ての条件を満たす場合に、対応する状態であったと判断し、対応する2ビットの値を出力する。
EC1>EC2かつEC1>EC4かつEC3>EC2かつEC3>EC4の場合、“状態1”であると判断し、値1を出力する。
EC2>EC1かつEC2>EC3かつEC4>EC1かつEC4>EC3の場合、“状態2”であると判断し、値2を出力する。
EC1>EC2かつEC1>EC3かつEC4>EC2かつEC4>EC3の場合、“状態3”であると判断し、値3を出力する。
上記いずれにも該当しない場合、“状態4”であると判断し、値4を出力する。
そして、符号判定パラメータ算出手段140は、各音響フレーム単位で、上記判定結果に応じて値1〜値4のいずれかを設定する(S403)。
また、上記判定の結果、値1〜値4のいずれかを設定した場合には、さらに、以下の〔数式24〕に従って位相判定テーブルS(p)の更新を行う(S404)。
〔数式24〕
“状態1”であると判断し、値1を出力した場合、S(p)←S(p)+EC1+EC3
“状態2”であると判断し、値2を出力した場合、S(p)←S(p)+EC2+EC4
“状態3”であると判断し、値3を出力した場合、S(p)←S(p)+EC1+EC4
“状態4”であると判断し、値4を出力した場合、S(p)←S(p)+EC2+EC3
図9においては、符号判定パラメータ算出手段140は、候補符号テーブルに、最適位相となる候補を保存する(S304)。具体的には、位相判定テーブルに記録されているS(p)の値が最大となる位相番号pの値、前記S407、S408により判定された4値のいずれかの符号、その音響フレームについての上記〔数式23〕に従った処理を実行することにより算出した、変更対象周波数帯の成分に対応する各EC1〜EC4の値を最適位相の候補として候補符号テーブルに保存する。
続いて、全ての位相番号pに対応する処理を終えたかどうかを判定する(S305)。これは、ある基準フレームに対して全ての位相変更フレームの処理を行ったかどうかを判定している。本実施形態では、pが0〜5までの値をとるので、6回分処理していない場合は、処理していた音響フレームから所定サンプル数ずらして、位相の異なる音響フレームを設定し、S302に戻って処理を繰り返す。なお、p=0の場合が基準フレームであり、p=1〜5の場合が位相変更フレームである。全ての位相番号pに対応する処理を終えた場合は、候補保存テーブルに記録されている位相番号pに対応する位相が最適位相であると判定し、候補保存テーブルに記録されている符号を出力する(S306)。
図8において、パリティ検査の結果、合格の場合には、付加情報抽出手段160が、前7ビットに1ビット付加して出力する(S208)。ここで、検査結果が合格の場合は、照合に用いた8ビット目が誤り検出ビットであった可能性が高いことになる。そうすると、その前の7ビットは元の付加情報における7ビットであると考えられる。このため、その先頭からの7ビットにビット0を付加することによりASCIIコードにおける1ワードとして出力するのである。逆に不一致である場合は、照合に用いた8ビット目が誤り検出ビットでない可能性が高いことになる。そうすると、その時点で保持している7ビットは、元の付加情報における7ビットからずれたものであると考えられる。この場合は、先頭の2ビットを破棄して、S201からS206の処理により得られた新たな2ビットを得るための処理を行う。
上記S208の処理において、付加情報抽出手段160は、付加情報抽出手段160は、符号判定パラメータ算出手段140が判定し、符号出力手段150から出力される符号から得られるビット値の配列を1バイト(8ビット)単位で認識し、これをASCIIコードに従って文字情報を認識し、表示装置(図示省略)の画面に表示出力する。
(2.3.信号成分が小さくても情報の埋め込みを確実に行う手法)
上記の処理は、変更対象周波数帯の信号成分がいずれの大きさであっても実行されるが、元の信号成分が存在しないか、または小さすぎる場合には、抽出に必要な信号成分が得られないため、情報の抽出を適切に行うことができず抽出エラーとなる。そこで、元の信号の変更対象周波数帯の成分が小さくても、情報の抽出を適切に行えるように信号の埋め込みを可能とする手法について説明する。
この場合、図2に示した埋め込み装置における情報の埋め込み処理も、図5のフローチャートに従って行われる。
したがって、S104における状態1〜状態4に設定する処理としては、まず、以下の〔数式25〕に従って算出される固定値Vを、変更対象周波数帯の成分の強度として設定する。
〔数式25〕
V={0.5・Lev・C/P}1/2
そして、状態1とする場合は、上記〔数式19〕に従った処理を実行した後、以下の〔数式26〕に従った処理を実行する。
〔数式26〕
j=m〜m+P−1の各成分に対して
Al´(1,j)=F(j−m)・Al(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
j=m+P〜M−1の各成分に対して
Al´(1,j)=F(j−m−P)・Al(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m−P)・Bl(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
状態2とする場合は、上記〔数式20〕に従った処理を実行した後、以下の〔数式27〕に従った処理を実行する。
〔数式27〕
j=m〜m+P−1の各成分に対して
Al´(3,j)=F(j−m)・Al(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
j=m+P〜M−1の各成分に対して
Al´(3,j)=F(j−m−P)・Al(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m−P)・Bl(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
状態3とする場合は、上記〔数式21〕に従った処理を実行した後、以下の〔数式28〕に従った処理を実行する。
〔数式28〕
j=m〜m+P−1の各成分に対して
Al´(1,j)=F(j−m)・Al(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m)・Bl(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
j=m+P〜M−1の各成分に対して
Al´(3,j)=F(j−m−P)・Al(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m−P)・Bl(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
状態4とする場合は、上記〔数式22〕に従った処理を実行した後、以下の〔数式29〕に従った処理を実行する。
〔数式29〕
j=m〜m+P−1の各成分に対して
Al´(3,j)=F(j−m)・Al(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
Bl´(3,j)=F(j−m)・Bl(3,j)・V/{Al(3,j)2+Bl(3,j)2}1/2
j=m+P〜M−1の各成分に対して
Al´(1,j)=F(j−m−P)・Al(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
Bl´(1,j)=F(j−m−P)・Bl(1,j)・V/{Al(1,j)2+Bl(1,j)2}1/2
(3.携帯電話機を抽出装置として用いる場合)
上記実施形態では、抽出装置における1音響フレームのサンプル数N´をN/2とした場合について説明した。これは、上述のように、携帯ゲーム機、PDA、PHS端末等を抽出装置のハードウェアとして採用した場合、サンプリング周波数が元の音響信号のサンプリング周波数の1/2となるため、1音響フレームの秒数を合わせるためにサンプル数も1/2にする必要があるからである。通常の携帯電話機を抽出装置として採用する場合には、携帯電話機の録音機能がサンプリング周波数8kHzであるため、1音響フレームのサンプル数もこれに比例させて、743個とする必要がある。
このようにサンプル数N´=743とする場合、図8のフローチャートにおいて、基準フレーム獲得手段110は、音響信号入力手段100から入力された音響信号から、743個のサンプルで構成される音響フレームを基準フレームとして抽出する(S201)。したがって、音響フレーム保持手段170には、常に基準フレーム2個分(連続する1486サンプル)が格納されていることになる。
埋め込み装置で処理する音響フレームは、上記実施形態と同様、先頭から途切れることなく隣接して設定される基準フレームと、この基準フレームと位相を変更した位相変更フレームとに分けられる。
また、図10のS401においては、周波数変換手段130が、読み込んだ各音響フレームに対して周波数変換を行ってスペクトルを得るが、この際、〔数式5〕におけるNを1024に置き換えて実行する。このとき、〔数式5〕におけるサンプルXl(i)、Xr(i)は、i=743〜1023までは全てダミーであり、その値は“0”が用いられる。なお、〔数式5〕において用いるW(1,i)〜W(3,i)は、それぞれ〔数式1〕〜〔数式3〕におけるNを743に置き換えたものを用いる。〔数式5〕において、Nを743ではなく1024とするのは、周知の高速フーリエ変換アルゴリズム(FFT)を用いて〔数式5〕と同等な計算を高速に実行する方法をとるためで、FFTではNを2の累乗という制約条件で高速化をはかっている理由からである。従って、〔数式5〕の離散フーリエ変換を計算式通りに実行する場合には、Nをそのまま743に設定して行うことができるがFFTに比べ2桁強の計算負荷を要し、まして本発明のようにCPU性能の限られた携帯端末で実行する用途には適さない。また、FFTは携帯端末上で各種映像・音声データを復号・再生するのにも必須の信号処理であるため、専用ハードウェアが実装されている携帯端末も少なくなく、FFTを用いればCPU性能が低くても専用ハードウェアにより汎用PC並みの速度で実行できる可能性もある。
S402においては、強度値EC1、強度値EC2を用いて、変更対象周波数帯の成分の状態がどのような状態であるかを判断する処理を行うが、〔数式13〕による強度値EC1、強度値EC2の算出の際、m=220、M=441として実行する。また、上記第2の実施形態における〔数式23〕による強度値EC1〜EC4の算出の際も、m=220、M=441として実行する。これは、1音響フレームのサンプル数743ではなく、1024個のサンプルを用いてフーリエ変換を行うことによるずれのため、j=220(=160×1024/743)が1.7kHzに相当し、j=441(=320×1024/743)が3.4kHzに相当するためである。その他については、N´=N/2の場合と同様に処理が行われる。
ここで、埋め込み時、サンプリング周波数22.05kHzに対応した抽出時、サンプリング周波数8kHzに対応した抽出時の周波数領域の概念を図16に示す。図16において、縦軸は周波数である。また、各ブロックの右側に示した数字は周波数に比例するjの値である。
埋め込み時には、4096サンプルを対象としてフーリエ変換を実行するため、2048通りの周波数成分の値が得られ、これは0Hz〜22.05kHzに対応する。このうち、1.7kHz〜3.4kHzに対応するj=160〜320の間にデータの埋め込みが行われ、その他は原音維持となる。
サンプリング周波数22.05kHzに対応した抽出時には、2048サンプルを対象としてフーリエ変換を実行するため、1024通りの周波数成分の値が得られ、これは0Hz〜11.025kHzに対応する。このうち、1.7kHz〜3.4kHzに対応するjの値は結果的に、埋め込み時、サンプリング周波数22.05kHzの抽出時と同様に、j=160〜320の間よりデータの抽出が行われ、その他は無視される。
サンプリング周波数8kHzに対応した抽出時には、1音響フレームは、743サンプルとなるが、上述のように、ダミーのサンプルを付加して1024サンプルを対象としてフーリエ変換を実行するため、512通りの周波数成分の値が得られる。サンプリング周波数が8kHzであるため、これらの値は0Hz〜4kHzに対応する。このため、1.7kHz〜3.4kHzに対応するjの値は、埋め込み時、サンプリング周波数22.05kHzの抽出時とは異なり、j=220〜441となる。このj=220〜441の間よりデータの抽出が行われ、その他は無視される。
また、埋め込み時、抽出時の信号波形の様子を図17に示す。図17において、横軸は時間軸、縦軸は振幅強度を示している。埋め込み時には、図2に示した埋め込み装置により、図17(a)に示すような44.1kHzでサンプリングされた音響信号に対して、埋め込み処理が行われ、図17(b)に示すような音響信号が得られる。そして、図7に示した抽出装置により、22.05kHzまたは8kHzでサンプリングされ、図17(c)に示すような音響信号が得られる。そして、1音響フレームを埋め込み時の音響フレームと同一時間となるように設定して、抽出処理を行う。
(4.その他)
以上、本発明の好適な実施形態について限定したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、1音響フレームのサンプル数N=4096としたが、N=2048、1024、512等を設定するようにしても良い。これにより、同一時間あたりの音響フレーム数が、2倍、4倍、8倍となり、全体として2〜8倍の情報の埋め込みが可能となる。
また、上記実施形態では、後半ビット列の各ビットを隣接する奇数番目と偶数番目のビットの順序を入れ替えるようにしたが、必ずしもこのようにする必要はなく、抽出側との取り決めがなされていれば、他の何らかの規則で順序を入れ替えるようにしても良い。