結論

MP3の容量は「ビットレート×再生時間」で決まるので、圧縮するにはビットレートを下げ直します。声なら「モノラル・48kbps」で元の320kbpsの15%、音楽なら「VBR(-q:a 4)」で約29%になりました。カバー画像が入っているMP3は、画像を外すだけで音質を変えずに小さくなります。

この記事でわかること

  • 32〜320kbps・VBR・モノラル化の容量と音質(PESQ)の実測表
  • ffmpeg・lameのコマンドと、Windows・Mac・スマホでの方法
  • メール添付の上限から逆算するビットレートと、うまくいかないときの直し方

2026年10月29日更新|ffmpeg 6.1.1・LAME 3.100・libopus 1.4で実行確認

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(固定ビットレート)なら容量は同じになります。

40%320kbps→128kbps2,346KB→938KB(60秒)
15%声をモノラル48kbpsにPESQ 4.64→4.42
1.2秒60秒のMP3の変換時間ffmpeg・128kbps・5回の中央値

容量を変えられる要素は次の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. 1元のファイルを別に残す圧縮した音は元に戻せない。上書きしない
  2. 2カバー画像を外す音質は変わらず、数百KB〜数MB減ることがある
  3. 3声ならモノラルにする32kbpsで PESQ が 3.28→3.78 に上がった
  4. 4ビットレートを下げる声 48kbps・音楽 VBR -q:a 4 から試す
  5. 5送り先の上限から逆算する上限MB×8000÷秒数 で kbps を出す
  6. 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)の容量に絞ります。

1

元のビットレートを確かめる

ffprobe で bit_rate を見る。元が128kbpsなら、128k以上を指定しても小さくならない。

ffprobe

2

別名で書き出す

出力ファイル名を入力と同じにすると ffmpeg は止まる。元を残したまま新しい名前で作る。

-b:a または -q:a

3

頭と真ん中を聞いて確かめる

高音(シンバル・サ行)がこもっていないか、声が水中のように揺れていないかを聞く。気になれば1段上げる。

耳で確認

4

容量を見て送り先に合わせる

ls -l や ファイルのプロパティで容量を見る。上限を超えるなら、次の節の逆算でビットレートを決める。

ls -l・du -h

ビットレート別の容量と音質の実測(CBR 32〜320kbps)

この節では、MP3のビットレートを下げると容量と音質がどれだけ変わるかが、実測の表で分かります。

320kbps の元のMP3(60秒)から、ffmpeg の -b:a で各ビットレートに作り直しました。声は PESQ、音楽はスペクトルの上限周波数で比べています。

ビットレート 容量(60秒) 元との比 声の PESQ 音楽の上限周波数
320kbps(元)2,346KB100%4.6420.2kHz
256kbps1,877KB80%4.6419.5kHz
192kbps1,408KB60%4.6418.8kHz
160kbps1,173KB50%4.6417.5kHz
128kbps938KB40%4.6316.8kHz
96kbps704KB30%4.6215.4kHz
64kbps469KB20%4.5311.2kHz
48kbps352KB15%4.387.8kHz
32kbps235KB10%3.285.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 0154kbps・1,126KB4.64204kbps・1,497KB20.2kHz
-q:a 2114kbps・836KB4.62131kbps・961KB18.8kHz
-q:a 491kbps・663KB4.6193kbps・684KB17.5kHz
-q:a 657kbps・421KB4.5373kbps・533KB16.8kHz
-q:a 944kbps・324KB4.2053kbps・386KB7.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 上限周波数
ステレオ 64kbps469KB4.539.2kHz
モノラル 64kbps469KB4.519.2kHz
ステレオ 48kbps352KB4.387.5kHz
モノラル 48kbps352KB4.429.0kHz
ステレオ 32kbps235KB3.285.7kHz
モノラル 32kbps235KB3.787.4kHz
モノラル 22.05kHz・32kbps235KB3.827.6kHz
モノラル 16kHz・32kbps235KB3.609.1kHz
モノラル 16kHz・24kbps176KB2.955.8kHz

声の見本は左右が同じ音なので、64kbps では違いがほとんど出ません(LAME の joint stereo が左右の差だけを記録するため)。32kbps ではモノラルのほうが PESQ が 0.5 高く、差がはっきり出ました。声の上限周波数は、合成音声そのものが約8kHzまでの音なので、音楽ほど大きく動きません。

VBR なら、モノラルにすると容量そのものが減ります。-q:a 4 で比べた結果です。

VBR -q:a 4 ステレオ モノラル 減った割合
声(左右が同じ)663KB597KB10%
音楽(左右に広がりあり)684KB373KB45%

