Windows Media Playerで録音したWAVファイルが午後のこ〜だで変換出来ない問題について

本記事は特に突っ込みがなければ早い内に本家に移します。

症例

Windows Media Player*1にて録音した無圧縮WAVファイルを、MP3に変換するため「午後のこ〜だ」で読み込まうとしたところ、音声データのフォーマットが認識出来ませんでしたといふエラーが生じ、全く読み込めない。
しかし、一旦別のWAV編集ソフト*2にて読み込み、再度保存し直すと正常に読み込めるやうになる。

原因究明

録音時のデータ*3を「ファイル1」、別ソフトで保存し直したデータを「ファイル2」とし、両者のヘッダをバイナリエディタで読み込み、比較した。WAV形式のヘッダのフォーマットはwav ファイルフォーマットにて確認することが出来る。
ファイルの仕様は「44.1kHz 16bit ステレオ 無圧縮リニアPCM」である。

ファイル1
52,49,46,46,66,5F,64,02,57,41,56,45,4C,49,53,54,
E8,00,00,00,49,4E,46,4F,49,41,52,54,04,00,00,00,
5A,55,4E,00,49,4E,41,4D,1C,00,00,00,8C,B6,91,7A,
8B,BD,81,40,81,60,20,4C,6F,74,75,73,20,4C,61,6E,
64,20,53,74,6F,72,79,00,49,50,52,44,2E,00,00,00,
9B,F4,9E,D9,92,63,82,CC,97,F0,8E,6A,31,20,81,60,
20,41,6B,79,75,27,73,20,55,6E,74,6F,75,63,68,65,
64,20,53,63,6F,72,65,20,76,6F,6C,2E,31,00,49,47,
4E,52,07,00,00,00,82,BB,82,CC,91,BC,00,00,49,54,
4F,43,5B,00,00,00,46,2B,39,36,2B,34,33,33,44,2B,
39,30,46,30,2B,43,30,45,43,2B,45,46,45,44,2B,31,
33,45,38,44,2B,31,36,45,32,38,2B,31,41,37,35,37,
2B,31,45,41,43,31,2B,32,35,30,43,46,2B,32,38,38,
42,44,2B,32,42,42,43,35,2B,33,30,35,32,42,2B,33,
35,44,43,45,2B,33,39,38,37,43,2B,33,46,34,39,45,
00,00,49,54,52,4B,02,00,00,00,31,00,66,6D,74,20,
12,00,00,00,01,00,02,00,44,AC,00,00,10,B1,02,00,
04,00,10,00,00,00,64,61,74,61,50,5E,64,02,00,00,
ファイル2
52,49,46,46,64,5F,64,02,57,41,56,45,66,6D,74,20,
10,00,00,00,01,00,02,00,44,AC,00,00,10,B1,02,00,
04,00,10,00,64,61,74,61,50,5E,64,02,00,00,00,00,

見ての通り、ファイル1には大量のヘッダデータが登録されてゐることが分かる。また、ファイル1には最初に書かなければならないfmtチャンク*4がヘッダの後ろの方に登場してゐた(引用文強調部)。これが「午後のこ〜だ」のエラーを引き起こしたと推定し、WAVEチャンク*5からfmtチャンクまでのデータを削除したところ、問題なく読み込めるやうになった。
しかし、曲名や作者名と言ったメタデータが消滅してしまった。

追加調査

ファイル1にある余分なヘッダデータを調査したところ、ファイル1ではファイルの最後に記述されてゐた"LIST"チャンク*6であることが判った。そこで、その部分*7をそのままファイル最後尾へコピー&ペーストしたところ、メタデータも保持されたまま読み込めることが確認された。
WAVの公的な仕様書がひとしきり探しても見つからなかったので、LISTチャンクがfmtチャンクより先に登場することが仕様上許されてゐるのかは判らない。しかし、Resource Interchange File Format - Wikipediaによる*8と、

マイクロソフトWindows 3.1 の公式文書によると、ファイルの先頭に INFO チャンクを置くべきとしている。これにより、ファイル内容に関するメタデータに素早くアクセスでき、ファイルシステムやマルチメディアアプリケーションがファイルの先頭を参照して、作者情報、サムネイル、プレビュー、フォーマット情報などを取り出せる。

としてをり、MS社的にはメタデータは先頭に置くべきといふ認識を持ってゐるらしい。
WAVはMS社とIBM社で開発した仕様だが、何分MS社は自分が関わったHTMLの仕様を無視した前科*9があるので、「午後のこ〜だ」か「Windows Media Player」のどちらが仕様違反なのかは判断しがたい。

結論

面倒が嫌なら最初からMP3で保存すべし*10

*1:Version 11.0

*2:例へばSound Engine Free版

*3:ちなみ曲名は東方Project 幺樂団の歴史1「幻想郷 〜 Lotus Land Story IPRD」

*4:66,6D,74,20

*5:57,41,56,45

*6:曲名や作者のデータなどを記述する箇所。

*7:"4C,49,53,54から"66,6D,74,20"の手前まで。

*8:WAVはRIFFの派生形式。

*9:今でも結構無視してゐるが。

*10:メタデータも書き直さないといけないしね。