SSブログ

SPRESENSEでハイレゾ録音対決! [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音質==高音質」というのは、もう過去のものです!
(^^)/~







タグ:Spresense AUDIO SONY
nice!(37)  コメント(2) 
共通テーマ:趣味・カルチャー

nice! 37

コメント 2

たけし

突然すいません
記事の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)); ←変更してもダメでした
by たけし (2023-02-08 18:22) 

たけし

stackoverflowで再度質問いたします!
ありがとうございました。
by たけし (2023-02-10 07:55) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。