以下、本発明の実施形態について図面を参照して詳細に説明する。
(1.埋め込み装置)
まず、音響信号に対して情報を埋め込むための埋め込み装置について説明する。図1は、埋め込み装置の構成を示す機能ブロック図である。図1において、10は音響フレーム読込手段、20は周波数変換手段、30は低周波成分変更手段、40は周波数逆変換手段、50は改変音響フレーム出力手段、60は記憶手段、61は音響信号記憶部、62は付加情報記憶部、63は改変音響信号記憶部、70は付加情報読込手段である。
音響フレーム読込手段10は、付加情報の埋め込み対象とする元のステレオ音響信号の各チャンネルから所定数のサンプルを1フレームとして読み込む機能を有している。周波数変換手段20は、音響フレーム読込手段10が読み込んだ音響信号のフレームをフーリエ変換等により周波数変換してフレームスペクトルを生成する機能を有している。低周波成分変更手段30は、生成された複数のフレームスペクトルから所定の周波数以下に相当する各低周波強度データを抽出し、付加情報記憶部62から抽出した付加情報に基づいて、チャンネル間で対応する低周波強度データのチャンネル間比率を変更する機能を有している。周波数逆変換手段40は、変更された低周波強度データを含む複数のフレームスペクトルに対して周波数逆変換を行うことにより、複数の改変音響フレームを生成する機能を有している。改変音響フレーム出力手段50は、生成された改変音響フレームを順次出力する機能を有している。記憶手段60は、付加情報を埋め込む対象とするステレオ音響信号を記憶した音響信号記憶部61と、ビット配列として構成され、ステレオ音響信号に埋め込まれる付加情報を記憶した付加情報記憶部62と、付加情報埋め込み後の改変音響信号を記憶する改変音響信号記憶部63を有しており、その他処理に必要な各種情報を記憶するものである。付加情報読込手段70は、付加情報記憶部62から付加情報を抽出する機能を有している。なお、付加情報とは、音響情報に付加して埋め込むべき情報であり、タイトルやアーティスト名等の属性情報、および属性情報以外の他の情報を含むものである。図1に示した各構成手段は、現実にはコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
(2.埋め込み装置の処理動作)
次に、図1に示した埋め込み装置の処理動作について図2のフローチャートに従って説明する。図2は、付加情報1バイトの処理に対応したものとなっている。まず、付加情報読込手段70は、付加情報記憶部62から付加情報を1バイト単位で読み込む(S101)。具体的には、レジスタに1バイト読み込むことになる。続いて、モードを区切りモードに設定する(S102)。モードは区切りモードと、ビットモードの2種類が存在する。区切りモードは1バイト単位の区切りにおける処理を行うモードを示し、ビットモードは1バイトの各ビットの値に基づいた処理を行うモードを示している。付加情報記憶部62から1バイト読み込んだ場合には、その直後に必ず区切りモードに設定されることになる。
続いて、音響フレーム読込手段10が、音響信号記憶部61に記憶されたステレオ音響信号の左右の各チャンネルから、それぞれ所定数のサンプルを1音響フレームとして読み込む(S104)。音響フレーム読込手段10が読み込む1音響フレームのサンプル数は、適宜設定することができるが、サンプリング周波数が44.1kHzの場合、4096サンプル程度とすることが望ましい。したがって、音響フレーム読込手段10は、左チャンネル、右チャンネルについてそれぞれ4096サンプルずつ、順次音響フレームとして読み込んでいくことになる。
続いて、周波数変換手段20は、読み込んだ各音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る(S105)。周波数変換としては、フーリエ変換、ウェーブレット変換その他公知の種々の手法を用いることができる。本実施形態では、フーリエ変換を用いた場合を例にとって説明する。フーリエ変換を行う場合、左チャンネル信号xl(i)、右チャンネル信号xr(i)(i=0,…,N−1)に対して、以下の〔数式1〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(j)、虚部Bl(j)、右チャンネルに対応する変換データの実部Ar(j)、虚部Br(j)を得る。
〔数式1〕
Al(j)=Σi=0,…,N-1xl(i)・cos(2πij/N)
Bl(j)=Σi=0,…,N-1xl(i)・sin(2πij/N)
Ar(j)=Σi=0,…,N-1xr(i)・cos(2πij/N)
Br(j)=Σi=0,…,N-1xr(i)・sin(2πij/N)
〔数式1〕において、iは、各音響フレーム内のN個のサンプルに付した通し番号であり、i=0,1,2,…N−1の整数値をとる。また、jは周波数の値について、値の小さなものから順に付した通し番号であり、iと同様にj=0,1,2,…N−1の整数値をとる。サンプリング周波数が44.1kHz、N=4096の場合、jの値が1つ異なると、周波数が10.8Hz異なることになる。この際、音響信号xl(i)、xr(i)には、それぞれW(i)=0.5−0.5・cos(2πi/N)で表現される窓関数(ハニング窓)を重みとして乗じる。このような窓関数は、フーリエ変換を行う際に、周波数成分に波形を分断することにより発生する高周波ノイズを低減するためと、フーリエ逆変換を行う際に解析区間(音響フレームに相当)の間で信号レベルが不連続にならないように連結させるために用いられるものであり、周知の技術である。
上記〔数式1〕に従った処理を実行することにより、各音響フレームの信号成分を周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、低周波成分変更手段30が、生成された複数のフレームスペクトルから所定の周波数以下の低周波強度データを抽出する。人間の聴覚は、200〜300Hz程度までの低周波成分については、方向性を感知しにくくなっていることが知られている(コロナ社1990年10月30日発行「音響工学講座1.基礎音響工学、日本音響学会編」p247図9・26参照)。したがって、本実施形態では、所定の周波数として200Hz程度を設定し、周波数が200Hz以下の低周波強度データを抽出することにしている。周波数200Hz付近は、上記jが20に相当するので、上記〔数式1〕により算出された実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)のうち、j≦20のものを抽出することになる。
続いて、低周波成分変更手段30は、抽出した実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)を利用して、以下の〔数式2〕によりj=1〜M(200Hz以下を抽出する場合は、20)までの低周波強度の合計値を算出する。
〔数式2〕
E=Σj=1,…,M{Al(j)2+Bl(j)2+Ar(j)2+Br(j)2}
上記〔数式2〕により算出されたEは、フレームスペクトルにおける低周波成分の合算値を示すことになる。続いて、この合算値Eがレベル下限値Lev以上であるかどうかの判定を行う。レベル下限値Levは、音響信号xl(i)、xr(i)の振幅最大値が1に正規化されており、M=20に設定されている場合、4程度に設定する。合算値Eがレベル下限値Lev以上であるかどうかを判断するのは、信号の強度が小さいと、信号を変化させても、その変化を抽出側で検出することができないためである。したがって、合算値Eがレベル下限値Lev未満である場合は、付加情報のビット値に応じた記録をせず、先頭ビットから再度処理するため、読み込み位置を先頭ビットに戻し、モードを区切りモードに設定する(S106)。一方、合算値Eがレベル下限値Lev以上である場合には、モードを判断することになる。
低周波成分変更手段30は、モードが区切りモードである場合、低周波強度を左右のチャンネルで同一とする処理を行う(S108)。すなわち、低周波成分の音源を中央へ移動することになる。具体的には、以下の〔数式3〕に従った処理を実行することになる。
〔数式3〕
E(j)=[0.5・{Al(j)2+Bl(j)2+Ar(j)2+Br(j)2}]1/2
Al(j)←Al(j)・E(j)/{Al(j)2+Bl(j)2}1/2
Bl(j)←Bl(j)・E(j)/{Al(j)2+Bl(j)2}1/2
Ar(j)←Ar(j)・E(j)/{Ar(j)2+Br(j)2}1/2
Br(j)←Br(j)・E(j)/{Ar(j)2+Br(j)2}1/2
上記〔数式3〕において、第2式から第5式における“←”は右辺の計算結果を左辺に代入することを示している。上記〔数式3〕に従った処理を実行することにより、フレームスペクトルの低周波数成分は、左右チャンネル均等のパターンに変更されることになる。この左右チャンネル均等のパターンは、付加情報の先頭位置(区切り)を示す情報となる。
一方、低周波成分変更手段30は、モードがビットモードである場合、付加情報記憶部62から抽出した付加情報のビット配列のビット値に応じて、低周波成分の左右チャンネル間の分布を左チャンネル大か、右チャンネル大かのいずれかに変更する処理を行う(S107)。すなわち、低周波成分の音源を左又は右へ移動することになる。具体的には、第1の値と第2の値をとり得るビット値に応じて以下の〔数式4〕、〔数式5〕のいずれかに従った処理を実行することにより、低周波成分の左右分布を変更する。例えば、第1の値を1、第2の値を0とした場合、ビット値が1のとき、以下の〔数式4〕に従った処理を実行する。
〔数式4〕
E(j)={Al(j)2+Bl(j)2+Ar(j)2+Br(j)2}1/2
Ar(j)←Ar(j)・E(j)/{Ar(j)2+Br(j)2}1/2
Br(j)←Br(j)・E(j)/{Ar(j)2+Br(j)2}1/2
Al(j)=0
Bl(j)=0
ビット値が0の場合、以下の〔数式5〕に従った処理を実行する。
〔数式5〕
E(j)={Al(j)2+Bl(j)2+Ar(j)2+Br(j)2}1/2
Al(j)←Al(j)・E(j)/{Al(j)2+Bl(j)2}1/2
Bl(j)←Bl(j)・E(j)/{Al(j)2+Bl(j)2}1/2
Ar(j)=0
Br(j)=0
上記〔数式4〕、〔数式5〕のいずれかに従った処理を実行することにより、付加情報のビット配列の各ビット値に応じて、低周波数成分が左チャンネル、右チャンネル、のどちらかのパターンに変更されることになる。結局、低周波成分変更手段30は、区切りモードの場合に〔数式3〕に基づく処理をS108において行い、ビットモードの場合に〔数式4〕又は〔数式5〕に基づく処理をS107において行うことになる。
次に、周波数逆変換手段40が、低周波強度データのチャンネル間比率が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う(S109)。この周波数逆変換は、当然のことながら、周波数変換手段20がS105において実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ逆変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。具体的には、上記〔数式3〕〜〔数式5〕のいずれかにより得られたスペクトルの左チャンネルの実部Al(j)、虚部Bl(j)、右チャンネルの実部Ar(j)、虚部Br(j)を用いて、以下の〔数式6〕に従った処理を行い、xl´(i)、xr´(i)を算出する。
〔数式6〕
xl´(i)=1/N・{Σj=0,…,N-1Al(j)・cos(2πij/N)−Σj=0,…,N-1Bl(j)・sin(2πij/N)}+{1−W(i)}・xl(i)
xr´(i)=1/N・{Σj=0,…,N-1Ar(j)・cos(2πij/N)−Σj=0,…,N-1Br(j)・sin(2πij/N)}+{1−W(i)}・xr(i)
上記〔数式6〕における第1式の“+{1−W(i)}・xl(i)”、第2式の“+{1−W(i)}・xr(i)”の項は、上記〔数式1〕において周波数変換する際に、窓関数W(i)を乗じることにより除去された信号成分を復元するためのものである。上記〔数式6〕により改変音響フレームの左チャンネルの各サンプルxl´(i)、右チャンネルの各サンプルxr´(i)、が得られることになる。改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する(S110)。こうして1つの音響フレームに対する処理を終えたら、モードをビットモードに設定した後(S111)、付加情報読込手段70が付加情報のビット配列中の次のビットを読み込む(S103)。以上のような処理を音響信号の両チャンネルの全サンプルに渡って実行していく。すなわち、所定数のサンプルを音響フレームとして読み込み、音響信号から読み込むべき音響フレームがなくなったら(S104)、処理を終了する。なお、S101において読み込んだ1バイトのデータの各ビットに対応する処理を終えた場合、S103からS101に戻り、付加情報の次のバイトを読み込み処理をすることになる。付加情報の全バイトに対して、処理が終了した場合は、付加情報の先頭バイトに戻って処理を行う。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段60内の改変音響信号記憶部63に出力され、記憶される。
以上の処理による信号の変化の様子を図3を用いて説明する。図3において、左右方向は、時間軸であり、サンプル数に比例する。L、Rはそれぞれ改変音響信号の左チャンネル、右チャンネルを示している。また、図中多数存在する矩形は、改変音響フレームの低周波成分を示し、その横幅はサンプル数(本実施形態では、4096)、縦幅は強度を示している。図3(a)は、上記〔数式2〕により算出された合算値Eがレベル下限値未満となる音響フレームが存在しない場合、すなわち、付加情報を埋め込むには、良好な信号である場合を示している。図3(b)は、上記〔数式2〕により算出された合算値Eがレベル下限値未満となる音響フレームが存在する場合、すなわち、付加情報を埋め込むには、良好でない信号である場合を示している。
例えば、付加情報として、1バイト目が「11011100」、2バイト目が「11000001」の2バイトのビット配列を埋め込むとする。まず、各バイトの先頭には、区切りを示す情報として、左右均等な状態に設定されることになる。これは、S102により区切りモードに設定され、S108において、上記〔数式3〕に従った処理を実行した結果得られる。また、図3(a)の例では、合算値Eがレベル下限値Lev未満となる音響フレームが存在しないため、1バイトが連続して上記〔数式4〕又は〔数式5〕により処理されることになる。これは、S103からS111を経由するループが8回連続して繰り返され、その間レベル下限値未満であるとしてS106およびS108を経由することがなかったことを示している。図に示すように、付加情報のビット値が1の場合は、R側に存在し、付加情報のビット値が0の場合は、L側に低周波成分が設定される。上記〔数式4〕、〔数式5〕からもわかるように、この場合は他方の低周波成分は0となる。
図3(b)の例では、上記〔数式2〕に従った処理の結果、レベル下限値Lev未満となる音響フレームが存在するので、この場合S106およびS108を経由して、上記〔数式3〕に従った処理を実行した結果左右均等な状態に設定される。この場合、S106において、読み込み位置が先頭ビットに戻されるため、再び同じビットを読むことになる。図3(b)の例では、1バイト目の「11011100」を埋め込む場合に、最初は「11」の2ビット処理した時点でレベル下限値Lev未満の音響フレームが出現し、2度目は「11011」の5ビット処理した時点でレベル下限値Lev未満の音響フレームが出現し、3度目でようやく8ビット処理することができたことを示している。
しかし、図2に従った処理を行った場合には、図3(b)に示したように、低周波成分の信号レベルが小さい音響フレームが出現するたびに、1バイト単位で先頭から繰り返して処理することになるため、効率が悪い。そこで、図2に代えて、図4に示すような処理を行うようにしても良い。
図4に示す処理で、図2に示す処理と大きく異なるのは、区切りモード、ビットモードの他に継続識別モードを備え、3つのモードとし、低周波成分の信号レベルが小さい音響フレームが出現した場合であっても、先頭に戻らず、継続して処理するようにした点である。そのため、継続識別モードにおいては、次のビットが先頭から始まる新規なものか、中断されたために継続されたものであるかを識別するための情報を記録することになる。なお、図4の処理では、付加情報の処理をバイト単位でなく、ワード単位で行っている。これは、図2のS106に示したように、強制的に読み込み位置を先頭に戻す処理がないため、バイト以外の単位で処理するのが容易であるためである。1ワードのビット数は自由に設定でき、1バイトに設定することもできる。
図4の処理については、図2の処理と共通する部分が多いため、異なる部分について説明していく。まず、付加情報読込手段70は、付加情報記憶部62から付加情報を1ワード単位で読み込む(S201)。その後、モードを区切りモードに設定し(S202)、音響フレーム読込手段10が、音響信号記憶部61に記憶されたステレオ音響信号の左右各チャンネルから、音響フレームを読み込み(S204)、周波数変換手段20が、読み込んだ各音響フレームに対して、〔数式1〕に従って周波数変換を行ってフレームスペクトルを得て(S205)、低周波成分変更手段30が、抽出した実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)を利用して、〔数式2〕により合算値Eを算出し、合算値Eがレベル下限以上であるかどうかを判断するところまでは同一である。ただし、図4の処理においては、合算値Eがレベル下限値未満である場合は、モードを区切りモードに設定するだけである(S206)。一方、合算値Eがレベル下限値以上である場合には、モードを判断することになる。
低周波成分変更手段30は、モードが区切りモードである場合、上記〔数式3〕に従って、低周波強度を左右のチャンネルで同一とする処理を行う(S208)。一方、低周波成分変更手段30は、モードがビットモードである場合、上記〔数式4〕、〔数式5〕に従って、付加情報記憶部62から抽出した付加情報のビット配列のビット値に応じて、低周波強度の左右チャンネル間の比率を変更する処理を行う(S207)。また、S207においては、図2のS107と異なり、継続識別モードである場合にも処理を行う。継続識別モードである場合、新規であるときは〔数式4〕に従って低周波成分の左右チャンネル間の分布を右チャンネル大に変更し、継続であるときは〔数式5〕に従って低周波成分の左右チャンネル間の分布を左チャンネル大に変更する。
次に、周波数逆変換手段40が、低周波強度データのチャンネル間比率が変更されたフレームスペクトルを〔数式6〕に従って周波数逆変換して改変音響フレームを得る処理を行い(S209)、改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する(S210)。こうして1つの音響フレームに対する処理を終えたら、モードの判定を行い(S211)、モードが区切りモードである場合は、モードを継続識別モードに設定した後(S212)、音響フレーム読込手段10が、音響フレームを読み込む(S204)。一方、モードがビットモード又は継続識別モードである場合は、モードをビットモードに設定した後(S213)、低周波成分変更手段30が付加情報のビット配列中の次のビットを読み込む(S203)。そして、全音響フレームの処理を行い、音響信号から読み込むべき音響フレームがなくなったら(S204)、処理を終了する。
図4に従った処理による信号の変化の様子を図5を用いて説明する。図5においては、図3と同様、左右方向は時間軸であり、図中多数存在する矩形は、改変音響フレームの低周波成分を示し、その横幅はサンプル数、縦幅は強度を示している。図5(a)は、図3(a)と同様、上記〔数式2〕により算出された合算値Eが、レベル下限値以上となる音響フレームが存在しない場合を示しており、図5(b)は、図3(b)と同様、上記〔数式2〕により算出された合算値Eが、レベル下限値未満となる音響フレームが存在する場合を示している。
また、図2の処理との比較のため、埋め込む付加情報も、図3の場合と同様、1バイト目が「11011100」、2バイト目が「11000001」の2バイトのビット配列とする。図3と同様、各バイトの先頭には、区切りを示す情報として、左右均等な状態に設定されることになる。これは、S202により区切りモードに設定され、S208において、上記〔数式3〕に従った処理を実行した結果得られる。続いて、付加情報の各ビットに対応した処理を行う前に、新規であるか継続であるかを示す情報を記録することになる。図2に示す処理によれば、レベル下限値未満となる音響フレームが存在した場合には、処理するビットを各バイトの先頭に戻して処理するため、全て新規となるが、図4に示す処理では、レベル下限値未満となる音響フレームが存在した場合であっても、その時点で処理したビットは有効とし、そこから継続して行うため、そのビットが新規であるか継続であるかの情報を記録しておく必要がある。そこで、区切りを示す情報を記録した後には、新規であるか継続であるかを示す情報を記録する。具体的には、区切りモードの状態で、モード判断を行うことにより(S211)、継続識別モードに設定され(S212)、付加情報のビットを読み込むことなく、音響フレームの抽出を行う(S204)。そして、周波数変換後(S205)、新規である場合には、〔数式4〕に従った処理により、低周波成分の左右チャンネル間の分布を右チャンネル大に変更する(S207)。
このようにして、新規か継続かを示す情報を記録した後は、継続識別モードの状態でモード判断を行うため(S211)、ビットモードに設定され(S213)、レジスタから先頭のビットを読み込み(S203)、音響フレームの抽出を行う(S204)。図5(a)の例では、レベル下限値未満となる音響フレームが存在しないため、1バイトが連続して上記〔数式4〕又は〔数式5〕により処理されることになる。これは、S203からS213を経由するループが8回連続して繰り返され、その間レベル下限値未満であるとしてS206およびS208、S212を経由することがなかったことを示している。
図5(b)の例では、上記〔数式2〕に従った処理の結果、レベル下限値未満となる音響フレームが存在するので、この場合S206およびS208を経由して、上記〔数式3〕に従った処理を実行した結果左右均等な状態に設定される。この場合、S206において、区切りモードに設定されるため、S212を経由して、新規か継続かを示す情報を記録することになる。図5(b)の例では、1バイト目の「11011100」を埋め込む場合に、最初は第1ビット目の「1」の1ビット処理した時点でレベル下限値未満の音響フレームが出現しているため、区切りを示す情報を記録した後、継続を示す情報を記録し、継続して第2ビット目の「1」から処理をしている。そして、第2ビット目から第5ビット目の「1011」を処理した時点でレベル下限値未満の音響フレームが出現しているため、区切りを示す情報を記録した後、継続を示す情報を記録し、継続して第6ビット目の「1」から処理をしている。
なお、図5の例では、図3との比較のため、付加情報がバイト単位で記録されている場合について説明したが、図4に示す処理は、新規か継続かを示す情報を記録するため、付加情報を任意のビット数単位で記録することが可能である。
上記の例では、区切り情報を固定長のバイト単位又は可変長のワード単位で区切りを示す情報を挿入するようにしたが、さらにビット単位で区切りを示す情報を挿入することも可能である。この場合、音響フレーム読込手段10が音響フレームの抽出を行う際、前後の音響フレームに重複する重複音響フレームを抽出し、この重複音響フレームに対して、〔数式1〕に従って周波数変換を行い、さらに、〔数式3〕に従って左右チャンネルの低周波成分を均等にする処理を行う。重複音響フレームは、前後の音響フレームと半数づつサンプルが重複するように設定する。例えば、先行する音響フレームがサンプル番号1から4096まで、後続する音響フレームがサンプル番号4097から8192までである場合、この間に設定される重複音響フレームはサンプル番号2049から6144までとなる。同様にして、音響信号の全区間について、重複音響フレームを読み込み、左右チャンネルの低周波成分を均等にする処理を行うことになる。
上記のように、重複音響フレームを設定して、その左右チャンネルの低周波成分を均等にする処理を行った場合、これを改変音響信号に反映させるため、左右チャンネルの低周波成分を均等にする処理後の重複フレームスペクトルに対して周波数逆変換を行って改変重複音響フレームを得て、さらに音響フレームと連結する処理を行う必要がある。この場合、窓関数W(i)を乗じることにより音響フレームから除去された信号成分を、重複音響フレームの信号と連結することにより補うことが可能となるため、上記〔数式6〕における第1式の“+{1−W(i)}・xl(i)”、第2式の“+{1−W(i)}・xr(i)” の項が不要となる。したがって、この場合、重複フレームスペクトルに対する周波数逆変換、およびフレームスペクトルに対する周波数逆変換(S109、S209)は上記〔数式6〕ではなく、以下の〔数式7〕に従って処理することになる。
〔数式7〕
xl´(i)=1/N・{Σj=0,…,N-1Al(j)・cos(2πij/N)−Σj=0,…,N-1Bl(j)・sin(2πij/N)}
xr´(i)=1/N・{Σj=0,…,N-1Ar(j)・cos(2πij/N)−Σj=0,…,N-1Br(j)・sin(2πij/N)}
上記〔数式7〕により改変音響フレーム、改変重複音響フレームの左チャンネルの各サンプルx´l(i)、右チャンネルの各サンプルx´r(i)、が得られることになる。改変音響フレーム出力手段50は、S110、S210において、得られた改変音響フレームおよび改変重複音響フレームを順次連結して出力ファイルに出力する。上述のように、音響フレームおよび重複音響フレームは、音響フレーム読込手段10により音響信号から読み込む際、音響フレームと重複音響フレームに同一のサンプルが重複して含まれるように処理されている。したがって、音響フレーム出力手段50においては、重複して読み込まれたサンプルについて、各サンプルの値を合算した値として、出力ファイルに記録していく。
このようにして得られた改変音響信号のうち、付加情報が埋め込まれている部分については、低周波成分は、双方のチャンネルに均等に存在するか、あるいはどちらか一方のチャンネルに偏在するかの3通りの分布しかないことになる。しかし、高周波成分については、元の音響信号のままであるので、両チャンネルから制作者の設定に基づいた種々な分布になる。人間の聴覚は、高周波成分については、方向性を感知し易いが、低周波成分については、方向性を感知しにくくなっている。したがって、低周波成分が一方に偏っていても、聴いている人にとっては、通常の音響信号と変わりなく聴こえることになる。
(3.音響信号からの情報の抽出装置)
次に、本発明に係る音響信号からの情報の抽出装置について説明する。図6は、本発明に係る音響信号からの情報の抽出装置の一実施形態を示す構成図である。図6において、100は音響信号入力手段、110は基準フレーム獲得手段、120は位相変更フレーム設定手段、130は周波数変換手段、140は符号判定パラメータ算出手段、150は符号出力手段、160は付加情報抽出手段、170は音響フレーム保持手段である。
音響信号入力手段100は、流れている音声をデジタル音響信号として取得し、入力する機能を有している。現実には、マイクロフォンおよびA/D変換器により実現される。マイクロフォンとしては、左右の2チャンネルからの音声入力が可能な指向性マイクロフォンであることが必要である。基準フレーム獲得手段110は、入力されたデジタルのステレオ音響信号の各チャンネルから所定数のサンプルで構成される音響フレームを基準フレームとして読み込む機能を有している。位相変更フレーム設定手段120は、基準フレームと所定サンプルずつ移動させることにより位相を変更した音響フレームを位相変更フレームとして設定する機能を有している。周波数変換手段130は、図1に示した周波数変換手段20と同様の機能を有している。符号判定パラメータ算出手段140は、生成された複数のフレームスペクトルから所定の周波数以下に相当する各低周波強度データを抽出し、左右各チャンネルごとに各低周波強度データの合算値El、Erを算出し、この合算値El、Erを符号判定パラメータとし、この符号判定パラメータEl、Erの比率に基づいて、所定の状態であると判断する機能を有している。
符号出力手段150は、1つの基準フレームに対応する音響フレーム(基準フレームおよび位相変更フレーム)の中から最適な位相であると判断されるものを判断し、その音響フレームの状態に対応する符号を出力する機能を有している。付加情報抽出手段160は、符号出力手段150により出力された符号の集合である3値配列を、所定の規則により変換して意味のある付加情報として抽出する機能を有している。音響フレーム保持手段170は、各チャンネルごとに、連続する2個の基準フレームを保持可能なバッファメモリである。図6に示した各構成手段は、現実には情報処理機能を有する小型のコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。特に、本発明の目的をより簡易に達成するためには、携帯型端末装置をハードウェアとして用いることが望ましい。
(4.抽出装置の処理動作)
次に、図6に示した音響信号からの情報の抽出装置の処理動作について図7のフローチャートに従って説明する。まず、本装置では、平均符号レベルHL、左右バランステーブル、位相判定テーブルの3つが初期化される。これらについて説明する。平均符号レベルHLは、ビット値に対応する2値が埋め込まれていたと判断される音響フレーム(以下、有効フレームと呼ぶことにする)についての、上記〔数式2〕で算出される低周波成分の合算値Eの平均値、すなわち、過去の有効フレームにおける合算値Eの平均値で与えられるものであり、初期値は、上記埋め込み装置においても用いられるレベル下限値Levに設定されている。左右バランステーブルは、実際には、2種の補正係数Cl(j)、Cr(j)により構成されるものであり、初期値は、M以下の各jについて、Cl(j)=Cr(j)=1に設定されている。位相判定テーブルS(p)は、位相を判定するためのテーブルであり、pは0〜5の整数値をとる。初期値はS(p)=0に設定されている。
このように、初期値が設定されている状態で、利用者が流れている音楽について、その楽曲名等の属性情報を知りたいと思った場合、まず、抽出装置に対して、抽出装置としての起動の指示を行う。これは、例えば、抽出装置を携帯電話機等の携帯端末で実現している場合は、所定のボタンを操作することにより実行できる。抽出装置は、指示が入力されると、音響信号入力手段100が、流れている音楽を録音し、デジタル化してデジタル音響信号として入力する。具体的には、指向性マイクロフォンの左右から入力される音声を、それぞれA/D変換器によりデジタル化する処理を行うことになる。
続いて、基準フレーム獲得手段110が、音響信号入力手段100から入力されたステレオ音響信号の各チャンネルから、それぞれ所定数のサンプルで構成される音響フレームを基準フレームとして抽出する(S301)。具体的には、基準フレームを抽出して音響フレーム保持手段170に読み込むことになる。基準フレーム獲得手段110が基準フレームとして読み込む1音響フレームのサンプル数は、図1に示した音響フレーム読込手段10で設定されたものと同一にする必要がある。したがって、本実施形態の場合、基準フレーム獲得手段110は、左チャンネル、右チャンネルについてそれぞれ4096サンプルずつ、順次基準フレームとして読み込んでいくことになる。音響フレーム保持手段170には、上述のように各チャンネルごとに2個の基準フレームが格納可能となっており、新しい基準フレームが読み込まれると、古い基準フレームを破棄するようになっている。したがって、音響フレーム保持手段170には、常に各チャンネルごとに基準フレーム2個分(連続する8192サンプル)が格納されていることになる。
埋め込み装置で処理する音響フレームは、先頭から途切れることなく隣接して設定される基準フレームと、この基準フレームと位相を変更した位相変更フレームとに分けることができる。基準フレームについては、最初の基準フレームをサンプル番号1からサンプル番号4096までを設定したら、次の基準フレームは、サンプル番号4097からサンプル番号8192、さらに次の基準フレームは、サンプル番号8193からサンプル番号12288、というように途切れることなく設定される。そして、各基準フレームについて、1/6フレーム(約683サンプル)ずつ移動した5個の位相変更フレームを設定する。例えば、最初の基準フレームについては、サンプル番号683、1366、2049、2732、3413から始まる4096のサンプルで構成される5個の位相変更フレームが設定されることになる。
続いて、周波数変換手段130、符号判定パラメータ算出手段140が、読み込んだ各音響フレームから、埋め込まれている情報を判定し、対応する符号を出力する(S302)。出力される情報の形式は、埋め込み側のビット値に対応する2値、および区切りとして入力された値の3値の形式となる。
ここで、ステップS302の符号出力処理の詳細を図8のフローチャートに従って説明する。まず、周波数変換手段130が、読み込んだ各音響フレームに対して、周波数変換を行ってフレームスペクトルを得る(S401)。この処理は、図1に示した周波数変換手段20における処理と同様である。したがって、本実施形態では、上記〔数式1〕に従った処理を行い、左チャンネルに対応する変換データの実部Al(j)、虚部Bl(j)、右チャンネルに対応する変換データの実部Ar(j)、虚部Br(j)を得る。この際、音響信号xl(i)、xr(i)には、それぞれW(i)=0.5−0.5・cos(2πi/N)で表現される窓関数(ハニング窓)を重みとして乗じる処理も、周波数変換手段20と同様に行われる。
上記周波数変換手段130における処理により、周波数に対応した成分であるスペクトルで表現されたフレームスペクトルが得られる。続いて、符号判定パラメータ算出手段140は、平均符号レベルHLの算出を行う(S402)。具体的には、過去の有効フレームについての合算値Eの積算値であるvを、過去の有効フレームの数であるnで除算することにより算出する。したがって、平均符号レベルHLは、過去に有効フレームとして判断された低周波強度データの合算値の平均値となる。
さらに、符号判定パラメータ算出手段140は、生成された各チャンネルのフレームスペクトルから所定の周波数範囲の各低周波強度データを抽出する。抽出すべき周波数範囲は、埋め込み装置と対応させる必要がある。したがって、ここでは、周波数が200Hz以下の低周波強度データを抽出することになり、埋め込み装置の場合と同様、上記〔数式1〕により算出された実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)のうち、j≦20のものを抽出する。そして、符号判定パラメータ算出手段140は、左右バランスの補正を行う(S403)。具体的には、抽出した実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)を利用して、以下の〔数式8〕により各周波数成分ごとの強度Er(j)、El(j)を算出すると共に、〔数式9〕によりj=1〜M(例えば20)までの左チャンネルの低周波強度の合算値El、右チャンネルの低周波強度の合算値Erを符号判定パラメータとして算出する。
〔数式8〕
El(j)=Al(j)2+Bl(j)2
Er(j)=Ar(j)2+Br(j)2
〔数式9〕
El=Σj=1,…,M{Al(j)2+Bl(j)2}
Er=Σj=1,…,M{Ar(j)2+Br(j)2}・Cl(j)/Cr(j)
上記〔数式9〕において、Cl(j)、Cr(j)は、左右バランスの補正係数であり、“Cl(j)/Cr(j)”を右チャンネルの低周波強度に乗じることにより、左右バランスを補正している。逆に、左チャンネルの低周波強度に“Cr(j)/Cl(j)”を乗じても同様の効果が得られる。
続いて、符号判定パラメータ算出手段140は、候補符号テーブルの初期化を行う(S404)。候補符号テーブルは、1つの基準フレームおよび5個の位相変更フレームを特定する0〜5の位相番号および、この6個の音響フレームの状態から得られる3値の符号を記録するものである。
続いて、符号判定パラメータ算出手段140は、埋め込み装置の低周波成分変更手段30と同様、抽出した実部Al(j)、虚部Bl(j)、実部Ar(j)、虚部Br(j)を利用して、上記〔数式2〕によりj=1〜M(例えば20)までの低周波強度の合計値Eを算出する。さらに、この合算値Eが所定値以上であるかどうかの判定を行う(S405)。具体的には、所定値として平均符号レベルHLの10分の1を設定する。合算値Eが所定値、すなわち平均符号レベルHLの10分の1未満である場合、符号判定パラメータ算出手段140は、区切り情報であると判定する(S409)。
一方、合算値Eが所定値、すなわち平均符号レベルHLの10分の1以上である場合、符号判定パラメータ算出手段140は、上記算出された符号判定パラメータEl、Erの比較判定を以下の〔数式10〕に従って行い(S406)、比較結果に対応する符号を出力する。
〔数式10〕
Er/El>2の場合、右チャンネル大
El/Er>2の場合、左チャンネル大
Er/El≦2かつEl/Er≦2の場合、左右均等
符号判定パラメータ算出手段140は、各音響フレーム単位で、上記判定結果に応じて3値の符号を出力する。すなわち、右チャンネル大と判定した場合には、第1のビット値(例えば“1”)を出力し(S407)、左チャンネル大と判定した場合には、第2のビット値(例えば“0”)を出力し(S408)、左右均等と判定した場合には、区切り情報を示す符号を出力する(S409)。右チャンネル大と判定して、第1のビット値を出力した場合(S327)、又は左チャンネル大と判定して、第2のビット値を出力した場合(S328)は、さらに、以下の〔数式11〕に従って位相判定テーブルS(p)の更新を行う(S410)。
〔数式11〕
右チャンネル大の場合、S(p)←S(p)+Er/El
左チャンネル大の場合、S(p)←S(p)+El/Er
続いて、符号判定パラメータ算出手段140は、候補符号テーブルに、最適位相となる候補を保存する(S411)。具体的には、位相判定テーブルに記録されているS(p)の値が最大となる位相番号pの値、前記S407〜S409により判定された3値のいずれかの符号、その音響フレームについての上記〔数式8〕により算出した低周波数成分に対応する各El(j)、Er(j)の値を最適位相の候補として候補符号テーブルに保存する。
続いて、全ての位相番号pに対応する処理を終えたかどうかを判定する(S412)。これは、ある基準フレームに対して全ての位相変更フレームの処理を行ったかどうかを判定している。本実施形態では、pが0〜5までの値をとるので、6回分処理していない場合は、処理していた音響フレームから所定サンプル数ずらして、位相の異なる音響フレームを設定し、S405に戻って処理を繰り返す。なお、p=0の場合が基準フレームであり、p=1〜5の場合が位相変更フレームである。全ての位相番号pに対応する処理を終えた場合は、候補保存テーブルに記録されている位相番号pに対応する位相が最適位相であると判定し、候補保存テーブルに記録されている符号を出力する(S413)。
再び図7のフローチャートに戻って説明する。S302による処理の結果、ビット値に相当する符号が出力された場合には、平均符号レベルのパラメータの更新を行う(S303)。具体的には、平均符号レベル算出の際の分子となる積算値vに合算値Eを加算して積算値vを更新し、分母となるフレーム数nに1を加算してフレーム数nを更新する。続いて、出力された符号に対応するビット値をバッファに保存する(S304)。続いて、ビットカウンタをカウントアップする(S305)。そして、ビットカウンタが8ビット以上であるかどうかを判断する(S306)。その結果、ビットカウンタが8ビット以上である場合には、1バイト分のビット値がバッファに格納されていることになるので、バッファ内の1バイト分のデータを、付加情報抽出手段160が出力する(S307)。一方、S302による処理の結果、区切り情報に対応する値が出力された場合には、左右バランステーブルの更新を行う(S308)。具体的には、以下の〔数式12〕により、左右バランステーブルを構成するCl(j)、Cr(j)を更新する。
〔数式12〕
Cl(j)←Cl(j)+El(j)
Cr(j)←Cr(j)+Er(j)
なお、上記〔数式12〕におけるEl(j)、Er(j)は、上記S413において最適位相であると判定された音響フレームに対応して、候補保存テーブルに記録されていたものである。
そして、ビットカウンタを0に初期化する(S309)。図7に示す処理を各音響フレームに対して実行することにより、付加情報が抽出されることになる。S310において全ての音響フレームが抽出されたと判断された場合には、処理を終了する。
上記S307の処理において、付加情報抽出手段160は、まず、符号判定パラメータ算出手段140により出力された3値の符号のうち、左右均等を示す符号を区切り位置として、その次の符号を先頭とし、右チャンネル大、左チャンネル大の符号をビット値に対応させて、ビット配列を作成する。続いて、このビット配列を、所定の規則により変換して意味のある付加情報として抽出する。所定の規則としては、情報を埋め込む者が意図した情報が受け取った者に認識可能な状態とできるものであれば、さまざまな規則が適用できるが、本実施形態では、文字情報として認識するための規則としている。すなわち、付加情報抽出手段160は、符号判定パラメータ算出手段140が判定し、符号出力手段150から出力される符号を1バイト(8ビット)単位で認識し、これを設定されたコード体系に従って文字情報を認識する。このようにして得られた文字情報は、表示装置(図示省略)の画面に表示出力される。
従って、埋め込み装置により音響信号に、その楽曲の曲名やアーチスト等の属性情報を文字情報として埋め込んでおけば、利用者は、その音楽が流れているのを聞いて、その曲名やアーチストを知りたいと思ったときに、抽出装置として機能する自身の携帯端末に所定の操作を行えば、自身の携帯端末の画面に曲名やアーチスト等の属性情報が文字情報として表示されることになる。
以上の処理においては、抽出装置において正確に付加情報を抽出するために、位相を補正する処理、左右の低周波成分の強度の差を補正する処理、無効フレームであることを判断するための下限閾値を補正する処理を行っている。次に、これら3つの補正処理について補足説明を行う。
(5.位相補正処理について)
上記のように、抽出時には、埋め込み時に埋め込んだ音響フレームに対応して、音響信号を読み込むことができるとは限らない。そこで、音響フレームの位相をずらして複数通り(本実施形態では6通り)で読み込み、その中で最適な位相を決定し、その位相で特定される音響フレームに対応する符号を出力することにしている。例えば、6通りで読み込む場合、先頭の音響フレームは、本来サンプル番号1〜4096のサンプルであるが、サンプル番号1、683、1366、2049、2732、3413から始まる4096のサンプルで構成される6個の各音響フレームに対して処理を行い、最適な音響フレームに対応する符号を出力することになる。この位相補正処理は、S404、S410、S411、S412、S413における処理を中心として行われることになる。
(6.左右差補正処理について)
アナログ系を介した場合、音響信号の左右の信号が互いに影響しあって、左右のバランスが崩れ、抽出側で誤判断することが多くなる。そこで、過去の有効フレームについての低周波成分別の積算値により、左右のバランスを補正する処理を行っている。この左右差補正処理は、S403、S308における処理を中心として行われることになる。
(7.下限閾値補正処理について)
信号レベルが小さい場合には、左右の大小が判定できず、抽出側で誤判断することが多くなる。そこで、低周波強度Eが所定の閾値以下のフレームについては、無効なフレームであると判断するようにしているが、この際の閾値を過去の有効フレームについての低周波強度の積算値Eを利用して補正する処理を行っている。このように閾値を変動させることにより、信号レベルが変動しても無効なフレームであるか、有効なフレームであるかを正確に判断することが可能となる。この下限閾値補正処理は、S402、S303における処理を中心として行われることになる。
図7のフローチャートは、埋め込み側において、付加情報をバイト単位で記録したものに対応している。埋め込み側で付加情報をワード単位で記録している場合には、図9のフローチャートに従った処理を行うことになる。まず、図7のS310と同様、基準フレーム獲得手段110が、音響信号入力手段100から入力されたステレオ音響信号の各チャンネルから、それぞれ所定数のサンプルを1基準フレームとして読み込む(S501)。
続いて、図7のS301と同様、周波数変換手段130、符号判定パラメータ算出手段140が、読み込んだ各基準フレームを利用して、基準フレームもしくは位相変更フレームから最適な位相の音響フレームを特定し、その音響フレームに埋め込まれている情報に対応する符号を出力する(S502)。このS502における処理の詳細は、S302と同様、図8に示したようなものとなる。
S502による処理の結果、ビット値に相当する符号が抽出された場合には、S303と同様、平均符号レベルのパラメータの更新を行う(S503)。続いて、モードの判定を行う(S504)。モードは、区切りモードとビット出力モードの2つが用意されている。ビット出力モードである場合は、そのビット値をバッファに保存する(S509)。続いて、ビットカウンタをカウントアップする(S510)。一方、S504による判定の結果、区切りモードである場合には、さらに抽出された符号が、新規を意味するものか継続を意味するものかを判定する(S505)。この結果、新規である場合には、その直前で1ワードが終了していることを意味するので、バッファに記録された1ワード分のデータを、付加情報抽出手段160が出力する(S506)。そして、ビットカウンタを0に初期化する(S507)。さらに、モードをビット出力モードに設定する(S508)。S505において、継続と判定された場合には、バッファ内のビットに値を出力すべきであるので、ビット出力モードに設定する処理のみを行う。また、S502において、区切り情報に相当する符号が抽出された場合には、S308と同様、左右バランステーブルの更新を行う(S511)。続いて、次の音響フレームから新規か継続かの情報を抽出するため、モードを区切りモードに設定する(S512)。図9に示す処理を各基準フレームに対して実行することにより、付加情報が抽出されることになる。S501において全ての基準フレームが抽出されたと判断された場合には、処理を終了する。
(8.リアルタイム処理)
図6に示した音響信号からの情報の抽出装置では、既に取り込んだデジタル音響信号に対して処理することも可能であるし、リアルタイムで音響信号を録音しながら処理することも可能である。次に、特にリアルタイムで処理する場合に適した音響信号からの情報の抽出装置について説明する。図10は、図6に示した音響信号からの情報の抽出装置において、音響信号入力手段100の構成を詳細に示した図である。図10において、101はマイクロフォン、102はサウンドデバイスドライバ、103はサウンドデバイス、104はブロック蓄積手段である。図10中、図6と同一のものについては、同一符号を付して説明を省略する。
マイクロフォン101は、左右の2チャンネルからの音声入力が可能な指向性マイクロフォンであり、アナログのステレオ音響信号を左右チャンネルからそれぞれ取得する。サウンドデバイスドライバ102は、サウンドデバイス103を駆動させてデジタルの音響ブロックを取得する機能を有している。サウンドデバイス103は、マイクロフォン101が取得したアナログの音響信号をA/D変換してデジタルデータである音響ブロックとして取り込む機能を有している。音響ブロックの大きさは適宜設定が可能であるが、抽出装置において実行する周波数変換の処理単位である音響フレームを、2のべき乗倍した大きさであることが望ましい。本実施形態では、4096サンプルである音響フレームに対して、1音響ブロックを4096×16サンプルとしている。ブロック蓄積手段104は、音響ブロックを蓄積するバッファメモリを複数有しており、これらのバッファメモリに蓄積された音響ブロックを、FIFO(ファーストイン・ファーストアウト)方式、すなわち、先に入ってきた情報が、先に出ていく方式で処理する機能を有している。すなわち、ブロック蓄積手段104は、サウンドデバイスドライバ102から投入された音響ブロックを投入された順序で蓄積し、その順序で基準フレーム獲得手段110に渡す機能を有することとなる。
ここで、図10に示した抽出装置におけるリアルタイム処理の概要を図11のフローチャートに示す。まず、基準フレーム獲得手段110が、ブロック蓄積手段103内に録音済みの音響ブロック(録音済ブロック)が存在するかどうかを探索する(S601)。録音済ブロックが存在しない場合は、処理を中断し、サウンドデバイスドライバ102からの録音終了シグナルの受信待ちとする(ステップS602)。サウンドデバイスドライバ102からの録音終了シグナルがあった場合、または、録音済ブロックがブロック蓄積手段103内に存在している場合には、基準フレーム獲得手段110が録音済ブロックから基準フレームを獲得し、付加情報を抽出する処理を行う(ステップS603)。録音済ブロックを処理したら、その録音済ブロックをブロック蓄積手段103から削除する(ステップS604)。一方、サウンドデバイスドライバ102では、常に、ブロック蓄積手段103内の空き領域を探索しており(ステップS605)、録音済ブロックを格納する余地が存在する場合には、音響ブロックを録音する(ステップS606)。1つの音響ブロックの録音を待ち(ステップS607)、録音が終了したら、録音終了シグナルをブロック蓄積手段103に送信する(ステップS608)。