図1は、本発明に係る撮像装置の一実施例の概略構成ブロック図を示す。図1に示す実施例は、動画及び音声を記録可能であり、記録した動画及び音声を再生可能な撮像装置、いわゆるビデオカメラ100である。ビデオカメラ100には、1以上のワイヤレスマイク200(2001〜200n)を接続可能である。ワイヤレスマイク2001〜200nは同じ構成からなる。
ビデオカメラ100の構成を説明する。光学系101は撮像のためのレンズ群と、そのレンズを駆動させるアクチュエータ群とからなる。光学系101は、CPU106からの指示に従い、ズームとフォーカスを変更可能である。撮像素子102は、光学系101が結像させた光学像を電気信号に変換し、得られた画像データをCPU106に供給する。
マイク部103は、ビデオカメラ100の筺体に固定されたマイクまたは有線接続されたマイクとA/D変換回路からなる。マイク部103は周囲の音声を取り込み、対応する音声データをCPU106に供給する。
表示部104は、撮像した画像、及びユーザ設定のためのメニュー等を表示する。表示部104は、具体的には、液晶表示装置(LCD)などの画像を表示可能なデバイスからなる。通信部105は、ワイヤレスマイク200A,200Bと無線通信する。
CPU106は、ビデオカメラ100全体の処理を統括する中央制御ユニットであり、基本的にROM108に格納されているブログラムとデータに基づいて動作する。操作部107は、ユーザの操作を受け付ける手段であり、具体的にはビデオカメラ100のユーザが触れることのできる部分にあるボタン、レバー及びタッチパネルなどからなる。ROM108には、ビデオカメラ100が動作するためのプログラムとパラメータなどのデータが予め書き込まれており、CPU106は基本的にROM108の内容に従って動作する。RAM109は、CPU106上で動作するプログラムと一時データを格納するのに使用される。
記録媒体110は、動画データ及び音声データ等を記録するのに使用される。撮影時に記録媒体110に動画データ及び音声データが記録される。再生時に、記録媒体110から記録された動画データ及び音声データが読みだされる。記録媒体110は、例えば、不揮発性の半導体メモリ等からなる。
ワイヤレスマイク2001〜200nの内部構成を説明する。ワイヤレスマイク2001〜200nは、同じ構成からなる。マイク部201は外部の音声を取り込むマイクと、マイクの出力音声信号をデジタル信号に変換するA/D変換回路からなる。マイク部201は、取り込んだ音声データをCPU202に供給する。
CPU202は、ワイヤレスマイク2001〜200nの動作を全体的に統括する中央制御ユニットであり、基本的にROM203に格納されているブログラムとデータに基づいて動作する。ROM203には、ワイヤレスマイク2001〜200nが動作するためのプログラムとパラメータなどのデータが予め書き込まれており、CPU202は基本的にROM203の内容に従って動作する。RAM204は、CPU202上で動作するプログラムと一時データを格納するのに使用される。通信部205はビデオカメラ100の通信部105と無線通信する。
図2A及び図2Bは、ビデオカメラ100の記録時の音声処理の動作フローチャートである。音声処理は、動画の記録と同期して行われるので、図2A及び図2Bに示すフローは、記録される動画のフレーム周期で繰り返し実行される。たとえば、毎秒30フレームの動画記録を行う場合、CPU106は、図2A及び図2Bに示す処理を1/30秒以内に実行し、1秒間に30回、繰り返す。ビデオカメラ100(CPU106)は、撮像画像内の人物を認識する機能と、予め登録されている人物とワイヤレスマイク2001〜200nとを関連付けて記憶する機能を有する。記録媒体110には、被写体となる人物を識別するために必要な特徴データが事前に登録された被写体登録手段として機能する。CPU106は、この特徴データを参照して被写体を識別する。図2A及び図2Bに示すフローでは、ワイヤレスマイク2001〜200nをマイクi(但し、i=1〜n)と表記する。
ユーザがビデオカメラ100での記録を開始すると、CPU106は、マイク部103から動画1フレーム時間に相当する音声信号を取得し、RAM109内の音声信号用バッファに記録する(S201)。図3は、RAM109内の音声信号用バッファの構成を示す模式図である。音声信号用バッファは、数の領域に分割されている。ミックス音声領域には、マイク部103及び接続されたワイヤレスマイク2001〜200nの音声をミックスしたデータが最終的に格納される。内蔵マイク音声領域には、内蔵のマイク部103からの音声データが格納される。マイク[i]音声領域(但し,i=1〜n)には、ワイヤレスマイク2001〜200nからの音声データが格納される。CPU106はまず、マイク部103で取得した音声データをRAM109のミックス音声領域及び内蔵マイク音声領域に格納する。
CPU106は、内部変数iに1をセットして初期化する(S202)。変数iは、ワイヤレスマイクiを特定する。CPU106は、予めビデオカメラ100に登録されているワイヤレスマイクiが通信部105を介して検出できるか否かを判定する(S203)。検出されない場合(S203)、CPU106は、内部変数Mic[i]に”0”をセットする(S204)。内部変数Mic[i]は、マイクiの状態を示す変数である。図4は、内部変数Mic[i]の値と意味の対応表を示す。
マイクiが検出される場合(S203)、CPU106は、通信部105を介してマイクiから動画1フレーム時間に相当する音声信号を取得し、RAM109内のマイク[i]音声領域に記録する(S205)。次に、CPU106は、マイクiが撮像画像内に存在するか否かを判定する(S206)。この判定は、マイクiが関連付けられている人物が撮像画像内に検出されているか否かで行うことができる。
マイクiが撮像画像内に存在する場合(S207)、CPU106は、ミックス音声領域の音声データとマイク[i]音声領域の音声データを混合し、混合結果の音声データをミックス音声領域に記録する(S208)。また、CPU106は、内部変数Mic[i]にワイヤレスマイクiが検出されており、かつ撮像画像内に存在することを示す値”1”をセットする(S209)。
マイクiが撮像画像内に存在しない場合(S207)、CPU106は、内部変数Mic[i]にマイクiが検出されているが、撮像画像内に存在しないことを示す値”2”をセットする(S210)。
ステップS209又は同S210の後、CPU106は、マイク[i]音声領域に記録されている動画1フレーム時間の音声データに人物の発声による音声が含まれるかどうかを判定する(S211)。この判定には、例えば、特開2001−022367号公報に記載されるような方法が利用可能である。即ち、入力音声フレームの背景雑音レベルを判定し、この雑音レベルに対応した閾値と入力音声フレームの音量を比較する。
CPU106は、ステップS211の判定結果をマイクiに対する音声検出履歴データとしてRAM109に格納する(S212)。例えば、10秒分の音声検出履歴データを保持できるFIFOバッファに、該当フレームにおいて音声を検出した場合は音声フレームの音量値を、音声を検出していない場合はゼロをセットする。このFIFOバッファは、音声検出履歴保持手段に相当する。
CPU106は、変数iをインクリメントする(S213)。CPU106は、変数iを接続可能なワイヤレスマイク数nと比較し、iがn以下であれば、ステップS203に戻る(S214)。iがnを越える場合(S214)、即ち、全ての接続可能なワイヤレスマイクの検出処理を終了している場合、ステップS215に進む。
図5は、ステップS212で記録した音声検出履歴データの例を模式的に示す。図5では、接続可能なワイヤレスマイクの数nが4である場合を示している。各ワイヤレスマイクの右の欄に、音声を検出したフレームに該当する箇所にハッチングが施されている。欄の左側が時間的に過去のフレームに該当し、右端が現在処理中のフレームに該当する。また、ハッチングを施した部分の高さは、該当するフレームで検出された音声の音量を示す。例えば、ワイヤレスマイク1に関しては、現在時刻の10秒前から2秒間、音声を検出し、その後、3秒間の音声未検出、3秒間の音声検出及び2秒間の音声未検出になっている。
CPU106は、全ワイヤレスマイクの検出を終了した後、各ワイヤレスマイクiの出力で検出された音声をブロックとして検出する(S215)。図5に示す例では、マイク1に関しては、現在時刻の10秒前から2秒間の音声ブロックと、3秒前から3秒間の音声ブロックが、検出される。
図6A及び図6Bは、音声ブロック検出処理(S215)の動作フローチャートである。図6A及び図6Bに示すフローチャートでは、音声が連続して0.5秒以上検出され、かつ、その後に音声が1秒以上未検出の場合の、検出された音声部分を音声ブロックとして検出する。
CPU106は、音声ブロック検出を行うワイヤレスマイクを示す内部変数iに1をセットする(S601)。CPU106は、音声フレーム位置を示す内部変数tに1をセットし、マイクiの音声検出履歴データから検出される音声ブロック数を示す内部変数bn[i]に0をセットする(S602)。音声フレーム位置は、現在時刻から10秒前の位置のフレームに対する番号を1とし、フレーム位置が1フレーム時間分現在時刻に近付くと、番号が1増加するものとする。従って、現在時刻に対応するフレーム位置番号は秒間30フレームであるので、30(フレーム)×10(秒)=300となる。マイクiに対する内部変数tで示すフレーム位置の音声検出履歴データをpower[i][t]と表記する。power[i][t]は、マイクiから取得した音声データのフレーム位置tにおける音量を示す。
CPU106は、ステップS603以降の処理で、まず音声ブロックの先頭フレームを検出する。まず、CPU106は、マイクiに対するフレーム位置tの音声検出履歴データpower[i][t]から音声検出の有無を判定する(S603)。音声が未検出の場合は、CPU106は、内部変数tをカウントアップし(S604)、現在時刻に対するフレーム位置の処理が終了したか否か判定する(S605)。ステップS605中のFRの値は秒間のフレーム数を示す。ビデオカメラ100は毎秒30フレームの動画記録を行うので、FRの値は30である。
現在時刻に対するフレーム位置の処理が終了していない場合(S605)、CPU106は、ステップS603に戻り、次の音声フレーム位置に対する処理を行う。現在時刻に対するフレーム位置の処理が終了している場合(S605)、CPU106は、変数iをカウントアップする(S606)。そして、CPU106は、内部変数iとマイク数nの比較により、全ワイヤレスマイクに対する処理を終了したか否かを判定する(S607)。全ワイヤレスマイクに対する処理が終了していない場合(S607)、CPU106は、ステップS602に戻って、次のワイヤレスマイクに対する処理を行う。全ワイヤレスマイクに対する処理が終了している場合(S607)、CPU106は、音声ブロック検出処理を終了する。
変数tで示すフレーム位置に音声が検出されている場合(S603)、CPU106は、内部変数ts,pw,pcを対応する所定値で初期化する(S608)。具体的には、音声ブロックの先頭フレーム候補位置を示す変数tsに変数tの値をセットする。音声ブロックに含まれる音量の総和を示す変数pwに現在の処理フレームの音量データの音量、即ち、power[i][t]の値をセットする。音声が検出されたフレームの総数をカウントする内部変数pcに1をセットする。変数pw,pcは、検出した音声ブロックの平均音量を算出するために使用される。
CPU106は、変数tをカウントアップし(S609)、ステップS610で、CPU106はフレーム位置tで音声が検出されているか否かを判定する(S610)。音声が検出されていない場合(S610)、CPU106は、フレーム位置tsがブロックの先頭ではないと判断して、ステップS604に進み、再度、音声ブロックの先頭フレーム候補の検出処理を行う。
フレーム位置tに音声が検出されている場合(S610)、CPU106は、変数pwに現在の処理フレームの音量データ値をセットし、変数pcをカウントアップする(S611)。CPU106は、現在処理中のフレーム位置tが音声ブロックの先頭フレーム候補位置tsの0.5秒後であるか否か、即ちフレーム位置tsから連続して0.5秒間音声が検出されているか否かを判定する(S612)。0.5秒後ではない場合(S612)、CPU106は、ステップS609に戻って次のフレームの処理を行う。0.5秒後である場合(S612)、CPU106は、変数bn[i]をカウントアップし、変数b_start[i][bn[i]]に変数tsの値をセットする(S613)。b_start[i][bn[i]]は、マイクiに対するbn[i]番目の音声ブロックの先頭フレーム位置を示す。
ステップS608〜S613で音声ブロックの先頭フレーム位置が検出された場合、CPU106は、検出した音声ブロックの最終フレーム位置を検出する。まず、CPU106は、フレーム位置Tで音声が検出されているか否かを判定する(S614)。音声が検出されている場合(S614)、CPU106は、変数pwに現在の処理フレームの音量データ値をセットし、音声が検出されたフレームの総数をカウントする変数pcをカウントアップする(S615)。次に、CPU106は、変数tをカウントアップし(S616)、現在時刻に対するフレーム位置の処理が終了したか否か判定する(S617)。現在時刻に対するフレーム位置の処理が終了していない場合(S617)、CPU106は、ステップS614に戻って、次の音声フレーム位置に対する処理を行う。
現在時刻に達している場合(S617)、CPU106は、マイクiに対するbn[i]番目の音声ブロックの最終フレーム位置を示す変数b_end[i][bn[i]]に現在時刻を示す値をセットする(S618)。CPU106はまた、変数pwを変数pcで除算した結果を変数p_ave[i][bn[i]]にセットする(S618)。変数p_ave[i][bn[i]]は、マイクiに対するbn[i]番目の音声ブロックの平均音量を示す。CPU106は、ステップS618の処理の後、ステップS606に移行する。
フレーム位置tに音声が検出されていない場合(S614)、CPU106は、変数tsに音声ブロックの最終フレーム候補位置として変数tより1フレーム前の位置を示す値をセットする(S619)。CPU106は変数tをカウントアップし(S620)、フレーム位置tで音声が検出されているか否かを判定する(S621)。音声が検出されている場合(S621)、CPU106は、フレーム位置tsがブロックの最終フレームではないと判定してステップS615に進み、再度、音声ブロックの最終フレーム候補の検出処理を行う。フレーム位置tに音声が検出されていない場合(S621)、CPU106は変数tが変数tsの値の1秒後であるか否か、即ちフレーム位置tsから連続して1秒間、音声が未検出であるか否かを判定する(S622)。1秒後ではない場合(S622)、CPU106は、ステップS620に戻って次のフレームの処理を行う。1秒後である場合(S622)、CPU106は、マイクiに対するbn[i]番目の音声ブロックの最終フレーム位置を示す内部変数b_end[i][bn[i]]に変数tsの値をセットする(S623)。CPU106はまた、変数pwを変数pcで除算した結果を変数p_ave[i][bn[i]]にセットする(S623)。先に説明多様に、変数p_ave[i][bn[i]]は、マイクiに対するbn[i]番目の音声ブロックの平均音量を示す。
ステップS619〜S623で音声ブロックの最終フレーム位置を検出した場合、CPU106は、ステップS603に戻って次の音声ブロックの検出処理を継続する。
図6A及び図6Bに示すフローチャートに従った処理を行うことで、CPU106は、各ワイヤレスマイクで取得された音声に対して、音声ブロックを検出し、各音声ブロックの平均音量を求めることができる。
図2A及び図2Bに戻り、ステップS216以降の処理を説明する。CPU106は、内部変数iに1をセットして初期化する(S216)。変数iは処理中のワイヤレスマイクを指定する番号を示す。CPU106は、マイクiの状態を判定する(S217)。マイクiが、ビデオカメラ100により検出されていないか、検出され、且つ撮像画像内に存在する場合(S217)、CPU106は、次のマイクの処理に移行するために変数iをカウントアップ又はインクリメントする(S221)。
マイクiが、ビデオカメラ100により検出されているが、撮像画像内に存在しない場合(S217)、CPU106は、このマイクiと、ビデオカメラ100により検出され、且つ撮像画像内に存在する他のワイヤレスマイクとの相関を判定する(S218)。CPU106は、相関がある場合にTRUEを、相関がない場合はFALSEを内部変数Resultにセットする。ステップS218の動作の詳細は後述する。
相関がある場合(S219)、CPU106は、音声信号用バッファのミックス音声領域の音声データとマイク[i]音声領域の音声データをミックスし、ミックス処理結果の音声データをミックス音声領域に格納する(S220)。そして、CPU106は、次のマイクの処理のために変数iをカウントアップする(S221)。
相関がないと判定された場合(S219)、CPU106は、次のマイクの処理のために変数iをカウントアップする(S221)。
ステップS221の後、CPU106は変数iをワイヤレスマイク数nと比較し、全ての接続可能なワイヤレスマイクの処理を終了したか否かを判定する(S222)。全ての接続可能なワイヤレスマイクの検出処理が終了していない場合、CPU106は、ステップS217に戻って次のワイヤレスマイクの処理を行う。終了している場合、CPU106は、音声信号用バッファのミックス音声領域の音声データを記録媒体に記録し(S223)、ステップS201に戻って次の記録フレームに対する処理を繰り返す。
図7A及び図7Bは、相関判定処理(S218)の動作例を示すフローチャートである。図7A及び図7Bに示すフローチャートに従い、CPU106は、処理対象のマイクiが、ビデオカメラ100により検出され、かつ撮像画像内に存在する他のワイヤレスマイクのいずれかと相関があるか否かを判定する。図7A及び図7Bに示すフローチャートでは、処理の途中でいずれかのワイヤレスマイクとの相関があると判定された時点で、相関判定結果ResultにTRUEをセットして処理を終了する。全てのワイヤレスマイクとの相関判定が終了しても、いずれのワイヤレスマイクとも相関がない場合、相関判定結果Resultの値はFALSEのままで判定処理を終了する。
CPU106は、内部変数ResultにFALSEを、内部変数jに1をセットして初期化する(S701)。内部変数jは、現在処理中のマイクiとの相関の有無を判定する対象のワイヤレスマイクを特定する番号を示す。CPU106は変数jと変数iの値が一致するか否かを判定する(S702)。変数iと変数jの値が一致する場合(S702)、CPU106は、変数jをカウントアップし(S703)、全てのワイヤレスマイクとの相関判定を終了したか否かを判定する(S704)。全てのワイヤレスマイクとの相関判定が終了していない場合(S704)、CPU106は、ステップS702に戻って、次のワイヤレスマイクとの相関判定処理を継続する。
内変数jと変数iの値が一致しない場合(S702)、CPU106は、マイクjがビデオカメラ100により検出されており、かつ撮像画像内に存在するか否かを判定する(S705)。マイクjがビデオカメラ100により検出されていないか、または、検出されていても撮像画像内に存在しない場合(S702)、CPU106は、先に説明したように、変数jをカウントアップして、次のワイヤレスマイクとの相関判定処理を行う(S703)。
マイクjがビデオカメラ100により検出され、かつ撮像画像内に存在する場合、CPU106は、内部変数biに1をセットし(S706)、内部変数bjに1をセットする(S707)。変数biはマイクiの音声検出履歴データから検出された音声ブロックの番号を示す。変数bjはマイクjの音声検出履歴データから検出される音声ブロックの番号を示す。以下、マイクiに対するbi番目の音声ブロックを音声ブロック(i,bi)”と記す。
CPU106は、変数dtに音声ブロック(i,bi)の先頭フレーム位置と音声ブロック(j、bj)の先頭フレーム位置の差分をセットし(S708)、内部変数dtの正負を判定する(S709)。変数dtが正値である場合(S709)、音声ブロック(j、bj)は、音声ブロック(i,bi)よりも先頭フレーム位置が時間的に過去の状態である。図5に示す例では、音声ブロック(i,bi)が音声ブロック502であり、音声ブロック(j,bi)が音声ブロック501である場合に対応する。他方、変数dtが負値である場合(S709)、音声ブロック(i,bi)は音声ブロック(j,bj)よりも先頭フレーム位置が時間的に過去の状態である。図5に示す例では、音声ブロック(i,bi)が音声ブロック502であり、音声ブロック(j,bi)が音声ブロック503である場合に相当する。本実施例では、処理の簡略化のため、dt=0の場合、即ち音声ブロック(i,bi)と音声ブロック(j、bj)の先頭フレーム位置が一致する場合には、dtが正値の場合と同様の処理を行う。
dtが正値又はゼロである場合(S709)、CPU106は、音声ブロック(i,bi)の先頭フレーム位置と音声ブロック(j、bj)の最終フレーム位置の差分値を変数dtにセットする(S710)。他方、dtが負値である場合(S709)、CPU106は、音声ブロック(j,bj)の先頭フレーム位置と音声ブロック(i,bi)の最終フレーム位置の差分値を変数dtにセットする(S711)。音声ブロック(i,bi)と音声ブロック(j,bj)が時間的に重なっている場合、dtはゼロ又は負値となり、重なっているフレーム時間数を示す。音声ブロック(i,bi)と音声ブロック(j,bj)が時間的に重なっていない場合、dtは正の値となり、音声ブロック間の隔たりフレーム時間数を示す。
ステップS710又はS711の後、CPU106は、変数dtの値が所定の定数T1と定数T2の範囲内にあるか否かを判定する(S712)。T1は負値であり、相関がある音声ブロック間の許容可能な重なりフレーム数を示す。T2は正値であり、相関がある音声ブロック間の許容可能な隔たりフレーム数を示す。dtがT1以下の場合、重なりフレーム数が許容可能なフレーム数を超えることになり、dtがT2以上の場合、音声ブロック間の隔たりフレーム数が許容可能なフレーム数を超えることになる。ここでは、2つのマイクの音声が隔たる間隔が所定時間よりも短いかどうか、また、音声の重なりが所定時間より長いかどうかを見ていることになる。
dtがT1以下であるか、T2以上である場合(S712)、CPU106は、音声ブロック(i,bi)と音声ブロック(j、bj)との間に相関が無いと判定し、ステップS713に進む。CPU106は、ステップS713で内部変数bjをカウントアップし(S713)、マイクjの全音声ブロックと音声ブロック(i,bi)との相関判定を終了したか否かを判定する(S714)。マイクjの全音声ブロックと音声ブロック(i,bi)との相関判定を終了していない場合、CPU106は、ステップS708に戻って音声ブロック(i,bi)とマイクjの次の音声ブロックとの相関判定を行う。
マイクjの全音声ブロックと音声ブロック(i,bi)との相関判定を終了すると(S714)、CPU106は変数biをカウントアップする(S715)。そして、CPU106は、マイクiの全音声ブロックとマイクjの全音声ブロックとの相関判定を終了したか否かを判定する(S716)。マイクiの全音声ブロックとマイクjの全音声ブロックとの相関判定を終了していない場合(S716)、CPU106は、ステップS707に戻って、マイクiの次の音声ブロックとマイクjの音声ブロックとの相関判定を行う。マイクiの全音声ブロックとマイクjの全音声ブロックとの相関判定を終了している場合(S716)、CPU106は、マイクiと次のワイヤレスマイクとの相関判定を行うために、変数jをカウントアップする(S703)。
dtがT1よりも大きく、且つ、T2よりも小さい場合(S712)、CPU106は、音声ブロック(i,bi)の平均音量と音声ブロック(j、bj)の平均音量の差分絶対値を内部変数dpにセットする(S717)。CPU106は、変数dpが所定閾値Pよりも小さいか否かを判定する(S718)。変数dpが所定閾値以上である場合(S718)、音声ブロックの音量の差が大きいことを示しているので、音声ブロック間に相関がないと判断でき、CPU106は、ステップS713に移行する。
dtが所定閾値よりも小さい場合(S718)、音声ブロックの音量の差が小さいことを示しているので、マイクiとマイクjの音声に相関があると判断できる。この場合、CPU106は、マイクiがビデオカメラ100により検出され、且つ撮像画像内の他の何れかのワイヤレスマイクと相関があることを示すTRUE値を内部変数Resultにセットして(S719)、処理を終了する。
図7A及び図7Bに示すフローチャートでは、音声ブロックのタイミングの及び音量を用いて相関の判定を行っているが、ステップS708〜ステップS712の処理を行わずにステップS717以降の処理のみを行ってもよい。即ち、音声ブロックの音量のみを用いて相関の有無を判定してもよい。
このように、本実施例では、撮像画像内に検出されるワイヤレスマイクの音声を記録できるだけでなく、この音声と相関のある、撮影画像内に検出されないワイヤレスマイクの音声も記録できる。
ワイヤレスマイクが自身の位置座標を検出する測位機能を有する場合、マイク位置情報を利用して、個々のワイヤレスマイクが撮像画像内にあるかどうかを判定できる。この判定結果を使って、撮像画像内に検出されるワイヤレスマイクの音声と相関のある、撮影画像内に検出されないワイヤレスマイクの音声を選択的に記録できる。
図10は、測位機能を有するワイヤレスマイクの概略構成ブロック図を示す。ワイヤレスマイク1000(10001〜1000n)は、ワイヤレスマイク200の機能に加えて、測位部801を具備する。この実施例では、ビデオカメラ100は、通信部105を介して最大n個のワイヤレスマイク10001〜1000nから音声データと位置情報を取得し、記録できる。
図11A及び図11Bは、本実施例の記録時の音声処理のフローチャートである。図11A及び図11Bにおいて、図2A及び図2Bと同じ処理には同じ符号を付してある。
ユーザがビデオカメラ100での記録を開始すると、CPU106は、実施例1と同様の処理を行い、ワイヤレスマイク1000の検出とワイヤレスマイク1000が撮像画像内に存在するかの判定を行う(S203〜S207)。そして、CPU106は、検出されたワイヤレスマイク1000の音声処理(S208,S209)を行った後、マイクiの位置情報(マイク位置情報)を取得する(S1101)。
CPU106は、接続可能な全ワイヤレスマイク1000の検出処理が終了すると(S214)、ステップS216以降の処理を行う。ステップS216以降の処理で、CPU106は、撮像画像内に存在しないと判定されたワイヤレスマイクの音声と、撮像画像内に存在すると判定された何れかのワイヤレスマイクの音声との相関を判定する(S1102)。CPU106は、音声信号用バッファのミックス音声領域の音声データを記録媒体に記録し(S223)、ステップS201に戻って次の記録フレームに対する処理を繰り返す。
図12は、相関判定処理(S1102)の詳細なフローチャートを示す。CPU106は内部変数ResultにFALSEを、内部変数jに1をセットして初期化する(S1201)。内部変数jは、現在処理中のマイクiとの相関の有無を判定する対象のワイヤレスマイクを特定する番号を示す。CPU106は、変数jと変数iの値が一致するか否かを判定する(S1202)。一致する場合(S1202)、CPU106は、変数jをカウントアップし(S1203)、全ワイヤレスマイクとの相関判定を終了したか否かを判定する(S1204)。
本フローチャートでは、処理の途中でいずれかのワイヤレスマイクとの相関があると判定された時点で、ResultをTRUEにセットして相関判定を終了する。全てのワイヤレスマイクとの相関判定が終了している場合は、何れのワイヤレスマイクとも相関がない状態であり、ResultはFALSEのままで判定処理を終了する。全てのワイヤレスマイクとの相関判定が終了していない場合(S1203)、CPU106は、ステップS1202に戻って、次のワイヤレスマイクとの相関判定処理を継続する。
変数jと変数iの値が一致しない場合(S1202)、CPU106は、マイクjがビデオカメラ100により検出され、かつ撮像画像内に存在するか否かを判定する(S1205)。マイクjがビデオカメラ100により検出されていないか、または、撮像画像内に存在しない場合(S1205)、CPU106は、変数jをカウントアップする(S1203)。CPU106は、次のワイヤレスマイクとの相関判定処理の要否を判断する(S1204)。
マイクjがビデオカメラ100により検出され、かつ撮像画像内に存在する場合(S1205)、CPU106は、マイクiとマイクjの間の距離を算出して、変数dにセットする(S1206)。マイクiとマイクjの間の距離は、図11A及び図11BのステップS1101で取得した各マイクの位置情報を用いて、
に示すヒュベニの距離計算式で求めることができる。
CPU106は、変数dが閾値DTよりも小さいか否かを判定する(S1207)。DTは、会話が成立すると想定される距離である。DTは、予め決められた固定値でよいが、ユーザが値を設定できるようにしてもよい。変数dが閾値DT以上である場合(S1207)、ワイヤレスマイクi,j間の距離が大きく、マイクiとマイクjに相関がないと見做しうる。そこで、CPU106は、変数jをカウントアップし(S1203)、全ワイヤレスマイクとの相関判定を終了したか否かを判定する(S1204)。
変数dが閾値DTよりも小さい場合(S1207)、会話が成立する距離であるので、マイクiとマイクjに相関があると見做しうる。そこで、CPU106は、マイクiが、撮像画面内の検出された何れかのマイク(ここでは、マイクj)と相関があることを示すTRUEを内部変数Resultにセットして(S1208)、処理を終了する。
このように、本実施例では、会話が成立するようなマイク間の距離を要素として、相関を判定する。これにより、撮影画像内に検出されていないマイクの中で適切なマイクの音声を、撮像画像内で検出されるマイクの音声と同時に記録することが可能になる。
実施例1に対する実施例2と同様に、実施例3に対して、再生時に記録音声を選択的に再生するようにしてもよい。即ち、ビデオカメラ100は、記録時には内蔵マイクの音声及び接続する全ワイヤレスマイクの音声を記録し、再生時に、記録された画像・音声データの画像を再生しつつ、音声を選択的に再生する。記録時に各マイクで取得される音声は、1つの動画ファイルに異なるトラックとして記録してもよく、またマイク別にそれぞれ独立した音声ファイルとして記録してもよい。
図13A及び図13Bは、再生時に、撮像画像内に検出されるワイヤレスマイクの音声と、この音声と相関のある、撮影画像内に検出されないワイヤレスマイクの音声を再生する動作のフローチャートを示す。図13A及び図13Bにおいて、図11A及び図11Bと同じ処理内容のステップには同じ符号を付してある。ビデオカメラ100(CPU106)は、予め登録されている人物とワイヤレスマイク10001〜1000nとを関連付けて記憶し、各ワイヤレスマイク10001〜1000nの位置情報を音声トラックまたは音声ファイルに関連付けて記録する。また、ビデオカメラ100は、予め登録されている人物を再生画像中から検出する機能を有し、動画再生時に再生画像中に登録人物が存在するか否かを検出できる。
ユーザがビデオカメラ100で再生対象の動画を選択して再生を開始すると、CPU106は、記録媒体110の選択された動画ファイルをオープンして、再生処理を開始する。音声ファイルが動画ファイルとは別のファイルとして記録されている場合は、内蔵マイク部103及び各ワイヤレスマイク10001〜1000nに対応する音声ファイルも同時にオープンして、再生処理を開始する。
CPU106は、内蔵マイク部103に対応する音声トラックから動画1フレーム時間に相当する音声データを再生して、RAM109の音声信号用バッファに格納する(S1301)。内蔵マイク部103で取得された音声データは、音声信号用バッファのミックス音声領域と内蔵マイク音声領域に格納される。
CPU106は内部変数iに1をセットして初期化する(S1302)。CPU106は、マイクiに対応する音声トラックから動画1フレーム時間に相当する音声データを再生し、RAM109のマイク[i]音声領域に格納する(S1303)。次に、CPU106は、マイクiが再生画像内に存在するか否かを判定する(S206)。この判定は、マイクiが関連付けられている人物が再生画像内に検出されているか否かで行うことができる。
マイクiが再生画像内に存在する場合(S207)、CPU106は、ミックス音声領域の音声データとマイク[i]音声領域の音声データを混合し、混合結果の音声データをミックス音声領域に記録する(S208)。また、CPU106は、内部変数Mic[i]にワイヤレスマイクiが再生画像内に存在することを示す値”1”をセットする(S1304)。図9は、ここで変数Mic[i]セットされる値の例を示す。マイクiが再生画像内に存在しない場合(S207)、CPU106は、変数Mic[i]にマイクiが再生画像内に存在しないことを示す値”2”をセットする(S1305)。
CPU106は、マイクiに対応する音声トラックに関連付けて記録されているマイクiの位置情報を取得する(S1306)。
ステップS213〜S217,S1102,S219〜S222では、実施例3で説明した処理と同様の処理を行う。最終的に、CPU106は、音声信号用バッファのミックス音声領域に格納される音声データを図示しない音声出力手段に出力し(S1307)、ステップS1301に戻って次の記録フレームに対する処理を繰り返す。
以上、説明したように、再生時に、再生画像内に検出されているワイヤレスマイクの音声と、この音声と相関のある、再生画像外のワイヤレスマイクによる音声を同時再生できる。
(その他)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。特に、実施例2又は実施例4に示す再生処理をコンピュータに実行させるためのプログラムによっても、本発明が実現される。
本実施例では、撮像装置を例にとって説明したが、撮像機能または再生機能と、音声処理機能を有していればどのような装置であっても良い。たとえば、カメラ、ビデオ、携帯電話、スマートフォン、パソコンなどであってもよい。
また、実施例1から実施例4の機能は同時に備えられていても良い。また、各実施例を適宜組み合わせて使用しても良い。たとえば、動画及び音声を記録再生可能なビデオカメラにおいて、撮影時に全ワイヤレスマイクの音声を記録するか、実施例1又は3で示した処理を行うかの選択をユーザに可能とする。そして、全ワイヤレスマイクの音声を記録した場合は実施例2又は4で示した処理を行うように構成する。