【Mac】NotebookLMからダウンロードした音声概要(M4A形式)のファイルサイズが大きすぎるなどの問題をafconvertで修復する
NotebookLMの音声出力が .wav → .m4a に変更されてたけど、ファイルの状態が不正だった
TL;DR
Google の NotebookLM からダウンロードした音声ファイルが、従来の .wav[1] から .m4a[2] に変更された(2025年7月30日時点)。
しかし、この M4A ファイルは再生時間が0秒と表示され、ファイルサイズが圧縮されていないなど、Container[3] として不正な状態だったのだ[4]。
この問題を、macOS標準のCLIツール afconvert を用いて以下のコマンドを実行することで、AAC[5]で圧縮された正常な M4A ファイルに変換できた
コマンド実行例:
afconvert -f m4af -d aac "~/Downloads/input.m4a" "~/Downloads/output.m4a"
Before(input.m4a) | After (output.m4a) | |
---|---|---|
ファイルサイズ | 約12 MB | 約5 MB |
再生時間 | 0秒 | 約6分 |
状態 | 編集不可 | 編集OK! |
問題点
NotebookLMのファイルが突然.wavから.m4aに変わったのだ。
「お、ファイルサイズが小さくなる嬉しい変更か?」と思ったら、サイズが12MBのままで全然小さくない。エンコードが実施されていない..?
しかも Mac の QuickTime Player で開いてみたら、編集もできない。
ありがた迷惑な仕様変更がされていたのだ。
調査したのだ
ミュージックアプリ(昔のiTunes)でファイル情報確認
■ duration(再生時間)
- Not Avairable
- ファイルのヘッダー情報が不完全で、「このファイルが全体で何分の長さなのか」っていう情報が書かれてないということなのだ
- 再生時間0秒になっていることが判明したのだ
■ size(ファイルサイズ)
- 6分程度の音声に対し約12MB
- これは同時間の非圧縮WAVファイルに近い
- AACコーデックでぼくが期待していたサイズ(約5MB)を大幅に上回るのだ
仮説
今回ダウンロードしたファイルが、再生時間0秒と表示されている問題を解決したらよさそうだと思ったのだ。
先ほどの調査で観察した事実として、「再生時間情報がない」「ファイルサイズがAAC圧縮されているにしては大きすぎる」という点があったのだ。
このことから、音声データ自体は存在しているものの、再生時間やデータ形式といったメタデータがコンテナに正しく書き込まれていない、あるいは情報が欠落している状態なのではないか、と推測したのだ。
ここで、
「音声ファイルは「音声データそのもの(中身)」と、それを包む「Container(箱)」で出来ている」[6]
ということを踏まえると、duration(再生時間)のような情報はメタデータに属し、音声ファイルではContainer に書き込まれるだろうから今回ダウンロードした音楽ファイルは Container の情報が不正、もしくは不完全なのが問題だと仮説を立てたのだ。
解決した方法
afconvert -f m4af -d aac "~/Downloads/input.m4a" "~/Desktop/output.m4a"
結果から言うと、上記のコマンドを試して解決したのだ。
簡単に説明すると、afconvert というMacに標準で入っている、音声ファイルを変換したり情報をいじったりするための CLI を使って、壊れた M4A の Container から、音声データを取り出し、それをAAC形式にエンコードして、新しい正常な M4A のContainer に入れ直したのだ。
コマンドのオプション説明
■ -f m4af: 「箱」の種類を指定する
-
-f
は「File Format」の略で、ここでは「どんな種類のコンテナに入れるか」を指定しているのだ -
m4af
は M4Aコンテナ のこと - この指定で「新しい正常なM4Aの箱を用意してね」と命令しているのだ。
■ -d aac: 「中身」の形式を指定する
-
-d
は「Data Format」の略で、ここでは「中身の音声データをどのCodecで扱うか」を指定しているのだ。 -
aac
は AACというCodec のことなのだ - この指定で「中身はAAC形式のデータとして処理してね」と命令しているのだ。
この一連の作業によって、Macのアプリたちもちゃんと再生時間を認識できるようになり、ファイルが復活しのだ。
今回活躍した afconvert について
Audio File Convert
afconvert
は、それ自体が独立したオーディオ変換エンジンを内蔵しているわけではないのだ。
その実体は、macOSのシステムレベルで提供される Core Audio フレームワーク、特にAudioToolbox.framework
が公開しているAPI群に対する Command Line Interface(CLI)としての Wrapper なのだ。
つまり、afconvert は Core Audio というOSに組み込まれたフレームワークが提供するファイル変換やエンコードといった機能を、開発者がCやSwiftでコードを書くことなく、CLI から直接利用するためのツールといえるのだ。
さいごに
今回は、Container ヘッダが破損し再生時間が「0秒」と表示されてしまっていたM4Aファイルを修復するのに、Mac標準のコマンド afconvert が役立ったのだ。
調べてみると、 QuickTime Player も、afconvert と同様に macOSのオーディオ処理の心臓部である Core Audio エンジンに支えられていたということがわかって勉強になったのだ。
元々.wav形式でファイルサイズが大きいのは気になっていたけれど、今回の仕様変更で .m4a でダウンロードできるようになったのにファイルサイズが全く小さくなっていなかったのはちょっとびっくりだったのだ。そのうち修正されるのかわからないけれど、しばらく NotebookLM からダウンロードした後にコマンド叩いてファイル修復をしたいと思うのだ。
参考文献
afconvert The afconvert utility is a command-line tool that will let you encode your masters using the same technology used to encode files for Apple Music and the iTunes Store. The afconvert utility is built into macOS and can be accessed using the Terminal application.
https://www.apple.com/apple-music/apple-digital-masters/docs/apple-digital-masters.pdf
It is important to distinguish between the audio coding format, the container containing the raw audio data, and an audio codec.
https://en.wikipedia.org/wiki/Audio_file_format
-
もともとダウンロードできていた .wav ファイルは、音を一切加工しない「非圧縮」の形式なのだ。だから、音質はピカイチだけど、その分ファイルサイズがめちゃくちゃ大きくなっちゃうのだ。それに対して、今回取り扱った .m4aファイルは、音を「圧縮」してある形式なのだ。人間の耳には聞こえにくい部分のデータを上手にカットして、音質を保ちながらファイルサイズを小さくするという大変興味深い技術がつかわれているのだ。 ↩︎
-
M4A(MPEG-4 Audioの略) は MP4 Container の音声専門バージョンなのだ。そして、M4Aは、「Container」形式なのだ。コンテナ形式の大きなメリットの一つが、メタデータ(曲名とかアーティスト名とか、そういう情報)をファイルの中に格納できることなのだ。 ↩︎
-
コンテナ(Container)とは、音声データという「中身」を入れるための「箱」のこと。.m4aや.mp4, .movといったファイル形式そのものを指すのだ。この箱には、再生時間やフォーマットの種類といった、再生に必要な設計図(メタデータ)も含まれているのだ。 ↩︎
-
Container や Codec 、ヘッダーアトム(moovなど)と呼ばれるものに詳しい専門家、はこの問題に遭遇したら、真っ先に「Containerのメタデータが飛んでるな」と仮定するそうなのだ。 ↩︎
-
M4Aっていうコンテナ形式のファイルの中には AACっていう Codec で圧縮された音声データが入ってるのが一般的なのだ。今回 afconvert コマンドで生成したのは、「AACという Codec で圧縮された音声データ」が「M4Aというコンテナ」に入っているファイルなのだ。 ↩︎
-
詳しく説明しようとすると、Codec (「COder / DECoder」の略)がキーになってくるのだけれど、今回はボリュームの都合上説明を割愛するのだ。 ↩︎
Discussion
次の記事書いたけれど投稿できないなんて..。

運営に問い合わせしたけれど連続投稿は24時間待たないといけないと返信があった。
今日1件しか投稿してないんだけどなぁ。
AppleScriptで自動化すると便利だよーっていう記事を用意してた
続編を書きました
音声概要を日本語で出力すると、勝間和代さんみたいな声というかもう本人でしょみたいな語り口になってる件