9 : 06 TTA 'True Audio' 可逆音声圧縮

← 9 - 05 p↑ もくじ i 9 - 07 n →

TTA: 高速・高圧縮・フリーの lossless オーディオ

2004年 7月 9日
記事ID d40709

速度はFLACの数倍、圧縮率もFLAC以上。APEの約半分の処理時間でAPE並の高圧縮を達成。 フリー(GPL)の可逆音声圧縮 TTA に注目。

foobar サポートなどもほぼ実用レベルに達している。

TTA周辺は急激に発展中だが、 ここでは2004年7月9日現在の情報をまとめておく。別記事「[FLAC/TTA] 音楽アルバムを日本語曲名チャプター付き1ファイルに可逆圧縮」も参照。

もくじ

  1. もくじ
  2. はじめに
  3. 概要
  4. foobarでのTTA変換
  5. 掲示板での情報

フィードバックは掲示板にお願いします。 これまでにいただいた情報

はじめに

2004年5月7日 可逆音声圧縮TTA使ってみました。 とにかくエンコードが速い! FLACより速い。FLACより縮む。APEには圧縮率では少し負けるが、圧縮速度は4倍くらい速いです。 けっこうすごい。 もちろんフリー。 foobarで再生できるし、登録すればfoobarから直接エンコードもできて、タグもそのままで。既にハードウェアサポートがあるというのもポイントかも。…で、このTTA音声も動画で使えるようにしよう、って話があるんですよ。すごいですね、進化の勢いというか。

ちなみに TTA は The True Audio (Encoder) の略らしいです。

Reported by Yudai

概要

圧縮率と処理速度

TTA はGPLライセンスの可逆(ロスレス)オーディオ圧縮コーデック。 8/16/24ビットの WAV を処理できる。 陶酔するような圧縮の速さが特徴で、 既にハードウェアサポートもある。 昔、FLAC の最速モードにエクスタシーを感じるユーザがいたが、 TTA はさらにすごい。

目安として 1GHz のCPUで 30倍速くらい。 2~3分の曲なら5秒前後で圧縮できる。

第三者によるテスト Performance comparison of lossless audio compressors によると、 Athlon 800 で、平均エンコード速度は約27倍速、デコードは約25倍速。 ギガ級のCPUなら容易に32~64倍速を超えるだろう。 これと同等の速さがあるのは、Shorten と WavPack 3.97 (最新の WavPack 4.0 は詳細未確認)だが、 Shorten は圧縮率がはるかに低い。スピードと圧縮率の両方で好敵手と言えるのは WavPack だけだ。

