サブコマンド一覧
a9a_cli には次の 4 つのサブコマンドがあります。
| サブコマンド | 役割 |
|---|---|
probe | 入力オーディオのメタ情報とラウドネス情報を表示する |
render | operation(処理)を順に適用し、1 件または複数件を書き出す |
play | 入力オーディオを再生する |
version | アプリケーション情報を表示する |
対応フォーマットは WAV / FLAC / AIFF(AIFF-C を含む)/ Ogg Vorbis / MP3 です。MP3 のエンコードには LAME(libmp3lame)の共有ライブラリが別途必要です。
probe
入力オーディオのフォーマットとラウドネスを計測して表示します。
a9a_cli probe input.wav
オプション
| オプション | 説明 |
|---|---|
--no-indicator | 互換性のために受け付けます。probe では進捗表示を行わないため、指定しても動作は変わりません |
-q, --quiet | warning 行のみを抑制します。計測結果は表示します |
出力内容
probe は次の情報を表示します。
- ファイル情報: ファイルパス、sample rate(サンプリング周波数)、bit depth(量子化ビット数)、channels(チャンネル数)、duration(長さ)
- ラウドネス指標: integrated LUFS、true peak(トゥルーピーク)、LRA(ラウドネスレンジ)、crest factor(クレストファクター)
- その他: loop 情報、Vorbis Comments、warnings
render
operation を順に適用してオーディオを書き出します。単一ファイルへの出力には --out、複数ファイルの一括処理には --out-dir を使います。
単一入力・単一出力の基本形です。
a9a_cli render input.wav \
--out output.flac \
--op gain db=-3 \
--op fade-in duration=100ms curve=linear
複数入力を一括で処理する場合は --out-dir で出力先ディレクトリを指定します。
a9a_cli render a.wav b.wav \
--out-dir out \
--same-format \
--op loudness target=-16LUFS max-true-peak=-1dBTP
入出力オプション
| オプション | 説明 |
|---|---|
-o, --out <PATH> | 単一の出力ファイル |
--out-dir <DIR> | 複数入力向けの出力ディレクトリ |
--force | 既存の出力を上書きする |
--same-format | 入力のフォーマットを維持する |
--format <wav|flac|aiff|ogg|mp3> | 出力フォーマットを明示する |
--sample-rate <HZ> | 出力の sample rate を指定する |
--bits-per-sample <BITS> | WAV / FLAC / AIFF の bit depth |
--sample-format <int|float> | WAV の sample format |
--aiff-container <aiff|aifc-none|aifc-sowt|aifc-float32> | AIFF 出力時のコンテナ/圧縮方式 |
--flac-compression-level <0..8> | FLAC の圧縮レベル |
--vorbis-quality <-1..10> | Ogg Vorbis の品質 |
--mp3-vbr-quality <0..9> | MP3 の VBR 品質(0 が最高音質)。LAME が必要 |
--mp3-bitrate <8..320> | MP3 の平均ビットレート(kbps, ABR)。--mp3-vbr-quality とは併用不可 |
--comment KEY=VALUE | Vorbis Comment を追加する |
--no-indicator | progress bar と operation ごとの進捗出力を無効化する |
-q, --quiet | warning と途中経過の表示を抑制する。indicator も無効化する |
--job <JOB> | TOML job file を読み込む |
operation
--op で適用する処理を指定します。同じ --op を複数並べると、指定した順に適用されます。
| operation | 必須キー | 任意キー |
|---|---|---|
gain | db | - |
loudness | target | max-true-peak |
fade-in | duration | curve |
fade-out | duration | curve |
loop | start, end | - |
loop では start < end である必要があります。
キーの値の形式
| キー | 形式 | 例 |
|---|---|---|
db, target, max-true-peak | 数値、または suffix 付き文字列 | -3, -3dB, -16LUFS, -1dBTP |
duration | 100ms、1s、または suffix なしのミリ秒整数 | 100ms, 1s, 100 |
curve | linear, equal_power, s_curve, log, exp のいずれか | equal_power |
AIFF / AIFF-C(AIFC)の入出力
.aiff / .aif / .aifc のいずれの拡張子も AIFF ファイルとして読み込めます。読み込み時は AIFF-C(AIFC)コンテナにも対応しており、以下の圧縮方式(compression type)を扱えます。
| compression type | 内容 | 読み込み | 書き込み |
|---|---|---|---|
| (プレーン AIFF) | ビッグエンディアンの整数 PCM | ○ | ○ |
NONE / twos / in16 / in24 / in32 | AIFF-C のビッグエンディアン整数 PCM | ○ | ○(aifc-none) |
sowt | AIFF-C のリトルエンディアン整数 PCM | ○ | ○(aifc-sowt) |
fl32 | AIFF-C の 32bit float(IEEE754) | ○ | ○(aifc-float32) |
上記以外(ulaw, ima4, fl64 など) | 圧縮コーデックや 64bit float | × | × |
制約
出力先とフォーマットの指定には、次の制約があります。
--outと--out-dirは同時に指定できません。- 複数入力では
--outを使えません。--out-dirを使います。 --same-formatと--formatは同時に指定できません。--outを使う場合、出力フォーマットを--format、--same-format、または出力パスの拡張子のいずれかで決定できる必要があります。--formatと--outを併用し、--outに拡張子があるときは、拡張子と--formatが一致している必要があります。
--sample-rate には次の標準値のみ指定できます。
8000, 11025, 16000, 22050, 32000, 44100, 48000, 88200, 96000, 176400, 192000
フォーマット別のオプションには、次の制約があります。
--sample-formatは WAV 出力でのみ有効です。floatを使う場合は--bits-per-sample 32が必要です。--aiff-containerは AIFF 出力でのみ有効です。省略した場合、入力が AIFF/AIFF-C であればそのコンテナを引き継ぎます(--same-formatで AIFF-C の入力を書き戻すと同じコンテナのまま出力されます)。入力が AIFF/AIFF-C 以外の場合は素の AIFF(aiff)になります。aifc-float32を指定する場合は--bits-per-sample 32が必要です。- FLAC の bit depth は 24 bit までです。
--flac-compression-levelは FLAC 出力でのみ有効です。 --vorbis-qualityは Ogg Vorbis 出力でのみ有効です。--mp3-vbr-qualityと--mp3-bitrateは MP3 出力でのみ有効で、同時には指定できません。どちらも省略した場合は既定の VBR 品質(おおよそ 190 kbps 相当)になります。- MP3 出力には LAME(
libmp3lame)の共有ライブラリが実行時に必要です。インストールされていない場合は MP3 出力のみエラーになります(インポートや他フォーマットへの出力には不要)。 --commentで追加したタグは FLAC / Ogg Vorbis では保持されますが、WAV / AIFF / MP3 では出力時に破棄されます。
Job File
処理内容を TOML ファイルにまとめ、render --job <JOB> で読み込めます。
a9a_cli render --job jobs/render.toml
次は top-level の設定と [[op]] を組み合わせた例です。
input = ["../audio/a.wav", "../audio/b.wav"]
out_dir = "../out"
same_format = true
force = true
comment = ["ARTIST=a9a", "ALBUM=demo"]
[[op]]
type = "gain"
db = -3
[[op]]
type = "fade_in"
duration = "100ms"
curve = "equal_power"
[[op]]
type = "loop"
start = 12000
end = 96000
top-level キー
| キー | 説明 |
|---|---|
input | 単一の入力、または入力の配列 |
output | 単一の出力ファイル |
out_dir | 複数入力時の出力ディレクトリ |
force | true で既存の出力を上書きする |
same_format | 入力のフォーマットを維持する |
format | wav, flac, aiff, ogg, mp3 |
sample_rate | 出力の sample rate |
bits_per_sample | 出力の bit depth |
sample_format | WAV 用。int, float |
aiff_container | AIFF 用。aiff, aifc-none, aifc-sowt, aifc-float32 |
flac_compression_level | FLAC 用 |
vorbis_quality | Ogg Vorbis 用。-1..10 |
mp3_vbr_quality | MP3 用。0..9(0 が最高音質)。LAME が必要 |
mp3_bitrate | MP3 用。平均ビットレート(kbps, ABR)。mp3_vbr_quality とは併用不可 |
comment | KEY=VALUE 文字列の配列 |
output と out_dir、および same_format と format は、それぞれ同時に指定できません。
[[op]]
operation は [[op]] テーブルで定義します。type には次の値のみを指定できます。
| type | 必須キー | 任意キー |
|---|---|---|
gain | db | - |
loudness | target | unit(指定する場合は LUFS)、max_true_peak |
fade_in | duration | curve |
fade_out | duration | curve |
loop | start, end | - |
loop では start < end である必要があります。
job file の type は snake_case に固定です。CLI の --op で使う fade-in / fade-out は受け付けません。fade_in / fade_out を使います。
job file の注意点
outは受け付けません。outputを使います。max-true-peakは受け付けません。max_true_peakを使います。- 定義されていないキーはエラーになります。
- job file 内の相対パスは、カレントディレクトリではなく job file 自身のディレクトリを基準に解決されます。
マージ規則
--job と CLI 引数を同時に使う場合は、次の規則で解決されます。
- operation は job file の
[[op]]の後ろに CLI の--opを連結します。 inputは CLI 側を優先します。output/out_dirは CLI 側を優先します。sample_rateなどの出力 override は、フィールド単位で CLI 側を優先します。forceとsame_formatは、どちらかがtrueであればtrueになります。commentは job file の配列に CLI の--commentを追記します。
play
入力オーディオを再生します。再生中は端末に再生位置を表示します。オプションはありません。
a9a_cli play input.wav
version
アプリケーション情報を表示します。
a9a_cli version
third-party license を含める場合は --third-party-licenses を付けます。
a9a_cli version --third-party-licenses
代表例
単一ファイルを FLAC に書き出し、ラウドネスを整える例です。
a9a_cli render input.wav \
--out output.flac \
--format flac \
--sample-rate 48000 \
--bits-per-sample 24 \
--op loudness target=-16LUFS max-true-peak=-1dBTP
処理内容を job file にまとめ、CLI 側で出力先だけを差し替える例です。
a9a_cli render \
--job jobs/master.toml \
--out-dir build/mastered \
--comment REVISION=2026-03-20
AIFF-C(リトルエンディアン整数 PCM, sowt)として書き出す例です。
a9a_cli render input.wav \
--out output.aifc \
--format aiff \
--aiff-container aifc-sowt \
--bits-per-sample 16 \
--op gain db=-3
運用上の考え方
render は多くの前処理を 1 本のワークフローで扱える反面、入出力条件の組み合わせによって有効な指定が変わります。実運用では次の順で整理しておくと扱いやすくなります。
- 出力形式を先に決める
- sample rate や bit depth の方針を決める
- operation を必要最小限から積み上げる
- 手順が固まったら job file に落とし込む
まずは単一ファイルで挙動を確認し、その後にバッチ処理へ広げるのが安全です。