アノテーション作業?
動画や音声の特定区間に注釈を与え,その注釈にラベルを振ることをある分野の研究ではよくやります.
具体例としては,インタビューする人とされる人が対話する様子を収録した動画に対して,インタビューする/される人それぞれの発話区間を認定し,さらに各発話区間についてどちらの話者による発話かのラベルを与える,のような作業です.
アノテーション作業に使用するソフトウェアとして,ELANが有名です.
この記事ではELANの基本的な使い方に加え,今まで経験した事例に基づくTipsも紹介します.
ELANを触ったことがない人でも必要最低限のアノテーション作業ができるようになる記事を目指します.
この記事で使用する環境は以下です.
- OS: Win 10 64bit
- ELAN: ver. 5.7 (非javaFX対応版)
How to インストール
インストーラー実行すれば終わります.
作業できるようにする
まずはELANを実行しましょう.すると,以下のような画面になるはずです.

初見の人は何するか戸惑う超絶不親切UIです.
まずはファイル->新規作成と辿り,新規作成ダイアログボックスを表示させましょう.
新規作成ダイアログボックスにおいて,アノテーションしたい音声 or 動画ファイルを左のペインで選択し,画面中央にある>>ボタンを押します.する右のペインに選択されたファイルのパスが表示されるはずです.アノテーションできるファイルフォーマットはFile Formatプルダウンボックスを展開すれば確認できます.ちなみに今回は,ELANの公式で配布されているサンプルの音声ファイルを使用しています.
その後,画面右下のOKボタンを押してください.すると,以下のように音声ファイルが開かれた状態になります.
これで作業のための最初のステップを達成です.やったね!
とりあえず現在の状態をファイルとして保存しておきましょう.保存の方法はCtrl + Sでも,ファイル->保存でも.
初回保存時は当然,名前を付けることを要求されます.この記事ではその名前をtestとしました.ELANは*.eafというフォーマットでファイルを保存するので,任意の場所にtest.eafが生成されました.ちなみに,*.psfxというファイルも同時に生成されますが,これは作業の状態を保存する一時ファイルのようなものなので,不要なら消しても問題はないようです.
Let's 作業
以下の図に画面の見かたを示します.よく見るものはこれくらいです.

まず,ボタングループにある,再生ボタン▶を押下すると,音声が再生されます.ちなみにショートカットキーCtrl + Spaceでも再生ができます.ELANでの作業はショートカットキーを覚えると効率化できるので,覚えましょう.
次に注釈を与える方法です.現在,defaultと名付けられた注釈層が選択されている状態です.この状態で注釈を与えたい区間をマウスでドラッグし,ファイルメニュー注釈->ここに新規注釈を作成を選択します.その後Enterキーを押下すると,下図のようにdefault注釈層に注釈が作成されます.

ちなみに,マウスでドラッグする場所は,注釈層の上・音声波形の上ともに可能です.注釈の作成はAlt + Nでも可能です.
作成した注釈に,任意のラベル(文字列)を与えることが可能です.そのためには,注釈をダブルクリックする,あるいはAlt + Mを押下します.

ダブルクリックの場合はそのまま注釈に文字列を記入できます(図左).一方でAlt + Mの場合は,簡易的なエディターが表示されます(図右).
沢山の注釈を与えた後は,注釈を一覧しましょう.画面上部にいろんなタブがありますが,その中の格子タブを選択し,< select a tier >から,defalutを選択します.ここで,tierとは注釈層のことです.

この格子タブ上の注釈をクリックすると,その注釈がある場所まで再生箇所をジャンプすることができます.
ショートカットキー
頻繁に使用するショートカットキーや操作を以下に列挙します.
| 操作 | 入力 |
|---|---|
| 再生 / 停止 | Ctrl + Space |
| 選択区間の再生 / 停止 | Ctrl + Shift + Space |
| 表示範囲のスライド | Shift + マウスホイール上下 |
| 表示倍率の変更 | Ctrl + マウスホイール上下 |
| 注釈の新規作成 | (任意の範囲を選択した上で)Alt + N |
| 注釈の編集 | (注釈を選択した上で)Alt + M |
| 後方の注釈の選択 | (注釈を選択した上で)Alt + → |
| 前方の注釈の選択 | (注釈を選択した上で)Alt + ← |
| 注釈の移動 | (Altを押下した状態で)注釈をドラッグ |
| 注釈の範囲変更 | (Altを押下した状態で)注釈の端をドラッグ |
ELANには様々なショートカットキーが定義されています.
ファイルメニューの表示->ショートカットを辿ると,ショートカットキー一覧が表示されます.ウィンドウ上部には複数のタブがありますが,Generalと注釈モードタブに表示されるショートカットキーだけ把握すれば問題ありません.
最低限のカスタイマイズ
ファイルメニューの編集->環境設定->環境設定の編集...を辿ると,設定ウィンドウが表示されます.以下の項目を変更すると,快適に作業できます.設定後はELANを再起動しましょう.
| 項目 | 変更 | どうなる? |
|---|---|---|
Platform/OS->Use Windows Look and Feel
|
☑ |
新規作成ウィンドウが使いやすくなる |
Viewers->Horizontal scroll speed...(略)
|
50 |
Shift + マウスホイール上下の速度が速くなる |
作業結果の出力
作業結果は独自形式の*.eafだけでなく,タブ区切りテキストやhtmlとしてエクスポートすることも可能です.ここでは,分析に使用しやすいタブ区切りテキストとしてエクスポートします.
ファイルメニューのファイル->別ファイル形式で保存->タブ区切り文書ファイル形式で...を選択します.そして,次の図と同じように設定を変更してください.

