次に自分の声を録音、再生してみましょう♪
スピーカ単体で録再の動作テスト
トラ技の84ページを参考にします。
次のコマンドを入力して、利用できるBCM2837内のサウンド録再デバイスを確認します。
arecord -l
表示された一覧の中に、snd_rpi_simple_cardという名前のサウンド録再デバイスをあることを確認して、次の2つの番号をメモします。
・カード番号 ・デバイス番号

↑では、
カード番号:1
デバイス番号:0
となります。
それでは、モノラルとステレオの両方で録音のテストをします。
録音(wav形式)
録音をするときには、arecordコマンドを使って入力します。
“piughw:1″の値”1″は、先ほどメモしておいたサウンド録再デバイスのカード番号です。
arecord -D plughw:1 -c1 -r 48000 -f S32_LE -t wav -V mono -v test_mono.wav
ステレオ録音をするときは次のようにします。
とここで、トラ技記載のコマンドではモノラル録音のままでした。
arecord -D plughw:1 -c2 -r 48000 -f S32 LE -t wav -V STEREO -v test_stereo.wav修正方法:
デバイス指定を plughw:1 から plughw:1,0 に明示的に変更します。
arecord -D plughw:1,0 -c2 -r 48000 -f S32_LE -t wav -V STEREO -v test_stereo.wav
これでステレオ録音ができました。
録音を終了するときは、Ctrlキー+Cキーを押します。
再生(wav形式)
再生の時には次のように入力します。
aplay -D plughw:0 ファイル名.wav・・・例)test_mono.wav or test_stereo.wav
それぞれに録音ファイルの音が出ることが確認できると思います。
まぁ、そもそもスピーカが1個だけなので、正直、モノラルかステレオかの違いは分かりませんけどね。😝
※ここで気が付く人は、plughwのカード番号が、
録音:1
再生:0
になっていることに気が付きますかね? この理由は後述します。
録音ボリュームを変更する
録音ボリュームを自由に変更できるようにします。
ホームの配下にある.asoundrcを編集します。
pcm.softvol{
type softvol
slave.pcm "hw:1,0"
control{
name "Boost Capture Volume"
card sndrpisimplecar
}
min_dB -3.0
max_dB 30.0
}
pcm.!default {
type hw
capture.pcm "plug:softvol"
playback.pcm "hw:0,0"
}
録音レベルを調節するためには、ターミナルからAlsaMixerを起動します。
alsamixer
F6キーを押して、BCM2837内のサウンド録再デバイスをsnd_rpi_simple_cardに変更します。その際、”このカードには録音ミキサーがありません”と出ますが、後述のF4を押すと出てきます。
F4キーを押すと録音レベルを調節できるようになります。
※赤のレンジに入っているのが良さそうとのことです。

