arecordで記録したraw pcmデータや自作コードで生成したPCM波形を、後になってから再生しようとして記録・生成時のサンプルレートやフォーマットを忘れて困ったという事態に遭遇することが稀にあります。
フォーマットが判らない以上は、総当たりで変換かかけてみるしかない訳ですが、再生可能なWAVファイルを得ることができるはずです(変換できなければ単なるリニアPCMデータではないということになるでしょう)。
以下の例ではサンプリング周波数、チャネル数、符号有無、ビット深度、エンディアンを片っ端から変えてffmpegを使ってWAVファイルの生成を試行します。
具体的には、サンプリング周波数が32KHz, 44.1KHz, 48KHzでモノラルまたはステレオでフォーマットがs16le, s24le, s32le, u16le, u24le, u32le, s16be, s24be, s32be, u16be, u24be, u32beの全ての組み合わせを試行します。
元データがリニアPCMなら、生成されたWAVファイルのどれか1つが正常に再生できるはずです*1。
input=./UnknownPCM.bin for fs in 32000 44100 48000; do for ch in 1 2; do for sign in s u; do for bit in 16 24 32; do for endian in le be; do pcmformat=${sign}${bit}${endian} output=./${fs}_${ch}_${pcmformat}.wav ffmpeg -f ${pcmformat} -ar ${fs} -ac ${ch} -i ${input} ${output} done done done done done
以上。
*1:音程が低いという場合にはサンプリング周波数96KHzや192KHzも試してみると良いでしょう