この設定でエクスポートされたテキストファイルを確認すると,以下のようになっています.
default 17.615 18.607 ハンバーグ
default 19.037 19.546 食べたい
default 19.67 20.779 ひき肉買わなきゃ
各行が注釈を示し,各行にはデータがタブ(\t)区切りで入力されています.左から順に,注釈層の名前,注釈の開始時間,注釈の終了時間,注釈内容,となっています.注釈の開始/終了時刻は秒.ミリ秒なので.1分08秒256なら,68.256になります.
ちなみに,保存された*.eafをテキストエディタで開くと,単なるxmlであることがわかります.
Tips
こういう時はこうするとよい,というTips集です.
今まではかなり丁寧に説明してきた自負がありますが,ここからは簡易に説明します.
動画のアノテーション時,ELANの動作がもたつく
高品質な動画をELANにリンクすると動作がもたつきます.ffmpegなどを使用し動画そのもののファイルサイズを縮小しましょう.
もしかすると,メディアファイルをSSDに配置するのも有効なのかもしれません.
注釈にラベルを振る際,すでに定義してあるラベル内からの選択式にしたい
例えば,動物を記録した映像に対して,歩いている,走っている,寝ている,といったラベルを振る作業を,複数の第三者に依頼したい場合があります.
その時,その作業者がラベルの文字列を間違えないように,選択式にすることは丁寧です.
その時は,管理語を使用します.
ファイルメニューの編集->管理語の編集...からウィンドウを開き,下図のように必要な項目を入力します.

その後,ファイルメニューの言語タイプ->言語タイプの変更で開くウィンドウにおいて,管理語を使うのプルダウンボックスを,Noneから先ほど記入した管理語名(この例ではbehaviors)に変更します.
そして注釈を編集すると,以下のように選択式に変更されていることが確認できます.

ちなみに管理語はファイル出力が可能です.管理語を編集するウィンドウの,Export .ecvから.
インポートは同ウィンドウのExternal CVから.
すでに定義してある注釈に対して,書き起こし作業を実施したい
ファイルメニューのオプション->Transcription modeを使用します.
表示されるTranscription mode settingウィンドウで,書き起こし対象にする注釈層を選び,適用ボタンを押せば,ELANが書き起こし作業に最適化されます.
Transcription modeではショートカットキーが一部変更されます.ショートカットキー一覧ウィンドウの,Transcription Modeタブを確認してください.
すでに定義してある注釈の位置や長さだけ変更したい
ファイルメニューのオプション->Segmentation modeを使用します.
(個人的には注釈モードに比較しそんなに優れていない気がするので使いませんが)
Segmentation modeではショートカットキーが一部変更されます.ショートカットキー一覧ウィンドウの,Segmentation Modeタブを確認してください.
注釈間に隙間が空かないように注釈付けしたい
言い換えると,n-1番目の注釈の終了時間とn番目の注釈の開始時間を一致させたい,ということになります.
機能としてサポートされているかは確認していません.
この要求を満たすためには,作業が少し面倒になりますが,n-1番目の注釈の終了時間をAlt + ドラッグで移動させ,n番目の注釈に重なるようにした状態でドラッグを終了するとうまくいきます.
なにか良い方法はないだろうか.
オーバーラップする複数の事象をアノテーションしたい
例えば,2人組ボーカルユニットの楽曲を,歌手ごとにアノテーションしたい場合.ハモったり重なったりすると,注釈層が一つではその状態をアノテーションできません.
その時は注釈層を増やしてください.
ファイルメニューの注釈層->新規追加...でウィンドウを開き,注釈層名を記入,追加を押下すれば注釈層が増えます.

注釈層の名前が記述されているか箇所をダブルクリックすると,注釈層を選択できます.注釈の新規作成は,選択されている注釈層に対して実行されます.注意しましょう.
センサデータと音声波形を対応させながら作業したい
メタデータタブで可能です.
詳細は近いうちに記述します.
テキストファイルをELANにインポートしたい
ファイルメニューのファイル->読み込み->カンマ区切り/タブ区切りファイル...から.
ちゃんと調べてないけどできる機能
- 複数の動画を同期した状態で再生できる
- 作業者の情報を持たせられる
- テロップが表示できる
- そのほかいろいろ
おわりに
ELANの使用方法について毎年後輩に説明する作業が面倒になったので,この記事を書くことにしました.
ELAN自体はかなり高機能なので,すべての機能を使いこなしたい場合は,公式のドキュメントを見るとよいでしょう.
個人的なELANのしんどいポイントは,複数のeafファイルを一括でtxtに変換しにくいところだったりします.それについて自動化した話は次回気力があれば記事にします.
ちなみに,アノテーション作業は作業者の性格を歪めることで有名です.日常で会う性格悪い人はアノテーション作業の経験者であることは間違いないでしょう.自己紹介でした.