FLAC はデコードが速く、再生時負荷が軽いものの、 エンコード速度、圧縮率のいずれでも TTA に及ばない。 一方、TTA は APE (Monkey's Audio 3.99) には圧縮率でわずかに負けるが(TTAの平均58~59%に対して、57%程度)、 処理の速さは約2倍だ(手元のサンプルでは約4倍だった)。

一般的に、2倍の時間をかけて58%台が57%台になっても、コストパフォーマンスが良いとは言えない。 APE が悪いという意味ではなく、高圧縮の APE に約半分の処理時間で肉薄できる TTA がすごいのだ。

作者のページでは、APE より TTA の方が高圧縮になる例もあることが紹介されている。 可逆音声圧縮の比較も参照。

開発履歴

開発者の目標は、圧縮率でも圧縮速度でもなく、 ハードウェアサポートの容易さだという。 TTA の changelog を見ると、必要メモリ量の節約など、 ハードウェアサポートを強く意識していることが分かる。 これが結果的にシンプルで軽量なアルゴリズム=高速につながっているようだ。 シンガポールの Neuston 社は、 既に TTA をサポートした DVD プレーヤーを作っている(Maestro DVX-1201)。

作者は Alexander 、 HA でのニックは ald。 TTA 1.x 関連のスレ TTA Lossless Audio Compressor では「こんなものもあった」くらいの扱いだが(2003年10月~12月)、 TTA 2.0 になると、 スレタイトルも TTA: The free lossless True Audio compressor, TTA 2.0, fast, incredible compression となり、 「高速で驚異的な圧縮」と注目され始めた(2004年1月~)。このスレで、 2004年4月にアナウンスされた TTA 3.0 では、さらに処理速度が高速化されている。 同時期、TTA は CoreCodec のプロジェクトに加わった。

タグサポート、プレーヤのプラグイン、GUI
タグ

ID3v1 と ID3v2 がサポートされている。 非公式にはAPEv2タグも使えるが、特に理由がなければAPEv2は使うべきでない。 公式サポートでないため、TTAを扱える他のツールとの相互運用性は保証されないからだ。

foobar2000

foobar での再生は問題ない。スペシャルインストーラなら初めからコンポーネント(foo_ttaなど)が入っている。 foobar2000 v0.8.3 2004-11-14 では、既にMKA形式のTTAにも対応したコンポーネントも入っている(と思ったが、入ってないかも。詳細は、別記事「[FLAC/TTA] 音楽アルバムを日本語曲名チャプター付き1ファイルに可逆圧縮」)

;       226304  23:15.58 2004-10-16 foo_matroska.dll
;        20480  01:33.32 2004-08-31 foo_tta.dll
foo_matroska.dll 7E4769FF
foo_tta.dll CAB072AA

foobar で直接圧縮するコンポーネント(Diskwriterプラグイン)も時間の問題だろう。 foobar2000 > General - (fb2k) > TTA。 コマンドライン・エンコーダを呼び出すことで、 タグ移行も含めて、foobar でどの形式からでも直接TTAに変換できる。

GUI

また、Windows 版の GUI「Tau Producer」(WinTTA.exe)がある。 これはコマンドライン版のフロントエンドではなく、ライブラリを内蔵している。 日本語などユニコードのファイル名でも問題ない。 日本語化パッチも公開されている。

画像は日本語化パッチを適用した状態。
1曲1~3秒の爆速で圧縮できるのが分かる。

公式サイト

TTA のプロジェクトは、CoreVorbis、CoreAAC、CorePNG などで知られる CoreCodec にホストされている。

http://tta.corecodec.org/

一部の日本のISPから、CoreCodec.org に直接接続できない現象が確認されている。 技術的なトラブルと思われれる。 その場合、多少速度が遅くなるかもしれないが、プロキシを使うか、または次のURLを試してほしい。
http://tta.corecodec.org.nyud.net:8090/

次のURLでもほぼ同じ情報が手に入る。

これらのページには、TTA の圧縮理論やファイル構造を解説したドキュメントもある。

foobarでのTTA変換

Diskwriterプラグインは完成していないが、 foo_clienc で %s を使えば普通にできる。 日本語のダメ文字問題は既に解決している。

掲示板での情報

TTAについての記事を書く予定地へのFB(#1503)
TTA 2 から TTA 3 になった過渡期の裏話。参考までに。(2004年5月)
Foobar2000でTTAエンコード(#1517)
TTA 3.0/3.1 でも問題なく foobar から使える。設定が分からないかたは、このとおりにしてみよう。
TTAのエンコード(#1624)
ダメ文字があることが判明。回避法を考えた。 #1625#1626#1627で一応解決。その後、TTA側で正式対応し、全面解決。

この記事のURL

テキスト版省パケ版XML版


[FLAC/TTA] 音楽アルバムを日本語曲名チャプター付き1ファイルに可逆圧縮

2004年11月26日
記事ID d41126

注意: この記事は初心者向けではありません。

音楽CDを、トラックごとにファイルにするのでなく、 全体を1ファイルとCUEにする方法は、よく知られてます。 ここでは、その1ファイルを可逆圧縮し、 CUEの方はチャプター化し、全体を1つのMKAにまとめてみます。 いわゆる (tta+cue).mka ですが、音声部分は FLAC でも作成手順はまったく同じ。

しかもこれ、一見すごく特殊なファイルなようだが、汎用コンテナ Matroska なので、DirectShowフィルターさえ導入すれば、理論上は、 すべての Windows 用DSプレーヤーで再生できます。(チャプターのサポートはあるのとないのがあるが、 Windows 自身に付属している mplayer2.exe ではチャプターもサポートされている。)

もくじ

初めに

数年前「アルバムはLAMEで圧縮して、無圧縮ZIPかTARでまとめましょう」みたいな話がよくありましたが、 メディアも大容量になってきてることだし、LAMEは確かにいいけれど、将来の再利用なども考えると、 やはり安心感があるのは可逆圧縮。 MP3 が爆発的に普及したのは、1MBが大きいという感覚で、ハードディスクは1GBあれば足りるだろうといっていた牧歌的な時代。 それに対して、2004年の今では可逆圧縮という選択は、少しも珍しいものではなくなり、 OSに付属のリッパーに初めから可逆のオプションがあったりするほど…。 用途によっては可逆にする必要がない、しない方がかえって良い場合も多いので、その辺は各自考えてください。

FLACはほぼ安定していると言えますが(それでもごく最近 Ogg FLAC の仕様に揺れが生じた)、 TTAは開発途上の新しい技術、MKAも完全に固まっているものではありません。 総論としては「可逆圧縮は損失がなく元に戻せるのだから安心」ですが、 実際問題、2004年11月現在、まだいろいろと実験的で、不安定な面、危険もあります。 初心者の方などはお控えください。

ファイル自体が壊れない限り、Demux して Decode すれば最初のCDのデータに戻るのは確かですが、 なにぶん新しい技術なので、再生側の対応状況はまちまち、ということは、心してください。

もくじに戻る

1. CDImage.wav と CUE を作る

音楽CD から CDImage.wav と CDImage.cue を作ります。

基本的な作業なので詳細は省略しますが、 要は CD を CDドライブに入れて、Exact Audio Copy (EAC) を起動、CDドライブを選択して、トラックの情報(曲名など)を取得したら、Alt + F7 を押すだけ。 (Secure modes や Offset などの EAC の細かい設定については、不明の点があれば各自検索してください。) ちなみに、今回サンプルで使った 中嶋美智代ベスト/Believe in you は freedb になかったので、 トラック情報を Gracenote から引っ張ってきて、cdplayer.ini 経由でインポートしました。 (古い記事ですが「CDexで日本語タグつきOGGリッピング」に書いてある方法と同じ。)

もくじに戻る

2. CDImage.wav をFLAC/TTA化

flac を使いたい方は flac.exe を、tta を使いたい方は ttaenc.exe を使って、 CDImage.flac なり CDImage.tta を作ってください。

コマンドラインが苦手な方は、フロントエンドを使えば簡単。 TTA なら公式ページにある Tau Producer で良いし、 flac も本家で GUI を出してたような…。FlacDrop ありますし、foobar2000 からも書き出せます。

コマンドラインの場合、

FLAC
flac cdimage.wav
TTA
ttaenc -e cdimage.wav

両方やってみると、やっぱり TTA は縮む。このサンプルでは、 FLACのデフォが 475MB, TTA 468MB で、7MB の差が出ました。 しかも TTA の方が速い。APEに比べて軽いと思っていた FLAC が遅く思える…。 ちなみに元WAVは、678MB なので、どちらでも割合的には同じくらいです。 FLAC の方が枯れてて安全だし、DS的にも CoreFLAC が 0.4 になっていい感じになったので、おすすめですが、 日本語のファイル名だと再生できない罠。一方、TTA は気のせいか DS再生したとき、チャプターが微妙にずれる感じの不具合。

どちらも DS再生の問題で「オーディオは foobar2000」というユーザには関係ない

FLAC圧縮、TTA圧縮それ自体は、調べればすぐ分かるので、不明な点は各自検索してみてください。

もくじに戻る

3. CUEと合わせてMKA化

さて、本題の MKA。

MKVToolnix 0.9.5以降で、オーディオの時間的扱いがサンプル単位で厳密(64ビット型)になったので、MKAでは0.9.5以降を使おう。 ここでは最新の MKVToolnix 1.0 を使い、mmg.exe を使う場合を書きます。

ちなみに、この 0.9.5 での拡張が、「MPC 6.4.8.2 のデフォルトの設定ではMKV動画がシークできない」という副作用を発生させ、 混乱が大きかったため、ビデオの場合は、64ビット型を使わないように再変更されたいきさつがあります。 0.9.5以降で作成して再生に不具合がある場合、0.9.4を使うと問題が解決する可能性がありますが、 上記のように、0.9.4ではサンプル単位の時間精度がありません。 44100Hz の1サンプルは、 約0.0000226757秒、つまり1ミリ秒よりさらに2桁も小さい単位で、 どう逆立ちしても耳では分かりませんが、 ここでは「音質」とか「聴いて分かる」とかの音響心理ベースの話ではなく、 厳密なデータの世界、 1ビットも違わずに元に戻せるビット・アイデンティカルな可逆、を考えているのですから、 MKV動画の場合はともかくも、やはり、成分が可逆圧縮のMKAでは、0.9.5以降を使うべき。

Inputタブ

① [add] をクリックして、MKA化したいFLACまたはTTAを読み込みます。

② トラックを選択します。ここでいう「トラック」は音楽CDの曲ごとのトラックのことではなく、 読み込んだ音声ファイル全体のことです。ともかくこの場合1個しかないので、それをクリックすればOK。

③ 選択した音声トラック、つまり音楽の言語を指定します。仕様上は別に指定しなくても構いませんが、 日本語 jpn は主要言語扱いでリストの上の特権的な位置にあり、すぐ選択できるので、どうせなので選択しておこう。 もちろんフランスの曲ならフランス語、ドイツの曲ならドイツ語など、内容に合わせて選んでください。

④ [Browse] をクリック、出力ファイル名を指定します。Command line の欄には UTF-8 で表示され、ロケールが日本語の Windows は、それを Shift_JIS で表示しようとするため、文字化けして見えますが、ほとんどの場合、機能上は問題ないようです。ただ、心配なら、とりあえず半角英数字のファイル名で出力しておき、 後から日本語のファイル名にリネームする手も。拡張子は、.mka です。デフォの .mkv でなく .mka にすることで、 foobar2000 と関連づけができて、都合良い。

Globalタブ

⑤ File/segment title欄に、このファイル(アルバムなど)の題名を入れます。 これはファイル名ではなく、ファイルの内部に保存される「題名情報」で、foobar2000 も MPC もこの情報を解釈して表示しますから、 指定した方が再生時に見栄えが良くなります。

foobar2000 のデフォルトの設定では、アルバム名を設定しないと、タイトルバーに ? が表示されます。 なお、この現象は、foobar2000 - Preferences - Display - Title formatting の Main window title タブを次のように変更することで、回避可能です。
初期状態
[%artist% - ]$if(%title%,['['%album%[ #[%disc%/]$num(%tracknumber%,2)]'] ']%title%,%_filename_ext%) '['%_foobar2000_version%']'
変更後状態
[%artist% - ]$if(%title%,['['[%album% ][#[%disc%/]$num(%tracknumber%,2)]'] ']%title%,%_filename_ext%) '['%_foobar2000_version%']'

日本語の文字でも構いませんし、ファイル名でないので、 ファイル名には使えない文字でも構いません。ただし、出力ファイル名と同じ理由で、日本語は、Command line 欄では文字化けして見えます。 --command-line-charset スイッチを使うことでこの問題を回避できますが、最近の MMG にはこのオプションがないです。 したがって、Command line 欄の表示がどうしても気になる場合は、直接コマンドラインから指定してください。 MMG の将来のバージョンでは、何とかしてもらいたいところですが、もし実害があったら知らせてください。 作成ツール上の表示が気持ち悪いだけで、作成される結果はOKのはずですが…。

⑥ Chapters の [Browse] で CUEシートを指定します。

⑦ CUEシートの言語を指定します。(仕様上、同じファイルに多言語でチャプターを打って、表示を切り替えられる。)

⑧ Charset欄は、CUEシートの文字エンコーディングを指定します。 CDDB から取得した日本語の曲名は、Shift_JIS です。Shift_JIS はリストの下の方ですが、s と一文字打って↓キーを叩けばすぐ出ます。 指定しなくても、OSのロケールが日本語なら自動判別してくれるはずなのですが、 あいまいだと文字化けの原因になる場所はなるべく明示的にきっちり指定する習慣を付けよう。 (別のやり方として、CDImage.cue をメモ帳などで開いて、Unicode(BOMのあるUTF-8またはUTF-16)で再保存してもかまいません。 その場合、文字エンコーディングを指定する必要はなく、BOMで確実に自動判別されます。) いずれにしても、文字列は内部的にはUTF-8で格納されるので、 日本語、中国語、フランス語などが混在できる(コードポイントが衝突しない)。ただし、再生側がそれを表示できるかはまた別問題。

⑨ 準備ができたら、[Start muxing] で作成開始。

Attachement タブ

Matroska (MKV, MKA) というのは、ある意味クレイジーと言えるほど柔軟なコンテナで、 jpgなどでスキャンしたジャケット写真や、.txt形式の歌詞カードなども内蔵できるようになってます。 内蔵したものは、MatroskaProp を使えば、ファイルのアイコンを右クリックすることで簡単に利用や取り出しができます。 (フォントファイルを内蔵させておいて、字幕の表示を自動でカスタマイズする、という技まで使える。)

テーマの TTA+CUE から外れるので、詳しくは省略しますが、そういうこともできる、と参考までに。

もくじに戻る

4. 再生してみよう

さて、作ったのはいいものの、うまく再生できるでしょうか。

foobar2000

foobar2000 の場合、とりあえず最新のスペシャル版をフルインストールするとして(公式cse)、 さらに、対応済みの foo_matroska.dll と foo_tta.dll が必要になります。

手元では以下のバージョンを使ってます。これが最新なのか分かりませんが、とりあえずこれで動いてます。

; Generated by QuickSFV v2.3 on 2004-11-26 at 22:51:24
;
;       226304  09:00.00 2004-10-24 foo_matroska.dll
;        28160  09:01.00 2004-10-24 foo_tta.dll
foo_matroska.dll 7E4769FF
foo_tta.dll 24503A5B

これらのファイルが必要なかたは、http://m17n.cool.ne.jp/freeware/ に置いてありますので、 ダウンロードしてください。 foobar2000 を一応いったん終了させてから、 foobar2000 のインストール先の、components フォルダに放り込んで(場合によっては上書きして)、foobar2000 を再起動してみてください。

DirectShow経由

Media Player Classic などの DirectShow (DS) ベースのプレーヤーで、これらの MKA ファイルを再生するには、 Matroska コンテナ自体を解釈するための MatroskaSplitter 、そこから取り出した FLAC を再生するための CoreFLAC (CoreFLACDecoder.ax)、 TTA を再生するための True Audio Decoder (TTADSDecoder.ax) が必要になります。

Splitter はどのパックにも入っていますが、FLAC と TTA の DS再生は一般ユーザが必要とするものでないため、 Lazy Man's MKV には入ってません。必要なかたは個別に導入するか、または、 公式版の Matroska Pack Full v1.0.3 などを利用して導入してください。

近い将来、illiminableのフィルタでも FLAC を DS再生できるようになる見込み。

最初に書いたように、2004年11月現在、DS経由再生には、FLAC、TTA両方とも、多少不具合があるようです。 また、foobar2000 で再生できるオーディオファイルをわざわざ重いマルチメディアプレーヤーで再生するメリットもあまりないとは思います。 しかし、将来、クラシックなどの音楽ビデオの動画の音声成分など現実的な活用も考えられる上、 どんな不具合があるのかないのか、どの程度あるのか、はっきりしない点も多いため、 できればいろいろ試してみて、開発者に何らかの形でフィードバックするようにしたら良いと思います。

この記事自体についてのフィードバックは、お気軽に掲示板まで…。

もくじに戻る

リンク

Revival Gate - mka と EAC からダイレクトに tta+cue(2004年11月27日)

この記事のURL

テキスト版省パケ版XML版


USF字幕についての走り書き

2004年5月5日

メモ


webmaster@faireal.net