メインコンテンツへスキップ
SubtitleMatrix

SMI 字幕フォーマット

形式変換SAMI(SMI)

この形式が表現できること

テキストのスタイル
太字と斜体
画面内の位置指定
対応
カラオケのタイミング
非対応
字幕ブロック内の改行
対応
タイムライン
各字幕の開始と終了の時刻
タイミングの精度
1 ms
フレーム番号で保存されるタイミング
非対応
右から左に書く言語
対応

例

典型的な SAMI ファイルと、そこから読み取れる内容

ファイル

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial; }
.ENCC { Name: English; lang: en-US; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P Class=ENCC>Hello there.
<SYNC Start=3000>
<P Class=ENCC>&nbsp;
<SYNC Start=3500>
<P Class=ENCC>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P Class=ENCC>&nbsp;
</BODY>
</SAMI>

ファイルの中身

2 cues, 3 lines of text

  Start=1000  =  00:00:01.000 → 00:00:03.000
    Hello there.
    [Class=ENCC]
  Start=3500  =  00:00:03.500 → 00:00:06.000
    How are you?
    Fine, thanks.
    [Class=ENCC]

Outside the cues:
  head       a <STYLE> block with CSS for the paragraphs, kept as it came in
  cue ends   the next <SYNC> tag — a SAMI file writes no end time of its own
  clearing   a <P>&nbsp; block blanks the screen; the two here are kept as clearing blocks, not turned into cues

右側は変換結果ではありません。このサイトが左側から読み取った内容で、そのファイルのどの変換もここから始まります。

乱れた SAMI ファイルでも読み取れる内容

ファイル

<SAMI>
<BODY>
<SYNC Start=abc>
<P Class=ENCC>this block's start cannot be read
<SYNC Start=2000>
<SYNC Start=4000>
<P>no attributes here<br>second line
<SYNC Start="6000">
some loose text before any P
</BODY>
</SAMI>

ファイルの中身

3 cues, 3 lines of text

  Start=2000  =  00:00:02.000 → 00:00:04.000
    (no text)
  Start=4000  =  00:00:04.000 → 00:00:06.000
    no attributes here
    second line
  Start=6000  =  00:00:06.000 → 00:00:08.000
    some loose text before any P

Outside the cues:
  head       no <STYLE> block and no <TITLE> — just the <SAMI> and <BODY> tags
  cue ends   the next <SYNC> tag; the last cue has none after it, so its end time was given a default
  loose text text between two <SYNC> tags that belongs to no <P> is kept and attached to the cue open at that point

Reported while reading — repaired or skipped, never silently:
  1 × SYNC blocks whose start time could not be read (they were skipped)
  1 × the last cue has no following timestamp, so its end time was generated

実在するファイルには BOM、Windows の改行、タイムコード前の余分な行、まったく読めないタイムコードが付いてきます。どれも例外にはなりません。理解できない部分は黙って捨てずに報告されます。

SAMI (SMI) を他の形式に変換

いずれもブラウザ内で完結します。ラベルには、その方向で何が失われるかが開く前に示されています。

この形式への変換

SAMI(SMI)はこのサイトが扱う字幕形式のひとつで、このページはその仕様をまとめたものです。何を保存でき、何を保存できず、どの形式へ変換できるかを示します。

上の表がすべてで、隠れた機能一覧はありません。ある行が「いいえ」なら、その要素は SMI に変換するとまさに失われます。下に並ぶ各変換ページは、ファイルを開く前にそのことを明示します。

どの変換もブラウザ内で動きます。アップロードもアカウントも不要です。秘密保持契約の下にある素材、診療記録、放送前の素材を扱うときに効いてきます。

よくある質問

SMI ファイルとは何ですか?

.smi は Microsoft の SAMI です。字幕を HTML の断片として書き、各 <SYNC Start=…> タグがその瞬間から画面に出す内容を宣言します。Windows Media Player や当時の DVD・放送用ツールが読み、今もアーカイブ素材で見かけます。

SMI はスタイルを保存できますか?

少しだけ、しかも本文の外ではなく中に保存します。強調と色は字幕の一部です(<b>、<i>、<u>、<font color="…">)。フォントサイズ、縁取り、余白を宣言する場所はなく、表示する側が決めます。SAMI は head の <STYLE> ブロックに段落向けの CSS を置くこともでき、字幕ファイルがフォントや色を指定するのは通常そこです。あるファイルはそれを保ち、ないファイルには書き出し時に小さな既定スタイルが付きます。

SMI の各字幕は開始と終了の両方を持ちますか?

はい。SMI の時刻は Start=4126 のように書きます。これが SMI の最小単位でミリ秒まで表現でき、値は正確です。字幕は短くも長くもでき、次の字幕と重なっても構いません。

SMI はどの形式に変換すべきですか?

このサイトに SMI のすべてを受け取れる形式はないため、無料の方向はありません。各変換ページが独自の損失一覧を示します。よく見かける形式かどうかではなく、どの一覧なら受け入れられるかで変換先を選んでください。

SMI(SAMI)ファイルは字幕の外に何を保持しますか?

head の <STYLE> ブロックに段落向け CSS を保持します。字幕ファイルでは通常、チャンネルの見た目(フォント、サイズ、色、画面内の位置)です。加えて <TITLE> と、各段落の Class=ENCC のような属性があり、段落を CSS の規則に対応付けます。どれも字幕ブロックのモデルには含まれないため、対応する概念のない形式には渡せず、各変換ページで損失として扱われます。