これ以降では、最初に録音データが上手く再生できなかったことからデバッグをして、上手く再生できたノウハウをTipsとしてまとめます。
今回のRaspberry Piでのデバイス構成
ここで一度、実際に確認したデバイス一覧を整理しておきます。
カード番号は機器構成などによって変わることがあるため、次のコマンドで確認してください。
arecord -l
aplay -l
arecord -l:録音デバイス一覧aplay -l:再生デバイス一覧
$ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: sndrpisimplecar [snd_rpi_simple_card], デバイス 0: simple-card_codec_link snd-soc-dummy-dai-0 []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
$ aplay -l
**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
サブデバイス: 8/8
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
サブデバイス #4: subdevice #4
サブデバイス #5: subdevice #5
サブデバイス #6: subdevice #6
サブデバイス #7: subdevice #7
カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: sndrpisimplecar [snd_rpi_simple_card], デバイス 0: simple-card_codec_link snd-soc-dummy-dai-0 []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
今回の実測結果
| カード番号 | デバイス番号 | デバイス名 | 録音一覧 | 再生一覧 |
|---|---|---|---|---|
| 0 | 0 | bcm2835 ALSA | — | あり |
| 0 | 1 | bcm2835 IEC958/HDMI | — | あり |
| 1 | 0 | snd_rpi_simple_card | あり | あり |
今回の私のRaspberry Piの環境では、録音に使うデバイスと再生に使うデバイスが違っていました。【arecord -l と aplay -l の比較】
録音側:arecord -l
カード1・デバイス0
snd_rpi_simple_card
マイク入力に使用したデバイス
再生側:aplay -l
カード0・デバイス0
bcm2835 ALSA
今回、音が出た再生デバイス
つまり、aplay -l にもカード1・デバイス0が表示されていますが、これはそのデバイスが再生にも対応していることを示すだけで、実際に接続されたスピーカーから音が出ることまでは保証しません。
そのため、今回は、カード番号を試行錯誤して、音が出来た番号を正解!として置いています。
そのことを視覚的に把握できるように、もう一度、alsamixerを見てみましょう。
■録音:snd_rpi_simple_card(カード番号:1)
.jpg)
■再生:bcm2835 ALSA(カード番号:0)
.jpg)
これで、録音と再生で対応しているカードが違うことが視覚的に見えると思います。
それでは、次にraw形式で、実際に録音と再生に成功したコマンドを列記します。
録音(raw形式)
arecord -D plughw:1,0 --format=S16_LE --duration=10 --rate=16000 --file-type=raw out(ファイル名).raw
※-D plughw:1,0: 「カード 1」の「デバイス 0」を、サンプリングレートなどの自動変換機能(plug)付きで開く指定です。
※録音時間を延ばすには、--duration=10 の数値を変更します。この数字は「秒数」を表しています。
変更するパラメータ
--duration=30: 30秒間録音したい場合 --duration=60: 1分間(60秒)録音したい場合
再生(raw形式)
aplay -D plughw:0,0 -t raw -f S16_LE -r 16000 -c 1 out(ファイル名).raw
【再掲】録音・再生に成功したコマンド一覧
ちょっと、ページが長くなってしまったので、成功したコマンド一覧を再掲します。
| 操作 | 成功したコマンド |
|---|---|
| 録音(WAV形式) ※録音終了時に、Ctrlキー+Cキー | ■モノラル arecord -D plughw:1 -c1 -r 48000 -f S32_LE -t wav -V mono -v test_mono(ファイル名) .wav ■ステレオ arecord -D plughw:1,0 -c2 -r 48000 -f S32_LE -t wav -V STEREO -v test_stereo.wav |
| 録音(RAW形式、10秒) | arecord -D plughw:1,0 --format=S16_LE --duration=10 --rate=16000 --file-type=raw out(ファイル名).raw |
| 再生(WAV形式) | aplay -D plughw:0 ファイル名.wav |
| 再生(RAW形式) | aplay -D plughw:0,0 -t raw -f S16_LE -r 16000 -c 1 out(ファイル名).raw |
【Tips】音声データのwav形式とraw形式の違い
主な比較表
| 項目 | WAV | RAW (Raw PCM) |
|---|---|---|
| 中身のデータ | リニアPCMデータ | リニアPCMデータ(同じ) |
| ヘッダー情報 | あり(フォーマット情報が書き込まれている) | なし(純粋な波形データのみ) |
| 扱いやすさ | 多くのソフトでそのまま再生・編集可能 | パラメータを指定しないと正しく再生できない |
| 主な用途 | 一般的な音楽保存、CD音質の記録、DTM・音声編集 | プログラムによる音声解析、特殊な組み込み機器、AIの音声認識の前処理など |
WAVとRAW(Raw PCM)の最大の違いは、「音声データにヘッダー情報(管理情報)が付いているかどうか」です。どちらも音声を圧縮しない「非圧縮(リニアPCM)データ」である点は同じです。
WAV(ウェーブ)とは
- 構造: 「音のデータ(PCM)」の前に、「ヘッダー情報」(サンプリング周波数、量子化ビット数、チャンネル数、データサイズなどの規格情報)が記録されています。
- 特徴:
• 一般的な音楽プレイヤーや音声編集ソフトで、ファイルをそのまま開いて再生できます。
• Windowsをはじめとする多くのOSやソフトで標準的に認識されます。
RAW(ロー / Raw PCM)とは
- 構造: ヘッダー情報が一切なく、「純粋な音声データ(PCM本体)のみ」がズラリと並んでいる状態です。
- 特徴:
• ヘッダーがないため、再生する・正しく音を鳴らすには「サンプリング周波数(例: 44.1kHzや16kHz)」や「ビット深度(例: 16bit)」、「チャンネル数(モノラル/ステレオ)」の条件をプレイヤーやプログラム側にあらかじめ手動で指定する必要があります。
• 条件を1つでも間違えると、音が甲高くなったり、スピードが狂ったり、ノイズだらけになったりします。


コメント