Kengo Jinno
<KHB04045@nifty.ne.jp>
Oct. 29, 2000
本ドキュメントでは、シンプルなビデオ字幕システムの構築と、その使用法を解説します。 欠点もたくさんありますが、「字幕入りビデオを作れるシステム」を組むことをまず第一にしています。
なお本ドキュメントで取り上げている「すーぱー・てろっぱー」は、残念ながら販売終了になった模様です。 代わりに使えそうな製品としては、(株)アイ・シー[4] の PSI-480があります。 接続方法はほぼ同じですが、操作・設定方法は全く異なりますのでご注意ください。
また、松下電器産業(株)[5] の文字放送チューナー(デコーダー) TU-TX100と、字幕ソフトVcaption[6] の組み合わせでもスーパーインポーズできるようです。
再生デッキから録画デッキに向かって流れる映像信号ラインの途中にすーぱー・てろっぱーを入れ、表示機の画面上に作成した字幕テキストをすーぱー・てろっぱーで合成(スーパーインポーズ)します。 どんな字幕をどのように表示するかは、送出機から表示機にデータを送って指定します。
*1 字幕の表示位置を変えるコマンドを使えば回避できます。
*2 残念ながら販売終了になった模様です。
*3 PSI-480は、640×480と640×400に対応。
*4 [スタート]→[設定(S)]→[コントロールパネル(C)]→[画面]の[ディスプレイの詳細] (Windowsのバージョンによっては[設定])タブで確認できます。
*5 ULACSと接続するのに使う「ストレートケーブル」ではありません。
*6 テープの長さ(録画時間)には充分注意しましょう。「あと数分で終わる」ところで残量切れになると…。
それぞれのソフトには、本ドキュメントには書いていない機能もたくさんあります。 ソフトに付属するドキュメント・マニュアルもあわせてご覧ください。
*7 [スタート]→[プログラム]→[アクセサリ]
音声を聞き取ってテープ起こしし、テキストファイルにします。
「テキストファイル」とは、「文字情報だけ」のファイルを言います。 ワープロソフトの文書ファイルにはフォントの種類・大きさ・色・罫線などの情報が含まれていますが、テキストファイルにはありません。 Windows付属のメモ帳で開けるファイル形式で、一般的には拡張子に".TXT"を使います。
「テキストエディタ」と称するソフトでは、このテキストファイルを扱います。 ワープロソフトでも「テキスト形式で保存」や「MS-DOSテキストで保存」等を選択すれば、テキストファイルになります。
入力した文字を「テキストファイル」として保存できれば、必ずしもWindowsパソコンでなくても構いません。 DOSやMacintosh、一部のワープロ専用機でも可能です。
テープ起こし作業は、範囲を決めて複数の人で分担することもできます。 その場合は各自が作成したテキストファイルを最終的に1つのテキストファイルにまとめる作業が必要になります。
両手を使ってタイピングしていると、紙とペンを使ったテープ起こしのような「左手でテープ操作、右手で筆記」といった作業は面倒です。 パソコンに音声ファイルとして録音し、エディタ・ワープロソフトから再生・停止・巻き戻しなどの操作ができる再生ソフトを利用すると便利です。
Windows用ソフトではSndPlay[2] が、Macintosh用ソフトではMicNotePad Lite[3] があります。
またR-YATは、テキストエディタの機能も持ち、直接SndPlayを制御する機能を持っているので、テープ起こしにも使えます。
テープ起こししたテキストを要約・整形します。
字幕のテキストは、1画面に15文字*8 ×2行とするので、その範囲に収まるように整形します。
どの画面にどのテキストを表示するかが決まったら、各画面のテキストの直前に「.PA」*9 という行を追加していきます。 つまり、2行おきに「.PA」が入った状態にし、一番最後にも「.PA」を入れてください。
.PA 最初の画面に表示するのは この2行のテキストです。 .PA 次の画面に表示するのは この2行のテキストです。 .PA 各行は15文字以内にします。 1画面に2行ずつです。 .PA この画面は1行しか使いません。 .PA ……… .PA |
行頭が半角ピリオドの行はYATの表示制御に使われるデータで、「コマンド行」と呼びます。 行頭が半角ピリオド以外の行は実際に字幕表示されるデータで、「テキスト行」と呼びます。
*8 全角で15文字です。半角1文字は0.5文字と数えます。
*9 すべて半角で、ピリオドとアルファベットのピー・エー です。
ここからの作業は、実際の字幕入れ作業で使う表示機や送出機で行ないます。 再生デッキ 録画デッキ すーぱー・てろっぱーはまだ使いません。
表示機と送出機を、RS232C クロスケーブルで接続します。
この段階では、まだCoverは使いません。
YAT.exeを起動して、次のように設定します。
これでYATはただの真っ黒いウィンドウになります。 メニューバーも消えているので、何か設定しなおす場合はYATのウィンドウを右クリックして表示されるメニュー*10 を使ってください。
*10 または、Alt+Spaceで表示されるシステムメニュー。
R-YAT.exeを起動して、次のように設定します。
これで適当な文字を入力して F9キーを押すと、それが表示機のYATに表示されます。 文字の色や大きさは後で決めるので、文字が合っていればそれで接続は問題ありません。
何かおかしい場合は、次の点を確認してください。
実際に表示機側に表示させてみて、字幕の表示位置や文字の大きさを決めます。
次のようなテキストファイルを準備し、送出機のR-YATで開きます*11 。 R-YATは(低機能ですが)テキストエディタの一種でもあるので、R-YAT上で直接手入力しても構いません。
.BC(000000) .TC(FFFFFF) .OC(0000FF) .OL(3) .FV(0) .FS(0,36) .WZ(45,370,550,100) 123456789012345 123456789012345 |
このデータは、表示機の画面サイズが640×480であることを前提にしています。 表示機の画面サイズが800×600の場合は、6行目と7行目のコマンドを次のように変更してください。
.FS(0,45) .WZ(60,465,690,120) |
このデータの各行は次のような意味になっています。
.BC(000000) | 背景を黒にする |
.TC(FFFFFF) | 文字を白にする |
.OC(0000FF) | 縁取りを青にする |
.OL(3) | 縁取りを3ドットにする |
.FV(0) | 横書きにする |
.FS(0,36) | 文字サイズを36ドットにする |
.WZ(45,370,550,100) | (45,370)の位置から(550,100)の範囲に表示する |
1234567.... | 表示するテキスト行 |
1234567.... | 表示するテキスト行 |
*11 [ファイル(F)]→[開く(O)...]
送出機のR-YAT上で1行目(.BC(000000))にカーソルを移動し、F9キーを押します。 すると、この9行分が表示機に送られてYATに表示されます。 表示機の画面は次のようになっているはずです。
表示機のタスクバーを下に配置していると、タスクバーが邪魔になって文字の下の方が見えないかもしれません。 この場合は、タスクバーのプロパティ*13 で[常に手前に表示(T)]のチェックを外した後、YATのウィンドウを左クリックしてYATを前面に出してください。
このデータでは、左右と下に少し余白ができるようにしています。 画面の端ぎりぎりまで使って文字を表示すると、デッキやモニターによっては端が切れて見えなくなってしまうことがあるためです。 位置や大きさを調整したい*14 時は、6行目と7行目のコマンドを変更します。 (640×480の場合の例)
「.FS」「.WZ」コマンドの各数値の意味は次の通りです。
.FS(0,size) | |
---|---|
0 | 0のまま変更しないでください |
size | 文字の大きさ |
.WZ(x,y,w,h) | |
x | 表示する位置(左右方向) |
y | 表示する位置(上下方向) |
w | 表示領域の大きさ(左右方向) |
h | 表示領域の大きさ(上下方向) |
変更したら、また F9キーで表示機に送りなおして表示を確認します。
*12 青く縁取っているのは、白い字幕の背景(映像)が白っぽい場合でも読みづらくないようにです。
*13 [スタート]→[設定(S)]→[タスクバー(T)...] (Windowsのバージョンによっては[タスクバーと[スタート]メニュー(T)...])
*14 すーぱー・てろっぱー側の操作でも多少の調整は可能です。
適切な位置と大きさが決まったら、1行目から7行目までのコマンド行をテープ起こししたテキストの先頭に挿入します。
.BC(000000) .TC(FFFFFF) .OC(0000FF) .OL(3) .FV(0) .FS(0,36) .WZ(45,370,550,100) .PA 最初の画面に表示するのは この2行のテキストです。 .PA 次の画面に表示するのは この2行のテキストです。 .PA 各行は15文字以内にします。 1画面に2行ずつです。 .PA この画面は1行しか使いません。 .PA ……… .PA |
これで字幕テキストファイルが完成しました。
ここでは、映像系の接続だけを示していますが、音声系は「再生デッキ→録画デッキ→モニター」と、そのまま普通に接続します。
すーぱー・てろっぱー周りの接続は後で解説します。
*15 テープの再生とかTVチャンネルとか。
*16 デッキによって違いますが、録画デッキ側を「ビデオ入力モード」に切り替えないといけない場合があります。
*17 市販のVGAケーブルや他のスキャンコンバータに付属するケーブルも使えそうに見えるのですが、正しく動作しません。
「6.2 表示機側の設定」と「6.3 送出機側の設定」で設定したのと同じ状態にします。
これに加えて、表示機側でCoverを使います。
Cover.exeを起動すると、画面が真っ黒になります。 この黒い部分にすーぱー・てろっぱーが再生デッキの映像を合成するので、字幕の文字以外に"黒くない"部分があると、それも映ってしまいます。
たとえば、タスクバーやIMEのツールバーや一部の常駐ソフトが残って(表示されて)いることがあります。 この場合は、いったんCoverを終了( Alt+F4 )して、次のように対処してください。
次に、すでにYATも起動しているはずですが、Coverの手間にYATが配置されるようにします。 どちらも黒で見分けにくいのですが、次の手順で操作します。 Cover上ではマウスカーソルが表示されないので、キーボードを使います。
*18 無い場合は、[コントロールパネル]→[キーボード]の「言語」タブで、「タスクバー上に状態を表示」をチェックします。
YATは初期状態でスクリーンセーバーの起動を抑止するようになっています。 しかし完全に抑止できるとは限らないので、表示機ではスクリーンセーバーを止めておいた方が安全です。
もし字幕入れ作業中にスクリーンセーバーが起動してしまうと、それも映ってしまいます*19 。
*19 つまり失敗なので、最初からやり直し。
マウスカーソルも映ってしまうとまずいので、Coverの上に移動させて映らないようにしておきます。 Coverは全画面表示になっているので、マウスカーソルを画面の端に移動させておけばよいでしょう。
すーぱー・てろっぱーの各パネルは次のように分類されます。
すーぱー・てろっぱーはS端子も持っていて、S端子を使う場合はこのCV/SスイッチをS側にします。 S端子の方が高画質を期待できるので、S端子付きのデッキを用意できればS端子を使った方がよいでしょう。 しかし、「入力側だけS端子」あるいは「出力側だけS端子」という使い方ができるかどうかは確認していません*20 。
*20 マニュアルを見てもよく分からない。
付属のYケーブルを使います。
*21 この色の部分に映像が表示される。
これで、再生デッキから映像を流して、送出機から表示機に適当なデータ*22 を送ると、表示機に字幕が表示され、モニターには合成した映像が表示されるはずです。 おかしい場合は、「7. 字幕入れ作業」の最初から確認しなおしてください。
*22 「6.4 字幕の位置や文字の大きさを決める」の確認用データでも構いません。
*23 パソコンの機種によっては、設定ソフトやキーボードでの設定や再起動が必要な場合があります。
再生デッキからの映像信号が入力されていない時には、前面のDIP-2の2番をOFF(上)にします。 そうしないと、すーぱー・てろっぱーからは何も出力されません。
映像信号が入力されていて、DIP-2の2番がON(下)の時は、右側面のS1スイッチで出力モードを切り替えることができます。
3 | 2 | 1 |
---|---|---|
表示機の画面 | 再生デッキの映像 | 合成した映像 |
送出機のR-YATで F9キーを押すと、「.PA」コマンド行までが表示機に送出・表示されます。 つまり、字幕の1画面ごとに、F9キーを押していきます。
実際に表示・消去されるタイミングは、F9キーを押すのと同時ではなく若干の遅れがあります。 何回か練習してみると、コツをつかめると思います。
すーぱー・てろっぱーが販売終了となったため、字幕入りビデオの作成に使える安価な装置が入手困難になりました*24 。 また、字幕入りビデオではなく、字幕だけのビデオを作成してそれを再生・投影したいという需要も少なからずあるようです。
そこで、こういった「字幕だけのビデオ」を作成する方法を解説します。 なお、「字幕入り」の場合と重複する内容は省略しますので、それぞれの該当部分をご覧ください。
*24 前述の通り、PSI-480やTU-TX100を使う方法もあります。
表示機の字幕テキストだけを録画するシステムです。 再生デッキ・モニターは映像を確認する目的だけなので、システム的には切り離されています。 確認が不要なら用意する必要はありません。
ここではすーぱー・てろっぱーを使っていますが、代わりに(合成機能を持たない)通常のスキャンコンバータでも構いません。
送出機からデータを送って表示機に字幕テキストを表示させる仕組みは同じなので、ソフトも同じものを使います。
合成しない(CV-INを使わない)ので、前面のDIP-2の2番をOFF(上)にします。 ON(下)のままだと、CV-OUTからは何も出力されません。
その他のスキャンコンバータを使う場合は、それぞれの設定*25 を行ないます。
いずれの場合も、ちゃんと映像信号(表示機の画面)が出力されているかどうか、事前にモニターを接続して確認しておいた方がよいでしょう。
*25 画面モード、表示の位置、等。
「字幕入りビデオ」では、カラー・キーに合わせるため表示機の背景をすべて黒にしていました。 この設定のままで字幕だけを録画すると、「真っ黒い画面に白い文字」のビデオになってしまいます。 これを変えたい*26 場合は次のようにします。
*26 たとえば、「青い画面に白い文字」。
録画デッキの代わりに液晶プロジェクタを接続して、拡大投影するようにします。 パソコンから直接接続できるタイプのプロジェクタなら、すーぱー・てろっぱー(スキャンコンバータ)も不要です。
詳しい内容は、「パソコンを利用した字幕上映 運用メモ」[7] にまとめています。
テキスト行の1行の文字数が15文字を超えていると*27 、そこで折り返して表示されてしまいます。 また、.PAと.PAの間のテキスト行が2行を超えていると、3行目以降は表示されません*28 。
このような間違いを検出するには、次のawkスクリプトを使ってください。
#!/usr/bin/awk -f BEGIN { # 最大文字数(全角で) nMaxLen = 15; # 1画面の最大行数 nMaxLineCntParPage = 2; # ワーク nLine = 0; # 全体の行数 nLineCnt = 0; # 1画面の行数 } /^[.][^.]/ { ++nLine; if( $0 ~ /^[.][Pp][Aa]/ ) { nLineCnt = 0; } next; } { ++nLine; ++nLineCnt; if( $0 ~ /^[.][.]/ ) { $0 = substr( $0, 2 ); } if( length($0) > nMaxLen*2 ) { printf( "%d行目が%d文字を超えています。\n", nLine, nMaxLen ); } else if( nLineCnt > nMaxLineCntParPage ) { printf( "%d行目が%d行を超えています。\n", nLine, nMaxLineCntParPage ); } } |
またYATにも、これらの確認をするための、秀丸エディタ[8] 用マクロが同梱されています。
*27 正確には、"YATのウィンドウ幅を超えると"。
*28 正確には、"一部分は表示されるかもしれない"。
本ドキュメントでは、シンプルにするために文字の色や大きさを固定にしています。 しかし、YATのコマンドを駆使すれば、もっと自由な表示ができます。
.TC .FS .WZ等のコマンドはデータの最初でしか使っていませんが、途中で使うこともできます。
.PA .TC(00FF00) .WZ(45,370,550,100) 下の方に緑で表示します。 .PA .TC(FF0000) .WZ(45,10,550,100) 上の方に赤で表示します。 .PA |
他に、ある時刻まで待つコマンドも用意されています。 これらのコマンドを使えば、1画面ずつ手作業でタイミングを計って送出しなくても、自動的に字幕再生することもできます。 ただし、「いつ表示するか」「いつ消去するか」といった値を決める作業が必要です。
また、表示には無関係ですが、コメントとして場面の状況や待ち時間を書いておくと、字幕入れ作業時の目安になります。
.CM ★海を背景に灯台 .CM ★海岸を歩く2人(約20秒) |
YATには、ルビを表示する機能もあります。 たとえば次のようなデータにします。
.PA .RB(1) .RC(1) #(難)<むつか>しい#(漢字)<かんじ>には、ルビを#(付)<つ>ける ようにします。 .PA |
ルビを使うと自動的に行間が空いて表示されるため、.WZコマンドの値を変更する必要が出てくるかもしれません。 またR-YAT上での(見かけ上の)文字数と、実際に表示される文字数が異なるため、文字数の確認には注意が必要です。 たとえばこの例では14文字です。
送出機からコマンドを送って、字幕の位置や文字の大きさを決めるのではなく、表示機のYATでウィンドウのサイズやフォントの設定を変更して決める方が楽な場合もあります。
この方法をとる場合は、調整後にYATのメニューの[設定(S)]→[現在の属性を表示(A)...]を開いて、そこに示された.WZや.FSコマンドの値を字幕テキストファイルに書き込みます。
通常、録画デッキは1台です。 従って、1回の作業で作成できるテープは1本だけです。 たくさんのテープを作成するには、作成した1本のテープを元にダビングするか、字幕入れ作業を何度も繰り返します。 前者は画質の劣化が心配ですし、後者は手間と時間がかかって大変です。
送出機と表示機の2台のパソコンを使っているのは、表示機の画面上にCoverとYAT以外のものがあるとそれも映ってしまうためです。 表示機側で何か操作を行なうのは困難なので、最初の設定以外は何もしなくていいようにしています。
2台のパソコンが用意できず、どうしても1台(表示機だけ)で運用するならば、あまりお勧めしませんが、次のような方法があります。
この場合、送出機の操作は「F9キーを押していくだけ」なので、画面上でテキストを確認できなくても運用は可能*29 です。
R-YATには、同じパソコン上のYATにデータを渡して表示させる機能*30 と、自分自身を画面に映らないようにする機能*31 があります。 これを利用して、表示機でR-YATを使って表示させることができます。
*29 それでも念のためテキストを印刷して準備しておき、確認できるようにしておいた方がよいでしょう。
*30 何もしなくても動作しています。
*31 [制御(C)]→[R-YATを隠す(W)...]
すーぱー・てろっぱーには、表示機の画面の一部を拡大表示する「ズーム機能」があります。 この機能を利用して、ズームされない(映らない)領域でR-YATを操作し、ズームされる領域に字幕テキストを表示させるようにします。
こうすれば、表示機でR-YATを使っても、それが映ってしまうことはありません。 ただし「一部の拡大」なので、字幕の文字が多少粗くなってしまいます。
テキストコマンド | |
---|---|
.. | 行頭にピリオドのあるテキスト |
属性系(画面単位)コマンド | |
.fs(0,Size) | フォントサイズの指定(0:横書き/1:縦書き) |
.ff(0,Name) | フォント書体名の指定(0:横書き/1:縦書き) |
.fv(1) | 文字表示方向指定(0:横書き/1:縦書き) |
.bc(ffffff) | 背景色の指定 |
.wz(X,Y[,W,H]) | ウィンドウの位置とサイズ |
.il(10) | 行間空き(0:なし/1〜:文字高さのパーセント) |
.rb(1) | ルビの表示(0:なし/1〜:表示レベル) |
.hc(ffffff) | 背景の格子模様の色 |
.ht(1) | 格子模様の形式(0:表示しない/1〜6:形式) |
.hs(1) | 格子模様のサイズ(0:表示しない/1〜:サイズ) |
.tp(1) | 透過背景(0:透過しない/1:透過する) |
属性系(行単位)コマンド | |
.tc(ffffff) | テキスト色の指定 |
.ol(1) | 縁取りの幅(0:なし/1〜:ピクセル数) |
.oc(ffffff) | 縁取りの色 |
.op(1) | 縁取りの塗りつぶし(0:しない/1:する) |
.ic(1) | インラインカラー(0:使わない/1:使う) |
.rc(1) | ルビコマンド(0:使わない/1:使う) |
Wait系コマンド | |
.wt(9999) | 指定された時刻になるのを待つ |
.ws(9999) | 指定された時間だけ待つ |
.wk | キー入力を待つ |
.wm | マウスクリックを待つ |
.wb | キー入力かマウスクリックを待つ |
制御系コマンド | |
.rf | 基準時刻の設定 |
.cl | テキストをクリア |
.ex(file) | fileを実行する |
.qt | 停止する(データ解釈の中止) |
その他のコマンド | |
.du(1) | データ終端での描画(0:許可/1:禁止) |
.cm | コメント |
.pa | 何もしない(ページ送信) |
.dc(ffffff,Name) | 色名称の定義 |
$(テキスト)<文字色><縁取り色> | インラインカラー (<縁取り色>は省略可) |
#(テキスト)<ルビ><レベル> | ルビ (<レベル>は省略可) |