Synchronized Accessible Media Interchange
Microsoftが1998年に作った、Windows Media Player向けのキャプション形式です。各キャプションの前に同期の指定がある、HTMLベースの形式です。スタイルシートのクラスが言語を表すため、1つのファイルに複数の言語を入れられます。他の環境ではほとんど見かけませんが、韓国では今も一般的な字幕ファイルです。
概要
| 拡張子 | .smi |
|---|---|
| メディアタイプ | 登録なし |
| 仕様 | Microsoft、Understanding SAMI 1.0(2001年、2003年に更新)。公開されており、ライセンス料はかかりません。 |
| 時間の精度 | ミリ秒 |
| 文字エンコーディング | 宣言されません。古い韓国語のファイルの多くはCP949で、新しいものはUTF-8です。Subtitldはどちらも自動判別します。 |
| 装飾 | HTMLのインラインタグとCSS: 斜体、太字、下線、取り消し線、色、フォント |
| 表示位置 | 映像上の位置指定はありません。キャプションは専用の領域に表示されます。 |
| 話者 | Source行(ID=Source)。キャプションの上に表示されます。 |
| 言語 | 1つのファイルに複数。言語ごとに1つのCSSクラス |
| コンテナ内 | なし。動画と同じ名前で、動画の横に置くファイルです。 |
ファイルの構造
HTML文書です。言語を定義するスタイルシートがあり、その後にキャプションが切り替わるタイミングごとの同期(sync)が続きます。
<SAMI><HEAD><STYLE><!-- .KRCC {lang:ko-KR;} .ENCC {lang:en-US;} --></STYLE></HEAD><BODY> <SYNC Start=23000> <P Class=KRCC>넌 정말 못됐어. <P Class=ENCC>You're a jerk. <SYNC Start=24500> <P Class=KRCC> <P Class=ENCC>
- 1 · ヘッダー部
スタイルシートです。言語ごとにクラスがあり、
langと、再生ソフトが表示するNameを指定します。最初に定義されたクラスが、再生ソフトで最初に使われる言語です。 - 2 · 同期
動画の先頭からの時間(ミリ秒)です。
- 3 · 字幕
言語ごとの段落です。次に同じ言語の同期が現れるまで表示されます。
を入れると表示が消えます。
タイミング
同期には開始時刻だけがあり、終了時刻はありません。キャプションは、同じ言語の次のキャプションが始まったとき、または空のキャプションが始まったときに終わります。そのため、途切れるたびに同期が必要です。
閉じタグは省略できます。 Microsoftの公式サンプルでは、<P>も<SYNC>も閉じていませんが、再生ソフトはどちらの書き方でも読み取ります。Windows Media Playerでは、サンプルのように大文字のタグが必要な場合があります。
スタイル
SAMIのテキストはHTML、スタイルシートはCSSです。キャプションは、Pのスタイル、次にそのクラスのスタイル、次にそのstyle属性、最後に内部のタグの順に適用されます。
| 記述 | 効果 | Subtitldでの扱い |
|---|---|---|
<I>、<EM> |
斜体 | 保持 |
<B>、<STRONG> |
太字 | 保持 |
<U>、<S>、<STRIKE> |
下線、取り消し線 | 保持 |
<FONT color="#FFD700"> |
文字色 | 保持 |
color、font-style、font-weight、text-decoration |
同じ効果を、スタイルシートまたはstyleから指定 |
保持 |
<BR> |
改行 | 保持 |
<FONT face>、font-size、margin |
フォント、サイズ、余白 | 保持されない |
<RUBY>…<RT> |
テキストの上の読み仮名 | テキストは保持、読み仮名は保持されない |
言語
各クラスは1つの言語を表します。再生ソフトはNameを使って言語を選択肢として示し、指定がない限り最初に定義された言語を表示します。クラスのない段落は、言語に関係なく表示されます。韓国語のファイルに英語を並べて入れることもでき、視聴者が選べます。
Subtitldは、複数の言語を含むファイルを開くと、最初の言語を字幕の言語とし、他の言語はそれぞれ、重なりが最も大きい字幕の翻訳として扱います。原文と翻訳を書き出すと、2つの言語として書き戻されます。翻訳の字幕がない箇所は、翻訳は表示されません。
話者
<SYNC Start=23000>
<P Class=ENCC ID=Source>Celia
<P Class=ENCC>You're a jerk.
ID=Sourceの段落はキャプションではありません。キャプションの上に表示される行で、誰が話しているかを示します。次の段落で置き換えられるまで表示されます。Subtitldは、これを、その上にあるキャプションの話者として読み取り、要求されたときにも同じ方法で書き出します。
再生ソフトによって違いがあります。 FFmpegとそれを使ったプレーヤーでは、Source行はキャプションの上にイタリック体で表示されます。MPlayerでは、キャプションの1行目と続けて表示されます。話者名をテキストの前に入れる書き方(Celia: …)は、どの環境でも同じように表示されます。
SAMIとSubtitld
- 各字幕のテキストと改行
- 斜体、太字、下線、取り消し線、色
- 翻訳(それぞれ独立した言語として)
- 話者(Source行として)
- 開始時刻と終了時刻(ミリ秒単位、順序どおり)
- 字幕の表示位置: SAMIには映像上の位置の指定がありません
- フォント、サイズ、余白
- ルビの読み仮名
- 吹き替え、話者の顔と色
Subtitld独自の内容を残すには.usfxプロジェクトとして保存してください。
SAMIファイルを開く
Subtitldは.smiと.samiを開き、次のように処理します。
- SAMIをブラウザがHTMLを読むように読み取ります。タグの大文字・小文字、閉じタグの有無、引用符の有無、順序の乱れた同期、段落の外にあるテキストに対応します。
- 各言語を読み取ります。最初の言語は字幕として、それ以外は翻訳として扱います。
- タグとスタイルシートから、斜体、太字、下線、取り消し線、色を保持します。
- Source行を話者として扱い、吹き替え用に準備します。
- 最後のキャプションは、ファイルの
Metricsが示す動画の長さで終わらせるか、4秒後に終わらせます。 - CP949を含む任意のエンコーディングを読み取ります。
SAMIの書き出し
エクスポート、次に字幕、そしてSAMIを選ぶと、次のオプションが表示されます。
- テキスト原文、翻訳、または2つの言語としての両方。
- 話者名省くか、テキストの前に付けるか(Thom: …)、またはSAMI独自の方法であるSource行として書き出します。
- 書式残すか、取り除きます。
- 時間をずらすすべての字幕を、同じ量だけ早めたり遅らせたりします。
- エンコーディングUTF-8(BOMの有無を選択可能)、UTF-16、Windows-1252、または古い韓国語の再生ソフト向けのCP949。
- 改行コードLinuxとmacOS、またはWindows。
ファイルは、MicrosoftのサンプルどおりのSAMI 1.0です。タグは大文字で書かれます。言語ごとにクラスがあり、字幕の開始位置には同期が、終了位置には空の同期が置かれます。書式は<I>、<B>、<U>、<S>、<FONT color>として書かれます。
ファイル名は動画と同じ名前にしてください。例えばtears-of-steel.mp4の隣にtears-of-steel.smiを置きます。Windows Media Playerは、そのように名付けられた.smiを見つけます(.samiは見つけません)。また、ほとんどの再生ソフトも同様です。
豆知識
Microsoftは、1998年の夏にSAMIを発表しました。これは同社のアクセシビリティへの取り組みの一環で、耳が聞こえない、または聞こえにくい人のために、PCでキャプションを表示するためのものでした。
Microsoftの仕様では、キャプションを消すために改行されないスペースを使います。FFmpegは、それを含む同期を無視します。そのため、別の言語が続く場合、Subtitldは代わりに空の段落を書き出します。
多くの韓国語のファイルでは、クラスを言語ではなく国名で付けています。Microsoftの例ではENUSCCですが、KRCCのように名付けられています。
関連する形式
Subtitld で動画と一緒に開き、波形上でタイミングを調整しましょう。