サンプリング周波数は、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 20MB80kbps(18.0MB)40kbps(18.0MB)24kbps・22.05kHz(16.2MB)
Exchange(会社のメール)既定 10MB40kbps(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 128938KB44.1kHz j-stereo・高音を 16.5kHz から切る
-V 4665KBVBR(q=4)・高音を 17.2kHz から切る
-m m -b 64469KBsingle-ch(モノラル)
--preset voice397KB32kHz・モノラル・平均56kbps
-m m --resample 22.05 -b 32235KB22.05kHz・MPEG-2
-b 859KB8kHz に下げ、高音を 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 モノラル 48kbps352KB4.420.76秒
MP3 ステレオ 48kbps352KB4.380.85秒
AAC 64kbps(.m4a)494KB4.051.54秒
AAC 96kbps(.m4a)713KB4.361.91秒
Opus 32kbps(.opus)236KB4.511.57秒
Opus 24kbps(.opus)178KB4.391.56秒
Opus モノラル 16kbps122KB4.041.60秒

変換時間は各1回の計測です。音楽では、次のようになりました。

形式・指定(音楽・60秒) 実際の平均 容量 上限周波数
MP3 CBR 128kbps128kbps938KB16.8kHz
MP3 VBR -q:a 493kbps684KB17.5kHz
AAC 128kbps(ffmpeg 内蔵)141kbps1,030KB17.4kHz
AAC 64kbps(ffmpeg 内蔵)68kbps501KB12.6kHz
Opus 64kbps 指定88kbps642KB20.5kHz
Opus 32kbps 指定44kbps324KB20.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 から直接 128kbps938KB4.639.2kHz
320kbps の MP3 から 128kbps938KB4.639.2kHz
128kbps を 320kbps に上げ直し2,346KB4.639.2kHz
128kbps を2回作り直し938KB4.639.2kHz
128kbps を5回作り直し938KB4.6111.3kHz

320kbps のような高いビットレートの MP3 から作り直すなら、WAV から作るのとほぼ同じ結果でした。一方、同じ 128kbps で作り直しを繰り返すと PESQ が少しずつ下がり、元の音には無かった 9kHz より上の成分(ノイズ)が増えました。編集のたびに MP3 で保存し直すより、元のファイル(WAV や高いビットレートの MP3)から1回で作るほうがきれいです。

元のファイルの扱い

避ける圧縮したファイルで元を上書きする
→
代わりに別名で書き出し、聞いて確かめてから元を整理する

ffmpeg は入力と同じ名前への出力を止めるが、ほかのソフトは上書きできるものもある

音質を戻したい

避ける128kbps の MP3 を 320kbps にし直す
→
代わりに元の WAV や高いビットレートの MP3 から作り直す

上げ直しは容量 2.5倍・PESQ は 4.63 のまま変わらなかった

編集のたびの保存

避ける切る・つなぐたびに MP3 で書き出し直す
→
代わりに切り出しは -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,193KBmp3+mjpeg
-map 0:a -c copy(画像を外す)469KBmp3 のみ・0.17秒
32kbps に作り直し(何も付けない)3,820KBmp3+png(画像が PNG に)
32kbps+-c:v copy958KBmp3+mjpeg
32kbps+-map 0:a235KBmp3 のみ

何も付けずに作り直すと、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 encoderOpus は 44.1kHz を使えない-ar を外す(自動で 48kHz)
sample rate 96000 is not supported by the libmp3lame encoderMP3 は 48kHz が上限44100・22050・16000 などにする
same as Input #0 - exiting入力と出力が同じファイル名別名で書き出す
already exists. Overwrite? [y/N]出力先に同名のファイルがある別名にするか、上書きしてよければ -y
No such file or directory入力のパス・ファイル名の間違いls で名前を確かめる。空白入りは "" で囲む
ffmpeg: command not foundffmpeg が入っていない・PATH が通っていない入れ直すか、PATH を確かめる

Windows・Mac・スマホでMP3を圧縮する方法

この節では、コマンドを使わずに、Windows・Mac・スマホで MP3 を小さくする方法が、公式の説明の範囲で分かります。

1

Windows

Audacity で開き、「ファイル」メニューの書き出し(File > Export Audio)で MP3 とビットレートを選ぶ。ffmpeg も使える。

標準アプリでの方法は公式で見当たらず

2

Mac

「ミュージック」App の読み込み設定を MP3 エンコーダにして「MP3バージョンを作成」。Audacity・ffmpeg も使える。

Apple サポートの手順

3

スマホ

録音するときに小さく録るのが確実。Mac のボイスメモには音質(Compressed・Lossless)の設定がある。

MP3 を作り直す標準機能は公式で見当たらず

4

Linux

sudo apt install ffmpeg で入れて、この記事のコマンドをそのまま使う。

この記事の実測の環境

Windows(Audacity)

Windows の標準アプリで MP3 のビットレートを下げる手順は、Microsoft の公式ヘルプでは確かめられませんでした。無料の音声編集ソフト Audacity(Windows・Mac・Linux 版がある)の公式マニュアルに沿った手順です。

1

MP3 を開く

Audacity に MP3 をドラッグするか、「ファイル」から開く。

File > Open

2

書き出しを選ぶ

「ファイル」メニューから音声の書き出し(英語表示では File > Export Audio...)を開き、形式で MP3 を選ぶ。

File > Export Audio

3

ビットレートの方式を選ぶ

Bit Rate Mode を Preset・Variable・Average・Constant から選ぶ。容量を合わせたいなら Constant で kbps を指定、音楽を聞くなら Variable の 2〜4。

Bit Rate Mode

4

声ならモノラルにする

Channel Mode(チャンネル)で Mono を選ぶ。Stereo は常に joint stereo で書き出される。

Channel Mode

5

別名で保存する

元とは別のファイル名で保存し、容量と音を確かめる。

保存

Audacity のマニュアルでは、Constant は「容量を最も予測しやすいが、その容量での音質は最も安定しない」、Average は 8〜320kbps を選べる、と説明されています。Windows で ffmpeg を使う場合は、ffmpeg 公式のダウンロードページに Windows 用のビルド(gyan.dev・BtbN)の入手先が載っています。

Mac(ミュージック App)

Apple サポートの「Mac で M4A ファイルを MP3 に変換する」の手順です。MP3 から低いビットレートの MP3 を作るときも同じ操作になります。

  1. メニューバーの「ミュージック」→「設定」→「ファイル」タブの「読み込み設定」を開く。
  2. 「読み込み方法」で「MP3エンコーダ」を選び、OK で閉じる。
  3. 変換したい曲を選び、「ファイル」→「変換」→「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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ
参加受付中

AI駆動開発、 無料セミナー