- 技術 💻
MP3を圧縮する方法|容量を小さくするビットレートを実測で比較
結論
MP3の容量は「ビットレート×再生時間」で決まるので、圧縮するにはビットレートを下げ直します。声なら「モノラル・48kbps」で元の320kbpsの15%、音楽なら「VBR(-q:a 4)」で約29%になりました。カバー画像が入っているMP3は、画像を外すだけで音質を変えずに小さくなります。
この記事でわかること
- 32〜320kbps・VBR・モノラル化の容量と音質(PESQ)の実測表
- ffmpeg・lameのコマンドと、Windows・Mac・スマホでの方法
- メール添付の上限から逆算するビットレートと、うまくいかないときの直し方
MP3は、もともと音を間引いて小さくした形式です。そのため「もう一度圧縮する」とは、より低いビットレートで作り直す(再エンコードする)ことを指します。下の図の順に決めると迷いません。
flowchart TD
A[MP3を小さくしたい] --> B{カバー画像が入っている?}
B -->|はい| C[画像を外す<br>音質は変わらない]
B -->|いいえ| D{中身は?}
C --> D
D -->|声・会議・講義| E[モノラル 48kbps<br>さらに小さく 32kbps]
D -->|音楽| F[VBR -q:a 2〜4<br>約90〜130kbps]
E --> G{送り先の上限に入る?}
F --> G
G -->|いいえ| H[上限÷時間で<br>ビットレートを逆算]
G -->|はい| I[完成]
やりたいことごとに、いちばん早い方法を先にまとめます。
| やりたいこと | いちばん早い方法 | 詳しい節 |
|---|---|---|
| MP3の容量を小さくしたい | ffmpeg -i in.mp3 -b:a 96k out.mp3(320kbpsの元が30%に) |
ffmpegでMP3を圧縮するコマンド |
| 会議・講義の録音を小さく | モノラル・48kbps(元の15%、PESQ 4.42) | モノラル化・サンプリング周波数 |
| 音楽を音質を保って小さく | VBR -q:a 2(約130kbps)か -q:a 4(約90kbps) |
VBRとCBRの違い |
| メールで送れる大きさに | 上限(MB)×8000÷秒数 で kbps を出し、1段下を選ぶ | メール添付の上限から逆算する |
| 音質を変えずに小さく | カバー画像を外す -map 0:a -c copy(0.17秒) |
MP3が小さくならないとき |
| Windows・Macで画面から | Audacity の「書き出し」、Mac は「ミュージック」でも可 | Windows・Mac・スマホで圧縮する方法 |
| もっと小さい形式にしたい | 声は Opus 24kbps(MP3 48kbps と同等の PESQ で半分) | AAC・Opusとの比較 |
| たくさんのMP3をまとめて | bash の for ループで ffmpeg を回す | 複数のMP3をまとめて圧縮する |
確認環境:Ubuntu 24.04.5 LTS の上で、ffmpeg 6.1.1(Ubuntu のパッケージ 7:6.1.1-3ubuntu5。libmp3lame 3.100・libopus 1.4・ffmpeg 内蔵の AAC エンコーダー)と、LAME 3.100 の lame コマンド(Ubuntu の .deb を作業用のフォルダーに展開して実行)を使いました。音声はすべて自作の合成音で、声は ffmpeg の flite フィルター(音声合成)で英語の文を読ませ、部屋の雑音(ピンクノイズ)を小さく重ねた60秒のステレオ、音楽は Python 3.13(numpy 2.5)で和音・ベース・キック・ハイハットを合成した60秒のステレオです(どちらも 44.1kHz・16bit の WAV から LAME で320kbpsの MP3 を作り、それを「元のMP3」としました)。音質の目安は、声は ITU-T P.862.2(広帯域 PESQ。ITU-T では2024年1月に後継の P.863 へ移り削除された勧告ですが、手元で再現できる実装があるため使用)を実装した Python の pesq 0.0.4 で元の WAV と比べた値、音楽はスペクトルの上限の周波数(平均の強さが最大より80dB下がるところ)を numpy で測りました。人が聞いて比べる試験はしていません。変換時間は2コアの共有マシンでの5回の中央値です。Windows・Mac・スマホの操作は手元で動かせないため、Apple・Microsoft・Google・Audacity の公式ヘルプと公式マニュアルで確かめた範囲だけを書いています。図は mermaid 11.16.0 で描画を確かめました(確認日 2026年10月29日)。
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MP3を圧縮する方法|容量を小さくするビットレートを実測で比較」
MP3の容量が決まる仕組み(ビットレート×時間)
この節では、MP3の容量が何で決まり、どこを変えると小さくなるのかが分かります。
MP3の容量は、ほぼ「ビットレート(1秒あたりのデータ量)×再生時間÷8」です。 64kbps で60秒なら 64,000×60÷8=480,000バイトで、実際に作った60秒のファイルは 480,488バイトでした(差の0.1%はヘッダーなど)。曲の中身が単純でも複雑でも、CBR(固定ビットレート)なら容量は同じになります。
容量を変えられる要素は次の4つです。上から順に効き目が大きく、手軽です。
| 要素 | 変えると | 音への影響 |
|---|---|---|
| ビットレート(kbps) | 容量がそのまま比例して変わる | 下げすぎると高音が削られ、こもる・シャリシャリする |
| VBR(可変ビットレート) | 単純な部分のデータを減らす | 同じ容量なら CBR より音質が安定しやすい |
| チャンネル数(ステレオ→モノラル) | 低いビットレートでの音質が上がる。VBR なら容量も減る | 左右の広がりが無くなる(声ならほぼ問題にならない) |
| サンプリング周波数(44.1kHz→22.05kHz など) | 低いビットレートを使えるようにする | 扱える高音の上限が半分になる |
音と関係のない部分として、カバー画像(アルバムアート)と無音の時間も容量を占めます。これは後の節で実測します。
手元の MP3 が今どのビットレートなのかは、ffprobe(ffmpeg に付いてくる確認用のコマンド)で分かります。
ffprobe -v error -show_entries format=duration,bit_rate:stream=codec_name,sample_rate,channels -of default=nw=1 music_320.mp3
codec_name=mp3
sample_rate=44100
channels=2
duration=60.029388
bit_rate=320139
bit_rate=320139 は約320kbps です。元より低い値を指定しないと小さくなりません。 コマンドを使わない場合は、次の節以降の Audacity などで開いたときの表示でも確かめられます。
用途別のおすすめ設定(声・音楽・送信用の判断表)
この節では、何に使うMP3かで、どのビットレート・設定を選べばよいかが分かります。
声は「モノラル」、音楽は「VBR」を基本にします。 下の表は、後の節の実測(60秒の自作音源)をもとにした目安です。
| 用途 | おすすめ設定 | 1時間の容量の目安 | 実測の根拠 |
|---|---|---|---|
| 音楽を聞く(音質優先) | VBR -q:a 2(約130kbps) |
約58MB | 音楽の上限周波数 18.8kHz |
| 音楽を聞く(容量優先) | VBR -q:a 4(約90kbps) |
約42MB | 上限 17.5kHz・元の29% |
| どの機器でも再生させたい | CBR 128kbps | 57.6MB | 上限 16.8kHz・元の40% |
| 会議・講義・インタビュー | モノラル 48kbps | 21.6MB | PESQ 4.42・元の15% |
| 声をとにかく小さく | モノラル 22.05kHz・32kbps | 14.4MB | PESQ 3.82・元の10% |
| 声・MP3でなくてよい | Opus 24kbps | 10.8MB | PESQ 4.39・元の8% |
| 保存用(元に戻す可能性あり) | 圧縮しない(元を残す) | ― | 再圧縮した音は戻らない |
1時間の容量は「kbps×3600÷8」で計算した値です(VBR は実測の平均ビットレートで計算)。PESQ は声の聞きやすさを機械で推定する指標で、この実装では 4.64 が上限、元の WAV どうしの比較も 4.64 でした。
迷ったときは、次の順に決めます。
- 1元のファイルを別に残す圧縮した音は元に戻せない。上書きしない
- 2カバー画像を外す音質は変わらず、数百KB〜数MB減ることがある
- 3声ならモノラルにする32kbpsで PESQ が 3.28→3.78 に上がった
- 4ビットレートを下げる声 48kbps・音楽 VBR -q:a 4 から試す
- 5送り先の上限から逆算する上限MB×8000÷秒数 で kbps を出す
- 6MP3にこだわらないなら Opus・AAC再生する側が対応しているかを先に確かめる
ffmpegでMP3を圧縮するコマンド
この節では、ffmpeg でMP3を圧縮する基本のコマンドと、各オプションの意味が分かります。
基本の形は ffmpeg -i 元.mp3 -b:a 96k 新.mp3 です。 出力が .mp3 なら、エンコーダーは自動で libmp3lame(LAME)になります。明示したいときは -c:a libmp3lame を付けます。
# CBR(固定ビットレート)で 96kbps に
ffmpeg -i music_320.mp3 -c:a libmp3lame -b:a 96k music_96k.mp3
# VBR(可変ビットレート)。0 が高音質、9 が小さい
ffmpeg -i music_320.mp3 -c:a libmp3lame -q:a 4 music_v4.mp3
# 声:モノラル・48kbps
ffmpeg -i voice_320.mp3 -c:a libmp3lame -ac 1 -b:a 48k voice_48k.mp3
# 声:モノラル・22.05kHz・32kbps(さらに小さく)
ffmpeg -i voice_320.mp3 -c:a libmp3lame -ac 1 -ar 22050 -b:a 32k voice_32k.mp3
# カバー画像を外して音だけを残す(再エンコードしない)
ffmpeg -i with_art.mp3 -map 0:a -c copy no_art.mp3
| オプション | 意味 | よく使う値 |
|---|---|---|
-b:a |
音声のビットレート(CBR) | 128k・96k・64k・48k・32k |
-q:a |
VBR の品質(lame の -V に当たる) | 2(高音質)・4(標準)・6(小さめ) |
-ac |
チャンネル数 | 1(モノラル)・2(ステレオ) |
-ar |
サンプリング周波数 | 44100・22050・16000 |
-map 0:a |
入力の音声だけを出力に入れる | カバー画像を外すとき |
-c copy |
再エンコードせずにそのまま写す | 画像を外す・切り出す |
-y・-n |
上書きする・上書きしない | まとめて処理するときは -n |
ffmpeg の公式ドキュメントでは、-b:a は「CBR または ABR のビットレート」、-q:a は「VBR の品質設定(ffmpeg のコマンドでだけ有効)」と説明されています。ffmpeg そのものの入れ方と、動画の変換・切り出しは、関連記事「ffmpegの使い方|MOV→MP4変換・圧縮・切り出しを実測で解説」で扱っています。この記事は音声(MP3)の容量に絞ります。
元のビットレートを確かめる
ffprobe で bit_rate を見る。元が128kbpsなら、128k以上を指定しても小さくならない。
別名で書き出す
出力ファイル名を入力と同じにすると ffmpeg は止まる。元を残したまま新しい名前で作る。
頭と真ん中を聞いて確かめる
高音(シンバル・サ行)がこもっていないか、声が水中のように揺れていないかを聞く。気になれば1段上げる。
容量を見て送り先に合わせる
ls -l や ファイルのプロパティで容量を見る。上限を超えるなら、次の節の逆算でビットレートを決める。
ビットレート別の容量と音質の実測(CBR 32〜320kbps)
この節では、MP3のビットレートを下げると容量と音質がどれだけ変わるかが、実測の表で分かります。
320kbps の元のMP3(60秒)から、ffmpeg の -b:a で各ビットレートに作り直しました。声は PESQ、音楽はスペクトルの上限周波数で比べています。
| ビットレート | 容量(60秒) | 元との比 | 声の PESQ | 音楽の上限周波数 |
|---|---|---|---|---|
| 320kbps(元) | 2,346KB | 100% | 4.64 | 20.2kHz |
| 256kbps | 1,877KB | 80% | 4.64 | 19.5kHz |
| 192kbps | 1,408KB | 60% | 4.64 | 18.8kHz |
| 160kbps | 1,173KB | 50% | 4.64 | 17.5kHz |
| 128kbps | 938KB | 40% | 4.63 | 16.8kHz |
| 96kbps | 704KB | 30% | 4.62 | 15.4kHz |
| 64kbps | 469KB | 20% | 4.53 | 11.2kHz |
| 48kbps | 352KB | 15% | 4.38 | 7.8kHz |
| 32kbps | 235KB | 10% | 3.28 | 5.7kHz |
1容量はビットレートにぴったり比例
128kbps は 320kbps の 40%(128÷320)。中身が声でも音楽でも、CBR の容量は同じだった。
2音楽は高音から削られる
128kbps で 16.8kHz、64kbps で 11.2kHz、32kbps で 5.7kHz より上が消えた。シンバルの「シャー」が先に無くなる。
3声は 48kbps まで粘る
PESQ は 64kbps で 4.53、48kbps で 4.38。32kbps(ステレオ)で 3.28 に落ちた。声はモノラルにすると 32kbps でも 3.78 を保てる。
上限周波数の下がり方は、LAME が自動で入れるローパスフィルター(高い音を切る処理)の値と一致しました。lame コマンドは、変換の最初に切る周波数を表示します。
$ lame -b 128 voice_320.mp3 l_out.mp3
LAME 3.100 64bits (http://lame.sf.net)
Using polyphase lowpass filter, transition band: 16538 Hz - 17071 Hz
Encoding voice_320.mp3 to l_out.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (11x) 128 kbps qval=3
128kbps では 16.5〜17.1kHz で高音を切る、という表示で、実測の 16.8kHz と合います。人の声の主な成分は数kHzまでなので、声は低いビットレートでも聞き取りやすさが残ります。 音楽は高音の成分が多いので、96kbps より下では違いが出やすくなります。
変換にかかった時間は、60秒のMP3で約1秒(ffmpeg・128kbps・5回の中央値 1.22秒、範囲 1.15〜1.41秒)でした。1時間の録音でも、この環境なら1分ほどの計算です。
VBRとCBRの違いと実測(-q:a 0〜9)
この節では、VBR(可変ビットレート)と CBR(固定ビットレート)の違いと、VBR の各段階の容量が分かります。
CBR(固定ビットレート)
どの瞬間も同じデータ量。容量を正確に読める
ffmpeg は -b:a 128k、lame は -b 128
送り先の上限に合わせたいときに向く
VBR(可変ビットレート)
複雑な部分に多く、単純な部分に少なく配る
ffmpeg は -q:a 4、lame は -V 4
同じ容量なら音質が安定しやすい。容量は中身で変わる
同じ元のMP3から、VBR の段階ごとに作り直した結果です。
| 設定 | 声(平均・容量) | 声の PESQ | 音楽(平均・容量) | 音楽の上限周波数 |
|---|---|---|---|---|
-q:a 0 | 154kbps・1,126KB | 4.64 | 204kbps・1,497KB | 20.2kHz |
-q:a 2 | 114kbps・836KB | 4.62 | 131kbps・961KB | 18.8kHz |
-q:a 4 | 91kbps・663KB | 4.61 | 93kbps・684KB | 17.5kHz |
-q:a 6 | 57kbps・421KB | 4.53 | 73kbps・533KB | 16.8kHz |
-q:a 9 | 44kbps・324KB | 4.20 | 53kbps・386KB | 7.8kHz |
同じ -q:a でも、声と音楽で容量が変わります。 -q:a 0 では声が 154kbps、音楽が 204kbps になりました。音楽の -q:a 4(93kbps・684KB)は CBR 96kbps(704KB)とほぼ同じ容量で、上限周波数は 17.5kHz と、CBR 96kbps の 15.4kHz より高く残りました。
LAME が選んだローパスの値も、VBR の段階で変わります。
$ lame -V 2 voice_320.mp3 l_out.mp3
Using polyphase lowpass filter, transition band: 18671 Hz - 19205 Hz
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=2)
$ lame -V 4 voice_320.mp3 l_out.mp3
Using polyphase lowpass filter, transition band: 17249 Hz - 17782 Hz
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=4)
Audacity の公式マニュアルでは、Variable(VBR)の 0 が「Extreme」、2 が「Standard」、4 が「Medium」に相当すると説明されています。Audacity の既定は Standard です。
変換時間は VBR のほうが短く、60秒の音楽で -q:a 4 が 0.85秒、CBR 128kbps が 1.22秒でした(ffmpeg・5回の中央値)。
モノラル化・サンプリング周波数・無音カットで小さくする
この節では、モノラルにする・サンプリング周波数を下げる・無音を詰める、の3つで容量と音質がどう変わるかが分かります。
CBR のまま「モノラルにするだけ」では容量は変わりません。 容量はビットレートで決まるからです。モノラルにすると、同じビットレートを1チャンネルに集中できるので、低いビットレートでの音質が上がります。
| 設定(声・60秒) | 容量 | PESQ | 上限周波数 |
|---|---|---|---|
| ステレオ 64kbps | 469KB | 4.53 | 9.2kHz |
| モノラル 64kbps | 469KB | 4.51 | 9.2kHz |
| ステレオ 48kbps | 352KB | 4.38 | 7.5kHz |
| モノラル 48kbps | 352KB | 4.42 | 9.0kHz |
| ステレオ 32kbps | 235KB | 3.28 | 5.7kHz |
| モノラル 32kbps | 235KB | 3.78 | 7.4kHz |
| モノラル 22.05kHz・32kbps | 235KB | 3.82 | 7.6kHz |
| モノラル 16kHz・32kbps | 235KB | 3.60 | 9.1kHz |
| モノラル 16kHz・24kbps | 176KB | 2.95 | 5.8kHz |
声の見本は左右が同じ音なので、64kbps では違いがほとんど出ません(LAME の joint stereo が左右の差だけを記録するため)。32kbps ではモノラルのほうが PESQ が 0.5 高く、差がはっきり出ました。声の上限周波数は、合成音声そのものが約8kHzまでの音なので、音楽ほど大きく動きません。
VBR なら、モノラルにすると容量そのものが減ります。-q:a 4 で比べた結果です。
| VBR -q:a 4 | ステレオ | モノラル | 減った割合 |
|---|---|---|---|
| 声(左右が同じ) | 663KB | 597KB | 10% |
| 音楽(左右に広がりあり) | 684KB | 373KB | 45% |
サンプリング周波数は、MP3 では決まった値しか使えません。lame のヘルプには、組み合わせられるビットレートの一覧があります。
MPEG-1 layer III sample frequencies (kHz): 32 48 44.1
bitrates (kbps): 32 40 48 56 64 80 96 112 128 160 192 224 256 320
MPEG-2 layer III sample frequencies (kHz): 16 24 22.05
bitrates (kbps): 8 16 24 32 40 48 56 64 80 96 112 128 144 160
MPEG-2.5 layer III sample frequencies (kHz): 8 12 11.025
bitrates (kbps): 8 16 24 32 40 48 56 64
44.1kHz のままでは 32kbps が下限です。24kbps 以下にしたいときは、-ar 22050 や -ar 16000 でサンプリング周波数も下げます。lame の --preset voice は、32kHz・モノラル・平均56kbps を自動で選びました(60秒で 397KB)。
無音を詰める(会議・講義の録音)
話の合間に長い無音がある録音は、無音を詰めると時間そのものが短くなり、同じビットレートでも小さくなります。5秒の間が入った80秒の録音で試しました。
ffmpeg -i pause.mp3 -af "silenceremove=stop_periods=-1:stop_duration=0.5:stop_threshold=-40dB" -c:a libmp3lame -b:a 128k pause_cut.mp3
結果は 80.5秒・1,258KB → 61.2秒・956KB(24%減)でした。-40dB より小さい音が0.5秒以上続いた部分を削る設定です。雑音の多い録音では無音と判定されにくいので、stop_threshold を -35dB などに上げて試します。議事録の証拠として残す録音は、時間が変わるので元を必ず残します。
メール添付の上限から逆算するビットレート
この節では、メールなどの容量の上限に収まるビットレートを、計算で決める方法が分かります。
ビットレート(kbps)=上限(MB)×8000÷再生時間(秒)で出た値より1段低い値を選びます。メールは本文や変換の分も含めて数えられることがあるので、2割ほど余裕を見ます。
| 送り先の上限(公式) | 30分の録音 | 60分の録音 | 90分の録音 |
|---|---|---|---|
| Gmail 25MB(個人用アカウント) | 96kbps(21.6MB) | 48kbps(21.6MB) | 32kbps(21.6MB) |
| Outlook.com 20MB | 80kbps(18.0MB) | 40kbps(18.0MB) | 24kbps・22.05kHz(16.2MB) |
| Exchange(会社のメール)既定 10MB | 40kbps(9.0MB) | 16kbps・16kHz(7.2MB) | MP3では難しい |
上限の値は、Google の Gmail ヘルプ(個人用アカウントの添付は 25MB)と、Microsoft サポート(Outlook.com などのインターネット メールは 20MB、Exchange アカウントの既定は 10MB。添付だけでなくメール全体のサイズ)で確かめました。会社や学校のアカウントは管理者が上限を決めるので、そちらに合わせます。
計算は bash でもできます。60分(3600秒)を 25MB に収める例です。
$ echo $(( 25 * 8000 / 3600 ))
55
55kbps より低い MP3 のビットレートは 48kbps なので、-ac 1 -b:a 48k を選びます(約21.6MB)。90分を超える録音や 10MB の上限には、MP3 を小さくするより、共有のリンク(Google ドライブ・OneDrive など)で送るほうが音質を保てます。 Gmail のヘルプには「サイズが 25 MB を超えるファイルは添付されず、Google ドライブのリンクが自動的にメール内に追加されます」と書かれています。
LINE で送れるファイルの大きさと保存期間は、LINE ヘルプセンターの該当ページの本文をこの確認では取得できなかったため、数値を書いていません。送る前にアプリ内のヘルプで確かめます。
lameコマンドでMP3を圧縮する
この節では、MP3を作るエンコーダーそのものである lame コマンドでの圧縮と、表示の読み方が分かります。
ffmpeg の libmp3lame は、この LAME を中で使っています。lame コマンドは MP3 を直接読み込めるので、MP3 から MP3 への作り直しもそのままできます。
# CBR 128kbps
lame -b 128 in.mp3 out.mp3
# VBR(標準)
lame -V 4 in.mp3 out.mp3
# モノラル・64kbps
lame -m m -b 64 in.mp3 out.mp3
# モノラル・22.05kHz・32kbps
lame -m m --resample 22.05 -b 32 in.mp3 out.mp3
モノラル・22.05kHz・32kbps の実行結果です。サンプリング周波数を下げたので、高音の上限が 8.3kHz 付近まで下がり、規格も MPEG-2 になったことが表示で分かります。
Autoconverting from stereo to mono. Setting encoding to mono mode.
Resampling: input 44.1 kHz output 22.05 kHz
Using polyphase lowpass filter, transition band: 8269 Hz - 8535 Hz
Encoding voice_320.mp3 to l_out.mp3
Encoding as 22.05 kHz single-ch MPEG-2 Layer III (11x) 32 kbps qval=3
| lame の指定 | 容量(60秒) | 表示された内容 |
|---|---|---|
-b 128 | 938KB | 44.1kHz j-stereo・高音を 16.5kHz から切る |
-V 4 | 665KB | VBR(q=4)・高音を 17.2kHz から切る |
-m m -b 64 | 469KB | single-ch(モノラル) |
--preset voice | 397KB | 32kHz・モノラル・平均56kbps |
-m m --resample 22.05 -b 32 | 235KB | 22.05kHz・MPEG-2 |
-b 8 | 59KB | 8kHz に下げ、高音を 2.0kHz から切る |
-b 8 のように 44.1kHz で使えないビットレートを指定すると、lame はサンプリング周波数を自動で 8kHz に下げました。電話より狭い音になるので、普通の用途では使いません。 lame は Ubuntu・Debian なら sudo apt install lame、Mac なら Homebrew の brew install lame で入ります。Windows で画面から使うなら、次の節の Audacity が LAME と同じ設定項目を持っています。
速さは、60秒の音楽で lame -b 128 が 1.04秒、-V 4 が 0.71秒でした(5回の中央値)。ffmpeg とほぼ同じです。
AAC・Opusとの比較(MP3以外にする選択)
この節では、MP3 のままにするか、AAC(.m4a)や Opus(.opus)に変えるかの判断材料が、同じ音源の実測で分かります。
声なら Opus 24kbps が、MP3 48kbps と同じくらいの PESQ で半分の容量でした。 ただし、Opus や AAC にするとファイルの形式が変わります。受け取る人の機器・アプリで再生できるかを先に確かめます。
| 形式・設定(声・60秒) | 容量 | PESQ | 変換時間 |
|---|---|---|---|
| MP3 モノラル 48kbps | 352KB | 4.42 | 0.76秒 |
| MP3 ステレオ 48kbps | 352KB | 4.38 | 0.85秒 |
| AAC 64kbps(.m4a) | 494KB | 4.05 | 1.54秒 |
| AAC 96kbps(.m4a) | 713KB | 4.36 | 1.91秒 |
| Opus 32kbps(.opus) | 236KB | 4.51 | 1.57秒 |
| Opus 24kbps(.opus) | 178KB | 4.39 | 1.56秒 |
| Opus モノラル 16kbps | 122KB | 4.04 | 1.60秒 |
変換時間は各1回の計測です。音楽では、次のようになりました。
| 形式・指定(音楽・60秒) | 実際の平均 | 容量 | 上限周波数 |
|---|---|---|---|
| MP3 CBR 128kbps | 128kbps | 938KB | 16.8kHz |
| MP3 VBR -q:a 4 | 93kbps | 684KB | 17.5kHz |
| AAC 128kbps(ffmpeg 内蔵) | 141kbps | 1,030KB | 17.4kHz |
| AAC 64kbps(ffmpeg 内蔵) | 68kbps | 501KB | 12.6kHz |
| Opus 64kbps 指定 | 88kbps | 642KB | 20.5kHz |
| Opus 32kbps 指定 | 44kbps | 324KB | 20.5kHz |
- Opus は指定より大きくなることがあります。 libopus は既定で VBR なので、ハイハットの多い音楽では 64kbps の指定が平均 88kbps になりました。容量をきっちり合わせたいときは
-vbr off(固定)を付けます。 - Opus は 44.1kHz で書き出せません。 内部は 48kHz などで動くため、
-ar 44100を付けるとエラーになります(エラーの節に原文)。 - ffmpeg 内蔵の AAC は、64kbps で高音を 12.6kHz まで切りました。この環境の ffmpeg 内蔵エンコーダーでは、低いビットレートの AAC が MP3 VBR より有利とは限らない結果でした。
Xiph.Org の Opus の推奨設定のページでは、全帯域(FullBand)の目安として、声はモノラル 28〜40kbps・ステレオ 32〜64kbps、音楽はステレオ 64〜128kbps が挙げられ、「128kbps の VBR でほぼ原音と区別できない」とされています。Audacity の公式ドキュメントも「同じファイルサイズなら Opus と M4A(AAC)のほうが MP3 より高音質」と説明しています。
Web ページで音声を流す場合の形式の選び方は、関連記事「HTML video・audioタグの使い方|自動再生されない原因と対処」で扱っています。
再圧縮で音質は戻らない(上げ直し・繰り返し)
この節では、MP3 を作り直すと何が起きるのか、ビットレートを上げ直すと音がよくなるのかが分かります。
一度 128kbps にした MP3 を 320kbps にし直しても、容量が2.5倍になるだけで音は戻りませんでした。 削られた情報は、元のファイルにしか残っていないからです。
| 作り方(声・60秒) | 容量 | PESQ | 上限周波数 |
|---|---|---|---|
| WAV から直接 128kbps | 938KB | 4.63 | 9.2kHz |
| 320kbps の MP3 から 128kbps | 938KB | 4.63 | 9.2kHz |
| 128kbps を 320kbps に上げ直し | 2,346KB | 4.63 | 9.2kHz |
| 128kbps を2回作り直し | 938KB | 4.63 | 9.2kHz |
| 128kbps を5回作り直し | 938KB | 4.61 | 11.3kHz |
320kbps のような高いビットレートの MP3 から作り直すなら、WAV から作るのとほぼ同じ結果でした。一方、同じ 128kbps で作り直しを繰り返すと PESQ が少しずつ下がり、元の音には無かった 9kHz より上の成分(ノイズ)が増えました。編集のたびに MP3 で保存し直すより、元のファイル(WAV や高いビットレートの MP3)から1回で作るほうがきれいです。
元のファイルの扱い
ffmpeg は入力と同じ名前への出力を止めるが、ほかのソフトは上書きできるものもある
音質を戻したい
上げ直しは容量 2.5倍・PESQ は 4.63 のまま変わらなかった
編集のたびの保存
-c copy、作業中は WAV で保存して最後に1回だけ MP3 にする5回の作り直しで、元に無いノイズが 11.3kHz まで出た
MP3が小さくならない・大きくなるとき(症状→原因→直し方)
この節では、圧縮したのに容量が変わらない・増える・エラーになるときの原因と直し方が、実際に起きた結果とエラーの原文で分かります。
| 症状 | 原因 | 直し方 |
|---|---|---|
| 容量がほとんど変わらない | -c:a copy と -b:a を一緒に指定(copy が優先され、2,346KB→2,345KB) | -c:a copy を外す |
| 容量がほとんど変わらない | 元のビットレートが低く、指定がそれ以上 | ffprobe で元を見て、それより低い値にする |
| 低くしたのに容量が大きい | カバー画像が数百KB〜数MB入っている | -map 0:a -c copy で画像を外す |
| 作り直したら3倍以上に増えた | カバー画像(JPEG)が PNG に変換された | 画像を残すなら -c:v copy、要らないなら -map 0:a |
-b:a 8k にしても 32kbps になる | 44.1kHz の MP3 は 32kbps が下限 | -ar 16000 などで周波数も下げる |
| 声がこもる・水中のように揺れる | ビットレートの下げすぎ | 1段上げる。声はモノラルにする |
| zip にしても小さくならない | MP3 はすでに圧縮済み(320kbps で 90%、64kbps で 93%) | ビットレートを下げる。zip はまとめて送る用途で使う |
| 音の長さが少し伸びた | エンコーダーの頭の無音(約0.03秒) | 普通は気にしない。正確につなぐなら WAV で編集 |
カバー画像で容量が増える実測
64kbps・60秒の MP3(469KB)に、自作の 1500×1500 の JPEG(723KB)をカバー画像として入れて試しました。
| 操作 | 容量 | 中身 |
|---|---|---|
| カバー画像入り(元) | 1,193KB | mp3+mjpeg |
-map 0:a -c copy(画像を外す) | 469KB | mp3 のみ・0.17秒 |
| 32kbps に作り直し(何も付けない) | 3,820KB | mp3+png(画像が PNG に) |
32kbps+-c:v copy | 958KB | mp3+mjpeg |
32kbps+-map 0:a | 235KB | mp3 のみ |
何も付けずに作り直すと、ffmpeg はカバー画像を PNG にし直すため、32kbps にしたのに 3.2倍に増えました。 ffprobe で見ると、画像が「Video: png ... (attached pic)」に変わっています。音声だけ欲しいときは -map 0:a(または -vn)を付けます。画像の大きさを変える方法は、関連記事「WebP・HEICとは|JPG・PNGへの変換と画像圧縮を実測で解説」で扱っています。
よくあるエラーの原文
ffmpeg 6.1.1 で実際に出たエラーです。
$ ffmpeg -i music_320.mp3 -c:a aac out.mp3
[mp3 @ 0x5633f4c29d00] Invalid audio stream. Exactly one MP3 audio stream is required.
[out#0/mp3 @ 0x5633f4c26c80] Could not write header (incorrect codec parameters ?): Invalid argument
$ ffmpeg -i music_320.mp3 -c:a libopus -ar 44100 out.opus
[libopus @ 0x559a9a469200] Specified sample rate 44100 is not supported by the libopus encoder
[libopus @ 0x559a9a469200] Supported sample rates:
[libopus @ 0x559a9a469200] 48000
$ ffmpeg -i music_320.mp3 -c:a libmp3lame -ar 96000 out.mp3
[libmp3lame @ 0x55b5c65fa240] Specified sample rate 96000 is not supported by the libmp3lame encoder
$ ffmpeg -i music_cbr128.mp3 -b:a 64k music_cbr128.mp3
Output music_cbr128.mp3 same as Input #0 - exiting
$ ffmpeg -i music_320.mp3 music_cbr128.mp3
File 'music_cbr128.mp3' already exists. Overwrite? [y/N] Not overwriting - exiting
$ ffmpeg -i nothere.mp3 out.mp3
[in#0 @ 0x56149699e000] Error opening input: No such file or directory
| エラーの文言 | 意味 | 直し方 |
|---|---|---|
| Exactly one MP3 audio stream is required | .mp3 に MP3 以外(AAC など)を入れようとした | -c:a libmp3lame にするか、拡張子を .m4a にする |
| sample rate 44100 is not supported by the libopus encoder | Opus は 44.1kHz を使えない | -ar を外す(自動で 48kHz) |
| sample rate 96000 is not supported by the libmp3lame encoder | MP3 は 48kHz が上限 | 44100・22050・16000 などにする |
| same as Input #0 - exiting | 入力と出力が同じファイル名 | 別名で書き出す |
| already exists. Overwrite? [y/N] | 出力先に同名のファイルがある | 別名にするか、上書きしてよければ -y |
| No such file or directory | 入力のパス・ファイル名の間違い | ls で名前を確かめる。空白入りは "" で囲む |
| ffmpeg: command not found | ffmpeg が入っていない・PATH が通っていない | 入れ直すか、PATH を確かめる |
Windows・Mac・スマホでMP3を圧縮する方法
この節では、コマンドを使わずに、Windows・Mac・スマホで MP3 を小さくする方法が、公式の説明の範囲で分かります。
Windows
Audacity で開き、「ファイル」メニューの書き出し(File > Export Audio)で MP3 とビットレートを選ぶ。ffmpeg も使える。
標準アプリでの方法は公式で見当たらず
Mac
「ミュージック」App の読み込み設定を MP3 エンコーダにして「MP3バージョンを作成」。Audacity・ffmpeg も使える。
Apple サポートの手順
スマホ
録音するときに小さく録るのが確実。Mac のボイスメモには音質(Compressed・Lossless)の設定がある。
MP3 を作り直す標準機能は公式で見当たらず
Linux
sudo apt install ffmpeg で入れて、この記事のコマンドをそのまま使う。
この記事の実測の環境
Windows(Audacity)
Windows の標準アプリで MP3 のビットレートを下げる手順は、Microsoft の公式ヘルプでは確かめられませんでした。無料の音声編集ソフト Audacity(Windows・Mac・Linux 版がある)の公式マニュアルに沿った手順です。
MP3 を開く
Audacity に MP3 をドラッグするか、「ファイル」から開く。
書き出しを選ぶ
「ファイル」メニューから音声の書き出し(英語表示では File > Export Audio...)を開き、形式で MP3 を選ぶ。
ビットレートの方式を選ぶ
Bit Rate Mode を Preset・Variable・Average・Constant から選ぶ。容量を合わせたいなら Constant で kbps を指定、音楽を聞くなら Variable の 2〜4。
声ならモノラルにする
Channel Mode(チャンネル)で Mono を選ぶ。Stereo は常に joint stereo で書き出される。
別名で保存する
元とは別のファイル名で保存し、容量と音を確かめる。
Audacity のマニュアルでは、Constant は「容量を最も予測しやすいが、その容量での音質は最も安定しない」、Average は 8〜320kbps を選べる、と説明されています。Windows で ffmpeg を使う場合は、ffmpeg 公式のダウンロードページに Windows 用のビルド(gyan.dev・BtbN)の入手先が載っています。
Mac(ミュージック App)
Apple サポートの「Mac で M4A ファイルを MP3 に変換する」の手順です。MP3 から低いビットレートの MP3 を作るときも同じ操作になります。
- メニューバーの「ミュージック」→「設定」→「ファイル」タブの「読み込み設定」を開く。
- 「読み込み方法」で「MP3エンコーダ」を選び、OK で閉じる。
- 変換したい曲を選び、「ファイル」→「変換」→「MP3バージョンを作成」を選ぶ。新しいファイルは元の隣にできる。
このページには、ビットレートの具体的な選び方は書かれていません。ビットレートを細かく決めたいときは、Audacity か ffmpeg を使うほうが確実です。GarageBand の「共有」→「曲をディスクに書き出す」で MP3 と「音質」を選ぶ方法も、同じページで案内されています。
スマホ(iPhone・Android)
iPhone・Android の標準機能で、MP3 のビットレートを下げて作り直す手順は、Apple・Google の公式ヘルプでは確かめられませんでした。スマホで録音した音声を小さくしたいときは、次のどちらかが確実です。
- 録音するときに小さく録る:Apple のボイスメモ ユーザガイド(Mac・英語版)には、設定の Audio Quality で Compressed(音質は下がるが小さいファイル)と Lossless(高音質で大きいファイル)を選べると書かれています。録音アプリの音質設定を先に見ます。
- パソコンに移して圧縮する:この記事の ffmpeg・Audacity の方法を使います。
スマホのブラウザから使えるオンラインの圧縮サービスもありますが、この節の最後の注意を先に読みます。
オンラインの圧縮サービスを使う前に(判断表)
ここでは、ブラウザでアップロードして圧縮するサービスを使ってよい場面と、手元で圧縮したほうがよい場面が分かります。
オンラインの圧縮サービスは、ファイルを選んで音質(ビットレート)を選ぶだけで使えます。多くはファイルの大きさに上限があり、アップロードと変換に時間がかかります。中身が他の人に見られて困る録音は、手元のソフトで圧縮します。
| ファイルの中身 | オンライン | 理由 |
|---|---|---|
| 会議・商談・面談の録音 | 使わない | 社外秘・個人情報が含まれる。社内の規程も確かめる |
| 授業・講演の録音(未公開) | 使わない | 講師や参加者の声・発言が含まれる |
| 自分で作った曲・ナレーション | 規約を読んでから | アップロードした音声の扱い・保存期間を確かめる |
| 公開済み・社外に出してよい音声 | 使ってよい | ただし上限の大きさと待ち時間に注意 |
| 大量のファイル | 手元が早い | この環境では60秒の変換が約1秒、アップロードが要らない |
送る前と使う前に、次の点を確かめます。
- 1元のファイルを別に残したか圧縮した音は元に戻らない
- 2元のビットレートより低い値を選んだかffprobe・プロパティで確かめる
- 3カバー画像を外したか音質を変えずに減らせる
- 4声ならモノラルにしたか低いビットレートほど効く
- 5頭と真ん中を聞いて確かめたかこもり・揺れ・シャリシャリ
- 6送り先の上限に収まったかメールは2割の余裕を見る
- 7機密の録音を外部に上げていないか手元のソフトで処理する
複数のMP3をまとめて圧縮する(一括変換)
この節では、フォルダーの中の MP3 を一度に圧縮するスクリプトと、その実行結果が分かります。
bash(Mac のターミナル・Linux・Windows の Git Bash や WSL)なら、for ループで ffmpeg を回します。元の in フォルダーはそのまま残し、out フォルダーに書き出します。
#!/usr/bin/env bash
set -eu
mkdir -p out
for f in in/*.mp3; do
name=$(basename "$f" .mp3)
ffmpeg -hide_banner -loglevel error -n -i "$f" \
-map 0:a -c:a libmp3lame -ac 1 -b:a 48k "out/${name}_48k.mp3"
done
du -h in/* out/*
2.3M in/bgm_01.mp3
1.3M in/lecture_01.mp3
2.3M in/meeting_01.mp3
352K out/bgm_01_48k.mp3
472K out/lecture_01_48k.mp3
352K out/meeting_01_48k.mp3
-nは「同名のファイルがあれば上書きしない」です。2回目に実行するとFile 'out/bgm_01_48k.mp3' already exists. Exiting.と出て、作り直しません。-map 0:aでカバー画像を外しています。画像を残したいときは-map 0 -c:v copyにします。"$f"のように変数を "" で囲むと、ファイル名に空白があっても動きます。- 音楽と声が混ざっているフォルダーなら、音楽用(
-q:a 4)と声用(-ac 1 -b:a 48k)でフォルダーを分けます。
たくさんのファイルを送るときに zip でまとめる方法は、関連記事「zip・unzipコマンドの使い方|圧縮・解凍・パスワード・文字化け」で扱っています。ただし、MP3 は zip にしてもほとんど小さくなりません(320kbps の MP3 は 90.1%、64kbps は 93.3%。WAV は 64.2% まで縮みました)。
よくある質問
Q. MP3を圧縮すると音質は落ちますか? A. 落ちます。MP3 の作り直しは、もう一度音を間引く処理です。ただし落ち方はビットレートしだいで、声の PESQ は 320kbps→96kbps で 4.64→4.62 とほとんど変わらず、32kbps(ステレオ)で 3.28 まで下がりました。
Q. 何kbpsまで下げても聞き取れますか(会議の録音)? A. モノラルなら 48kbps(PESQ 4.42)が目安です。さらに小さくするなら、モノラル・22.05kHz・32kbps(3.82)まで試せます。モノラル・16kHz・24kbps(2.95)では、はっきり悪くなりました。
Q. 音楽は何kbpsがよいですか?
A. VBR の -q:a 2(約130kbps)か -q:a 4(約90kbps)から試します。CBR なら 128kbps が、どの機器でも再生しやすい目安です。96kbps より下では高音(15kHz より上)が削られ始めます。
Q. 元より高いビットレートにすると音はよくなりますか? A. なりません。128kbps の MP3 を 320kbps にし直すと、容量が 938KB→2,346KB に増えただけで、PESQ は 4.63 のままでした。
Q. モノラルにすると容量は半分になりますか? A. CBR では変わりません(64kbps ならステレオもモノラルも 469KB)。容量はビットレートで決まるからです。VBR では減り、左右に広がりのある音楽で 45%、声で 10% 減りました。
Q. MP3をzipにすると小さくなりますか? A. ほとんど小さくなりません。320kbps の MP3 は 90.1%、64kbps は 93.3% にしかなりませんでした。MP3 の中身はすでに圧縮されているからです。
Q. 圧縮にどれくらい時間がかかりますか? A. この環境では、60秒の MP3 の作り直しが約1秒(ffmpeg の 128kbps で 1.22秒、VBR で 0.85秒)でした。カバー画像を外すだけなら再エンコードしないので 0.17秒です。
Q. 長い録音の一部だけを残して小さくできますか?
A. できます。ffmpeg -ss 10 -t 20 -i in.mp3 -c copy out.mp3 で、10秒目から20秒間を再エンコードなしで切り出せます(実測 20.04秒・784KB)。再エンコードしないので音質は変わりません。
Q. WAV や M4A から小さい MP3 を作るには?
A. 同じコマンドで、入力を WAV や M4A にします。ffmpeg -i in.wav -c:a libmp3lame -q:a 4 out.mp3 です。WAV から直接作った 128kbps と、320kbps の MP3 を経由した 128kbps は、PESQ が同じ 4.63 でした。
Q. Opus や AAC にしたほうがよいですか? A. 受け取る側が再生できるなら、声は Opus が小さくできます(24kbps で PESQ 4.39、MP3 48kbps の半分の容量)。相手の機器が分からないとき、配る用途のときは MP3 が無難です。
Q. ffmpeg で「Exactly one MP3 audio stream is required」と出ます。
A. 出力を .mp3 にしたまま、AAC など MP3 以外の形式を指定しています。-c:a libmp3lame にするか、AAC にしたいなら出力の拡張子を .m4a にします。
まとめ
- MP3 の容量は「ビットレート×時間」。圧縮とは、より低いビットレートで作り直すこと。元のビットレートより低い値を選ぶ。
- 声はモノラル 48kbps(元の15%・PESQ 4.42)、さらに小さくするなら 22.05kHz・32kbps。
- 音楽は VBR。
-q:a 4で元の29%、高音は 17.5kHz まで残った。 - カバー画像を外すと音質を変えずに減る。作り直すときは
-map 0:aを付けないと画像が PNG になって増えることがある。 - 元のファイルを残す。上げ直しでも繰り返しでも、削った音は戻らない。メールの上限は「上限MB×8000÷秒数」で逆算する。
参考・出典
確認日はいずれも 2026年10月29日です。
- FFmpeg「FFmpeg Codecs Documentation」libmp3lame・libopus:https://ffmpeg.org/ffmpeg-codecs.html
- FFmpeg「Download FFmpeg」:https://ffmpeg.org/download.html
- Xiph.Org「Opus Recommended Settings」:https://wiki.xiph.org/Opus_Recommended_Settings
- Audacity「MP3 Export Options」:https://manual.audacityteam.org/man/mp3_export_options.html
- Audacity「Saving and exporting projects」:https://support.audacityteam.org/basics/saving-and-exporting-projects
- Apple サポート「Mac で M4A ファイルを MP3 に変換する」:https://support.apple.com/ja-jp/120493
- Apple「Mac のボイスメモの設定を変更する」:https://support.apple.com/guide/voice-memos/change-voice-memos-settings-vm0ba246ff3e/mac
- Google「Gmail のメールにファイルを添付して送信する - パソコン - Gmail ヘルプ」:https://support.google.com/mail/answer/6584?hl=ja
- Microsoft サポート「Outlook で大きなファイルを送信するために添付ファイルのサイズを小さくする」:https://support.microsoft.com/ja-jp/outlook/reduce-attachment-size-to-send-large-files-with-outlook
- ITU-T「P.862.2 Wideband extension to Recommendation P.862 for the assessment of wideband telephone networks and speech codecs」(2024年1月に削除・P.863 へ):https://www.itu.int/rec/T-REC-P.862.2
- LAME 3.100 の
lame --longhelpの出力(Ubuntu 24.04 の lame 3.100-6build1)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「MP3を圧縮する方法|容量を小さくするビットレートを実測で比較」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。