(1.本発明の基本概念)
本発明では、付加情報を埋め込む際、所定単位の情報を繰り返して埋め込み、抽出時には、その繰り返しの間隔に相当する過去の情報を考慮して、情報の抽出を行う。具体的な例を図20を用いて説明する。図20は、1文字分の情報を12ビットに変換した後、1ビットを1つの音響フレームに埋め込む手法で、3文字の情報“#02”を埋め込む場合の例を示すものである。この場合、3文字の情報を先頭から埋め込むと、最初のフレーム00〜フレーム11の12個の音響フレームに“#”が埋め込まれ、フレーム12〜フレーム23の12個の音響フレームに“0”が埋め込まれ、フレーム24〜フレーム35の12個の音響フレームに“2”が埋め込まれる。すなわち、最初のフレーム00〜フレーム35の36個の音響フレームに“#02”が埋め込まれることになる。さらに、この3文字を繰り返し埋め込む場合には、次のフレーム36〜フレーム47の12個の音響フレームに再び“#”が埋め込まれ、以下同様に“0” “2”が埋め込まれていくことになる。この場合、当然のことながら、36フレーム単位で類似するパターンとなることが考えられる。
図20のようにして埋め込み処理が行われた音響信号から付加情報を抽出する場合、各音響フレームからは、所定のビット値を抽出することができるが、例えば、フレーム36のビット値を判断する場合、フレーム36の状態だけでなく、それとほぼ同じ状態であると想定されるフレーム00の状態も同時に参照した方がより精度の高いビット値の抽出を行うことができると考えられる。そこで、本発明では、図20の例のような場合には、36フレームの整数倍だけ過去の音響フレームの状態をも含めて参照して合算的に判断するようにする。
(2.1.埋め込み装置の構成)
次に、本発明に係る音響信号に対する情報の埋め込み装置について説明する。図1は、本発明に係る音響信号に対する情報の埋め込み装置の構成を示す機能ブロック図である。図1において、10は音響フレーム読込手段、20は周波数変換手段、30は周波数成分変更手段、40は周波数逆変換手段、50は改変音響フレーム出力手段、60は記憶手段、61は音響信号記憶部、62は付加情報記憶部、63は改変音響信号記憶部、70はビット配列作成手段、80は変換テーブル作成手段である。なお、図1に示す装置は、ステレオ音響信号、モノラル音響信号の両方に対応可能であるが、ここでは、ステレオ音響信号に対して処理を行う場合について説明していく。
音響フレーム読込手段10は、付加情報の埋め込み対象とする元のステレオ音響信号の各チャンネルから所定数のサンプルを1フレームとして読み込む機能を有している。周波数変換手段20は、音響フレーム読込手段10が読み込んだ音響信号のフレームをフーリエ変換等により周波数変換してスペクトルを生成する機能を有している。周波数成分変更手段30は、生成されたスペクトルから所定の周波数範囲に相当するスペクトル集合を複数抽出し、付加情報記憶部62から抽出した付加情報よりビット配列作成手段70が作成したビット配列に基づいて、スペクトル集合の状態を変更する機能を有している。周波数逆変換手段40は、変更されたスペクトル集合を含む複数のスペクトルに対して周波数逆変換を行うことにより、改変音響フレームを生成する機能を有している。改変音響フレーム出力手段50は、生成された改変音響フレームを順次出力する機能を有している。
記憶手段60は、付加情報を埋め込む対象とするステレオ音響信号を記憶した音響信号記憶部61と、ビット列として構成され、ステレオ音響信号に埋め込まれる付加情報を記憶した付加情報記憶部62と、付加情報埋め込み後の改変音響信号を記憶する改変音響信号記憶部63を有しており、その他処理に必要な各種情報を記憶するものである。ビット配列作成手段70は、付加情報記憶部62から付加情報を抽出し、付加情報の各ワードについて、変換テーブル作成手段80を参照し、対応するビット配列を作成する機能を有している。変換テーブル作成手段80は、Nwビットが取り得る2のNw乗個の全ての登録順位に対して、互いにハミング距離が少なくとも4以上となるNh(>Nw)ビットのハミング符号を割り当てることにより、Nwビットの登録順位とNhビットのハミング符号が対応付けられた符号変換テーブルを作成する機能を有している。ここで、登録順位とは、Nwビットを10進で表現した場合の値を示しており、Nw=7の場合、登録順位は、0〜127で表現される。
なお、付加情報とは、音響情報に付加して埋め込むべき情報であり、タイトルやアーティスト名等の属性情報、および属性情報以外の他の情報を含むものである。本実施形態では、上記Nw、NhをそれぞれNw=7、Nh=12としている。本実施形態では、付加情報のコード形式としてASCIIコードを採用するため、付加情報においてはNw=7となり、7ビットが1ワードとなる。また、ビット配列作成手段70が作成するビット配列は、12ビットとなり、ビット配列作成後は、これを1ワードとして処理している。図1に示した各構成手段は、現実にはコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
(2.2.埋め込み装置の処理動作)
次に、図1に示した音響信号に対する情報の埋め込み装置の処理動作について説明する。音響フレーム読込手段10は、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数Nのサンプルを1音響フレームとして読み込む。音響フレーム読込手段10が読み込む1音響フレームのサンプル数Nは、適宜設定することができるが、サンプリング周波数が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は、振幅変換後の音響フレームに対して周波数変換を行って、その音響フレームのスペクトルを得る。具体的には、窓関数を利用して周波数変換を行う。周波数変換としては、フーリエ変換、ウェーブレット変換その他公知の種々の手法を用いることができる。本実施形態では、フーリエ変換を用いた場合を例にとって説明する。
一般に、所定の信号に対してフーリエ変換を行う場合、信号を所定の長さに区切って行う必要があるが、この場合、所定長さの信号に対してそのままフーリエ変換を行うと、擬似高調波成分が発生する。そこで、一般にフーリエ変換を行う場合には、ハニング窓と呼ばれる窓関数を用いて、信号の値を変化させた後、変化後の値に対してフーリエ変換を実行する。
本実施形態においても、窓関数を利用しているが、Aタイプの音響フレーム、Bタイプの音響フレームで、使用する窓関数を分けている。本実施形態では、図2(a)(b)に示したような第1窓関数W(1,i)、第2窓関数W(2,i)を用意し、抽出側で認識し易いようにした。第1窓関数W(1,i)は、Aタイプの音響フレームに対して用いるためのものであり、図2(a)に示すように所定のサンプル番号iの位置において、最大値1をとり、後部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(1,i)の設計によって異なってくるが、本実施形態では、後述する〔数式1〕で定義される。Aタイプの音響フレームについてのフーリエ変換は、この窓関数W(1,i)を乗じたものに対して行われることになる。
また、第2窓関数W(2,i)は、Bタイプの音響フレームに対して用いるためのものであり、図2(b)に示すように、所定のサンプル番号iの位置において、最大値1をとり、前部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(2,i)の設計によって異なってくるが、本実施形態では、後述する〔数式2〕で定義される。Bタイプの音響フレームについてのフーリエ変換は、この窓関数W(2,i)を乗じたものに対して行われることになる。
なお、上述のように、本実施形態においては、音響フレームは重複して読み込まれる。すなわち、奇数番目の音響フレームと偶数番目の音響フレームは、所定数のサンプルを重複して読み込む。上記のように、奇数フレームと偶数フレームでは、用いられる窓関数が異なるが、奇数フレームと偶数フレームは単に奇数か偶数かの違いだけであるため、どちらに対してどちらの処理を行っても良い。したがって、本明細書では、奇数フレーム、偶数フレームの一方をAタイプフレーム、他方をBタイプフレームと呼ぶことにする。本実施形態では、奇数フレームをAタイプフレーム、偶数フレームをBタイプフレームとして説明するが、逆に偶数フレームをAタイプフレーム、奇数フレームをBタイプフレームとしても良い。
本実施形態では、窓関数W(1,i)、W(2,i)は、以下の〔数式1〕〔数式2〕で定義される。なお、図2において、横軸は時間軸(i)である。iは、後述するように、各音響フレーム内のN個のサンプルに付した通し番号であるため時刻tに比例している。また、図2(a)(b)において縦軸は信号の振幅値(レベル)を示す。図2(a)(b)において縦軸は窓関数W(1,i)、W(2,i)の値を示しており、W(1,i)、W(2,i)の最大値はいずれも1である。
〔数式1〕
i≦N/4のとき、W(1,i)=0.5−0.5cos(4πi/N)
N/4<i≦11N/16のとき、W(1,i)=1.0
11N/16<i≦13N/16のとき、W(1,i)=0.5−0.5cos(8π(i−9N/16)/N)
i>13N/16のとき、W(1,i)=0.0
〔数式2〕
i≦3N/16のとき、W(2,i)=0.0
3N/16<i≦5N/16のとき、W(2,i)=0.5−0.5cos(8π(i−3N/16)/N)
5N/16<i≦3N/4のとき、W(2,i)=1.0
i>3N/4のとき、W(2,i)=0.5−0.5cos(4π(i−N/2)/N)
なお、図2および上記〔数式1〕〔数式2〕から明らかなように、窓関数W(1,i)とW(2,i)は、互いに非対称な形状である。これは、後述する抽出側において、両者の識別を容易にするためである。
本発明においては、奇数フレームと偶数フレームを、所定サンプルずつ重複して読み込むため、情報の埋め込みを行った後、音響信号に復元する際に、窓関数を乗じた奇数フレームと、窓関数を乗じた偶数フレームの重複サンプルを加算した場合に、ほぼ元の値に戻るようにしなければならない。このため、奇数フレームと偶数フレームの重複部分において、窓関数W(1,i)、W(2,i)を加算すると、全区間固定値1になるように定義されている。
周波数変換手段20が、Aタイプの音響フレームに対してフーリエ変換を行う場合は、左チャンネル信号Xl(i)、右チャンネル信号Xr(i)(i=0,…,N−1)に対して、窓関数W(1,i)を用いて、以下の〔数式3〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(1,j)、虚部Bl(1,j)、右チャンネルに対応する変換データの実部Ar(1,j)、虚部Br(1,j)を得る。
〔数式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)
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)
周波数変換手段20が、Bタイプの音響フレームに対してフーリエ変換を行う場合は、左チャンネル信号Xl(i+N/2)、右チャンネル信号Xr(i+N/2)(i=0,…,N−1)に対して、窓関数W(2,i)を用いて、以下の〔数式4〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(2,j)、虚部Bl(2,j)、右チャンネルに対応する変換データの実部Ar(2,j)、虚部Br(2,j)を得る。
〔数式4〕
Al(2,j)=Σi=0,…,N-1W(2,i)・Xl(i+N/2)・cos(2πij/N)
Bl(2,j)=Σi=0,…,N-1W(2,i)・Xl(i+N/2)・sin(2πij/N)
Ar(2,j)=Σi=0,…,N-1W(2,i)・Xr(i+N/2)・cos(2πij/N)
Br(2,j)=Σi=0,…,N-1W(2,i)・Xr(i+N/2)・sin(2πij/N)
上記〔数式3〕〔数式4〕において、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異なることになる。
上記〔数式3〕〔数式4〕に従った処理を実行することにより、各音響フレームの各窓関数に対応するスペクトルが得られる。続いて、周波数成分変更手段30が、生成されたスペクトルから所定周波数範囲のスペクトル集合を抽出する。本実施形態では、F1以上F2以下の範囲のものを抽出する。
周波数変換手段20は、周波数変換を実行した後に、各スペクトル集合の平均値が設定値になるように変換する。いわゆる振幅を変換する処理を行う。この振幅変換は、各フレームごとのレベル差を軽減し、適切な情報の埋め込みが可能になるようにすることを目的としているため、設定値としては適宜設定することができるが、本実施形態では、128に設定するようにしている。
周波数変換手段20は、得られたスペクトル集合に対して、振幅変換を行うにあたり、まず変換倍率の算出を行う。変換倍率の算出は、所定周波数範囲のスペクトル集合の実効強度値の平均である平均実効値で上記設定値を除算することにより行う。具体的には、LチャンネルのAタイプの音響フレーム、Bタイプの音響フレーム、RチャンネルのAタイプの音響フレーム、Bタイプの音響フレームのスペクトル集合についての変換倍率Zl(1)、Zl(2)、Zr(1)、Zr(2)は、以下の〔数式5〕に従った処理により算出される。対象音響フレームが無音に近く、分母の二乗総和値が所定の値に満たない場合は、変換倍率を1.0に設定し、振幅変換は行わないようにする。振幅変換が実行されることにより、全ての音響フレームは、元の状態における信号強度に関わらず、各音響フレームのスペクトル集合の平均実効値が設定値となるように振幅変換された状態で、情報の埋め込みが行われることになる。
〔数式5〕
Zl(1)=Zo/[Σj=m,…,m+2G-1{Al(1,j)2+Bl(1,j)2}]1/2
Zl(2)=Zo/[Σj=m,…,m+2G-1{Al(2,j)2+Bl(2,j)2}]1/2
Zr(1)=Zo/[Σj=m,…,m+2G-1{Ar(1,j)2+Br(1,j)2}]1/2
Zr(2)=Zo/[Σj=m,…,m+2G-1{Ar(2,j)2+Br(2,j)2}]1/2
上記〔数式5〕において、Zo=2Gであり、本実施形態では、G=80であるため、Zo=160である。
さらに、j=m,…,m+2G−1(周波数F1,...,F2に相当)の範囲で、Al(1,j)およびBl(1,j)の各々の要素に対してZl(1)を乗じ、Al(2,j)およびBl(2,j)の各々の要素に対してZl(2)を乗じ、Ar(1,j)およびBr(1,j)の各々の要素に対してZr(1)を乗じ、Ar(2,j)およびBr(2,j)の各々の要素に対してZr(2)を乗じることにより、振幅変換を行う。以下説明において、Al(1,j)、Bl(1,j)、Al(2,j)、Bl(2,j)、Ar(1,j)、Br(1,j)、Ar(2,j)、Br(2,j)はこれらの振幅変換を行った値とする。
周波数成分変更手段30は、Aタイプの音響フレームについて、ビット配列作成手段70が作成したビット配列に応じて、所定周波数成分の割合を変更する処理を行う。本発明では、ビット配列を1ビットずつ読み込み、Aタイプ、Bタイプの1対の音響フレームに対して1ビットの情報を埋め込む。埋め込まれる1ビットの値は、“0” “1”の2通りがある。本実施形態では、これらを値1、値2と定義する。2種類の符号を埋め込むことができるという点で、これらを符号1、符号2と表現することも可能である。この際、“0”“1”の2通りのうち、いずれを値1、値2(符号1、符号2)と定義しても良い。抽出側において、埋め込み側で埋め込まれた1ビットが特定できれば良いためである。したがって、この定義は、埋め込み側と抽出側で一致している必要がある。
周波数成分の変更の手法としては、様々なものが考えられるが、本実施形態では、人間の聴覚心理特性である音脈分凝の原理を利用する。ここで、音脈分凝について説明しておく。音脈分凝とは、時系列に高い音と低い音が交互に進行するパターンに対して、人間が、あたかも高低2つのトラックが連続して流れるように音を補間して聞いてしまう錯覚現象である。
たとえば、図21(a)に示すように、3つの低い音である低音1、低音3、低音5と3つの高い音である高音2、高音4、高音6が、低音1、高音2、低音3、高音4、低音5、高音6の順に演奏されている場合を考えてみる。低音1、低音3、低音5と高音2、高音4、高音6は1オクターブ程度離れており、低い音と高い音は同時に演奏されることはないが、時間的間隔は、ほぼ連続しているものとする。この場合、人間には、図21(b)に示すように、低い音と高い音が演奏されていない部分も補間されて演奏されているように聞こえる。すなわち、実際の演奏は単旋律であるのに、人間には、図21(b)に示すように、高音1´、高音3´、高音5´、低音2´、低音4´、低音6´が補間されて複旋律であるように聞こえる。例えば、高音3´は高音2と高音4が連続的につながるように、高音2と高音4の平均的な成分に聞こえる。また、末端部の高音1´と低音6´についても、隣接する高音2と低音5に近い成分で、各々低音1と高音6に対応するように聞こえる。しかし、マイクロフォン等の電気音響装置は、図21(a)に示したものをそのままの音として取得することになる。本実施形態では、このような性質を利用する。なお、補間された音は、前後に演奏されている音と必ずしも同じレベルに補間されて聴こえるのではなく、大雑把に言って、前後に演奏されている音の50%程度があたかも補間されているように聞こえる。
具体的には、埋め込み装置で、音響信号から抽出した所定数のサンプルで構成される音響フレーム内の所定周波数範囲の周波数成分を変更するに際し、その強弱が音脈分凝を発生させるような状態に変更する。これにより、人間には、音が途切れたようには聞こえないが、抽出装置では、その明確な変化を認識することができる。
本実施形態では、音脈分凝の原理を利用して、音響フレームの変更対象周波数帯の成分を2つの状態に変更し、1ビットの情報を埋め込むようにしている。ここで、埋め込み処理の前後における音響フレームの所定周波数成分の変化の状態について説明する。図3に、本実施形態によるAタイプ、Bタイプの各チャンネル1音響フレームの所定周波数成分の状態を示す。図3に示す各音響フレームにおいて、横軸は時間方向、縦軸は周波数方向を示している。
図3においては、縦軸の周波数方向において、周波数領域が4つに区分されているが、上から2番目と3番目の領域、すなわち、周波数F1以上F2以下の間が変更対象周波数帯であり、最上部すなわち周波数F2超、最下部すなわちF1未満は、変更対象でない周波数帯である。すなわち、本実施形態では、周波数F1以上F2以下を所定周波数範囲として、スペクトル集合の強度を変更することになる。図3(a)に示すように、LチャンネルのAタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルをL1U、低周波側におけるスペクトルをL1Dで表現し、RチャンネルのAタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルをR1U、低周波側におけるスペクトルをR1Dで表現することとする。また、図3(b)に示すように、LチャンネルのBタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルをL2U、低周波側におけるスペクトルをL2Dで表現し、RチャンネルのBタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルをR2U、低周波側におけるスペクトルをR2Dで表現することとする。
本実施形態で、符号1を埋め込む場合、図3(c)(e)に示すように、L1DとL2Uの強度の積、R1DとR2Uの強度の積を相対的に強い状態に変更し、L1UとL2Dの強度の積、R1UとR2Dの強度の積を相対的に弱い状態に変更する。この状態を“状態1”と呼ぶことにする。符号2を埋め込む場合は、図3(d)(f)に示すように、L1UとL2Dの強度の積、R1UとR2Dの強度の積を相対的に強い状態に変更し、L1DとL2Uの強度の積、R1DとR2Uの強度の積を相対的に弱い状態に変更する。この状態を“状態2”と呼ぶことにする。網掛けされた部分の濃さは、同濃度のものは、積を求めるための組となるスペクトルであることを示している。網掛けの色が濃い方が相対的に強度が強い状態に変更される組を示している。
本実施形態では、図3(c)(e)または(d)(f)に示すような2つの状態にAタイプ、Bタイプの音響フレームの周波数成分を変更することにより、情報の埋め込みを行っている。2つの状態であるので1ビット分の情報量に相当する。
本実施形態では、上記変更対象周波数帯F1〜F2を、“1.7kHz〜3.4kHz”に設定する。これは、以下のような理由による。すなわち、音声通信として普及度の高い携帯電話機を受信端末として利用する場合、上限については、電話回線帯域および携帯電話機の上限である3.4kHzとする必要がある。これは、携帯電話機の内部に搭載されているローパスフィルターが、電話交換機に合わせて、3.4kHz以下に対応したものとなっているためである。そこで、下限については、上限の3.4kHzから1オクターブ下がった1.7kHzとすることとした。なお、“1.7kHz”“3.4kHz”という値は、代表的な値であり、必ずしも正確な値である必要はなく、そこから若干ずれた値であっても良い。
図3に示した例では、相対的に強い状態と弱い状態に変更することについて説明したが、この強弱の程度については、状況に応じて設定することが可能である。両者の割合は、以下に述べるように、大きいほど抽出時の精度が高くなるが、補間される割合は不完全になり、再生時に不連続成分によるノイズが聞こえる。一方、両者の割合が均等であるほど再生品質は原音に近付くが、埋め込んだビットの抽出ができなくなり、再生品質と抽出精度はトレードオフの関係になる。例えば、強い方を100%、弱い方を0%とした場合、音脈分凝により、補間される部分の音は図3のような変更を行なう前に原音響信号で鳴っていた音の50%程度となることが確認されている。
そこで、強い方を70%、弱い方を30%とした場合、音脈分凝により、補間される部分の音は図3のような変更を行なう前に原音響信号で鳴っていた音とほぼ同程度となり、この割合が抽出精度を維持できる限界であることが確認されている。このため、相対的に強いスペクトル集合と、相対的に弱いスペクトル集合の強度の割合を70%と30%とすることを目標に設定することが好ましい。これを実現するため、本実施形態では、後述する具体的な処理において、強い状態を設定するための係数α=0.7、弱い状態を設定するための係数β=0.3とする。ただし、強い状態に変更すべきスペクトル集合の強度が元々小さい場合には、係数α、βを補正する必要が生じる。このため、周波数成分変更手段30は、まず、以下の〔数式6〕に従った処理を実行することにより、弱い状態に変更すべきスペクトル集合に対する強い状態に変更すべきスペクトル集合の強度割合γを算出する。
〔数式6〕
E1d=Σj=m,…,m+G-1{Al(1,j)2+Bl(1,j)2}
E2d=Σj=m,…,m+G-1{Al(2,j)2+Bl(2,j)2}
E1u=Σj=m+G,…,m+2G-1{Al(1,j)2+Bl(1,j)2}
E2u=Σj=m+G,…,m+2G-1{Al(2,j)2+Bl(2,j)2}
埋め込みデータが値1の場合、γ=(E1d・E2u)/(E1u・E2d)
埋め込みデータが値2の場合、γ=(E1u・E2d)/(E1d・E2u)
上記〔数式6〕において、mは変更対象周波数帯の下限の成分の番号、m+2Gは変更対象周波数帯の上限の成分の番号である。例えば、変更対象周波数帯として、1.7kHz〜3.4kHzを設定する場合、m=160、m+2G=320となる。したがって、1つの周波数領域の幅G=80である。
そして、さらに強度割合γの値に応じて、周波数成分変更手段30は、以下の〔数式7〕に従った処理を実行することにより、係数α、βを補正して係数α´、β´を得る。
〔数式7〕
0.01≦γ<1.0の場合、α´=α・γ-1/2、β´=β・γ1/2
γ<0.01の場合、α´=10.0・α、β´=0.1・β
なお、γ≧1.0の場合は、補正を行わない。さらに、周波数成分変更手段30は、埋め込むべき情報が“値1”である場合、以下の〔数式8〕に従った処理を実行することにより、周波数成分の状態を“状態1”、すなわち、図3(c)(e)に示したような状態に変更する。
〔数式8〕
j=m〜m+G−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)=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
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(2,j)={Al(2,j)2+Bl(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
Al´(2,j)=Al(2,j)・E(2,j)・β/{Al(2,j)2+Bl(2,j)2}1/2
Bl´(2,j)=Bl(2,j)・E(2,j)・β/{Al(2,j)2+Bl(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
j=m+G〜m+2G−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)=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
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(2,j)={Al(2,j)2+Bl(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
Al´(2,j)=Al(2,j)・E(2,j)・α/{Al(2,j)2+Bl(2,j)2}1/2
Bl´(2,j)=Bl(2,j)・E(2,j)・α/{Al(2,j)2+Bl(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
埋め込むべき情報が“値2”である場合は、以下の〔数式9〕に従った処理を実行することにより、周波数成分の状態を“状態2” 、すなわち、図3(d)(f)に示したような状態に変更する。
〔数式9〕
j=m〜m+G−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)=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
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(2,j)={Al(2,j)2+Bl(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
Al´(2,j)=Al(2,j)・E(2,j)・α/{Al(2,j)2+Bl(2,j)2}1/2
Bl´(2,j)=Bl(2,j)・E(2,j)・α/{Al(2,j)2+Bl(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
j=m+G〜m+2G−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)=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
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(2,j)={Al(2,j)2+Bl(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
Al´(2,j)=Al(2,j)・E(2,j)・β/{Al(2,j)2+Bl(2,j)2}1/2
Bl´(2,j)=Bl(2,j)・E(2,j)・β/{Al(2,j)2+Bl(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
なお、上記〔数式7〕に従った処理を実行して係数α´、β´を得た場合は、上記〔数式8〕〔数式9〕において、係数α、βに代えて係数α´、β´を用いる。
周波数逆変換手段40は、上記のようにして、周波数成分の状態が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う。この周波数逆変換は、当然のことながら、周波数変換手段20が実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。
具体的には、Aタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(1,j)等、虚部Bl´(1,j)等、右チャンネルの実部Ar´(1,j)等、虚部Br´(1,j)等を用いて、以下の〔数式10〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。なお、上記〔数式8〕〔数式9〕において改変されていない周波数成分については、Al´(1,j)等として、元の周波数成分であるAl(1,j)等を用いる。周波数逆変換を計算するにあたり、Al´(1,j)およびBl´(1,j)に対しては〔数式5〕におけるZl(1)を、Ar´(1,j)およびBr´(1,j)に対しては〔数式5〕におけるZr(1)を除することにより、同時に振幅逆変換を施す必要がある。
〔数式10〕
Xl´(i)=1/N・{ΣjAl´(1,j)・cos(2πij/N)/Zl(1)−ΣjBl´(1,j)・sin(2πij/N)/Zl(1)}+Xlp(i+N/2)
Xr´(i)=1/N・{ΣjAr´(1,j)・cos(2πij/N)/Zr(1)−ΣjBr´(1,j)・sin(2πij/N)/Zr(1)}+Xrp(i+N/2)
上記〔数式10〕においては、式が繁雑になるのを防ぐため、Σj=0,…,N-1をΣjとして示している。上記〔数式10〕における第1式の“+Xlp(i+N/2)”、第2式の“+Xrp(i+N/2)”の項は、直前に改変された改変音響フレームのデータXlp(i)、Xrp(i)が存在する場合に、時間軸上N/2サンプル分重複することを考慮して加算するためのものである。上記〔数式10〕によりAタイプの改変音響フレームの左チャンネルの各サンプルXl´(i)、右チャンネルの各サンプルXr´(i)、が得られることになる。
Bタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(2,j)、虚部Bl´(2,j)、右チャンネルの実部Ar´(2,j)、虚部Br´(2,j)を用いて、以下の〔数式11〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。なお、上記〔数式8〕〔数式9〕において改変されていない周波数成分については、以下の〔数式11〕においてはAl´(2,j)、Bl´(2,j)、Ar´(2,j)、Br´(2,j)として、元の値であるAl(2,j)、Bl(2,j)、Ar(2,j)、Br(2,j)を用いる。周波数逆変換を計算するにあたり、Al´(2,j)およびBl´(2,j)に対しては〔数式5〕におけるZl(2)を、Ar´(2,j)およびBr´(2,j)に対しては〔数式5〕におけるZr(2)を除することにより、同時に振幅逆変換を施す必要がある。
〔数式11〕
Xl´(i+N/2)=1/N・{ΣjAl´(2,j)・cos(2πij/N)/Zl(2)−ΣjBl´(2,j)・sin(2πij/N)/Zl(2)}+Xlp(i+N)
Xr´(i+N/2)=1/N・{ΣjAr´(2,j)・cos(2πij/N)/Zr(2)−ΣjBr´(2,j)・sin(2πij/N)/Zr(2)}+Xrp(i+N)
上記〔数式11〕によりBタイプの改変音響フレームの左チャンネルの各サンプルXl´(i)、右チャンネルの各サンプルXr´(i)、が得られることになる。
改変音響フレーム出力手段50は、周波数逆変換手段40の処理により得られたAタイプの改変音響フレーム、Bタイプの改変音響フレームを順次出力ファイルに出力する。
次に、図1に示した音響信号に対する情報の埋め込み装置の処理の全体的な流れについて説明する。埋め込み装置を起動すると、まず、変換テーブル作成手段80が、Nwビットの登録順位とNhビットのハミング符号が対応付けられた符号変換テーブルを作成する。変換テーブル作成手段80による符号変換テーブル作成のフローチャートを図4に示す。
変換テーブル作成手段80は、最初に初期化処理を行う(S601)。具体的には、7ビット符号“0”に12ビット符号“1”を対応付けて符号変換テーブルのi(=0)番目に登録するとともに、7ビット符号KFの初期値を1、12ビット符号HFの初期値を2とする。続いて、i=0に初期設定する(S602)。次に、12ビット符号HFと符号変換テーブルのi番目に既に登録されている他の12ビット符号とのハミング距離を算出する(S603)。
算出したハミング距離が4未満の場合、HFの値を1増加して更新した後(S604)、S602に戻って、次の12ビット符号HFについての処理を行う。一方、算出したハミング距離が4以上の場合、iの値を1増加して更新する(S605)。そして、iがKF−1未満である場合には、S603に戻って、符号変換テーブル内のi番目に登録されている12ビット符号とのハミング距離を算出する。S605の後、iがKF−1以上となった場合には、12ビット符号HFを符号変換テーブルの7ビット符号KFの位置に登録するとともに、KF、HFの値をそれぞれ1ずつ増加して更新する(S606)。そして、KFが128未満である場合は、S602に戻って、次の7ビット符号KFについての処理を行う。KFが128以上である場合は、全ての7ビット符号KFに対応する12ビット符号HFが登録されたことになるので、符号変換テーブル作成処理を終了する。
このようにして作成された符号変換テーブルを図5に示す。図5に示すように、符号変換テーブルには、7ビット符号が取り得る各値0〜127について、12ビット符号が対応付けて登録されている。12ビット符号の2進表記を見るとわかるように、全ての12ビット符号は互いにハミング距離が4以上となっている。なお、図5の例では、説明の便宜上、7ビット符号の10進表記と、12ビット符号の10進表記及び2進表記を示しているが、現実には、7ビット符号のビット列と12ビット符号のビット列が対応付けて登録されている。
続いて、符号変換テーブル作成処理後の、埋め込み装置の処理を、図22のフローチャートに従って説明する。図1に示した装置を構成する各構成要素は、連携して図22に従った処理を実行する。埋め込み装置は、まず、埋め込み対象となる音響信号に対して埋め込み可能な音響フレームの総数である総フレーム数Cfを算出する(S801)。具体的には、音響信号をサンプリングして総サンプル数を求めた後、1音響フレームのサンプル数で除算する処理を行う。次に、付加情報の圧縮処理を行う(S802)。具体的には、付加情報記憶部62から10進数表記で記録された付加情報を抽出し、バイナリ形式に変換する処理を行う。
ここで、10進数表記で記録された付加情報の入力文字列と、圧縮後の圧縮文字列の書式を図23に示す。本実施形態では、入力文字列書式はASCII文字である。図23において、入力文字列書式の“#”は区切り記号を示す。“n”は0〜9のASCII文字である。したがって、入力文字列は、桁数に区切りを加えた分のバイト数を必要とすることになる。圧縮文字列の“D”は、00〜99の2桁の10進数字を1〜100の1バイトのバイナリ数値で表現したものである。圧縮文字列の“C”は、#または#0〜#9の区切り記号付き1桁の10進数字を101〜110の1バイトのバイナリ数値で表現したものである。10進2桁の場合はCを省略、10進4桁の場合はCは101固定値となる。このような圧縮を行うと、図23に示したように、10進2桁〜10進5桁の場合、2バイトから3バイト分圧縮されることがわかる。
付加情報が圧縮されたら、次に、単位文字列種別数CSを算出する(S803)。単位文字列種別数CSとは、付加情報の連続する文字列中に、1つの意味を有する単位文字列が何種別含まれているかを示すものである。単位文字列種別数CSは、圧縮文字列ワード数BSを、ワード周期BCで除算する処理を行うことにより算出される(CS=BS/BC)。ここで、圧縮文字列ワード数BSは、S802において、バイナリ形式に変換された状態の付加情報のワード数である。また、ワード周期BCは、単位文字列に対応する圧縮後のバイト数を示すものであり、本実施形態では、全ての単位文字列の変換後のバイト数が同一となっている。
続いて、単位文字列当たりのリピート数Crを算出する(S804)。リピート数Crは、単位文字列を何回繰り返して埋め込むかを示すものである。このリピート数Crは、単位文字列種別数CS、ワード周期BC、変換後ビット数Nhを乗じた値で、総フレーム数Cfを除算する処理を行うことにより算出される(Cr=Cf/CS・BC・Nh)。
次に、バイトカウンタ、リピートカウンタ、種別カウンタの初期化を行う(S805)。具体的には、これらの値を全て“0”に設定する。そして、圧縮後のビット配列(付加情報文字列)中から、種別カウンタに位置する文字種別のバイトカウンタに位置する1バイトを読み込む(S806)。そして、読み込んだ1バイトを音響信号に埋め込む処理を行う(S807)。1バイト分の埋め込み処理の詳細については、後述する。
1バイト分の埋め込み処理が終わったら、ワードカウンタの更新を行う(S808)。具体的には、ワードカウンタの値を1だけ増加する。そして、ワードカウンタがワード周期BCを超えたかどうかを判定する(S809)。ワードカウンタがワード周期BCを超えていない場合は、S806に戻って次の1バイトを読み込む。一方、ワードカウンタがワード周期BCを超えている場合は、ワードカウンタの初期化とリピートカウンタの更新を行う(S810)。
次に、リピートカウンタがリピート数Crを超えたかどうかを判定する(S811)。リピートカウンタがリピート数Crを超えていない場合は、S806に戻って次の1バイトを読み込む。一方、リピートカウンタがリピート数Crを超えている場合は、リピートカウンタの初期化と種別カウンタの更新を行う(S812)。そして、種別カウンタが単位文字列種別数CSを超えたかどうかを判定する(S813)。種別カウンタが単位文字列種別数CSを超えていない場合は、S806に戻って次の1バイトを読み込む。一方、種別カウンタが単位文字列種別数CSを超えている場合は、埋め込み処理を終了する。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段60内の改変音響信号記憶部63に出力され、記憶される。
ここで、図22のS807における1バイト分の埋め込み処理の詳細を、図6のフローチャートに従って説明する。1ワードのビット数Nwとしては、任意のビット数に設定することができるが、上述のように、本実施形態では、ASCIIコードの実質7ビットに設定されている。
図6においては、まず、ビット配列作成手段70は、付加情報記憶部62から抽出した付加情報の各ワードについて、変換テーブル作成手段80を参照し、対応するビット配列を作成する(S101)。具体的には、まず、付加情報記憶部62から1ワード(7ビット)単位で抽出し、図5に示した符号変換テーブルを参照し、対応するハミング符号で構成される12ビットのビット配列を抽出する。
そして、この12ビットが、音響信号に対する情報の埋め込み装置として用いられるコンピュータ内のレジスタに読み込まれることになる。このように、付加情報記憶部62においては、1ワードは7ビットであるが、埋め込み処理時は、この12ビットの配列で、付加情報内の1ワード分の処理を行う。
次に、周波数成分変更手段30が、レジスタに保持されたNh(=12)ビットから1ビットを読み込む処理を行う(S102)。続いて、音響フレーム読込手段10が、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルをAタイプの1音響フレームとして読み込み、周波数変換手段20が周波数変換を行って、得られたフレームスペクトルに対して振幅変換を行う(S103)。具体的には、まず、読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。すなわち、各音響フレームについて、窓関数W(1,i)を用いて、上記〔数式2〕に従った処理を行う。そして、上記〔数式5〕に従った処理を実行してZl(1)、Zr(1)を算出し振幅変換を行う。同様に、音響フレーム読込手段10が、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルをBタイプの1音響フレームとして読み込み、周波数変換手段20が周波数変換を行って、得られたフレームスペクトルに対して振幅変換を行う(S104)。具体的には、まず、読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。すなわち、各音響フレームについて、窓関数W(2,i)を用いて、上記〔数式3〕に従った処理を行う。そして、上記〔数式5〕に従った処理を実行してZl(2)、Zr(2)を算出し振幅変換を行う。続いて、周波数成分変更手段30が、読み込んだビット値に応じてAタイプ音響フレームおよびBタイプ音響フレームの周波数成分の状態を変更するにあたり、〔数式6〕〔数式7〕に従った処理を実行して変換割合α、βを決定する処理を行う(S105)。この決定された変換割合を用いて、周波数成分変更手段30は、ビット配列作成手段70から受け取った値1、値2に応じて上記〔数式8〕〔数式9〕に従った処理を実行し、変更対象周波数帯の成分の状態を“状態1”、“状態2”に応じた状態のいずれかに変更する(S106)。
次に、周波数逆変換手段40が、上記S106の処理によりAタイプの音響フレームに対応する各スペクトル集合の強度が変更されたスペクトルを振幅逆変換、周波数逆変換して改変音響フレームを得る処理を行う(S107)。この振幅逆変換は〔数式5〕で算出したZl(1)、Zr(1)の逆数をスペクトルに乗じることにより行ない、この周波数逆変換は、当然のことながら、周波数変換手段20がS103において実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ逆変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。具体的には、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(1,j)等、虚部Bl´(1,j)等、右チャンネルの実部Ar´(1,j)等、虚部Br´(1,j)等を用いて、上記〔数式10〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する。
同様に、周波数逆変換手段40が、上記S106の処理によりBタイプの音響フレームに対応する各スペクトル集合の強度が変更されたスペクトルを振幅逆変換、周波数逆変換して改変音響フレームを得る処理を行う(S108)。具体的には、振幅逆変換は〔数式5〕で算出したZl(2)、Zr(2)の逆数をスペクトルに乗じることにより行ない、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部Al´(2,j)等、虚部Bl´(2,j)等、右チャンネルの実部Ar´(2,j)等、虚部Br´(2,j)等を用いて、上記〔数式11〕に従った処理を行い、Xl´(i)、Xr´(i)を算出する。
改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する。こうして各チャンネルについて、AタイプおよびBタイプの2つの音響フレームに対する処理を終えたら、周波数成分変更手段30がビット配列中の次の1ビットを読み込む(S102)。以上のような処理を音響信号の両チャンネルの全サンプルに渡って実行していく。すなわち、所定数のサンプルを音響フレームとして読み込み、音響信号から読み込むべき音響フレームがなくなったら(S103、S104)、処理を終了する。なお、S101において読み込んだ1ワード分のビット配列(Nh=12ビット)の各ビットに対応する処理を終えた場合、S102からS101に戻り、付加情報の次のワードを読み込んでビット配列を作成する処理を行うことになる。付加情報の全ワードに対して処理が終了した場合は、付加情報の先頭ワードに戻って処理を行う。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段60内の改変音響信号記憶部63に出力され、記憶される。
なお、本実施形態では、付加情報を1ワード7ビットとし、符号変換テーブルにより12ビットのビット配列に変換して、付加情報1ワード分の処理をする場合について説明したが、本発明では、抽出側と取り決めがある限り、付加情報の1ワードを他のビット数単位で記録することが可能である。
上記のようにして得られた改変音響信号のうち、付加情報が埋め込まれている部分については、変更対象周波数帯の成分は、上記状態1、状態2の2通りの分布しかないことになる。しかし、変更対象周波数帯の成分以外については、元の音響信号のままであるので、制作者の設定に基づいた種々な分布になる。また、上記〔数式8〕〔数式9〕の処理からも明らかなように、変更対象周波数帯の成分は、左チャンネルと右チャンネルにおいて同等の割合で変化させられている。したがって、両スピーカと等距離の位置においても、変更対象周波数帯の成分は、相殺されることなく増幅させる関係となり、情報を抽出し易くなる。
以上、埋め込み装置について説明したが、ここで、本実施形態である振幅変換を用いた埋め込みおよび抽出手法について図7から図10を用いて説明する。図7および図8は、比較のために、振幅変換を用いない場合の埋め込み処理および抽出処理を示し、図9および図10は本実施形態における振幅変換を用いた埋め込み処理および抽出処理を示す。これらの説明図においては、音響フレーム奇数および偶数3対分について、3ビットの情報を埋め込むことを想定した音響信号の信号波形を示しており、説明の便宜上、音響フレームが互いに重複しない状態で示している。各図において、左端の波形は時間次元の通常の音響信号波形を示しており、横方向は時間軸であり、右に向かうに従って時間が進行し、縦方向は強度(振幅)である。中央または右端の波形は周波数変換後の所定の周波数範囲のスペクトル成分の合算値を信号波形で表現しており、仮想的にバンドパスフィルターを通した後の信号波形になっている。縦方向は同様に強度であり、本来は左端に比べ顕著に低くなるが、ここでは説明の都合上、左端と同程度に拡大して表現している。また、2種類の波形のレベルも本来は差があるが、ここでは同一レベルで表現している。実際には、周波数変換後のデータとして所定の周波数範囲外の高周波数成分や低周波数成分も存在するが、これらについては改変を加えないという前提で図示しておらず、図3に従った埋め込みを行なう2種の周波数帯域成分に限定して2種の信号波形で示している。
図7(a)は原音響信号を示しており、最初の1対の音響フレームは全体に渡って強度がほぼ一定、中央の1対の音響フレームは奇数フレームの強度が小さく偶数フレームの強度が大きいものであり、最後の1対の音響フレームは奇数フレームの強度が大きく偶数フレームの強度が小さいものである。このような音響信号に対して、周波数変換を行った結果が図7(b)で、図3で示されように埋め込み対象成分は上下2分割して成分変更を施す都合上、図7(b)では(b−1)および(b−2)の2種の波形に分離して表現した。周波数変換後の波形形状は周波数ごとに異なり、図7(a)と必ずしも相似形にはならないが、ここでは周波数変換前と同様になると仮定して説明する。図7(b−1)および(b−2)に対して、[0,0,0]という3ビットのデータを図3で説明した方法に基づいて埋め込むことにより(図3ではビット0は符号1に相当する)、図7(c−1)および(c−2)が得られる。最初の1対は図3のようなパターンが表現できているが、残り2対の上下一方は、原段階に対して逆方向に大小関係を構築することが要求され、品質維持の都合上、適切なパターンが構築できていないことがわかる。このような改変を加えた結果に対して、周波数逆変換を行った結果が図7(d)である。一般に音響信号波形の外形(エンベロープという)はエネルギー分布が大きい低周波成分で決定され、これらは本願では所定の周波数範囲外の信号成分に含まれ、図7(c)の段階では改変が加えられていないため、周波数逆変換後の図7(d)は周波数変換前の図7(a)と類似した形状になる。
このような埋め込みを行なった結果に対して、抽出処理を行う様子を図8に示す。図8(a)および図8(b)は各々図7(d)および図7(c)に対応する。図8(b)において、ビット判定を行なうにあたり、最初の1対以外は図3で想定されているパターンが形成されていないため、正しいビットを判定することが難しくなる。
次に、本実施形態における振幅変換を導入した手法について図9および図10を用いて説明する。図9(a)は図7(a)と同じ原音響信号を示しており、同様に周波数変換を行った図9(b)も図7(b)と同じである。ここで、6つのフレーム単位に振幅変換を行った結果が図9(c)である。図9の場合、図9(a)で各フレーム内の振幅が平坦であるため、図9(c)では全体が平坦になっているが、実際には各フレーム内は微細に変動しており、そのフレーム内変動分は図9(c)の段階でも踏襲されるため、本図のように完全に平坦になることは通常ない。(実際は図9(c)は周波数次元のデータになるため、周波数次元のデータも平坦にならず変動した形態になる。)また、変換倍率はフレームごとに設定し、上下2つの周波数成分に対しては同一の倍率で変換を行うため、通常は上下で顕著な差が生じる(ただし、時間軸方向は比較的揃う)。これに対して、[0,0,0]という3ビットのデータを埋め込むと、図9(d−1)および(d−2)が得られる。原段階である図9(c)が平坦な波形であるため、全てのフレームにおいて図3のような理想的なパターンが容易に構築できることがわかる。続いて、前記フレームごとに設定した倍率の逆数を乗じて振幅逆変換を行った結果が図9(e)である。この段階では図7(c)と類似したパターンが生じることが多いが、本形状はいかなるものでも構わない。最後に周波数逆変換を行うと、図9(f)が得られ、同様に原信号波形の図9(a)と類似した形状になる。
このような埋め込みを行なった結果に対して、抽出処理を行う様子を図10に示す。図10(a)、(b)および(c)は各々図9(f)、(e)および(d)に対応する。図10(b)の周波数変換後の波形形状は図9(b)とは基本的に異なるが、算出される振幅変換倍率は類似した値になり、ほぼ同様な倍率で振幅変換が行われ図10(c)が得られる。図10(c)の段階で、ビット判定を行なうと、全てのフレームにおいて図3のような理想的なパターンが形成されているため、正しいビットを判定することが可能になる。
以上、本実施形態では、図9(c)に示したように、埋め込み対象の信号成分が時間軸方向に平坦になるように変換を行って埋め込むようにしているため、高周波側と低周波側の成分強度の大小関係が完全に逆になるような不自然な変更を行う確率が低くなり、品質を維持しながら、抽出側における抽出精度を高めることが可能となる。
(3.1.抽出装置の構成)
次に、本発明に係る音響信号からの情報の抽出装置について説明する。図11は、本発明に係る音響信号からの情報の抽出装置の一実施形態を示す構成図である。図11において、100は音響信号入力手段、110は基準フレーム獲得手段、120は位相変更フレーム設定手段、130は周波数変換手段、140は符号判定パラメータ算出手段、150は符号出力手段、160は付加情報抽出手段、170は音響フレーム保持手段、180は変換テーブル作成手段である。
音響信号入力手段100は、流れている音声をデジタル音響信号として取得し、入力する機能を有している。現実には、マイクロフォンおよびA/D変換器により実現される。マイクロフォンとしては、変更対象周波数帯の成分が検出可能なものであれば、モノラル無指向性のものであっても、ステレオ指向性のものであっても使用可能である。ステレオ指向性のものであっても一方のチャンネルだけ利用すれば良い。また、図1に示した装置で情報の埋め込みを行った場合には、ステレオで再生されるが、左右どちらのスピーカの音を入力しても、双方のスピーカの音を混合入力しても良く、マイクロフォンの設置位置に制約がない。もちろん、付加情報が埋め込まれた音響信号がモノラル再生される場合、あるいは付加情報が埋め込まれた音響信号自体がモノラルである場合は、再生される単一のスピーカにマイクロフォンを向ければ良い。このマイクロフォンは特別精度の高いものでなく、一般的な精度のマイクロフォンを用いても情報の抽出が可能となる。基準フレーム獲得手段110は、入力されたデジタルのモノラル音響信号(あるいはステレオ音響信号の1チャンネル)から所定数のサンプルで構成される音響フレームを基準フレームとして読み込む機能を有している。基準フレームとしては、埋め込み時と同様にAタイプ、Bタイプのものが設定される。位相変更フレーム設定手段120は、Aタイプ、Bタイプそれぞれの基準フレームと所定サンプルずつ移動させることにより位相を変更した音響フレームを位相変更フレームとして設定する機能を有している。
周波数変換手段130は、基本的には、図1に示した周波数変換手段20とほぼ同様の機能を有している。ただし、音を取り込むタイミングが、音響信号の先頭からとはならないため、正しい位相を特定するために、複数の位相で振幅変換、周波数変換を行う点、元の音響信号がステレオであっても、1つのチャンネルで行う点が異なっている。
周波数変換手段130は、Aタイプの音響フレームに対してフーリエ変換を行う場合は、信号X(i−N/2+pN/6)(i=0,…,N−1)に対して、窓関数W(1,i)を用いて、以下の〔数式12〕に従った処理を行い、変換データの実部A(1,j,p)、虚部B(1,j,p)を得る機能を有している。pは位相番号であり、0〜5の整数値をとる。
〔数式12〕
A(1,j,p)=Σi=0,…,N-1W(1,i)・X(i−N/2+p・N/6)・cos(2πij/N)
B(1,j,p)=Σi=0,…,N-1W(1,i)・X(i−N/2+p・N/6)・sin(2πij/N)
周波数変換手段130は、Bタイプの音響フレームに対してフーリエ変換を行う場合は、信号X(i+p・N/6)(i=0,…,N−1)に対して、窓関数W(2,i)を用いて、以下の〔数式13〕に従った処理を行い、変換データの実部A(2,j,p)、虚部B(2,j,p)を得る機能を有している。
〔数式13〕
A(2,j,p)=Σi=0,…,N-1W(2,i)・X(i+p・N/6)・cos(2πij/N)
B(2,j,p)=Σi=0,…,N-1W(2,i)・X(i+p・N/6)・sin(2πij/N)
周波数変換手段130は、周波数変換手段20と同様に振幅変換を行う。振幅変換を行うにあたり、まず変換倍率の算出を行う。変換倍率の算出は、所定周波数範囲のスペクトル集合の実効強度値の平均である平均実効値で、設定値を除算することにより行う。設定値は、適宜定めておくことができるが、埋め込み時における振幅変換の場合と同一値としておくことが必要となる。したがって、本実施形態では、設定値Zoは160にする必要がある。具体的には、Aタイプの音響フレーム、Bタイプの音響フレームについての変換倍率Z(1,p)、Z(2,p)、これらの直前のAタイプの音響フレーム、Bタイプの音響フレームについての変換倍率Z-1(1,p)、Z-1(2,p)は、以下の〔数式14〕に従った処理により算出される。振幅変換が実行されることにより、全ての音響フレームは、元の状態における信号強度に関わらず、各音響フレームの平均実効値が設定値となるように振幅変換された状態で、情報の抽出が行われることになる。なお、pは位相番号であり、0〜5の整数値をとる。
〔数式14〕
Z(1,p)=Zo/[Σj=m,…,m+2G-1{A(1,j,p)2+B(1,j,p)2}]1/2
Z(2,p)=Zo/[Σj=m,…,m+2G-1{A(2,j,p)2+B(2,j,p)2}]1/2
Z-1(1,p)=Zo/[Σj=m,…,m+2G-1{A-1(1,j,p)2+B-1(1,j,p)2}]1/2
Z-1(2,p)=Zo/[Σj=m,…,m+2G-1{A-1(2,j,p)2+B-1(2,j,p)2}]1/2
j=m,…,m+2G−1(周波数F1,...,F2に相当)およびp=0,...,5の範囲で、A(1,j,p)およびB(1,j,p)の各々の要素に対してZ(1,p)を乗じ、A(2,j,p)およびB(2,j,p)の各々の要素に対してZ(2,p)を乗じ、A-1(1,j,p)およびB-1(1,j,p)の各々の要素に対してZ-1(1,p)を乗じ、A-1(2,j,p)およびB-1(2,j,p)の各々の要素に対してZ-1(2,p)を乗じることにより、振幅変換を行う。以下説明において、A(1,j,p)、B(1,j,p)、A(2,j,p)、B(2,j,p)、A-1(1,j,p)、B-1(1,j,p)、A-1(2,j,p)、B-1(2,j,p)はこれらの振幅変換を行った値とする。
符号判定パラメータ算出手段140は、生成されたスペクトルから所定の周波数範囲に相当するスペクトル集合を抽出し、各スペクトル集合の強度値を算出するとともに、この強度値を利用して符号判定パラメータを算出し、この符号判定パラメータの大小関係に基づいて、所定の状態であると判断する機能を有している。上述のように、本実施形態では、Aタイプの音響フレームとBタイプの音響フレームがN/2サンプルずつ重複して設定されているため、ある音響フレームについて、強度値、符号判定パラメータを算出する際には、直前の音響フレームによる残響成分を考慮する必要がある。ところが、残響成分は計算により算出されるものであるので、必ずしも正確なものが算出されるとは限らず、算出された残響成分を除去することにより、反って抽出精度が低下する場合がある。そこで、本実施形態では、残響成分を除去しない場合の強度値E1、E2、E3、E4、および符号判定パラメータCと、除去した場合の強度値E1´、E2´、E3´、E4´、および補正符号判定パラメータC´を算出し、これらを利用して最適であると思われる状態を判断する。
Aタイプの音響フレームの各成分A(1,j,p)、B(1,j,p)に対して1フレーム分前のBタイプの音響フレームに対応する各成分をA-1(2,j,p)、B-1(2,j,p)とすると、Bタイプの音響フレームの各成分A(2,j,p)、B(2,j,p)に対応して、1フレーム分前の音響フレームは以下補正を施す前の前記Aタイプの音響フレームとなる。符号判定パラメータ算出手段140は、各スペクトル集合の強度値の算出の前に、まず、各スペクトル集合の基本強度値E(1,j,p)、E(2,j,p)、および残響成分を除去した基本強度値E´(1,j,p)、E´(2,j,p)を、以下の〔数式15〕に従った処理により算出する。
〔数式15〕
E(1,j,p)=A(1,j,p)2+B(1,j,p)2
E(2,j,p)=A(2,j,p)2+B(2,j,p)2
E-1(1,j,p)=A-1(1,j,p)2+B-1(1,j,p)2
E-1(2,j,p)=A-1(2,j,p)2+B-1(2,j,p)2
E´(1,j,p)=E(1,j,p)−q・E-1(2,j,p)
E´(2,j,p)=E(2,j,p)−q・E(1,j,p)
上記〔数式15〕における6つの式のうち、上から5番目(下から2番目)の式は、あるAタイプの音響フレームに着目したときに、その前半のN/2サンプルが重複するBタイプの音響フレームからの残響成分を除去するためのものである。また、上から6番目(下から1番目)の式は、あるBタイプの音響フレームに着目したときに、その前半のN/2サンプルが重複するAタイプの音響フレームからの残響成分を除去するためのものである。E´(1,j,p)≧0、E´(2,j,p)≧0とし、〔数式15〕の上から5番目、6番目の式に従った処理の結果、負の値となった場合には、0に設定する。
上記〔数式15〕において、qは残響成分の大きさを示す係数であるが、この係数qは1未満の値を持つものであり、実験の結果、N=4096のときq=0.06、N=2048のときq=0.12、N=1024のときq=0.24、N=512のときq=0.48が最適である。
そして、残響成分を除去しない場合の各スペクトル集合の強度値E1、E2、E3、E4、除去した場合の強度値E1´、E2´、E3´、E4´を、算出した基本強度値E(1,j,p)、E(2,j,p)、E´(1,j,p)、E´(2,j,p)を用いて以下の〔数式16〕に従った処理により算出する。
〔数式16〕
E1(p)=Σj=m,…,m+G-1E(1,j,p)
E2(p)=Σj=m,…,m+G-1E(2,j,p)
E3(p)=Σj=m+G,…,m+2G-1E(1,j,p)
E4(p)=Σj=m+G,…,m+2G-1E(2,j,p)
E1´(p)=Σj=m,…,m+G-1E´(1,j,p)
E2´(p)=Σj=m,…,m+G-1E´(2,j,p)
E3´(p)=Σj=m+G,…,m+2G-1E´(1,j,p)
E4´(p)=Σj=m+G,…,m+2G-1E´(2,j,p)
このE1〜E4、E1´〜E4´については、過去の対応する成分を用いて更新する処理を行う。具体的には、過去の成分を登録する総和値登録テーブルに記録されたTe(1、p)〜Te(8、p)を用いて以下の〔数式17〕に従った処理により算出する。
〔数式17〕
E1(p)=0.67E1(p)+0.33Te(1、p)
E2(p)=0.67E2(p)+0.33Te(2、p)
E3(p)=0.67E3(p)+0.33Te(3、p)
E4(p)=0.67E4(p)+0.33Te(4、p)
E1´(p)=0.67E1´(p)+0.33Te(5、p)
E2´(p)=0.67E2´(p)+0.33Te(6、p)
E3´(p)=0.67E3´(p)+0.33Te(7、p)
E4´(p)=0.67E4´(p)+0.33Te(8、p)
さらに、Te(1、p)〜Te(8、p)は、以下の〔数式18〕に従った処理により更新される。
〔数式18〕
Te(1、p)=E1(p) Te(2、p)=E2(p)
Te(3、p)=E3(p) Te(4、p)=E4(p)
Te(5、p)=E1´(p) Te(6、p)=E2´(p)
Te(7、p)=E3´(p) Te(8、p)=E4´(p)
結局〔数式15〕〔数式16〕〔数式17〕〔数式18〕により、過去分を考慮した各スペクトル集合の強度値E1、E2、E3、E4が算出されるとともに、当該各スペクトル集合に対応するタイプの別を問わない直前の音響フレームにおけるスペクトル集合の強度にqを乗じた値を減じることにより強度値E1´、E2´、E3´、E4´が算出されることになる。
また、符号判定パラメータ算出手段140は、残響成分を除去せずに算出した強度値E1、E2、E3、E4を用いて、以下の〔数式19〕に従った処理を実行し、符号判定パラメータCを算出する。
〔数式19〕
1)E1(p)>E2(p)かつE4(p)>E3(p)の場合
B=0と仮判定、
C={E1(p)・E4(p)−E2(p)・E3(p)}/{E1(p)・E4(p)+E2(p)・E3(p)}
2)E2(p)>E1(p)かつE3(p)>E4(p)の場合
B=1と仮判定、
C={E2(p)・E3(p)−E1(p)・E4(p)}/{E1(p)・E4(p)+E2(p)・E3(p)}
3)E1(p)・E4(p)>E2(p)・E3(p)の場合
B=0と仮判定、
C={E1(p)・E4(p)−E2(p)・E3(p)}/{E1(p)・E4(p)+E2(p)・E3(p)}
4)上記1)〜3)以外の場合
B=1と仮判定、
C={E2(p)・E3(p)−E1(p)・E4(p)}/{E1(p)・E4(p)+E2(p)・E3(p)}
また、符号判定パラメータ算出手段140は、残響成分を除去して算出した強度値E1´、E2´、E3´、E4´を用いて、以下の〔数式20〕に従った処理を実行し、補正符号判定パラメータC´を算出する。
〔数式20〕
1)E1´(p)>E2´(p)かつE4´(p)>E3´(p)の場合
B´=0と仮判定、
C´={E1´(p)・E4´(p)−E2´(p)・E3´(p)}/{E1´(p)・E4´(p)+E2´(p)・E3´(p)}
2)E2´(p)>E1´(p)かつE3´(p)>E4´(p)の場合
B´=1と仮判定、
C´={E2´(p)・E3´(p)−E1´(p)・E4´(p)}/{E1´(p)・E4´(p)+E2´(p)・E3´(p)}
3)E1´(p)・E4´(p)>E2´(p)・E3´(p)の場合
B´=0と仮判定、
C´={E1´(p)・E4´(p)−E2´(p)・E3´(p)}/{E1´(p)・E4´(p)+E2´(p)・E3´(p)}
4)上記1)〜3)以外の場合
B´=1と仮判定、
C´={E2´(p)・E3´(p)−E1´(p)・E4´(p)}/{E1´(p)・E4´(p)+E2´(p)・E3´(p)}
符号出力手段150は、1つの基準フレームに対応する音響フレーム(基準フレームおよび位相変更フレーム)の中から最適な位相であると判断されるものを判断し、その音響フレームの状態に対応する符号を出力する機能を有している。符号判定パラメータ算出手段140と符号出力手段150により符号化手段が構成される。付加情報抽出手段160は、符号出力手段150により出力された2値の配列をNhビット単位で抽出し、符号逆変換テーブルを参照することにより、Nwビットの登録順位に変換し、さらに所定の規則により変換して意味のある付加情報として抽出する機能を有している。音響フレーム保持手段170は、チャンネルごとのAタイプ、Bタイプそれぞれについて連続する2個の基準フレーム(チャンネルごとに計4個の基準フレーム)を保持可能なバッファメモリである。変換テーブル作成手段180は、図1に示した変換テーブル作成手段80と同様、Nwビットが取り得る2のNw乗個の全ての登録順位に対して、互いにハミング距離が少なくとも4以上となるNh(>Nw)ビットのハミング符号を割り当てることにより、Nwビットの登録順位とNhビットのハミング符号が対応付けられた符号変換テーブルを作成する機能を有している。
図11に示した各構成手段は、現実には情報処理機能を有する小型のコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。特に、本発明の目的をより簡易に達成するためには、携帯電話機等の携帯型端末装置をハードウェアとして用いることが望ましい。なお、本明細書では、携帯電話機等の携帯型端末装置であっても、演算処理機能を有するものは、コンピュータの一種と考えるものとする。
(3.2.抽出装置の処理動作)
次に、図11に示した音響信号からの情報の抽出装置の処理動作について説明する。抽出装置を起動すると、まず、変換テーブル作成手段180が、符号変換テーブルを作成する。変換テーブル作成手段180による符号変換テーブルの作成は、変換テーブル作成手段80と同様、図4のフローチャートに従った処理により行われ、図5に示したような符号変換テーブルが得られることになる。
続いて、符号変換テーブル作成処理後の、抽出装置の処理動作について説明する。本発明に係る抽出装置は、検査符号によりエラーを検出した際、エラー訂正を行わない設定とすることもできるし、1ビットのエラー訂正をするものと設定することもできる。ここからは、エラー訂正を行わない設定における抽出装置の処理動作を、図12のフローチャートに従って説明する。まず、本装置では、位相判定テーブルS(p)、位相決定ログ、位相確定フラグ、総和値累積テーブルTe(1、p)〜Te(8、p)、ビットカウンタを初期化する(S200)。位相判定テーブルS(p)は、位相を判定するためのテーブルであり、pは0〜5の整数値をとる。初期値はS(p)=0に設定されている。位相決定ログは、1つの基準フレームと5つの位相変更フレームの組ごとに、決定された位相すなわち位相番号pを記録していくものであり、初期状態では0が設定されている。位相確定フラグは、位相が確定しているかどうかを示すフラグであり、初期状態ではOffに設定されている。総和値累積テーブルTe(1、p)〜Te(8、p)は、過去(バイト周期×Nhフレーム)分の総和値E1〜E4、残響補正後の総和値E1´〜E4´を6通りの位相別に保存したものであり、初期状態ではTe(1、p)〜Te(8、p)=0に設定されている。ビットカウンタについては初期値として0を設定する。
このように、符号変換テーブルが作成され、初期値が設定されている状態で、利用者が流れている音楽について、その楽曲名等の属性情報を知りたいと思った場合、まず、抽出装置に対して、抽出装置としての起動の指示を行う。これは、例えば、抽出装置を携帯電話機等の携帯端末で実現している場合は、所定のボタンを操作することにより実行できる。抽出装置は、指示が入力されると、音響信号入力手段100が、流れている音楽を録音し、デジタル化してデジタル音響信号として入力する。具体的には、無指向性マイクロフォン(または指向性マイクロフォンの一方のチャンネル)から入力される音声を、A/D変換器によりデジタル化する処理を行うことになる。
続いて、基準フレーム獲得手段110が、音響信号入力手段100から入力された音響信号から、所定数のサンプルで構成される音響フレームを基準フレームとして抽出する(S201)。具体的には、Aタイプ、Bタイプについての基準フレームを抽出して音響フレーム保持手段170に読み込むことになる。基準フレーム獲得手段110が基準フレームとして読み込む1音響フレームのサンプル数は、図1に示した音響フレーム読込手段10で設定されたものと同一にする必要がある。したがって、本実施形態の場合、基準フレーム獲得手段110は、Aタイプ、Bタイプについてそれぞれ4096サンプルずつ、順次基準フレームとして読み込んでいくことになる。音響フレーム保持手段170には、各チャンネルについて、Aタイプ、Bタイプ2個ずつの基準フレーム、すなわち2.5Nサンプルが格納可能となっており、新しい基準フレームが読み込まれると、古い基準フレームを破棄するようになっている。したがって、音響フレーム保持手段170には、常に基準フレーム4個分(連続する10240サンプル)が格納されていることになる。
抽出装置で処理する音響フレームは、先頭から途切れることなく隣接して設定される基準フレームと、この基準フレームと位相を変更した位相変更フレームとに分けることができる。基準フレームについては、Aタイプの音響フレームとBタイプの音響フレームが、2048サンプルずつ重複している場合、最初の基準フレームとしてサンプル番号1からサンプル番号4096までを設定したら、次の基準フレームは、サンプル番号2049からサンプル番号6144、さらに次の基準フレームは、サンプル番号4097からサンプル番号8192、さらに次の基準フレームは、サンプル番号6145からサンプル番号10240、というように途切れることなく設定される。そして、各基準フレームについて、1/6フレーム(約683サンプル)ずつ移動した5個の位相変更フレームを設定する。例えば、最初の基準フレームについては、サンプル番号683、1366、2049、2732、3413から始まる4096のサンプルで構成される5個の位相変更フレームが設定されることになる。続いて、周波数変換手段130、符号判定パラメータ算出手段140が、読み込んだ各音響フレームについて、位相を特定した後、埋め込まれている情報を判定し、対応する符号を出力する(S202)。出力される情報の形式は、付加情報が埋め込まれる場合に対応する値1、値2の2通りの形式となる。
ここで、ステップS202の位相確定および符号判定の詳細を図13のフローチャートに従って説明する。まず、位相確定フラグがOnであるかOffであるかの確認を行う(S301)。位相確定フラグがOnである場合は、位相確定処理(S303〜S309)を行わず、符号判定処理のみを行う(S302)。ただし、初期状態では位相は確定しておらず、位相確定フラグがOffとなっているので、候補符号テーブルB(p)の初期化を行う(S303)。候補符号テーブルB(p)は、1つの基準フレームおよび5個の位相変更フレームを特定するp=0〜5の位相番号および、この6個の音響フレームの状態から得られる2値の符号を記録するものである。
続いて、符号判定パラメータ算出手段140は、符号判定処理を行う(S302)。ここで、符号判定処理の詳細を図14に示す。まず、周波数変換手段130が、読み込んだ各音響フレームに対して、周波数変換を行って各窓スペクトルを得る(S401)。具体的には、上記〔数式12〕〔数式13〕に従った処理を実行し、変換データの実部A(1,j,p)、虚部B(1,j,p)、実部A(2,j,p)、虚部B(2,j,p)を得る。
S401の処理については、実際には、Aタイプ音響フレームについて周波数変換を行った後、N/2サンプルだけシフトしてBタイプ音響フレームについて周波数変換を行う。これらの変換データA(2,j,p)、B(2,j,p)、A(2,j,p)、B(2,j,p)に対して、上記〔数式14〕に従った処理を実行し、振幅変換を行う(S402)。
上記周波数変換手段130における処理により、周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、符号判定パラメータ算出手段140は、符号判定パラメータC、C´を上述のようにして算出した後、符号判定パラメータC、C´を用いて、変更対象周波数帯の成分の状態がどのような状態であるか、すなわち、1ビットの値としてどのような値が埋め込まれていたかを判断する処理を行う(S403)。具体的には、上記〔数式15〕〜〔数式19〕に従った処理を実行して、符号判定パラメータC、C´を算出する。そして、この両者を比較して、C≧C´であれば候補符号Bを候補符号テーブルB(p)に設定し、C<C´であれば候補符号B´を候補符号テーブルB(p)に出力する。
S403の具体的な処理手順としては、まず、上記〔数式15〕の1番目の式と2番目の式を利用して基本強度値E(1,j,p)、E(2,j,p)を算出した後、上記〔数式16〕の1番目から4番目までの式を利用してE1(p)、E2(p)、E3(p)、E4(p)を算出し、上記〔数式19〕に従って候補符号Bおよび符号判定パラメータCを算出する処理を行う。続いて、上記〔数式15〕の3番目から6番目までの式を利用して、残響補正処理を行って基本強度値E´(1,j,p)、E´(2,j,p)を算出する。そして、上記〔数式16〕の5番目から8番目までの式を利用してE1´(p)、E2´(p)、E3´(p)、E4´(p)を算出し、上記〔数式20〕に従って候補符号B´および補正符号判定パラメータC´を算出する処理を行う。
また、上記判定の結果、位相pにおける候補符号テーブルB(p)に値1、値2のいずれかを出力した場合には、さらに、以下の〔数式21〕に従って位相判定テーブルS(p)の更新を行う(S404)。
〔数式21〕
C≧C´である場合、S(p)←S(p)+C
C<C´である場合、S(p)←S(p)+C´
ここで、図13のフローチャートに戻って、符号判定パラメータ算出手段140は、候補符号テーブルB(p)に、位相pにおいて符号判定処理(S302)で仮決定された符号を保存する(S304)。
続いて、全ての位相番号pに対応する処理を終えたかどうかを判定する(S305)。これは、ある基準フレームに対して全ての位相変更フレームの処理を行ったかどうかを判定している。本実施形態では、pが0〜5までの値をとるので、6回分処理していない場合は、処理していた音響フレームから所定サンプル数ずらして、位相の異なる音響フレームを設定し、S302に戻って処理を繰り返す。なお、p=0の場合が基準フレームであり、p=1〜5の場合が位相変更フレームである。全ての位相番号pに対応する処理を終えた場合は、位相判定テーブルS(p)の値が最大となる位相番号pmaxに対応する位相が最適位相であると判定し、候補符号テーブルB(p)に記録されている符号B(pmax)を出力する(S306)。
続いて、位相決定ログの更新を行う(S307)。位相決定ログとは、1つの基準フレームと5つの位相変更フレームの組ごとに、決定された位相すなわち位相番号pを記録するものである。そして、位相決定ログを参照して、位相が過去所定回数同一であったかどうかを判断する(S308)。本実施形態では、この回数を10回としている。位相が過去所定回数同一であった場合には、位相確定フラグをOnに設定する(S309)。これにより、同一位相が所定回数続いた場合には、最適位相はpmaxとなる可能性が高いため、位相確定処理(S303〜S309)を行わず、位相番号p=pmaxに対してのみ符号判定処理(S302)を行うことになる。
再び図12のフローチャートに戻って説明する。位相確定および符号出力が行なわれたら、出力された符号の値に対応する1ビットをバッファに保存する(S203)。次に、ビットカウンタを“1”だけカウントアップする(S204)。
次に、ビットカウンタが11以下であるか12以上であるかを判断する(S205)。ビットカウンタが11以下の場合は、S201に戻って、次のAタイプ、Bタイプの基準フレームを抽出する処理を行う。
ビットカウンタが12以上である場合は、バッファに保存された12ビットのビット配列のデコードを行う(S206)。このデコード処理の詳細を、図15のフローチャートに従って説明する。
付加情報抽出手段160は、まず、初期化処理を行う(S701)。具体的には、7ビット符号KFおよび最小ハミング距離HDを定義するとともに、KF=0およびHD=2として初期化する処理を行う。続いて、i=0に初期設定する(S702)。次に、バッファに保存された12ビットのビット配列を12ビット符号HFとし、符号変換テーブルのi番目に対応する12ビット符号とのハミング距離hdを算出し、hd<HDの場合、KF=i、HD=hdに更新する(S703)。そして、iの値を1加算して(S704)、iの値が128未満である場合には、S703の処理を繰り返し行う。付加情報抽出手段160は、図5に示した符号変換テーブルに記録された128個のハミング符号全てについて、ハミング距離hdを算出し、最小ハミング距離HD、およびハミング距離が最小となる場合の7ビット基準符号KFを得る。
最小ハミング距離HDが得られたら、図12に戻って、得られた最小ハミング距離HDが0か、1以上かを判断する(S207)。S207において最小ハミング距離が1以上と判断された場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
S207において最小ハミング距離が0と判断された場合は、付加情報抽出手段160が、図15の処理により得られた7ビット基準符号KFに1ビット付加して出力する(S208)。S207において最小ハミング距離が0であった場合は、バッファ中の先頭の1ビット目が、付加情報内のワードの1ビット目であった可能性が高いことになる。このため、その先頭からの7ビットにビット“0”を付加することによりASCIIコードにおける1ワードとして出力するのである。ハミング距離が1以上の場合は、照合に用いた12ビットが、付加情報内のワードとずれている可能性が高いことになる。この場合は、先頭の1ビットを破棄して、S201からS204の処理により新たな1ビットを得るための処理を行う。
最小ハミング距離が0と判断された場合は、その部分がワードの区切りである可能性が高いので、それが本当に区切りであれば、以降は12ビットずつ抽出すれば、全て正確にワード単位で抽出を行うことができる。逆に、最小ハミング距離が0と判断されたとしても、それが偶然であり、実はワードの区切りではない場合も考えられる。このような場合は、次の検査の際に不適合となる可能性が高く、何回か繰り返しているうちに正しい区切りが正確に判断できることになる。S208において、7ビット基準符号KFに1ビット付加して出力した場合には、ビットカウンタを0に初期化する(S209)。そして、S201に戻って、次の基準フレームを抽出する処理を行う。
図12に示す処理を各基準フレームに対して実行することにより、付加情報が抽出されることになる。S201において全ての基準フレームが抽出されたと判断された場合には、処理を終了する。
上記S208の処理において、付加情報抽出手段160は、まず、符号出力手段150により出力された値を、所定の規則により変換して意味のある付加情報として抽出する。所定の規則としては、情報を埋め込む者が意図した情報が受け取った者に認識可能な状態にすることができるものであれば、さまざまな規則が採用できるが、本実施形態では、ASCIIコードを採用している。すなわち、付加情報抽出手段160は、符号判定パラメータ算出手段140が判定し、符号出力手段150から出力される符号から得られるビット値の配列を1バイト(8ビット)単位で認識し、これをASCIIコードに従って文字情報を認識する。このようにして得られた文字情報は、表示装置(図示省略)の画面に表示出力される。
従って、埋め込み装置により音響信号に、その楽曲の曲名やアーチスト等の属性情報を文字情報として埋め込んでおけば、利用者は、その音楽が流れているのを聞いて、その曲名やアーチストを知りたいと思ったときに、抽出装置として機能する自身の携帯端末に所定の操作を行えば、自身の携帯端末の画面に曲名やアーチスト等の属性情報が文字情報として表示されることになる。
上記の例では、図12のフローチャートに従ってエラー訂正を行わない設定における抽出装置の処理動作を説明した。エラー訂正を行わない場合は、エラーが生じない場合にのみ、付加情報1ワードの出力が可能となる。
次に、1ビットのエラー訂正をする設定における抽出装置の処理動作を、図16のフローチャートに従って説明する。図16においては、図12と同一処理を行う部分が含まれている。そこで、図12と同一処理を行う部分については、同一符号を付して説明を省略する。図16の例においても、まず、初期化処理を行う(S200)。この初期化処理では、図12の例と同様、位相判定テーブルS(p)、位相決定ログ、位相確定フラグ、ビットカウンタを初期化するが、さらに、自動訂正モードをOFFにする設定を行う。
続いて、図12と同様、所定数のサンプルで構成される音響フレームを基準フレームとして抽出した後(S201)、読み込んだ各音響フレームについて、位相を特定した後、埋め込まれている情報を判定し、対応する符号を出力する(S202)。なお、S202の処理については、図13、図14に示したようなものとなる。
位相確定および符号出力が行なわれたら、出力された符号の値に対応する1ビットをバッファに保存して(S203)、ビットカウンタを“1”だけカウントアップする(S204)。そして、ビットカウンタが11以下であるか12以上であるかを判断し(S205)、ビットカウンタが11以下の場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
ビットカウンタが12以上である場合は、バッファに保存された12ビットのビット配列のデコードを行う(S206)。続いて、得られたハミング距離が0か1以上かを判断する(S207)。S207においてハミング距離が0と判断された場合は、S208におけるビット列の出力処理の直前に、自動訂正モードをONに設定する処理を行う(S210)。
S207においてハミング距離が1以上と判断された場合は、さらにハミング距離が1か2以上かを判断する(S211)。判断の結果、ハミング距離が2以上と判断された場合には、自動設定モードをOFFに設定する処理を行った後(S212)、S201に戻って、次の基準フレームを抽出する処理を行う。
S211における判断の結果、ハミング距離が1と判断された場合には、自動訂正モードがONであるかOFFであるかの確認を行う(S213)。自動訂正モードがOFFである場合は、S201に戻って、次の基準フレームを抽出する処理を行う。
自動訂正モードがONである場合は、付加情報抽出手段160が、図15の処理により得られた7ビット基準符号KFに1ビット付加して出力する(S208)。そして、ビットカウンタを0に初期化する(S209)。
図16の例のように、1ビットのエラー訂正をする設定の場合は、1ビットのエラーが生じた場合であっても、付加情報1ワードの出力が可能となる。
(3.3.位相補正処理について)
上記のように、抽出時には、埋め込み時に埋め込んだ音響フレームに対応して、音響信号を読み込むことができるとは限らない。そこで、音響フレームの位相をずらして複数通り(本実施形態では6通り)で読み込み、その中で最適な位相を決定し、その位相で特定される音響フレームに対応する符号を出力することにしている。例えば、6通りで読み込む場合、先頭の音響フレームは、本来サンプル番号1〜4096のサンプルであるが、サンプル番号1、683、1366、2049、2732、3413から始まる4096のサンプルで構成される6個の各音響フレームに対して処理を行い、最適な音響フレームに対応する符号を出力することになる。なお、図13のフローチャートを用いて説明したように、本実施形態では、同一位相が所定回数連続した場合には、それ以降はその位相を確定したものとして処理を行う。
(4.ビット配列のビット数Nh、ハミング距離を変更した場合)
上記実施形態では、ビット配列作成の際、作成されるビット配列は、12ビット(Nhビット)でハミング距離が4となるようにしたが、ビット配列のビット数Nh、およびハミング距離は、適宜変更することが可能である。一般に、ビット配列のビット数Nhを大きくすれば、符号化効率は悪くなるが、訂正可能な誤りビット数は増えることになる。したがって、マイクロフォンの感度や演算処理能力が比較的高い抽出装置を用いる場合には、ビット数、ハミング距離が小さいビット配列を作成するようにし、マイクロフォンの感度や演算処理能力が比較的低い抽出装置を用いる場合には、ビット数、ハミング距離が大きいビット配列を作成するようにする。
ここでは、ビット配列のビット数Nhを16、ハミング距離を6とした場合の例について説明する。ビット配列のビット数を16、ハミング距離を6とした場合も、変換テーブル作成手段80による符号変換テーブル作成は、基本的には、図4に示したフローチャートに従って行われる。ただし、HFが16ビット符号である点、S603において16ビット符号HFと符号変換テーブルに既に登録されている他の16ビット符号とのハミング距離を算出した後、S604、S605のいずれに進むかの閾値が、ハミング距離が6未満か、6以上かで決まる点が、ビット数Nh=12、ハミング距離4の場合と異なっている。
このようにして作成された符号変換テーブルを図17に示す。図17に示すように、符号変換テーブルには、7ビット符号が取り得る各値0〜127について、16ビット符号が対応付けて登録されている。16ビット符号の2進表記を見るとわかるように、全ての16ビット符号は互いにハミング距離が6以上となっている。なお、図17の例では、説明の便宜上、7ビット符号の10進表記と、16ビット符号の10進表記及び2進表記を示しているが、現実には、7ビット符号のビット列と16ビット符号のビット列が対応付けて登録されている。
符号変換テーブル作成処理後は、図6のフローチャートに従って埋め込み処理が行われる。この際、1ワードとして、16ビット分の処理が行われることになる。
抽出時には、変換テーブル作成手段180が、最初に、符号変換テーブルを作成する。符号変換テーブルが作成された後は、図12〜図16に従った処理により、付加情報が抽出されることになる。16ビット符号を扱う場合、図12、図16におけるS205においては、ビットカウンタが15以下か16以上かで判断を行うことになる。また、図15のS701においては、最小ハミング距離HD=3として初期化し、S703においては、HFが16ビット符号として定義される。また、図16のS212に進むのは、最小ハミング距離が3以上の場合となる。
(5.信号成分が小さい場合にさらに確実に情報の埋め込みを行う手法)
ここまでの説明のように、本発明では、元の信号成分に無音に近い部分があっても、情報の埋め込みを可能とするものである。このままでも、もちろん十分であるが、本発明においては、より確実に情報を埋め込むような処理を付加することも可能である。具体的には、周波数変換を行う前に、音響信号に聴取困難な微弱な白色ノイズを重畳させる。
この場合、図1に示した音響フレーム読込手段10は、所定数のサンプルを1音響フレームとして読み込んだ後、所定の振幅範囲で所定サンプル数単位で同一値を加算または減算する機能を有している。本実施形態では、左チャンネル信号Xl(i)、右チャンネル信号Xr(i)(i=0,…,N−1)に対して、−32〜+32の振幅範囲(Xl(i)、Xr(i)のとり得る値が−32768〜+32767の場合)で一様乱数Hを発生させ、K(本実施形態ではK=5)個のサンプル間は同一値Hを用いて以下の〔数式22〕に示すような処理を実行し、Xl(i)、Xr(i)の値を更新する。
〔数式22〕
Xl(i)←Xl(i)+H
Xr(i)←Xr(i)−H
すなわち、上記〔数式22〕に従った処理をNサンプルに渡って実行することにより、1つの音響フレームに白色ノイズが発生されることになる。この白色ノイズの発生処理は、図6のフローチャートにおいては、S103、S104の音響フレーム抽出処理の直後に行われることになる。
上記のように、白色ノイズを発生させた場合であっても、抽出側の、音響信号からの情報の抽出装置の構成は図11と同一であり、処理動作は図12〜図16のフローチャートに従ったものと同一である。
(6.抽出時に符号逆変換テーブルを作成する場合)
上記実施形態では、抽出装置は、バッファにNh(12又は16)ビットが保存された状態で、図15に示した処理を実行することにより、対応する7ビットの基準符号KFを得るようにしたが、この場合、1ワード単位で図15に示した処理を実行することになるため、処理負荷が大きくなる。このような処理負荷を小さくするためには、得られたNhビットを、Nwビットに変換するための符号逆変換テーブルを作成しておくことが望ましい。ここでは、このような符号逆変換テーブルを利用する場合について説明する。
この場合、抽出装置の変換テーブル作成手段180は、変換テーブル作成手段80の機能に加え、符号逆変換テーブルを作成する機能を備えるとともに、付加情報抽出手段160が、図15に従った処理を行う機能に代えて、符号逆変換テーブルを参照する機能を備える。具体的には、付加情報抽出手段160は、図12、図16のS206において、図15に従った処理を実行する代わりに、符号逆変換テーブルを参照することになる。
この場合、変換テーブル作成手段180は、Nh(>Nw)ビットの全ハミング符号に対して、変換対象となるハミング符号までのハミング距離を記録するとともに、このハミング距離が所定以下のハミング符号に対しては、対応するNwビットの登録順位が対応付けられた符号逆変換テーブルを作成する機能を有する。
抽出装置を起動すると、まず、変換テーブル作成手段180が、符号逆変換テーブルを作成する。変換テーブル作成手段180による符号逆変換テーブルの作成は、最初に、変換テーブル作成手段80と同様の処理を行って符号変換テーブルを作成した後、この符号変換テーブルを利用して行う。
符号逆変換テーブルは、Nhビットの全ハミング符号に対して、各々符号変換テーブルに登録されているハミング符号までの最小のハミング距離を記録するとともに、このハミング距離が所定以下のハミング符号に対しては、逆変換先となるNwビットの登録順位(当該ハミング距離をもつハミング符号が符号変換テーブルに登録されている登録順位)が対応付けられたものであるので、Nh=12の場合、HF=0〜4095までの各ハミング符号について作成されることになる。HFの値を特定した場合の処理は、図15に示したものと同じである。S704において、iの値が128以上となった場合、ハミング距離HDが0または1であった場合には、ハミング符号HFと対応付けて、7ビット符号KFおよび最小ハミング距離HDを符号逆変換テーブルに登録する。
図15に示した処理を、HF=0〜4095の全てについて実行することにより、図18に示すような符号逆変換テーブルが作成される。図18に示すように、符号逆変換テーブルには、12ビット符号HFが取り得る各値0〜4095について、ハミング距離が対応付けて登録されているとともに、ハミング距離が1以下となったものについては、対応する7ビット符号KFが登録されている。なお、図18の例では、説明の便宜上、7ビット符号の10進表記と、12ビット符号の10進表記及び2進表記を示しているが、現実には、7ビット符号のビット列と12ビット符号のビット列が対応付けて登録されている。
また、Nh=16の場合、図15に示した処理を、HF=0〜65535の全てについて実行することにより、図19に示すような符号逆変換テーブルが作成される。
そして、図12のS206の処理を行う際には、Nh=12の場合は、得られた12ビットで図18を参照し、対応する7ビット符号KFと、ハミング距離を得ることになり、Nh=16の場合は、得られた16ビットで図19を参照し、対応する7ビット符号KFと、ハミング距離を得ることになる。
(7.ネットワーク接続への応用)
本発明は、特に、抽出した情報を利用して、コンピュータネットワークに接続するのに適している。例えば、特許文献2に示したようなネットワーク接続装置内に本発明の抽出装置を組み込んでおき、抽出した情報をURL等のコンピュータにアクセスするための情報に変換して利用する。このような用途に用いる場合は、URL等に変換するテーブルさえ用意しておけば、埋め込んでおく情報は、非常に短いもので済む。したがって、利用者が録音するのに面倒とならない極めて短時間であっても、その間に、繰り返し埋め込んでおくことができる。そして、本発明では、繰り返し埋め込まれている情報については、その繰り返しの周期に従って過去を参照して、抽出するため、より精度の高い抽出を行うことができる。
また、抽出した情報は、単位文字列が繰り返し含まれているので、区切りとなる文字を埋め込んでおく必要がある。例えば、“#”を区切りとし、抽出装置に設定しておくことにより、抽出装置では、“#”を除外した文字列を意味のある文字列として、抽出することができる。例えば、“#02#02#02”という文字列が抽出された場合には、“02”にだけ意味があることを認識し、これをURL等の情報に変換する。
(8.その他)
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、1音響フレームのサンプル数N=4096としたが、N=2048、1024、512等を設定するようにしても良い。これにより、同一時間あたりの音響フレーム数が、2倍、4倍、8倍となり、全体として2〜8倍の情報の埋め込みが可能となる。
また、上記実施形態では、音響信号からの情報の抽出装置を、携帯電話機等の携帯型端末装置単体で実現した場合を例にとって説明したが、他のコンピュータと連携して実現するようにしても良い。具体的には、携帯型端末装置と専用コンピュータを無線通信可能に接続し、音響信号入力手段100〜音響フレーム保持手段170の構成要素のうち、演算負荷の大きいものは、専用コンピュータで処理する。例えば、音響信号入力手段100、基準フレーム獲得手段110、位相変更フレーム設定手段120、付加情報抽出手段160、変換テーブル作成手段180を携帯型端末装置に備え、周波数変換手段130、符号判定パラメータ算出手段140、符号出力手段150、音響フレーム保持手段170を専用コンピュータに備えるようにして、必要な情報を両者間で通信するようにする。これにより、携帯型端末装置の処理性能が低い場合であっても高速な処理を行うことが可能となる。
また、上記実施形態では、2チャンネルのステレオ音響信号を利用した場合を例にとって説明したが、1チャンネルのモノラル音響信号を利用しても良い。この場合は、上記LチャンネルまたはRチャンネルのいずれか一方に対して行った処理を実行すれば良い。
また、周波数成分変更手段30による所定周波数成分の変更を、図3および〔数式8〕〔数式9〕に従って実行するようにしたが、埋め込むべきビット値に応じた周波数成分の変更は、様々なものを用いることができ、例えば特許文献1に示したような手法を用いることも可能である。この場合、抽出側においても、当然その埋め込み手法に応じた手法で抽出が行われる。