無難な機能にする
今は、AmuseGraphics Ver1.4.4の開発フェーズで、AG-ムービーカッターの更新作業中だ。今回の目玉は、音声と映像の検索機能を追加する事だったのだが、目で見て探す方が信頼できるので、そういう機能にする事にした。
まず、音声を検索したくなるシチュエーションとしては、例えば、ボイスレコーダーで長時間録音した結果に、意味がありそうな録音部分があるか確認したい様な場合がある。
具体的には、超高齢化社会になっている日本では、記憶力が怪しくなっている年老いた母親なんかが、病院に入院している父親を見舞いに行ったりする事もある筈だ。
そして、病院では、そんな母親を見かけると、担当の医者が色々と話をしたりする事もあったりするかもしれないのだが、その母親的には、家に帰ってくる頃には、言われた事は覚えていなかったりするかもしれない。
なので、その中年の子供的には、年老いた親が外出する時には、ボイスレコーダーを録音状態にして持たせ、帰ってきたら、何かあったかどうかをボイスレコーダーの録音内容を再生して確認する! なんて事も、日常茶飯事になってきている筈だ。
しかし、数時間に及ぶ録音結果を、確認するのは大変だったりもする。
なので、そんな時には、とりあえず、全体の録音状況を視覚的に捉えられ、何かしらの音が録音されているっぽい所にシークして、その内容を確認する! みたいな事が簡単に行えると便利だったりもする筈だ。
まあ、上記の様な行為と、AG-ムービーカッターに何の関係があるんだ? と、思う人もいるかもしれないのだが、もし、担当医から意味のある話をされていたりしたら、その部分は、記録として残しておきたくなる筈なので、AG-ムービーカッターで、その部分のみ、切り出して保存しておく! という使い方が想定される訳だ。
映像については、例えば、AG-Webカメラレコーダーを監視カメラ扱いで使って長時間録画した場合、何事もなければ、映像変化は殆どない筈なのに、何かしらの動きがあった!みたいな事を検出できれば、便利だったりする場合もある筈な訳だ。
つまり、今時、数時間の録画映像を普通に見ていられる程、暇な人はいない筈なので、この録画映像についても、何らかの動きがある映像が録画されているか否かについては、録画データを俯瞰して、簡単に確認できる手立てが欲しくなったりする筈な訳だ。
で、何かしらの映像が録画されていれば、やはり、その部分のみ、切り出して保存したくなる筈なので、今回、AG-ムービーカッターに、こんな機能を実装する事にしている訳だ。
と、言う事で、目的は上記の通りなので、AG-ムービーカッターに、それなりに賢いAIを搭載し、意味ありげな会話が録音されていたらその部分を検出する! だとか、動きがある映像が録画されていたらその部分を検出する! みたいな機能を搭載すれば、より良い更新になる、かもしれないのだが、まだまだ、AIは人間と比べると間抜けかもしれない訳だ。
少なくとも、色々な状況を鑑みて総合的に判断する! みたいな事までAIでやろうとすると、それだけで、高級なミドルウェアを一つ開発する必要もでてきそうなので、今回は、そんなAIは搭載しない事にして、上記の様な状況は、ユーザーが、自分で、解析用画像を見ながら検出する! という事にした。
実際の所、それっぽい音声が録音されているか否かについては、録音音量を視覚化した解析データで視認可能な筈だ。
少なくとも、作者的には、何とかなりそうだったので、音声については、そんな感じにしたのだが、映像については、少し悩ましい。
何故なら、映像を同様に視覚化するのであれば、音量の代わりに、フレーム毎の光量、みたいなモノをグラフ化する事になるのだが、光量を全ピクセルの明るさの合計とすると、背景色が均一の状況で、何かしらの物体が移動しても、フレーム毎の光量は変化しない。
なので、映像には何かしらの動きがあるにも関わらず、解析データには、その影響が反映されないので、それを視覚化したグラフを見ていても、動きがある映像部分を視認する事が出来ない。
このため、映像については、ピクセルごとの明るさの変化量の合計値を解析データにしようか、と、思っていたのだが、それをグラフ化してみると、確かに、変化タイミングではスパイク状の棒が表示されるのだが、それ以外の部分については、殆ど、ゼロに近い表示になる。
まあ、上記した様な変化点の検索しか行わない場合には、これでも良いと言えば良いのだが、例えば、暗い部屋に徐々に光が差し込んで明るくなって、また、徐々に暗くなった! みたいな場合には、変化量をデータ化しても、上記の様なスパイクは表示されない。
しかし、普通に、光量をグラフ化していれば、明るさの変化は簡単に視認可能になる。
また、前述したような、特殊な状況では、撮影物が動いても、光量データは変化しないのだが、普通の自然現象では、物体が動けば、それにつれて、見えていなかった背景が見える様になり、見えていた背景が見えなくなる。
また、動く物体についても、光の当たり方が変わったりするので、光量的な変化も出てくる場合が殆どだったりもする筈だ。
と、言う事なので、映像については、イマイチ、不安は残るのだが、解析データは、ピクセル毎の明るさを合計したフレーム毎の光量という事にした。
ちなみに、音声/映像の検索をしたい場合には、まず、それ用の解析データを切り出し、次に、そのデータを開く格好にしている。
なので、少し面倒と言えば面倒なのだが、データを開くと、専用のウインドウが表示され、そこで、データは拡大率を変えたりしながら、スクロールしながら視認可能だ。
そして、そのデータの確認したい部分をクリックして位置を指定した後、「シーク」ボタンを押せば、再生対象としている音声/動画をその位置にシークさせる事ができる。
更に、データ確認用のウインドウは、モードレスウインドウにしてあるので、このウインドウを表示した状態で、本体側の任意の操作も可能だ。
つまり、意味がありそうな音声/映像の開始点を検出したら、音声/映像のその位置にシークして内容を確認し、保存すべきと判断したら、そのまま、その領域を指定して切り出しておき、次の意味のある領域の確認に移る! みたいな事も可能だ。
と、言う事で、今回の機能追加は、技術的には単純なモノでしかないのだが、上記してきた様なシチュエーションを鑑みれば、実用性は高い機能追加になる筈だ。