
はじめに
この記事では、Raspberry Pi 3 Model Bを使って、環境音を24時間365日録音し続けるシステムの構築方法を、実際に遭遇した失敗や試行錯誤も含めて詳しく解説します。
スマートフォンでは数時間で録音が停止してしまう問題がありました。また、市販のICレコーダーも365日の連続稼働には向いていません。そこで、Raspberry Piを使った安定稼働システムを構築することにしました。
注意:当初は「音声トリガー録音」(音がした時だけ録音)を目指しましたが、技術的な課題があり、最終的には定時録音システム(AM 6:00 – PM 23:30まで自動録音)で安定稼働を優先しました。この判断に至るまでの経緯も含めて解説します。
完成するシステムの仕様
- 稼働時間:AM 6:00 – PM 23:30(それ以外は待機)
- 音質:8kHz、モノラル、16bit(低音質で容量削減)
- ファイル分割:1時間ごと(安定性重視)
- 容量目安:1日約1GB、32GBで約1ヶ月分
- リモート操作:Chromebookから完全操作可能
- 拡張性:将来的に音声トリガー機能も追加可能
第1章:必要なものと選定理由
ハードウェアの選定
Raspberry Pi本体の選び方
最初に検討したのは「どのRaspberry Piを購入するか」という問題でした。
| モデル | 評価 | 理由 |
|---|---|---|
| Raspberry Pi Zero | ❌ 不適 | 処理能力が低く、長期稼働で不安定 |
| Raspberry Pi 3 Model A+ | △ 可能だが注意 | RAM 512MB、USBポート1つのみ(ハブ必須) |
| Raspberry Pi 3 Model B | ◎ おすすめ | RAM 1GB、USBポート4つ、安定性高い、中古で安価 |
| Raspberry Pi 3 Model B+ | ◎ おすすめ | 3Bより高速だが、録音には影響なし |
| Raspberry Pi 4 | ○ 高性能 | 録音には過剰スペック、価格が高い |
最終決定:Raspberry Pi 3 Model B V1.2
理由:
- 環境音録音には十分な性能
- USB 2.0ポート×4(マイクと外付けストレージを同時接続可能)
- RAM 1GB(長期稼働に余裕あり)
- 中古で2,000〜3,000円と安価
- 豊富な情報とトラブルシューティング事例
その他必要なもの
- microSDカード:32GB以上、Class 10推奨
- 当初128GBを検討したが、定期的にファイル整理すれば32GBで十分と判断
- 価格:1,000円程度
- 電源アダプター:5V 2.5A以上、microUSB
- 重要:安物は避けること。電源不足でシステムが不安定になる
- 公式または信頼できるメーカー品を推奨
- 価格:1,000〜1,500円
- USBマイク:環境音録音用
- 低価格品で十分(1,000〜2,000円)
- サンワサプライ、エレコムなどが無難
- ケース:放熱穴付き推奨
- 365日稼働なので熱対策は重要
- 価格:500〜1,000円
- microSDカードリーダー(PCに挿すため)
初期設定時のみ必要
- キーボード(USB接続)
- マウス(USB接続)
- HDMIケーブル
- モニターまたはTV
注:当初「モニターなしでセットアップできるか?」と考えましたが、Raspberry Pi 3ではモニターなし起動(ネット経由の自動インストール)は不可能です。これはRaspberry Pi 4以降の機能です。
操作用PC
- Chromebook(Duet 3 Chrome 11Q727で動作確認)またはWindows PC
第2章:OSインストールの準備 – 最初の壁
Chromebookでの挫折と方針転換
最初は「Chromebookだけで全てできないか?」と考え、Chromebookでのセットアップを試みました。
失敗事例1:Chromebookでrpi-imagerがインストールできない
Chromebookで「Linux開発環境」を有効化し、以下のコマンドを実行:
sudo apt update
sudo apt install rpi-imager -y
結果:
E: Unable to locate package rpi-imager
原因:ChromebookのLinux環境(Debian)では、rpi-imagerパッケージが標準リポジトリに含まれていない。
教訓:Raspberry Piの公式ツールは、WindowsまたはMac用に最適化されている。Chromebookでも可能だが、回り道になる。
誤解していたこと:Raspberry Piは単体で起動できるのか?
この時点で「microSDカードなしでも起動できるのでは?」という疑問がありました。
重要な事実:
- ❌ Raspberry Piには内蔵ストレージがない
- ✅ microSDカードが「ハードディスク」の役割を果たす
- ✅ 空のmicroSDカードを挿しても何も起動しない(Pi 3の場合)
- ✅ 事前にOSを書き込む必要がある
「Raspberry Pi 4以降なら、ネット経由で自動インストールできる」という情報を見つけましたが、Raspberry Pi 3では利用不可でした。
方針転換:Windows PCでOSを書き込む
結論として、Windows PCを使ってmicroSDカードにOSを書き込む方法が最も確実で簡単でした。
第3章:Raspberry Pi OSのインストール(Windows PC使用)
ステップ1:Raspberry Pi Imagerのダウンロード
- Windows PCのブラウザで以下にアクセス
https://www.raspberrypi.com/software/
- 「Download for Windows」ボタンをクリック
- ダウンロードした
imager_latest.exeをダブルクリックしてインストール - インストールは数秒で完了
ステップ2:OSをmicroSDカードに書き込む
- microSDカードをPCに接続
- カードリーダー経由で接続
- Windowsが「フォーマットしますか?」と聞いてきても、まだフォーマットしない
- Raspberry Pi Imagerを起動
- デバイスを選択 → 「Raspberry Pi 3」を選択
- OSを選択
- 「Raspberry Pi OS (other)」をクリック
- 「Raspberry Pi OS Lite (64-bit)」を選択
- 注:「Lite」版はデスクトップ環境がない軽量版。録音システムには最適
- ストレージを選択
- 挿入したmicroSDカードを選択
- 警告:間違えて別のUSBメモリやHDDを選ばないように!
- 「次へ」をクリック
ステップ3:初期設定(最重要ステップ)
「OS設定をカスタマイズしますか?」と聞かれたら、必ず「設定を編集する」を選択してください。
この設定を忘れると、後でモニター・キーボードが必要になり二度手間になります。
一般タブで設定:
- ✅ ホスト名を設定
- デフォルトの
raspberrypiのままでOK - ネットワーク上で識別するための名前
- デフォルトの
- ✅ ユーザー名とパスワードを設定
- ユーザー名:
pi(推奨) - パスワード:覚えやすいものを設定(必ずメモ!)
- 注意:このパスワードは後で何度も使います
- ユーザー名:
- ✅ Wi-Fiを設定
- SSID:自宅のWiFi名(例:
MyHomeWiFi) - パスワード:WiFiパスワード
- 国:
JP - 重要:SSIDやパスワードが間違っていると、後でネットワークに接続できない
- SSID:自宅のWiFi名(例:
- ✅ ロケール設定を行う
- タイムゾーン:
Asia/Tokyo - キーボードレイアウト:
jp
- タイムゾーン:

サービスタブで設定:
- ✅ SSHを有効化するにチェック
- 「パスワード認証を使う」を選択
- これが最重要!SSH有効化により、モニターなしでリモート操作可能になる

全て設定したら「保存」→「はい」をクリック
ステップ4:書き込み開始
- 「はい」をクリック(データが消えることの確認)
- 書き込みが始まる(5〜10分)
- 「Writing…」→「Verifying…」の順に進行
- 「書き込みが成功しました」と表示されたら完了
- 「続ける」をクリック
- microSDカードを安全に取り外す
- Windowsのタスクバーで「ハードウェアの安全な取り外し」を実行
第4章:ヘッドレスセットアップ – モニターなしで起動
「ヘッドレス」とは?
ヘッドレス(Headless)とは、モニター・キーボード・マウスを接続せずにRaspberry Piを操作することです。今回のような24時間稼働システムでは、ヘッドレス運用が基本です。
ステップ1:Raspberry Piを起動
- microSDカードをRaspberry Piに挿入
- 電源アダプターだけを接続(モニター、キーボード、マウス不要)
- 緑のLEDが点滅すれば起動中
- 2〜3分待つ(初回起動とWiFi接続には時間がかかる)
ステップ2:IPアドレスの確認
Raspberry Piに接続するには、IPアドレスを知る必要があります。
方法A:ルーターの管理画面で確認(最も確実)
- ブラウザで
192.168.1.1または192.168.0.1にアクセス- ルーターのメーカーによってアドレスが異なる
- NEC Aterm:
192.168.10.1 - Buffalo:
192.168.11.1
- ルーターの管理画面にログイン
- 「接続機器一覧」「DHCP」「クライアントリスト」などの項目を探す
- 「raspberrypi」という名前の機器を探す
- IPアドレスをメモ(例:
192.168.1.100)
方法B:コマンドで確認
Windows PowerShellまたはChromebookのターミナルで:
ping raspberrypi.local
成功例:
PING raspberrypi.local (192.168.1.100): 56 data bytes
64 bytes from 192.168.1.100: icmp_seq=0 ttl=64 time=2.1 ms
IPアドレス(この例では192.168.1.100)が表示されればOK
失敗例:
ping: cannot resolve raspberrypi.local: Unknown host
この場合は方法Aでルーターから確認してください。
失敗事例2:IPアドレスが見つからない
考えられる原因:
- WiFi設定が間違っている(SSIDまたはパスワードのミス)
- Raspberry Piの起動に時間がかかっている(5分程度待つ)
- ルーターのDHCP機能が無効になっている
対処法:
- Raspberry Piを再起動(電源を抜いて10秒待ってから再接続)
- microSDカードを再書き込み(WiFi設定を再確認)
- 一時的にモニターとキーボードを接続して、手動でWiFi設定
ステップ3:Chromebook(Duet 3 Chrome 11Q727)からSSH接続
Chromebookでターミナルを開く
- Chromebookの設定で「Linux開発環境」が有効になっているか確認
- 設定 → 詳細設定 → デベロッパー → Linux開発環境
- オンになっていればOK
- 「ターミナル」アプリを起動
SSH接続コマンド
ssh pi@raspberrypi.local
または、IPアドレスがわかっている場合:
ssh pi@192.168.1.100
初回接続の確認
初回接続時、以下のようなメッセージが表示されます:
The authenticity of host 'raspberrypi.local (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?
yesと入力してEnter
パスワード入力
pi@raspberrypi.local's password:
Raspberry Pi Imagerで設定したパスワードを入力
- 注意:画面には何も表示されません(セキュリティのため)
- そのまま入力してEnterを押す
接続成功!
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64
pi@raspberrypi:~ $
このプロンプトが表示されたら成功です!
失敗事例3:SSH接続できない
エラー1:Connection refused
ssh: connect to host raspberrypi.local port 22: Connection refused
原因:SSH有効化を忘れている
対処法:microSDカードを再書き込み。「サービス」タブで「SSHを有効化」にチェックを入れる
エラー2:Permission denied
Permission denied (publickey,password).
原因:パスワードが間違っている
対処法:
- パスワードを再確認(大文字小文字を間違えていないか)
- パスワードを思い出せない場合は、microSDカードを再書き込み
第5章:録音システムのセットアップ
ステップ1:システムを最新にする
SSH接続できたら、まずシステムを最新版にアップデートします。
sudo apt update
パスワードを聞かれたら、Raspberry Piのパスワードを入力(画面には表示されません)
次に:
sudo apt upgrade -y
注:数分〜10分程度かかります。気長に待ちましょう。
ステップ2:必要なソフトウェアをインストール
sudo apt install sox alsa-utils -y
sox:音声ファイルの処理・解析ツールalsa-utils:音声デバイスの管理ツール
ステップ3:USBマイクを接続
- Raspberry PiのUSBポートにマイクを挿す
- 数秒待つ(自動認識)
ステップ4:マイクの認識確認
arecord -l
出力例(成功):
**** List of CAPTURE Hardware Devices ****
card 2: UACDemoV10 [UACDemoV1.0], device 0: USB Audio [USB Audio]
Subdevices: 1/1
Subdevice #0: subdevice #0
重要:カード番号とデバイス番号をメモ
- この例では:
card 2、device 0 - デバイス名は:
hw:2,0
失敗事例4:マイクが認識されない
出力例(失敗):
**** List of CAPTURE Hardware Devices ****
arecord: device_list:274: no soundcards found...
原因と対処法:
- マイクがしっかり挿さっていない → 挿し直す
- マイクの電源がオフ → 電源をオンにする
- USBポートの不良 → 別のUSBポートを試す
- マイク自体の故障 → 別のマイクで試す
ステップ5:テスト録音
マイクが正常に録音できるか確認します。
arecord -D plughw:2,0 -d 5 -f cd test.wav
コマンドの意味:
-D plughw:2,0:デバイスを指定(自分のカード番号に置き換える)-d 5:5秒間録音-f cd:CD音質(44.1kHz, 16bit, ステレオ)test.wav:ファイル名
録音中は何か音を出してください(手を叩く、話すなど)
5秒後に自動的に停止します。
ステップ6:録音の確認
sox test.wav -n stat
出力例(成功):
Samples read: 441000
Length (seconds): 5.000000
Scaled by: 2147483647.0
Maximum amplitude: 0.542145
Minimum amplitude: -0.498779
Midline amplitude: 0.021683
Mean norm: 0.089234
Mean amplitude: 0.005432
RMS amplitude: 0.123456
Maximum delta: 0.234567
Minimum delta: 0.000000
Mean delta: 0.012345
RMS delta: 0.023456
Rough frequency: 234
Volume adjustment: 1.845
確認ポイント:
Maximum amplitudeが0.000000以外なら録音成功- 上記例では
0.542145なので、しっかり音が録音できている
失敗事例5:音が録音できていない
出力例(失敗):
Maximum amplitude: 0.000000
原因と対処法:
- マイクがミュートになっている → マイクの設定を確認
- 音源が遠すぎる → マイクに近づけて再テスト
- マイクの感度が低い →
alsamixerコマンドで感度を上げる
第6章:音声トリガー録音への挑戦と挫折
当初の目標:音声トリガー録音
当初の要望は以下でした:
- 音量が一定レベルに来たら録音を開始
- 音が10秒間しなくなったら録音を停止
- ストレージ容量を節約
第1回目のスクリプト作成
soxのrecコマンドを使った音声トリガー録音スクリプトを作成しました。
rec -D "$DEVICE" -c $CHANNELS -r $SAMPLE_RATE "$FILENAME" \
silence 1 0.1 $THRESHOLD 1 $SILENCE_DURATION $THRESHOLD
失敗事例6:PulseAudioエラーで録音できない
実行結果:
[2025-11-24 10:01:14] 音声検知待機中...
rec WARN alsa: can't encode 0-bit Unknown or not applicable
ALSA lib pcm_pulse.c:758:(pulse_prepare) PulseAudio: Unable to create stream: Timeout
rec FAIL formats: can't open input 'default': snd_pcm_prepare error: Input/output error
原因:
recコマンドがdefaultデバイスを使おうとした- PulseAudioが邪魔をしている
- 実際は
hw:2,0を直接指定する必要がある
試行錯誤1:デバイス指定の修正
スクリプトを修正してhw:2,0を直接指定しましたが、他の問題が発生。
第2回目のスクリプト作成:arecordへの切り替え
recの代わりにarecordを使用。バックグラウンドで録音しながら、別プロセスで音量をチェックする方式。
失敗事例7:同時に複数のプロセスでマイクにアクセスできない
問題:
- 録音中のプロセスがマイクをロックしている
- 別のプロセスで音量チェックしようとすると「デバイスがビジー」エラー
第3回目のスクリプト作成:セグメント方式
1秒ごとに録音して、音量をチェック。音があればセグメントを保存、無音が10回続いたら結合する方式。
失敗事例8:無音検知が機能しない
実行結果:
[2025-11-24 11:10:10] 音声検知!録音開始
(その後、無音検知のメッセージが出ない)
原因:
- 48kHzのサンプリングレートでは、「無音」でもマイクノイズが常に入る
- ファイルサイズは常に増え続ける
- 閾値の調整が非常に難しい
試した対策:
- 閾値を0.01、0.05、0.1と変更 → いずれも精度不足
- 実際の音声レベルをリアルタイムでチェック → 複雑すぎて不安定
方針転換:定時録音システムへ
数時間の試行錯誤の結果、以下の結論に至りました:
音声トリガー録音は技術的に可能だが、調整が難しく、安定稼働のリスクが高い。まずは確実に動作する定時録音システムで実績を作り、後で音声トリガー機能を追加する方が賢明。
最終方針:定時録音システム
- AM 6:00 – PM 23:30に録音(それ以外は待機)
- 1時間ごとにファイル分割(安定性重視)
- 低音質(8kHz)で容量削減
- シンプルで確実な動作
この判断により、システムは安定稼働を実現しました。
第7章:24時間録音システムの構築(最終版)
ステップ1:録音用ディレクトリを作成
mkdir -p ~/recordings
ステップ2:録音スクリプトの作成
nano ~/voice_record_24h.sh
nanoエディタが開きます。以下のスクリプトをコピー&ペーストしてください:
#!/bin/bash
# 設定
DEVICE="hw:2,0" # マイクデバイス(自分の環境に合わせて変更)
OUTPUT_DIR="$HOME/recordings" # 保存先
SAMPLE_RATE=8000 # 低音質(容量削減)
DURATION=3600 # 1時間ごとに録音(3600秒)
START_HOUR=6 # 開始時刻(AM 6:00)
END_HOUR=23 # 終了時刻(PM 11:00)
END_MINUTE=30 # 終了分(PM 11:30)
mkdir -p "$OUTPUT_DIR"
echo "24時間録音システム起動"
echo "稼働時間: ${START_HOUR}:00 - ${END_HOUR}:${END_MINUTE}"
echo "音質: ${SAMPLE_RATE}Hz (低音質・容量削減)"
echo "ファイル分割: 1時間ごと"
echo "-----------------------------------"
while true; do
# 現在時刻を取得
CURRENT_HOUR=$(date +%H)
CURRENT_MINUTE=$(date +%M)
# 稼働時間帯かチェック
if [ $CURRENT_HOUR -ge $START_HOUR ] && [ $CURRENT_HOUR -lt $END_HOUR ]; then
# 6:00 - 22:59 は録音
SHOULD_RECORD=true
elif [ $CURRENT_HOUR -eq $END_HOUR ] && [ $CURRENT_MINUTE -lt $END_MINUTE ]; then
# 23:00 - 23:29 は録音
SHOULD_RECORD=true
else
# それ以外は録音しない
SHOULD_RECORD=false
fi
if [ "$SHOULD_RECORD" = true ]; then
FILENAME="$OUTPUT_DIR/rec_$(date +%Y%m%d_%H%M%S).wav"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 録音開始: $FILENAME"
# 1時間録音(エラーが出ても継続)
arecord -D "$DEVICE" -f S16_LE -c 1 -r $SAMPLE_RATE -d $DURATION "$FILENAME" 2>/dev/null
# 録音結果を確認
if [ -f "$FILENAME" ]; then
SIZE=$(du -h "$FILENAME" | cut -f1)
FILESIZE=$(stat -c%s "$FILENAME")
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 録音完了: $SIZE ($FILESIZE bytes)"
# ファイルが小さすぎる場合(エラーの可能性)
if [ $FILESIZE -lt 100000 ]; then
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 警告: ファイルサイズが小さい、録音エラーの可能性"
fi
else
echo "[$(date '+%Y-%m-%d %H:%M:%S')] エラー: 録音ファイルが作成されませんでした"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 10秒後に再試行..."
sleep 10
fi
else
# 稼働時間外
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 稼働時間外(待機中)次回開始: ${START_HOUR}:00"
# 次の開始時刻まで待機
sleep 300 # 5分ごとにチェック
fi
# 少し待機(連続実行の間隔)
sleep 2
done
スクリプトのカスタマイズポイント
DEVICE="hw:2,0"の部分:
- 自分のマイクのカード番号に変更
arecord -lで確認した番号を使用
稼働時間の変更:
START_HOUR=6 # 開始時刻(0-23)
END_HOUR=23 # 終了時刻(0-23)
END_MINUTE=30 # 終了分(0-59)
例:AM 7:00 – PM 22:00にしたい場合:
START_HOUR=7
END_HOUR=22
END_MINUTE=0
音質の変更:
SAMPLE_RATE=8000 # 8000=低音質、16000=標準、48000=高音質
- 8kHz:音質は粗いが容量最小(推奨)
- 16kHz:音質と容量のバランス
- 48kHz:高音質だが容量大
録音時間の変更:
DURATION=3600 # 秒単位(3600=1時間、7200=2時間)
ステップ3:保存と実行権限の付与
保存方法:
Ctrl + O(オー)を押すEnterを押すCtrl + Xを押す
実行権限を付与:
chmod +x ~/voice_record_24h.sh
ステップ4:テスト実行
まず、手動で動作確認します。
~/voice_record_24h.sh
期待される出力:
24時間録音システム起動
稼働時間: 6:00 - 23:30
音質: 8000Hz (低音質・容量削減)
ファイル分割: 1時間ごと
-----------------------------------
[2025-11-24 11:32:23] 録音開始: /home/pi/recordings/rec_20251124_113223.wav
録音が開始されることを確認したら、Ctrl + Cで停止
失敗事例9:サンプリングレートの警告
警告メッセージ:
Warning: rate is not accurate (requested = 16000Hz, got = 48000Hz)
please, try the plug plugin
意味:
- 要求:16kHz
- 実際:48kHz
- マイクが16kHzをサポートしていないため、自動的に48kHzで録音
対処:
- これは警告であり、エラーではない
- 録音自体は正常に動作している
- 音質が良くなるだけで、問題ない(容量は増える)
- 気になる場合は、スクリプトの
SAMPLE_RATE=48000に変更
ステップ5:24時間稼働用に起動
バックグラウンドで実行し、ターミナルを閉じても継続させます。
nohup ~/voice_record_24h.sh > ~/voice_record_24h.log 2>&1 &
コマンドの意味:
nohup:ターミナルを閉じても継続> ~/voice_record_24h.log:ログをファイルに保存2>&1:エラーメッセージもログに含める&:バックグラウンドで実行
出力:
[1] 26505
これはプロセスIDです。メモしておくと便利です。
ステップ6:動作確認
ログをリアルタイムで確認:
tail -f ~/voice_record_24h.log
ログが表示されます。Ctrl + Cで終了(スクリプトは動き続けます)
プロセスが動いているか確認:
ps aux | grep voice_record_24h
出力例(成功):
pi 26505 0.3 0.3 6924 3220 pts/0 S 10:46 0:00 /bin/bash /home/pi/voice_record_24h.sh
pi 26765 0.0 0.2 6252 2028 pts/0 S+ 10:48 0:00 grep --color=auto voice_record
1行目がスクリプト本体、2行目はgrepコマンド自体です。
録音ファイルを確認:
ls -lh ~/recordings/
出力例:
total 7.7M
-rw-r--r-- 1 pi pi 1.3M Nov 24 11:32 rec_20251124_113154.wav
-rw-r--r-- 1 pi pi 6.4M Nov 24 11:33 rec_20251124_113223.wav
ファイルサイズが増え続けていれば、録音が継続中です。
ステップ7:Chromebookのターミナルを閉じる
動作確認ができたら、Chromebookのターミナルを閉じてOKです。
重要:
- ✅ ターミナルを閉じても録音は継続
- ✅ Chromebookをシャットダウンしても録音は継続
- ❌ Raspberry Piの電源を切ると停止
第8章:録音ファイルの確認と管理
方法1:Chromebookに転送
Chromebookで新しいターミナルを開いて:
scp pi@raspberrypi.local:~/recordings/rec_20251124_113223.wav /mnt/chromeos/MyFiles/Downloads/
パスワードを入力すると、Chromebookの「ダウンロード」フォルダに保存されます。
失敗事例10:Chromebookでのscp 使用は難しい
このエラーは解決できず、下のWEBブラウザ設定を利用しました。
方法2:Webブラウザで確認(推奨)
この方法が最も簡単です。
Raspberry Pi側で簡易HTTPサーバーを起動:
cd ~/recordings
python3 -m http.server 8000
出力:
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
Chromebookまたはスマホのブラウザでアクセス:
http://raspberrypi.local:8000
または
http://192.168.1.100:8000
ファイル一覧が表示され、クリックでダウンロード・再生が可能です。
終わったら Ctrl + C でサーバーを停止
方法3:Androidスマホで確認
方法2のHTTPサーバーを使えば、Androidスマホのブラウザでも同様にアクセスできます。
または、SFTPアプリ(Solid Explorer、FX File Explorerなど)を使ってファイルにアクセス可能です。
第9章:運用と管理
基本的な管理コマンド
録音システムの停止
pkill -f voice_record_24h.sh
録音システムの再起動
nohup ~/voice_record_24h.sh > ~/voice_record_24h.log 2>&1 &
ログの確認
# 最新20行を表示
tail -20 ~/voice_record_24h.log
# 最新50行を表示
tail -50 ~/voice_record_24h.log
# リアルタイムでログを監視
tail -f ~/voice_record_24h.log
録音ファイルの確認
# ファイル一覧(人間が読みやすい形式)
ls -lh ~/recordings/
# 最新5ファイルのみ表示
ls -lht ~/recordings/ | head -6
# 容量確認
du -sh ~/recordings/
# ファイル数のカウント
ls ~/recordings/ | wc -l
プロセスの確認
ps aux | grep voice_record_24h
ストレージ管理
空き容量の確認
df -h
出力例:
Filesystem Size Used Avail Use% Mounted on
/dev/root 29G 5.2G 23G 19% /
Availが空き容量です。
古いファイルの削除
30日より古いファイルを削除:
find ~/recordings/ -name "*.wav" -mtime +30 -delete
7日より古いファイルを削除:
find ~/recordings/ -name "*.wav" -mtime +7 -delete
注意:削除前に確認したい場合は、-deleteを外して実行:
find ~/recordings/ -name "*.wav" -mtime +7
自動削除スクリプトの作成(オプション)
毎日自動的に古いファイルを削除するスクリプトを作成できます。
nano ~/cleanup_recordings.sh
以下を入力:
#!/bin/bash
find ~/recordings/ -name "*.wav" -mtime +30 -delete
echo "[$(date)] 古いファイルを削除しました"
保存して実行権限を付与:
chmod +x ~/cleanup_recordings.sh
cronで毎日実行(後述)
システムの再起動
Raspberry Piを再起動する場合:
sudo reboot
注意:現状では、再起動後に録音システムを手動で起動する必要があります。自動起動設定は後述の「Phase 10」を参照。
第10章:トラブルシューティング
録音が開始されない
原因1:マイクデバイス番号が違う
確認方法:
arecord -l
カード番号を確認し、スクリプトの DEVICE="hw:X,Y" を修正
原因2:稼働時間外
AM 6:00 – PM 23:30以外は待機状態です。
確認方法:
date
現在時刻を確認し、稼働時間内か確認
テスト用に稼働時間を変更:
スクリプトを編集して、START_HOUR=0、END_HOUR=23、END_MINUTE=59に変更すれば24時間稼働
原因3:プロセスが起動していない
確認方法:
ps aux | grep voice_record_24h
プロセスが表示されない場合は、起動されていない。再起動してください。
SSH接続できない
原因1:Raspberry Piが起動していない
確認:緑のLEDが点滅しているか
対処:電源を確認、再起動
原因2:WiFi接続に失敗している
対処:
- ルーターの接続機器一覧で「raspberrypi」が表示されているか確認
- 表示されない場合は、WiFi設定が間違っている可能性
- microSDカードを再書き込み
原因3:IPアドレスが変わった
対処:
- ルーターでIPアドレスを再確認
- または、DHCPで固定IPを割り当てる設定をルーターで行う
ストレージが不足
確認方法
df -h
Use%が90%以上なら危険
対処方法
1. 古いファイルを削除:
find ~/recordings/ -name "*.wav" -mtime +7 -delete
2. ファイルをバックアップしてから削除:
Chromebookやスマホにダウンロードしてから、Raspberry Pi側を削除
3. ログファイルをクリア:
echo "" > ~/voice_record_24h.log
録音ファイルが再生できない
原因1:ファイルサイズが小さすぎる
確認:
ls -lh ~/recordings/
ファイルサイズが数KBしかない場合、録音エラーの可能性
原因2:ファイルが破損している
確認:
file ~/recordings/rec_YYYYMMDD_HHMMSS.wav
RIFF (little-endian) data, WAVE audioと表示されればOK
Raspberry Piが反応しない
最終手段:強制再起動
電源を抜いて、10秒待ってから再接続
注意:録音中のファイルは破損する可能性があります
第11章:容量とコストの最適化
サンプリングレートと容量の関係
| サンプリングレート | 1時間あたり | 1日(17.5h) | 32GBで | 音質 |
|---|---|---|---|---|
| 8kHz(本記事) | 約55MB | 約1GB | 約1ヶ月 | 電話音質 |
| 16kHz | 約110MB | 約2GB | 約15日 | ラジオ音質 |
| 44.1kHz | 約300MB | 約5GB | 約6日 | CD音質 |
| 48kHz | 約330MB | 約6GB | 約5日 | 高音質 |
推奨設定
環境音録音の場合:
- 8kHz推奨(人の声は十分聞き取れる)
- 容量が最小で、長期間保存可能
音楽録音の場合:
- 44.1kHz以上推奨
- ただし、容量が大幅に増える
コスト計算
初期費用
| 項目 | 価格 |
|---|---|
| Raspberry Pi 3B(中古) | 3,000円 |
| microSDカード 32GB | 1,000円 |
| 電源アダプター | 1,500円 |
| USBマイク | 1,500円 |
| ケース | 800円 |
| microSDカードリーダー | 500円 |
| 合計 | 約8,300円 |
ランニングコスト
電気代:
- Raspberry Pi 3B:約3W
- 24時間365日稼働:約3W × 24h × 365日 = 26.28kWh/年
- 電気代(1kWh = 30円として):約788円/年
- 月額約66円
市販製品との比較:
| 製品 | 初期費用 | 年間電気代 | 長期稼働 |
|---|---|---|---|
| Raspberry Pi | 8,300円 | 788円 | ◎ |
| ICレコーダー | 10,000円〜 | 500円〜 | △ |
| スマホ | 既存 | 不明 | ❌ |
第12章:今後の拡張案
Phase 10:自動起動設定
systemdサービスとして登録すれば、Raspberry Pi起動時に自動開始できます。
メリット:
- 停電後の自動復旧
- エラー時の自動再起動
- ログ管理の統一
設定方法:
sudo nano /etc/systemd/system/voice-record.service
以下を入力:
[Unit]
Description=24h Voice Recording System
After=network.target sound.target
[Service]
Type=simple
User=pi
WorkingDirectory=/home/pi
ExecStart=/home/pi/voice_record_24h.sh
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
保存して有効化:
sudo systemctl daemon-reload
sudo systemctl enable voice-record.service
sudo systemctl start voice-record.service
動作確認:
sudo systemctl status voice-record.service
Phase 11:音声トリガー録音の実装
Pythonスクリプトでより精密な音声検知を実装。
メリット:
- ストレージ容量の節約
- 必要な音だけを録音
- より高度な音声分析
必要な技術:
- Python + pyaudio
- VAD(Voice Activity Detection)アルゴリズム
- 閾値の自動調整
Phase 12:カメラ連動システム
音声検知時に自動で動画撮影を開始。
必要なもの:
- Raspberry Pi Camera Module V2(3,000〜4,000円)
- または USBウェブカメラ(1,000〜2,000円)
機能:
- 音声トリガーで録音+動画撮影
- 夜間撮影(NoIRカメラ使用)
- 低画質で容量削減
Phase 13:クラウドバックアップ
録音ファイルを自動的にクラウドにアップロード。
方法:
- rcloneを使ってGoogle Drive連携
- Dropbox APIを使った自動アップロード
- rsyncでNASにバックアップ
メリット:
- ローカルストレージの自動削除
- データ消失のリスク軽減
- どこからでもアクセス可能
Phase 14:Webインターフェース
ブラウザから録音状態を確認・操作できるダッシュボード。
機能案:
- 録音状態のリアルタイム表示
- ストレージ容量の確認
- 録音開始/停止
- ファイルの再生・ダウンロード
- 設定変更(稼働時間、音質など)
第13章:実運用での注意点
法律とプライバシー
注意事項:
- 公共の場での録音は法律に注意
- 他人のプライバシーを侵害しないこと
- 録音していることを明示する(必要に応じて)
- 録音データの管理責任
セキュリティ
推奨設定:
- SSH接続は自宅ネットワークのみ
- 強力なパスワードを設定
- 定期的なパスワード変更
- ファイアウォール設定(必要に応じて)
メンテナンス
定期的に確認すること:
- 週1回:ストレージ容量、録音ファイルの確認
- 月1回:システムアップデート、古いファイルの整理
- 3ヶ月に1回:microSDカードの健全性チェック
バックアップ
重要なファイル:
~/voice_record_24h.sh(録音スクリプト)~/voice_record_24h.log(ログファイル)~/recordings/(録音データ)
定期的に別の場所にバックアップすることを推奨します。
まとめ
本記事では、Raspberry Pi 3 Model Bを使った24時間環境音録音システムの構築方法を、実際の失敗事例や試行錯誤も含めて詳しく解説しました。
構築できたシステム
- ✅ AM 6:00 – PM 23:30の自動録音
- ✅ 低音質(8kHz)で容量削減(1日約1GB)
- ✅ 1時間ごとのファイル分割で安定性向上
- ✅ Chromebookから完全リモート操作
- ✅ ターミナル切断後も継続稼働
- ✅ 総コスト約8,300円、月額電気代約66円
学んだ教訓
- Chromebookだけでは難しい
- OSインストールにはWindows/Macが確実
- 運用・操作はChromebookで十分
- Raspberry Pi 3は単体で起動できない
- microSDカードへのOS書き込みが必須
- ネット経由の自動インストールはPi 4以降
- 音声トリガー録音は想像以上に難しい
- 無音検知の調整が困難
- まずは安定稼働を優先すべき
- SSH設定は最初が肝心
- OS書き込み時にSSH有効化を忘れると二度手間
- WiFi設定のミスで接続できないことが多い
- シンプルなシステムほど安定する
- 複雑な機能は後から追加できる
- 基盤システムの安定性が最優先
今後の展開
このシステムを基盤として、以下のような拡張が可能です:
- 自動起動設定(systemdサービス化)
- 音声トリガー録音(Python実装)
- カメラ連動システム
- クラウドバックアップ
- Webダッシュボード
最後に
今回の構築では、多くの失敗や試行錯誤がありました。しかし、それらの経験こそが、より安定したシステムを作る上で重要な学びとなりました。
この記事が、同じようなシステムを構築しようとしている方の参考になれば幸いです。質問や改善案があれば、コメント欄でお知らせください!
【重要な注意事項】
- 録音システムの使用にあたっては、法律とプライバシーを遵守してください
- 公共の場での録音には特に注意が必要です
- 録音データの管理責任は使用者にあります
- 電源の突然の切断は、録音中のファイルを破損させる可能性があります
作成日:2025年11月24日
Raspberry Pi 3 Model B V1.2、Raspberry Pi OS Lite (64-bit)、Chromebook(Duet 3 Chrome 11Q727)で動作確認済み