SPRESENSEでハイレゾ録音対決!

SPRESENSEでいよいよハイレゾ録音にチャレンジします。ここでハイレゾの定義を振り返ってみます。
ハイレゾの定義は JEITAで決められており、CD音質以上のものはハイレゾオーディオとなっています。以下抜粋です。


48kHz/24bit →(CD スペック同等/CD スペック超)→ ハイレゾオーディオ
96kHz/16bit →(CD スペック超/CD スペック同等)→ ハイレゾオーディオ
96kHz/24bit →(CD スペック超/CD スペック超) → ハイレゾオーディオ
48kHz/16bit →(CD スペック同等/CD スペック同等)→ 非該当
96kHz/12bit →(CD スペック超/CD スペック未満)→ 非該当
32kHz/24bit →(CD スペック未満/CD スペック超)→ 非該当


ですので、SPRESENSEで録音できる 48kHz/24bit が最低限のハイレゾで、192kHz/24bit が最高音質のハイレゾになります。

今回、この二つを比較してみました。お時間のあるかたはこちらの動画をどうぞ。





最初に、ハイレゾ録音するための前準備をします。SPRESENSEは WAVフォーマットでハイレゾ録音ができます。そのエンコーダである「SRCエンコーダ」をインストールします。

「dsp_installer」から「src_installer」を選択・実行してお使いのSDカードにインストールしてください。


src_installer.png


いよいよ、ハイレゾ録音します。最初に 48kHz/24bit で録音をしてみましょう。「application」から「recorder_wav」を選択します。


recorde_wav_48kHz24bit.png


A/Dの解像度を24bitに設定し、マイクは一つなのでMONOに変更します。録音したデータをグラフ化してみました。


48kHz_24bit_Graph.png


さて、次に192kHz/24bit で録音をしてみましょう。同じく「recorder_wav」を開きます。


recorde_wav_192kHz24bit.png


192kHzで録音するには、クロックを変更しなければならないことに注意してください。setRenoderingClockMode という関数で設定を変更できます。

あとは、サンプリングレートを48kHzから192kHzに変更し、同じく解像度を24bit、チャンネルはMONOに変更します。同じように、録音したデータをグラフ化してみます。


192kHz_24bit_Graph.png


明らかに違いますね。両方を並べてみました。


Comparison_Graph.png


192kHz/24bit 恐るべしです。録音した音を Githubに置きました。(通常の音楽配信サービスだと再エンコーディングされてしまうので)実際に聞き比べてみてください。


https://github.com/YoshinoTaro/resources/tree/master/HiResoSoundRecordedBySpresense


48kHz/24bit の音は少しこもったように聞こえますが、192kHz/24bit はかなりクリアに聞こえます。やはりハイレゾはすごいですね。「CD音質==高音質」というのは、もう過去のものです!
(^^)/~





SONY SPRESENSE メインボード CXD5602PWBMAIN1

SONY SPRESENSE メインボード CXD5602PWBMAIN1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



SONY SPRESENSE 拡張ボード CXD5602PWBEXT1

SONY SPRESENSE 拡張ボード CXD5602PWBEXT1

  • 出版社/メーカー: スプレッセンス(Spresense)
  • メディア: Tools & Hardware



SPRESENSEではじめるローパワーエッジAI (Make: PROJECTS)

SPRESENSEではじめるローパワーエッジAI (Make: PROJECTS)

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2022/02/28
  • メディア: 単行本(ソフトカバー)

この記事へのコメント

たけし
2023年02月08日 18:22
突然すいません
記事のSpresenseハイレゾ録音について質問させていただけますでしょうか?
同様にSpresenseでハイレゾの録音をしたいと考えております。
・192kHz/24bitでの録音

スケッチ例のrecorder.wavを一部変更したのですが
SDカードに出力されるsound.wavが上手くファイル出力されません(容量1KB)
スケッチを変更せず動作させるとsound.wavは正常に出力されます
(容量1.8MB)

theAudio->setRecorderModeもバッファサイズをドキュメント通り500kbでspresenseメモリ1028kbにしたのですが、やはりハイレゾではうまく出力されず、考えられる原因をご教示いただけますと幸いです。

変更点
/*static const uint32_t recoding_sampling_rate = 48000;*/
static const uint32_t recoding_sampling_rate = 192000;

/*static const uint8_t recoding_bit_length = 16;*/
static const uint8_t recoding_bit_length = 24;

theAudio->initRecorder(AS_CODECTYPE_WAV,
"/mnt/sd0/BIN",
/*recoding_sampling_rate,
recoding_bit_length,
recoding_cannel_number*/
AS_SAMPLINGRATE_192000,
AS_BITLENGTH_24,
AS_CHANNEL_MONO);
puts("Init Recorder!");

/*theAudio->setRecorderMode(AS_SETRECDR_STS_INPUTDEVICE_MIC);*/
theAudio->setRecorderMode(AS_SETRECDR_STS_INPUTDEVICE_MIC,(500*1028)); ←変更してもダメでした
たけし
2023年02月10日 07:55
stackoverflowで再度質問いたします!
ありがとうございました。