(1.タイムコードの埋め込み)
以下、本発明の好適な実施形態について説明する。本発明に係るコンテンツ同期再生装置は、タイムコードが埋め込まれた音響信号が音として再生された場合に、その音を音響信号として取得し、埋め込まれているタイムコードを抽出して、このタイムコードに対応した位置からコンテンツを再生するものである。そこで、まず、タイムコードの音響信号への埋め込みについて説明する。本発明においては、デジタルの音響信号をサンプリングし、得られたサンプルを所定数単位で音響フレームとして取得し、この音響フレームに対して周波数変換を行った後、所定周波数範囲の成分の強度を変更することにより、情報(タイムコード)の埋め込みを行う。
タイムコード埋め込み装置は、汎用のコンピュータに専用のプログラムを組み込むことにより実現される。また、タイムコード埋め込み装置が有する記憶手段には、埋め込み対象とする音響信号、タイムコードが記録されている。この記憶手段は、コンピュータに接続されたハードディスク等の記憶装置により実現される。
音響信号に埋め込まれるタイムコードは、音響信号の再生開始からの経過時間にほぼ比例した連続番号(シリアル番号)であり、所定の値を乗じることにより、音響信号先頭位置から実時間に変換することができるように構成されたものである。本実施形態では、タイムコードを“0”〜“211”の212個とし、8ビットで表現している。この8ビットの情報の各ビットを音響フレームに埋め込むことも可能であるが、誤り訂正を可能とするため18ビットに変換する。この際、8ビットを変換することにより得られる18ビット符号間のハミング距離が大きいほど、誤りに対する耐性が高くなる。そこで、本実施形態では、18ビット符号間のハミング距離が最低4以上となるように、8ビットから18ビットへの符号変換テーブルを作成する。タイムコード埋め込み装置では、事前に、符号変換テーブルの作成を行う。タイムコード埋め込み装置による符号変換テーブル作成のフローチャートを図1に示す。
タイムコード埋め込み装置は、最初に初期化処理を行う(S601)。具体的には、8ビット符号“0”に18ビット符号“1”を対応付けて符号変換テーブルのi(=0)番目に登録するとともに、8ビット符号KFの初期値を1、18ビット符号HFの初期値を2とする。続いて、i=0に初期設定する(S602)。次に、18ビット符号HFと符号変換テーブルのi番目に既に登録されている他の18ビット符号とのハミング距離を算出する(S603)。
算出したハミング距離が4未満の場合、HFの値を1増加して更新した後(S604)、S602に戻って、次の18ビット符号HFについての処理を行う。一方、算出したハミング距離が4以上の場合、iの値を1増加して更新する(S605)。そして、iがKF−1未満である場合には、S603に戻って、符号変換テーブル内のi番目に登録されている18ビット符号とのハミング距離を算出する。S605の後、iがKF−1以上となった場合には、18ビット符号HFを符号変換テーブルの8ビット符号KFの位置に登録するとともに、KF、HFの値をそれぞれ1ずつ増加して更新する(S606)。そして、HFが262144未満である場合は、S602に戻って、次の8ビット符号KFについての処理を行う。HFが262144以上である場合は、全ての8ビット符号KFに対応する18ビット符号HFが登録されたことになるので、符号変換テーブル作成処理を終了する。
このようにして作成された符号変換テーブルを図2に示す。図2に示すように、符号変換テーブルには、8ビット符号の各値0〜211について、18ビット符号が対応付けて登録されている。18ビット符号の2進表記を見るとわかるように、全ての18ビット符号は互いにハミング距離が4以上となっている。なお、図2の例では、説明の便宜上、8ビット符号の10進表記と、18ビット符号の10進表記及び2進表記を示しているが、現実には、8ビット符号のビット列と18ビット符号のビット列が対応付けて登録されている。
符号変換テーブルは、事前に作成して記憶手段に記憶させておいても良いし、埋め込み直前に、図1に従った処理を実行して作成するようにしても良い。この符号変換テーブルを用いて、埋め込み装置は、8ビットのシリアル番号を18ビットに変換した後、18ビットを構成する各ビットを、各音響フレームに埋め込む。埋め込みの具体的な手法については、特許文献1〜5に示すような公知のものを用いることができる。本実施形態では、18ビットを1ワードとして、各ワード単位で4回繰り返して埋め込む。18ビットを4回繰り返して埋め込むためには、72フレーム必要となる。ここで、1ワード18ビットを4回繰り返して埋め込んだ場合の例を図3に示す。図3においては、72個の音響フレームを時系列で模式的に示している。左側が過去で右側が時間の進行方向である。図3に示すように、先に18ビット中のLSB(Least Significant Bit)が埋め込まれ、最後にMSB(Most Significant Bit)が埋め込まれる。図3に示した4回分は同一のワードが埋め込まれ、次の音響フレームからは、次の異なるワードが4回繰り返して埋め込まれる。
各音響フレームの時間的長さは、音響信号のサンプリング周波数、1音響フレームのサンプル数によって異なるが、音響信号のサンプリング周波数を48kHz、1音響フレームのサンプル数を2048とした場合、約42.6m秒となる。したがって、18ビットを埋め込むのに必要とする音響信号の時間は768m秒、4回繰り返した場合は、3.072秒となる。したがって、図2に示したように、212個のタイムコードが用意できる場合には、11分弱の音響信号の全体に渡って、タイムコードを埋め込むことが可能になる。
(2.1.コンテンツ同期再生装置の構成)
図4は、本発明にかかるコンテンツ同期再生装置の一実施形態を示す機能ブロック図である。図2において、210はコンテンツ記憶部、220は音響信号入力手段、230はタイムコード抽出手段、240はスキップ時間算出手段、250はコンテンツ再生手段である。
コンテンツ記憶部210は、再生対象であるコンテンツを記憶した記憶装置であり、現実には、フラッシュメモリ等により実現される。音響信号入力手段220は、流れている音を音響信号として取得し、音響ファイルを作成する。具体的には、マイクロフォン、A/D変換器、CPUおよび専用のプログラムにより実現される。タイムコード抽出手段230は、作成された音響ファイル内の音響信号から所定数のサンプルを音響フレームとして取得し、各音響フレームに埋め込まれていたビット値を認識するとともに、得られた複数のビット値で構成されるビット列に基づいて、タイムコードを抽出する。
スキップ時間算出手段240は、タイムコード抽出手段230により抽出されたタイムコードを用いて、コンテンツの再生をスキップするためのスキップ時間を算出する。コンテンツ再生手段250は、コンテンツ記憶部210からコンテンツを抽出し、算出されたスキップ時間だけスキップしてコンテンツの再生を開始する。具体的には、コンテンツ再生手段250は、CPUおよび専用のプログラム、D/A変換機、イヤホン端子により実現される。
(2.2.コンテンツ同期再生装置の処理動作)
次に、図4に示したコンテンツ同期再生装置の処理動作について説明する。コンテンツ同期再生装置が起動すると、コンテンツ同期再生装置は、コンテンツ記憶部210内に格納されているコンテンツの選択画面を表示手段に提示する。利用者が、表示された複数のコンテンツから1つを選択する指示を行うと、コンテンツ同期再生装置は、選択内容を認識し、選択されたコンテンツを再生対象として認識する。
コンテンツ同期再生装置においては、並行して、タイムコード抽出手段230が巡回符号表を作成する。巡回符号表とは、図2に示した符号変換テーブルにおいて、変換元の8ビット基準符号に対応する変換後の18ビットハフマン符号のビット列を1ビットずつ移動させた巡回ビットパターンを記録したものである。タイムコード抽出手段230は、図2に示したような符号変換テーブルを保有している。コンテンツ同期再生装置の処理能力に余裕があれば、タイムコード埋め込み装置と同様、図1のフローチャートに従った処理により図2に示したような符号変換テーブルを作成するようにしても良い。タイムコード抽出手段230は、図2に示したような符号変換テーブルにおいて、8ビット基準符号に対応付けられた18ビットハミング符号のビット列を1ビットずつ移動した巡回ビットパターンを作成し、8ビット基準符号に対応付けて記録する。例えば、図2の8ビット基準符号“0”には、18ビットハミング符号“00,0000,0000,0000,0001”が正規のビットパターンとして対応付けられているので、タイムコード抽出手段230は、1ビット移動した18ビット符号“00,0000,0000,0000,0010”(10進表記“2”)、2ビット移動した18ビット符号“00,0000,0000,0000,0100”(10進表記“4”)、…、17ビット移動した18ビット符号“10,0000,0000,0000,0000”(10進表記“131072”)までの17個の18ビット符号を巡回ビットパターンとして作成する。このようにして、作成された巡回符号表の一例を図5に示す。
図5の巡回符号表においては、いずれも10進表記で示してある。例えば、1行目の8ビット基準符号“0”に対しては、正規の18ビットハミング符号“1”と17個の巡回ビットパターン“2”“4” “8”“16”“32”“64”“128”“256”“512”“1024”“2048”“4096”“8192”“16384”“32768”“65536”“131072”が対応付けて記録される。
再生対象のコンテンツを認識するとともに、巡回符号表が準備できたら、コンテンツ同期再生装置内の音響信号入力手段220は、音響信号の入力処理を開始する。具体的には、マイクロフォンから入ってくる音を所定時間単位でデジタル変換して音響ファイルに記録する。デジタル変換の際、所定の周波数でサンプリングされることにより、音響ファイル内には、多数のサンプルの集合の形態で音響信号が記録される。この音響ファイルは、主メモリ内に記録されることになる。本実施形態では、音響信号入力手段220は、2秒単位で音響信号を取得し、音響ファイルの作成を行う。そして、音響信号入力手段220は、正式なタイムコードが確定するまで、音響ファイルの作成処理を繰り返し行う。
次に、タイムコード抽出手段230は、音響ファイル内の音響信号に埋め込まれたタイムコードを抽出する。具体的には、音響信号から所定数のサンプルを音響フレームとして取得し、この音響フレームに対して周波数変換を行った後、所定周波数範囲における周波数成分の状態を調べることにより、その音響フレームに埋め込まれていたビット値を判断する。音響フレームの周波数成分の状態からビット値を判断する手法の詳細については後述する。
タイムコード抽出手段230は、判断により得られたビット値をバッファに保存していく。抽出したビット数が36に達した場合には、タイムコード抽出手段230は、バッファに保存された36ビットのビット配列のうち、前半18ビットと後半18ビットの比較を行う。具体的には、前半18ビットと後半18ビットの各ビット同士が一致するかどうかを比較していく。前半18ビットと後半18ビットのうち1ビットでも異なる場合には、その音響ファイルに対する処理を終了し、次の音響ファイルに対する処理を行う。
前半18ビットと後半18ビットが完全に一致した場合には、次にその18ビットのビット列と巡回符号表内のビットパターンとの照合を行う。照合の結果、一致するビットパターンが18ビットハミング符号または巡回ビットパターンとして存在する場合には、適合パターン有りと判断し、対応する基準符号8ビットを抽出する。音響フレームから抽出された18ビットのビット列が巡回ビットパターンのいずれかであった場合、これらのビットパターンは埋め込み時に埋め込んでいるはずであるので、対応する18ビットハミング符号のビットパターンをずれた位置で読み込んでいると判断し、8ビット基準符号を抽出するのである。巡回符号表内のビットパターンとの照合の結果、一致するビットパターンが18ビットハミング符号、巡回ビットパターンのいずれにも存在しない場合には、適合パターン無しと判断し、その音響ファイルに対する処理を終了し、次の音響ファイルに対する処理を行う。
巡回符号表内のビットパターンとの照合の結果、対応する基準符号8ビットが抽出された場合は、直前の音響ファイルから抽出された基準符号8ビット(仮タイムコード)との比較を行う。この結果、10進法に換算した際に、現在の音響ファイルから抽出された基準符号8ビットが直前の音響ファイルから抽出された基準符号8ビットよりも“1”だけ大きい状態となっていない場合には、正しいタイムコードではないと判断し、現在の音響ファイルから抽出された基準符号8ビットを仮タイムコードとしてバッファに格納し、次の音響ファイルに対する処理を行う。
直前の音響ファイルから抽出された基準符号8ビットとの比較の結果、10進法に換算した際に、現在の音響ファイルから抽出された基準符号8ビットが直前の音響ファイルから抽出された基準符号8ビットよりも“1”だけ大きい状態となっている場合には、現在の音響ファイルから抽出された基準符号8ビットを正しいタイムコードであると判断する。
タイムコード抽出手段230により正しいタイムコードが抽出されたら、スキップ時間算出手段40が、そのタイムコードを用いて、コンテンツの再生をスキップするためのスキップ時間を算出する。具体的には、タイムコードを示す数字に所定の係数を乗じて再生からの秒数に変換する。本実施形態では、上述のように、1つのタイムコードの記録を3.072秒に渡って行うので、タイムコードに3.072を係数として乗じることになる。この結果、実時間に換算した値が得られる。さらに、タイムコード抽出手段230は算出した実時間に、設定されている遅延時間を加算してスキップ時間を算出する。この遅延時間は、コンテンツ再生装置が再生処理を開始するために必要な処理時間である。この遅延時間は、利用者が任意に設定可能となっている。
スキップ時間算出手段240によりスキップ時間が算出されたら、コンテンツ再生手段250は、算出されたスキップ時間だけスキップしてコンテンツの再生を開始する。具体的には、スキップ時間に1秒あたりのサンプル数48000を乗じて再生開始位置のサンプル番号を特定し、特定されたサンプル番号のサンプルから再生を開始する。
上記のようにして、流れている音に埋め込まれていたタイムコードに対応した時間的位置からコンテンツを再生するようにしたので、コンテンツを流れている音と連動させて再生することが可能となる。例えば、シアター内で映像を流すとともに、スピーカから主音声である日本語を発している場合に、コンテンツ同期再生装置としての機能を備えた携帯型レシーバで、主音声の日本語に同期させて副音声の英語を再生することができる。
(3.音響フレームへのビット値の埋め込み処理の詳細)
音響フレームへのビット値の埋め込みは、音響フレームに対して周波数解析を施し、所定の周波数範囲の成分をビット値に応じて変更することにより行うが、具体的には、上記特許文献1〜5に開示されているような様々な手法を用いることができる。以下では、本実施形態における特に好ましい手法について説明する。
(3.1.タイムコード埋め込み装置の構成)
ここから、タイムコード埋め込み装置の具体例について説明する。図6は、タイムコード埋め込み装置の構成を示す機能ブロック図である。図6において、10は音響フレーム読込手段、20は周波数変換手段、30は周波数成分変更手段、40は周波数逆変換手段、50は改変音響フレーム出力手段、60は記憶手段、61は音響信号記憶部、62は付加情報記憶部、63は改変音響信号記憶部、70はビット配列作成手段、80は変換テーブル作成手段である。
音響フレーム読込手段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、NhをそれぞれNw=8、Nh=18としている。本実施形態では、付加情報記憶部62からの抽出時には、8ビットを1ワードとして処理し、ビット配列作成手段70によるビット配列作成後は、18ビットを1ワードとして処理している。図6に示した各構成手段は、現実にはコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。
(3.2.タイムコード埋め込み装置の処理動作)
次に、図6に示したタイムコード埋め込み装置の処理動作について説明する。音響フレーム読込手段10は、音響信号記憶部61に記憶された音響信号から、所定数Nのサンプルを1音響フレームとして読み込む。音響フレーム読込手段10が読み込む1音響フレームのサンプル数Nは、適宜設定することができるが、本実施形態では、サンプリング周波数が48.0kHzの場合、2048サンプルとしている。したがって、音響フレーム読込手段10は、2048サンプルずつ、順次音響フレームとして読み込んでいくことになる。
音響フレームとしては、AタイプとBタイプが存在する。Aタイプの音響フレーム、Bタイプの音響フレームは、それぞれ同タイプの先行する音響フレームの最後のサンプルの次のサンプルを先頭サンプルとして設定される。そして、AタイプとBタイプの音響フレームは互いに所定数(本実施形態では1024)のサンプルを重複して設定される。例えば、Aタイプの音響フレームを先頭からA1、A2、A3…とし、Bタイプの音響フレームを先頭からB1、B2、B3…とすると、A1はサンプル1〜2048、A2はサンプル2049〜4096、A3はサンプル4097〜6144、B1はサンプル1025〜3072、B2はサンプル3073〜5120、B3はサンプル5121〜7168となる。なお、AタイプとBタイプは相対的なものであるので、どちらが先であっても良い。すなわち、上記とは逆にA1がサンプル1025〜3072、A2がサンプル3073〜5120、A3がサンプル5121〜7168、B1がサンプル1〜2048、B2がサンプル2049〜4096、B3がサンプル4097〜6144であっても良い。
周波数変換手段20は、振幅変換後の音響フレームに対して周波数変換を行って、その音響フレームのスペクトルを得る。具体的には、窓関数を利用して周波数変換を行う。周波数変換としては、フーリエ変換、ウェーブレット変換その他公知の種々の手法を用いることができる。本実施形態では、フーリエ変換を用いた場合を例にとって説明する。
一般に、所定の信号に対してフーリエ変換を行う場合、信号を所定の長さに区切って行う必要があるが、この場合、所定長さの信号に対してそのままフーリエ変換を行うと、擬似高調波成分が発生する。そこで、一般にフーリエ変換を行う場合には、ハニング窓と呼ばれる窓関数を用いて信号の値を変化させた後、変化後の値に対してフーリエ変換を実行する。
本実施形態においても、窓関数を利用しているが、Aタイプの音響フレーム、Bタイプの音響フレームで、使用する窓関数を分けている。本実施形態では、図7(a)(b)に示したような第1窓関数W(1,i)、第2窓関数W(2,i)を用意し、抽出側で認識し易いようにした。第1窓関数W(1,i)は、Aタイプの音響フレームに対して用いるためのものであり、図7(a)に示すように所定のサンプル番号iの位置において、最大値1をとり、後部においては、最小値0をとるように設定されている。どのサンプル番号の場合に最大値をとるかについては、窓関数W(1,i)の設計によって異なってくるが、本実施形態では、後述する〔数式1〕で定義される。Aタイプの音響フレームについてのフーリエ変換は、この窓関数W(1,i)を乗じたものに対して行われることになる。
また、第2窓関数W(2,i)は、Bタイプの音響フレームに対して用いるためのものであり、図7(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〕で定義される。なお、図7において、横軸は時間軸(i)である。iは、後述するように、各音響フレーム内のN個のサンプルに付した通し番号であるため時刻tに比例している。また、図7(a)(b)において縦軸は信号の振幅値(レベル)を示す。図7(a)(b)において縦軸は窓関数W(1,i)、W(2,i)の値を示しており、W(1,i)、W(2,i)の最大値はいずれも1である。
〔数式1〕
i≦N/8のとき、W(1,i)=0.0
N/8<i≦3N/8のとき、W(1,i)=0.5−0.5cos(4π(i−N/8)/N)
3N/8<i≦11N/16のとき、W(1,i)=1.0
11N/16<i≦13N/16のとき、W(1,i)=0.5+0.5cos(8π(i−11N/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≦5N/8のとき、W(2,i)=1.0
5N/8<i≦7N/8のとき、W(2,i)=0.5+0.5cos(4π(i−5N/8)/N)
i>7N/8のとき、W(2,i)=0.0
なお、図7および上記〔数式1〕〔数式2〕から明らかなように、窓関数W(1,i)とW(2,i)は、互いに非対称な形状である。これは、後述する抽出側において、両者の識別を容易にするためである。
本実施形態においては、奇数フレームと偶数フレームを、所定サンプルずつ重複して読み込むため、情報の埋め込みを行った後、音響信号に復元する際に、窓関数を乗じた奇数フレームと、窓関数を乗じた偶数フレームの重複サンプルを加算した場合に、ほぼ元の値に戻るようにしなければならない。このため、奇数フレームと偶数フレームの重複部分において、窓関数W(1,i)、W(2,i)を加算すると、全区間固定値1になるように定義されている。
周波数変換手段20が、Aタイプの音響フレームに対してフーリエ変換を行う場合は、信号X(i)(i=0,…,N−1)に対して、窓関数W(1,i)を用いて、以下の〔数式3〕に従った処理を行い、変換データの実部A(1,j)、虚部B(1,j)を得る。
〔数式3〕
A(1,j)=Σi=0,…,N-1W(1,i)・X(i)・cos(2πij/N)
B(1,j)=Σi=0,…,N-1W(1,i)・X(i)・sin(2πij/N)
周波数変換手段20が、Bタイプの音響フレームに対してフーリエ変換を行う場合は、信号X(i+N/2)(i=0,…,N−1)に対して、窓関数W(2,i)を用いて、以下の〔数式4〕に従った処理を行い、変換データの実部A(2,j)、虚部B(2,j)を得る。
〔数式4〕
A(2,j)=Σi=0,…,N-1W(2,i)・X(i+N/2)・cos(2πij/N)
B(2,j)=Σi=0,…,N-1W(2,i)・X(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の整数値をとる。サンプリング周波数が48.0kHz、N=2048の場合、jの値が1つ異なると、周波数が約23.4Hz異なることになる。
上記〔数式3〕〔数式4〕に従った処理を実行することにより、各音響フレームの各窓関数に対応するスペクトルが得られる。続いて、周波数成分変更手段30が、生成されたスペクトルから所定周波数範囲のスペクトル集合を抽出する。本実施形態では、F1以上F2以下の範囲のものを抽出する。
周波数変換手段20は、周波数変換を実行した後に、各スペクトル集合の平均値が設定値になるように変換する。いわゆる振幅を変換する処理を行う。この振幅変換は、各フレームごとのレベル差を軽減し、適切な情報の埋め込みが可能になるようにすることを目的としているため、設定値としては適宜設定することができるが、本実施形態では、128に設定するようにしている。
周波数変換手段20は、得られたスペクトル集合に対して、振幅変換を行うにあたり、まず変換倍率の算出を行う。変換倍率の算出は、所定周波数範囲のスペクトル集合の実効強度値の平均である平均実効値で上記設定値を除算することにより行う。具体的には、Aタイプの音響フレーム、Bタイプの音響フレームのスペクトル集合についての変換倍率Z(1)、Z(2)は、以下の〔数式5〕に従った処理により算出される。対象音響フレームが無音に近く、分母の二乗総和値が所定の値に満たない場合は、変換倍率を1.0に設定し、振幅変換は行わないようにする。振幅変換が実行されることにより、全ての音響フレームは、元の状態における信号強度に関わらず、各音響フレームのスペクトル集合の平均実効値が設定値となるように振幅変換された状態で、情報の埋め込みが行われることになる。
〔数式5〕
Z(1)=Zo/[Σj=m,…,m+2G-1{A(1,j)2+B(1,j)2}]1/2
Z(2)=Zo/[Σj=m,…,m+2G-1{A(2,j)2+B(2,j)2}]1/2
上記〔数式5〕において、Zo=2Gであり、本実施形態では、G=80であるため、Zo=160である。
さらに、j=m,…,m+2G−1(周波数F1,...,F2に相当)の範囲で、A(1,j)およびB(1,j)の各々の要素に対してZ(1)を乗じ、A(2,j)およびB(2,j)の各々の要素に対してZ(2)を乗じることにより、振幅変換を行う。以下説明において、A(1,j)、B(1,j)、A(2,j)、B(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つのトラックが連続して流れるように音を補間して聞いてしまう錯覚現象である。
たとえば、図8(a)に示すように、3つの低い音である低音1、低音3、低音5と3つの高い音である高音2、高音4、高音6が、低音1、高音2、低音3、高音4、低音5、高音6の順に演奏されている場合を考えてみる。低音1、低音3、低音5と高音2、高音4、高音6は1オクターブ程度離れており、低い音と高い音は同時に演奏されることはないが、時間的間隔は、ほぼ連続しているものとする。この場合、人間には、図8(b)に示すように、低い音と高い音が演奏されていない部分も補間されて演奏されているように聞こえる。すなわち、実際の演奏は単旋律であるのに、人間には、図8(b)に示すように、高音1´、高音3´、高音5´、低音2´、低音4´、低音6´が補間されて複旋律であるように聞こえる。例えば、高音3´は高音2と高音4が連続的につながるように、高音2と高音4の平均的な成分に聞こえる。また、末端部の高音1´と低音6´についても、隣接する高音2と低音5に近い成分で、各々低音1と高音6に対応するように聞こえる。しかし、マイクロフォン等の電気音響装置は、図8(a)に示したものをそのままの音として取得することになる。本実施形態では、このような性質を利用する。なお、補間された音は、前後に演奏されている音と必ずしも同じレベルに補間されて聴こえるのではなく、大雑把に言って、前後に演奏されている音の50%程度があたかも補間されているように聞こえる。
具体的には、埋め込み装置で、音響信号から抽出した所定数のサンプルで構成される音響フレーム内の所定周波数範囲の周波数成分を変更するに際し、その強弱が音脈分凝を発生させるような状態に変更する。これにより、人間には、音が途切れたようには聞こえないが、抽出装置では、その明確な変化を認識することができる。
本実施形態では、音脈分凝の原理を利用して、音響フレームの変更対象周波数帯の成分を2つの状態に変更し、1ビットの情報を埋め込むようにしている。ここで、埋め込み処理の前後における音響フレームの所定周波数成分の変化の状態について説明する。図9に、本実施形態によるAタイプ、Bタイプの1音響フレームの所定周波数成分の状態を示す。図9に示す各音響フレームにおいて、横軸は時間方向、縦軸は周波数方向を示している。
図9においては、縦軸の周波数方向において、周波数領域が4つに区分されているが、上から2番目と3番目の領域、すなわち、周波数F1以上F2以下の間が変更対象周波数帯であり、最上部すなわち周波数F2超、最下部すなわちF1未満は、変更対象でない周波数帯である。すなわち、本実施形態では、周波数F1以上F2以下を所定周波数範囲として、スペクトル集合の強度を変更することになる。図9(a)に示すように、Aタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルを1U、低周波側におけるスペクトルを1Dで表現することとする。また、図9(b)に示すように、Bタイプ音響フレームの変更対象周波数帯については、高周波側におけるスペクトルを2U、低周波側におけるスペクトルを2Dで表現することとする。
本実施形態で、符号1を埋め込む場合、図9(c)(e)に示すように、1Dと2Uの強度の積を相対的に強い状態に変更し、1Uと2Dの強度の積を相対的に弱い状態に変更する。この状態を“状態1”と呼ぶことにする。符号2を埋め込む場合は、図9(d)(f)に示すように、1Uと2Dの強度の積を相対的に強い状態に変更し、1Dと2Uの強度の積を相対的に弱い状態に変更する。この状態を“状態2”と呼ぶことにする。網掛けされた部分の濃さは、同濃度のものは、積を求めるための組となるスペクトルであることを示している。網掛けの色が濃い方が相対的に強度が強い状態に変更される組を示している。
本実施形態では、図9(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”という値は、代表的な値であり、必ずしも正確な値である必要はなく、そこから若干ずれた値であっても良い。
図9に示した例では、相対的に強い状態と弱い状態に変更することについて説明したが、この強弱の程度については、状況に応じて設定することが可能である。両者の割合は、以下に述べるように、大きいほど抽出時の精度が高くなるが、補間される割合は不完全になり、再生時に不連続成分によるノイズが聞こえる。一方、両者の割合が均等であるほど再生品質は原音に近付くが、埋め込んだビットの抽出ができなくなり、再生品質と抽出精度はトレードオフの関係になる。例えば、強い方を100%、弱い方を0%とした場合、音脈分凝により、補間される部分の音は図9のような変更を行なう前に原音響信号で鳴っていた音の50%程度となることが確認されている。
そこで、強い方を70%、弱い方を30%とした場合、音脈分凝により、補間される部分の音は図9のような変更を行なう前に原音響信号で鳴っていた音とほぼ同程度となり、この割合が抽出精度を維持できる限界であることが確認されている。このため、相対的に強いスペクトル集合と、相対的に弱いスペクトル集合の強度の割合を70%と30%とすることを目標に設定することが好ましい。これを実現するため、本実施形態では、後述する具体的な処理において、強い状態を設定するための係数α=0.7、弱い状態を設定するための係数β=0.3とする。ただし、強い状態に変更すべきスペクトル集合の強度が元々小さい場合には、係数α、βを補正する必要が生じる。このため、周波数成分変更手段30は、まず、以下の〔数式6〕に従った処理を実行することにより、弱い状態に変更すべきスペクトル集合に対する強い状態に変更すべきスペクトル集合の強度割合γを算出する。
〔数式6〕
E1d=Σj=m,…,m+G-1{A(1,j)2+B(1,j)2}
E2d=Σj=m,…,m+G-1{A(2,j)2+B(2,j)2}
E1u=Σj=m+G,…,m+2G-1{A(1,j)2+B(1,j)2}
E2u=Σj=m+G,…,m+2G-1{A(2,j)2+B(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”、すなわち、図9(c)(e)に示したような状態に変更する。
〔数式8〕
j=m〜m+G−1の各成分に対して
E(1,j)={A(1,j)2+B(1,j)2}1/2
A´(1,j)=A(1,j)・E(1,j)・α/{A(1,j)2+B(1,j)2}1/2
B´(1,j)=B(1,j)・E(1,j)・α/{A(1,j)2+B(1,j)2}1/2
E(2,j)={A(2,j)2+B(2,j)2}1/2
A´(2,j)=A(2,j)・E(2,j)・β/{A(2,j)2+B(2,j)2}1/2
B´(2,j)=B(2,j)・E(2,j)・β/{A(2,j)2+B(2,j)2}1/2
j=m+G〜m+2G−1の各成分に対して
E(1,j)={A(1,j)2+B(1,j)2}1/2
A´(1,j)=A(1,j)・E(1,j)・β/{A(1,j)2+B(1,j)2}1/2
B´(1,j)=B(1,j)・E(1,j)・β/{A(1,j)2+B(1,j)2}1/2
E(2,j)={A(2,j)2+B(2,j)2}1/2
A´(2,j)=A(2,j)・E(2,j)・α/{A(2,j)2+B(2,j)2}1/2
B´(2,j)=B(2,j)・E(2,j)・α/{A(2,j)2+B(2,j)2}1/2
埋め込むべき情報が“値2”である場合は、以下の〔数式9〕に従った処理を実行することにより、周波数成分の状態を“状態2” 、すなわち、図9(d)(f)に示したような状態に変更する。
〔数式9〕
j=m〜m+G−1の各成分に対して
E(1,j)={A(1,j)2+B(1,j)2}1/2
A´(1,j)=A(1,j)・E(1,j)・β/{A(1,j)2+B(1,j)2}1/2
B´(1,j)=B(1,j)・E(1,j)・β/{A(1,j)2+B(1,j)2}1/2
E(2,j)={A(2,j)2+B(2,j)2}1/2
A´(2,j)=A(2,j)・E(2,j)・α/{A(2,j)2+B(2,j)2}1/2
B´(2,j)=B(2,j)・E(2,j)・α/{A(2,j)2+B(2,j)2}1/2
j=m+G〜m+2G−1の各成分に対して
E(1,j)={A(1,j)2+B(1,j)2}1/2
A´(1,j)=A(1,j)・E(1,j)・α/{A(1,j)2+B(1,j)2}1/2
B´(1,j)=B(1,j)・E(1,j)・α/{A(1,j)2+B(1,j)2}1/2
E(2,j)={A(2,j)2+B(2,j)2+Ar(2,j)2+Br(2,j)2}1/2
A´(2,j)=A(2,j)・E(2,j)・β/{A(2,j)2+B(2,j)2}1/2
B´(2,j)=B(2,j)・E(2,j)・β/{A(2,j)2+B(2,j)2}1/2
なお、上記〔数式7〕に従った処理を実行して係数α´、β´を得た場合は、上記〔数式8〕〔数式9〕において、係数α、βに代えて係数α´、β´を用いる。
周波数逆変換手段40は、上記のようにして、周波数成分の状態が変更されたフレームスペクトルを周波数逆変換して改変音響フレームを得る処理を行う。この周波数逆変換は、当然のことながら、周波数変換手段20が実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。
具体的には、Aタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの左チャンネルの実部A´(1,j)等、虚部B´(1,j)等を用いて、以下の〔数式10〕に従った処理を行い、X´(i)を算出する。なお、上記〔数式8〕〔数式9〕において改変されていない周波数成分については、A´(1,j)等として、元の周波数成分であるA(1,j)等を用いる。周波数逆変換を計算するにあたり、A´(1,j)およびB´(1,j)に対しては〔数式5〕におけるZ(1)を除することにより、同時に振幅逆変換を施す必要がある。
〔数式10〕
X´(i)=1/N・{ΣjA´(1,j)・cos(2πij/N)/Z(1)−ΣjB´(1,j)・sin(2πij/N)/Z(1)}+Xp(i+N/2)
上記〔数式10〕においては、式が繁雑になるのを防ぐため、Σj=0,…,N-1をΣjとして示している。上記〔数式10〕における “+Xp(i+N/2)”の項は、直前に改変された改変音響フレームのデータXp(i)が存在する場合に、時間軸上N/2サンプル分重複することを考慮して加算するためのものである。上記〔数式10〕によりAタイプの改変音響フレームの左チャンネルの各サンプルX´(i)が得られることになる。
Bタイプの音響フレームに対しては、周波数逆変換手段40は、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの実部A´(2,j)、虚部B´(2,j)を用いて、以下の〔数式11〕に従った処理を行い、X´(i)を算出する。なお、上記〔数式8〕〔数式9〕において改変されていない周波数成分については、以下の〔数式11〕においてはA´(2,j)、B´(2,j)として、元の値であるA(2,j)、B(2,j)を用いる。周波数逆変換を計算するにあたり、A´(2,j)およびB´(2,j)に対しては〔数式5〕におけるZ(2)を除することにより、同時に振幅逆変換を施す必要がある。
〔数式11〕
X´(i+N/2)=1/N・{ΣjA´(2,j)・cos(2πij/N)/Z(2)−ΣjB´(2,j)・sin(2πij/N)/Z(2)}+Xp(i+N)
上記〔数式11〕によりBタイプの改変音響フレームの各サンプルX´(i)が得られることになる。
改変音響フレーム出力手段50は、周波数逆変換手段40の処理により得られたAタイプの改変音響フレーム、Bタイプの改変音響フレームを順次出力ファイルに出力する。
次に、図6に示したタイムコード埋め込み装置の処理の全体的な流れについて説明する。埋め込み装置を起動すると、まず、変換テーブル作成手段80が、Nwビットの基準符号とNhビットのハミング符号が対応付けられた符号変換テーブルを作成する。変換テーブル作成手段80による符号変換テーブル作成の処理は、既に説明したように図1のフローチャートに従ったものとなる。
続いて、符号変換テーブル作成処理後の埋め込み装置の処理を、図10のフローチャートに従って説明する。本発明では、同一のシリアル番号を埋め込む処理を、設定された所定回数Naだけ繰り返して実行する。例えば、Na=4と設定されている場合、同一のシリアル番号が4回繰り返して埋め込まれる。
図10においては、まず、ビット配列作成手段70は、付加情報記憶部62から抽出したタイムコードについて、変換テーブル作成手段80を参照し、対応するビット配列を作成する(S101)。具体的には、まず、付加情報記憶部62からタイムコード(8ビット)を抽出し、図2に示した符号変換テーブルを参照し、対応するハミング符号で構成される18ビットのビット配列を抽出する。
そして、この18ビットが、タイムコード埋め込み装置として用いられるコンピュータ内のレジスタに読み込まれることになる。このように、付加情報記憶部62においては、1ワードは8ビットであるが、埋め込み処理時は、この18ビットの配列で、タイムコード1ワード分の処理を行う。
次に、周波数成分変更手段30が、レジスタに保持されたNh(=18)ビットから1ビットを読み込む処理を行う(S102)。続いて、音響フレーム読込手段10が、音響信号記憶部61に記憶された音響信号から、所定数のサンプルをAタイプの1音響フレームとして読み込み、周波数変換手段20が周波数変換を行って、得られたフレームスペクトルに対して振幅変換を行う(S103)。具体的には、まず、読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。すなわち、各音響フレームについて、窓関数W(1,i)を用いて、上記〔数式2〕に従った処理を行う。そして、上記〔数式5〕に従った処理を実行してZ(1)を算出し振幅変換を行う。同様に、音響フレーム読込手段10が、音響信号記憶部61に記憶された音響信号から、所定数のサンプルをBタイプの1音響フレームとして読み込み、周波数変換手段20が周波数変換を行って、得られたフレームスペクトルに対して振幅変換を行う(S104)。具体的には、まず、読み込んだ音響フレームに対して、周波数変換を行って、その音響フレームのスペクトルであるフレームスペクトルを得る。すなわち、各音響フレームについて、窓関数W(2,i)を用いて、上記〔数式3〕に従った処理を行う。そして、上記〔数式5〕に従った処理を実行してZ(2)を算出し振幅変換を行う。
続いて、周波数成分変更手段30が、読み込んだビット値に応じてAタイプ音響フレームおよびBタイプ音響フレームの周波数成分の状態を変更するにあたり、〔数式6〕〔数式7〕に従った処理を実行して変換割合α、βを決定する処理を行う(S105)。この決定された変換割合を用いて、周波数成分変更手段30は、ビット配列作成手段70から受け取った値1、値2に応じて上記〔数式8〕〔数式9〕に従った処理を実行し、変更対象周波数帯の成分の状態を“状態1”、“状態2”に応じた状態のいずれかに変更する(S106)。
次に、周波数逆変換手段40が、上記S106の処理によりAタイプの音響フレームに対応する各スペクトル集合の強度が変更されたスペクトルを振幅逆変換、周波数逆変換して改変音響フレームを得る処理を行う(S107)。この振幅逆変換は〔数式5〕で算出したZ(1)の逆数をスペクトルに乗じることにより行なう。この周波数逆変換は、当然のことながら、周波数変換手段20がS103において実行した手法に対応していることが必要となる。本実施形態では、周波数変換手段20において、フーリエ逆変換を施しているため、周波数逆変換手段40は、フーリエ逆変換を実行することになる。具体的には、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの実部A´(1,j)等、虚部B´(1,j)等を用いて、上記〔数式10〕に従った処理を行い、X´(i)を算出する。改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する。
同様に、周波数逆変換手段40が、上記S106の処理によりBタイプの音響フレームに対応する各スペクトル集合の強度が変更されたスペクトルを振幅逆変換、周波数逆変換して改変音響フレームを得る処理を行う(S108)。具体的には、振幅逆変換は〔数式5〕で算出したZ(2)の逆数をスペクトルに乗じることにより行ない、上記〔数式8〕〔数式9〕のいずれかにより得られたスペクトルの実部A´(2,j)等、虚部B´(2,j)等を用いて、上記〔数式11〕に従った処理を行い、X´(i)を算出する。
改変音響フレーム出力手段50は、得られた改変音響フレームを順次出力ファイルに出力する。こうして、AタイプおよびBタイプの2つの音響フレームに対する処理を終えたら、周波数成分変更手段30がビット配列中の次の1ビットを読み込む(S102)。以上のような処理を音響信号の全サンプルに渡って実行していく。すなわち、所定数のサンプルを音響フレームとして読み込み、音響信号から読み込むべき音響フレームがなくなったら(S103、S104)、処理を終了する。なお、S101において読み込んだ1ワード分のビット配列(Nh=18ビット)の各ビットに対応する処理を終えた場合、設定された所定回数Naに達していないときは、先頭のビットに戻ってS103〜S108の処理を繰り返し実行する。設定された所定回数Naに達したときは、S102からS101に戻り、次のタイムコードを読み込んでビット配列を作成する処理を行うことになる。この結果、全ての音響フレームに対して処理を行った全ての改変音響フレームが出力ファイルに記録されて、改変音響信号として得られる。得られた改変音響信号は、記憶手段60内の改変音響信号記憶部63に出力され、記憶される。
なお、本実施形態では、タイムコードを8ビットとし、符号変換テーブルにより18ビットのビット配列に変換して処理をする場合について説明したが、本発明では、抽出側と取り決めがある限り、タイムコードを他のビット数単位で記録することが可能である。
上記のようにして得られた改変音響信号のうち、付加情報が埋め込まれている部分については、変更対象周波数帯の成分は、上記状態1、状態2の2通りの分布しかないことになる。しかし、変更対象周波数帯の成分以外については、元の音響信号のままであるので、制作者の設定に基づいた種々な分布になる。
以上、タイムコード埋め込み装置について説明したが、ここで、本実施形態である振幅変換を用いた埋め込みおよび抽出の手法について図11から図14を用いて説明する。図11および図12は、比較のために、振幅変換を用いない場合の埋め込み処理および抽出処理を示し、図13および図14は本実施形態における振幅変換を用いた埋め込み処理および抽出処理を示す。これらの説明図においては、音響フレーム奇数および偶数3対分について、3ビットの情報を埋め込むことを想定した音響信号の信号波形を示しており、説明の便宜上、音響フレームが互いに重複しない状態で示している。各図において、左端の波形は時間次元の通常の音響信号波形を示しており、横方向は時間軸であり、右に向かうに従って時間が進行し、縦方向は強度(振幅)である。中央または右端の波形は周波数変換後の所定の周波数範囲のスペクトル成分の合算値を信号波形で表現しており、仮想的にバンドパスフィルターを通した後の信号波形になっている。縦方向は同様に強度であり、本来は左端に比べ顕著に低くなるが、ここでは説明の都合上、左端と同程度に拡大して表現している。また、2種類の波形のレベルも本来は差があるが、ここでは同一レベルで表現している。実際には、周波数変換後のデータとして所定の周波数範囲外の高周波数成分や低周波数成分も存在するが、これらについては改変を加えないという前提で図示しておらず、図9に従った埋め込みを行なう2種の周波数帯域成分に限定して2種の信号波形で示している。
図11(a)は原音響信号を示しており、最初の1対の音響フレームは全体に渡って強度がほぼ一定、中央の1対の音響フレームは奇数フレームの強度が小さく偶数フレームの強度が大きいものであり、最後の1対の音響フレームは奇数フレームの強度が大きく偶数フレームの強度が小さいものである。このような音響信号に対して、周波数変換を行った結果が図11(b)で、図9で示されように埋め込み対象成分は上下2分割して成分変更を施す都合上、図11(b)では(b−1)および(b−2)の2種の波形に分離して表現した。周波数変換後の波形形状は周波数ごとに異なり、図11(a)と必ずしも相似形にはならないが、ここでは周波数変換前と同様になると仮定して説明する。図11(b−1)および(b−2)に対して、[0,0,0]という3ビットのデータを図9で説明した方法に基づいて埋め込むことにより(図9ではビット0は符号1に相当する)、図11(c−1)および(c−2)が得られる。最初の1対は図9のようなパターンが表現できているが、残り2対の上下一方は、原段階に対して逆方向に大小関係を構築することが要求され、品質維持の都合上、適切なパターンが構築できていないことがわかる。このような改変を加えた結果に対して、周波数逆変換を行った結果が図11(d)である。一般に音響信号波形の外形(エンベロープという)はエネルギー分布が大きい低周波成分で決定され、これらは本願では所定の周波数範囲外の信号成分に含まれ、図11(c)の段階では改変が加えられていないため、周波数逆変換後の図11(d)は周波数変換前の図11(a)と類似した形状になる。
このような埋め込みを行なった結果に対して、抽出処理を行う様子を図12に示す。図12(a)および図12(b)は各々図11(d)および図11(c)に対応する。図12(b)において、ビット判定を行なうにあたり、最初の1対以外は図9で想定されているパターンが形成されていないため、正しいビットを判定することが難しくなる。
次に、本実施形態における振幅変換を導入した手法について図13および図14を用いて説明する。図13(a)は図11(a)と同じ原音響信号を示しており、同様に周波数変換を行った図13(b)も図11(b)と同じである。ここで、6つのフレーム単位に振幅変換を行った結果が図13(c)である。図13の場合、図13(a)で各フレーム内の振幅が平坦であるため、図13(c)では全体が平坦になっているが、実際には各フレーム内は微細に変動しており、そのフレーム内変動分は図13(c)の段階でも踏襲されるため、本図のように完全に平坦になることは通常ない。(実際は図13(c)は周波数次元のデータになるため、周波数次元のデータも平坦にならず変動した形態になる。)また、変換倍率はフレームごとに設定し、上下2つの周波数成分に対しては同一の倍率で変換を行うため、通常は上下で顕著な差が生じる(ただし、時間軸方向は比較的揃う)。これに対して、[0,0,0]という3ビットのデータを埋め込むと、図13(d−1)および(d−2)が得られる。原段階である図13(c)が平坦な波形であるため、全てのフレームにおいて図9のような理想的なパターンが容易に構築できることがわかる。続いて、前記フレームごとに設定した倍率の逆数を乗じて振幅逆変換を行った結果が図13(e)である。この段階では図11(c)と類似したパターンが生じることが多いが、本形状はいかなるものでも構わない。最後に周波数逆変換を行うと、図13(f)が得られ、同様に原信号波形の図13(a)と類似した形状になる。
このような埋め込みを行なった結果に対して、抽出処理を行う様子を図14に示す。図14(a)、(b)および(c)は各々図13(f)、(e)および(d)に対応する。図14(b)の周波数変換後の波形形状は図13(b)とは基本的に異なるが、算出される振幅変換倍率は類似した値になり、ほぼ同様な倍率で振幅変換が行われ図14(c)が得られる。図14(c)の段階で、ビット判定を行なうと、全てのフレームにおいて図9のような理想的なパターンが形成されているため、正しいビットを判定することが可能になる。
以上、本実施形態では、図13(c)に示したように、埋め込み対象の信号成分が時間軸方向に平坦になるように変換を行って埋め込むようにしているため、高周波側と低周波側の成分強度の大小関係が完全に逆になるような不自然な変更を行う確率が低くなり、品質を維持しながら、抽出側における抽出精度を高めることが可能となる。
(3.3.コンテンツ同期再生装置の詳細)
次に、本発明に係るコンテンツ同期再生装置について説明する。図15は、図4に示したタイムコード抽出手段230の詳細な構成を示す図である。図4において、10は基準フレーム獲得手段、120は位相変更フレーム設定手段、130は周波数変換手段、140は符号判定パラメータ算出手段、150は符号出力手段、160は付加情報抽出手段、170は音響フレーム保持手段、180は変換テーブル作成手段である。タイムコード抽出手段230は、基準フレーム獲得手段110、位相変更フレーム設定手段120、周波数変換手段130、符号判定パラメータ算出手段140、符号出力手段150、付加情報抽出手段160、音響フレーム保持手段170は、変換テーブル作成手段180により構成されている。
音響信号入力手段220は、上述のように、流れている音声をデジタル音響信号として取得し、入力する機能を有している。入力した音響信号は音響ファイルとして記録する。現実には、マイクロフォンおよびA/D変換器により実現される。マイクロフォンとしては、変更対象周波数帯の成分が検出可能なものであれば、モノラル無指向性のものであっても、ステレオ指向性のものであっても使用可能である。ステレオ指向性のものであっても一方のチャンネルだけ利用すれば良い。マイクロフォンは特別精度の高いものでなく、一般的な精度のマイクロフォンを用いても情報の抽出が可能となる。基準フレーム獲得手段110は、音響ファイルに記録されたデジタルのモノラル音響信号から所定数のサンプルで構成される音響フレームを基準フレームとして読み込む機能を有している。基準フレームとしては、埋め込み時と同様にAタイプ、Bタイプのものが設定される。位相変更フレーム設定手段120は、Aタイプ、Bタイプそれぞれの基準フレームと所定サンプルずつ移動させることにより位相を変更した音響フレームを位相変更フレームとして設定する機能を有している。
周波数変換手段130は、基本的には、図6に示した周波数変換手段20とほぼ同様の機能を有している。ただし、音を取り込むタイミングが、音響信号の先頭からとはならないため、正しい位相を特定するために、複数の位相で振幅変換、周波数変換を行う点が異なっている。
周波数変換手段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は、図6に示した変換テーブル作成手段80と同様、Nwビットが取り得る2のNw乗個の全ての基準符号に対して、互いにハミング距離が少なくとも4以上となるNh(>Nw)ビットのハミング符号を割り当てることにより、Nwビットの基準符号とNhビットのハミング符号が対応付けられた符号変換テーブルを作成する機能を有している。
図15に示した各構成手段は、現実には情報処理機能を有する小型のコンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。特に、本発明の目的をより簡易に達成するためには、プログラムを実行するコンピュータとしての機能を備えた携帯電話機等の携帯型端末装置をハードウェアとして用いることが望ましい。
(3.4.コンテンツ同期再生装置の処理動作)
次に、図15に示したコンテンツ同期再生装置の処理動作について説明する。コンテンツ同期再生装置を起動すると、まず、シリアル番号抽出手段230は、位相判定テーブルS(p)、位相決定ログ、位相確定フラグ、総和値累積テーブルTe(1、p)〜Te(8、p)、ビットカウンタを初期化する。位相判定テーブルS(p)は、位相を判定するためのテーブルであり、pは0〜5の整数値をとる。初期値はS(p)=0に設定されている。位相決定ログは、1つの基準フレームと5つの位相変更フレームの組ごとに、決定された位相すなわち位相番号pを記録していくものであり、初期状態では0が設定されている。位相確定フラグは、位相が確定しているかどうかを示すフラグであり、初期状態ではOffに設定されている。総和値累積テーブルTe(1、p)〜Te(8、p)は、過去分の総和値E1〜E4、残響補正後の総和値E1´〜E4´を6通りの位相別に保存したものであり、初期状態ではTe(1、p)〜Te(8、p)=0に設定されている。ビットカウンタについては初期値として0を設定する。
続いて、変換テーブル作成手段180が、上述のように、図2に示した符号変換テーブルを用いて図5に示した巡回符号表を作成する。
シリアル番号抽出手段230により、初期化処理、巡回符号表の作成が行われたら、音響信号入力手段220は音響信号入力処理を開始する。音響信号入力手段220は、マイクロフォンにより入力した音を順次デジタル化して複数のサンプルからなるサンプル列をその内容とする音響ファイルを作成する。シリアル番号抽出手段230は、各音響ファイルに対して、順次シリアル番号抽出処理を実行していく。
1音響ファイルに対するシリアル番号抽出手段230の処理についてのフローチャートを図16に示す。まず、基準フレーム獲得手段110が、音響信号入力手段100により作成された音響ファイルから、所定数のサンプルで構成される音響フレームを基準フレームとして抽出する(S201)。具体的には、Aタイプ、Bタイプについての基準フレームを抽出して音響フレーム保持手段170に読み込むことになる。基準フレーム獲得手段110が基準フレームとして読み込む1音響フレームのサンプル数は、図6に示した音響フレーム読込手段10で設定されたものと同一にする必要がある。したがって、本実施形態の場合、基準フレーム獲得手段110は、Aタイプ、Bタイプについてそれぞれ2048サンプルずつ、順次基準フレームとして読み込んでいくことになる。音響フレーム保持手段170には、各チャンネルについて、Aタイプ、Bタイプ2個ずつの基準フレーム、すなわち2.5Nサンプルが格納可能となっている。すなわち、音響フレーム保持手段170には、基準フレーム最大4個分(連続する5120サンプル)が格納されることになる。
抽出装置で処理する音響フレームは、先頭から途切れることなく隣接して設定される基準フレームと、この基準フレームと位相を変更した位相変更フレームとに分けることができる。基準フレームについては、Aタイプの音響フレームとBタイプの音響フレームが、1024サンプルずつ重複している場合、最初の基準フレームとしてサンプル番号1からサンプル番号2048までを設定したら、次の基準フレームは、サンプル番号1025からサンプル番号3072、さらに次の基準フレームは、サンプル番号2049からサンプル番号4096、さらに次の基準フレームは、サンプル番号3073からサンプル番号5120、というように途切れることなく設定される。そして、各基準フレームについて、1/6フレーム(約341サンプル)ずつ移動した5個の位相変更フレームを設定する。例えば、最初の基準フレームについては、サンプル番号341、683、1025、1366、1713から始まる2048のサンプルで構成される5個の位相変更フレームが設定されることになる。続いて、周波数変換手段130、符号判定パラメータ算出手段140が、読み込んだ各音響フレームについて、位相を特定した後、埋め込まれている情報を判定し、対応する符号を出力する(S202)。出力される情報の形式は、埋め込まれた情報に対応する値1、値2の2通りの形式となる。
ここで、ステップS202の位相確定および符号判定の詳細を図17のフローチャートに従って説明する。まず、位相確定フラグがOnであるかOffであるかの確認を行う(S301)。位相確定フラグがOnである場合は、位相確定処理(S303〜S309)を行わず、符号判定処理のみを行う(S302)。ただし、初期状態では位相は確定しておらず、位相確定フラグがOffとなっているので、候補符号テーブルB(p)の初期化を行う(S303)。候補符号テーブルB(p)は、1つの基準フレームおよび5個の位相変更フレームを特定するp=0〜5の位相番号および、この6個の音響フレームの状態から得られる2値の符号を記録するものである。
続いて、符号判定パラメータ算出手段140は、符号判定処理を行う(S302)。ここで、符号判定処理の詳細を図18に示す。まず、周波数変換手段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´
ここで、図17のフローチャートに戻って、符号判定パラメータ算出手段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)を行うことになる。
再び図16のフローチャートに戻って説明する。位相確定および符号出力が行なわれたら、出力された符号の値に対応する1ビットをバッファに保存する(S203)。次に、ビットカウンタを“1”だけカウントアップする(S204)。
次に、ビットカウンタが35以下であるか36以上であるかを判断する(S205)。ビットカウンタが35以下の場合は、S201に戻って、次のAタイプ、Bタイプの基準フレームを抽出する処理を行う。
ビットカウンタが36以上である場合は、バッファに保存された36ビットのうち、前半18ビットと後半18ビットの照合を行う(S206)。具体的には、前半18ビットと後半18ビットについて先頭から順に比較し、全てのビット同士が同一であるかどうかを判断する。照合の結果、前半18ビットと後半18ビットが完全に一致する場合には、後半18ビットと巡回符号表内のビットパターンとの照合を行う(S207)。
照合の結果、一致するビットパターンが18ビットハミング符号または巡回ビットパターンとして存在する場合には、適合パターン有りと判断し、対応する8ビット基準符号と、直前に抽出された仮タイムコードとの差分を算出し、その差分が“1”であるかどうかを判断する(S208)。差分が“1”である場合は、8ビット基準符号を正式なタイムコードとして抽出する(S209)。差分が“1”でない場合は、8ビット基準符号を、既に保持されている仮タイムコードに代えて新たな仮タイムコードとして保持する。なお、仮タイムコードが保持されていない場合は、8ビット基準符号を仮タイムコードとして一時保存する。
図16に示す処理を各基準フレームに対して実行することにより、タイムコードが抽出されることになる。S209において正式なタイムコードが抽出されたと場合には、処理を終了する。
(3.5.位相補正処理について)
上記のように、抽出時には、埋め込み時に埋め込んだ音響フレームに対応して、音響信号を読み込むことができるとは限らない。そこで、音響フレームの位相をずらして複数通り(本実施形態では6通り)で読み込み、その中で最適な位相を決定し、その位相で特定される音響フレームに対応する符号を出力することにしている。例えば、6通りで読み込む場合、先頭の音響フレームは、本来サンプル番号1〜2048のサンプルであるが、サンプル番号1、341、683、1025、1366、1713から始まる2048のサンプルで構成される6個の各音響フレームに対して処理を行い、最適な音響フレームに対応する符号を出力することになる。なお、図17のフローチャートを用いて説明したように、本実施形態では、同一位相が所定回数連続した場合には、それ以降はその位相を確定したものとして処理を行う。
(4.ビット配列のビット数Nh、ハミング距離を変更した場合)
上記実施形態では、ビット配列作成の際、作成されるビット配列は、18ビット(Nhビット)でハミング距離が4となるようにしたが、ビット配列のビット数Nh、およびハミング距離は、適宜変更することが可能である。一般に、ビット配列のビット数Nhを大きくすれば、符号化効率は悪くなるが、訂正可能な誤りビット数は増えることになる。したがって、マイクロフォンの感度や演算処理能力が比較的高い抽出装置を用いる場合には、ビット数、ハミング距離が小さいビット配列を作成するようにし、マイクロフォンの感度や演算処理能力が比較的低い抽出装置を用いる場合には、ビット数、ハミング距離が大きいビット配列を作成するようにする。一方、最低ハミング距離を小さくすることにより訂正可能なビット数は少なくなるが、割り当て可能なタイムコードの数を増やすことができる。流れている音に合わせて、細かいタイミングでコンテンツを再生するためには、タイムコードの間隔はあまり長くなりすぎない方が好ましいため、元の音の時間が長い場合には、タイムコードを増やして対応することになる。このような状況を考慮して、作成するビット配列のビット数、最低ハミング距離は適宜設定されることになる。