Raspberry Pi Zero 2 W上での「TTS音声からDMR RF送信」構築作業について、エラー回避や注意点をふまえた「完全再現手順(保存版)」
🎯【作業手順まとめ】
〜 TTS → PCM → AMBE → Analog_Bridge →(MMDVM_Bridge)→ RF送信 〜
【前提環境】
- SBC: Raspberry Pi Zero 2 W
- OS: Raspberry Pi OS(32bit Lite)
- ユーザー名: pi-star
- AMBE変換: md380-emu ソフトウェアエミュレーション
- 目的: テキストから自動ID音声生成しDMRで自動送出
1️⃣ ディレクトリとユーザー権限の準備
sudo mkdir -p /opt/voice-id /opt/Analog_Bridge /opt/DVSwitch
sudo chown pi-star:pi-star /opt/voice-id /opt/Analog_Bridge /opt/DVSwitch
/opt配下はroot所有が多いので最初に自分の所有権に変更
→ 以降の操作で「許可がありません」エラーを回避
2️⃣ TTSエンジン(open_jtalk)/SoX のインストールと確認
sudo apt update
sudo apt install open-jtalk open-jtalk-mecab-naist-jdic hts-voice-nitech-jp-atr503-m001 sox
soxはraw/pcm変換対応版。
open-jtalkの辞書や音声ファイルの場所も要確認。
3️⃣ TTS〜PCM変換スクリプトの作成
/opt/voice-id/generate_pcm.sh
#!/bin/bash
MESSAGE="こちらはJJ2YYK尾張旭DMRデジピーターです"
WAV="/opt/voice-id/id.wav"
PCM="/opt/voice-id/id.pcm"
/usr/bin/open_jtalk \
-x /var/lib/mecab/dic/open-jtalk/naist-jdic \
-m /usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice \
-r 1.0 -s 48000 -ow "$WAV" <<< "$MESSAGE"
sox "$WAV" -r 8000 -c 1 -b 16 -e signed-integer -t raw "$PCM"
[ -s "$PCM" ] && echo "PCMファイルの生成に成功しました: $PCM" || echo "PCMファイルの生成に失敗しました。"
soxで「pcmエラー」対策→-t rawオプション必須!
MESSAGE部分を自由に変えてOK。
chmod +x /opt/voice-id/generate_pcm.sh
/opt/voice-id/generate_pcm.sh
4️⃣ md380-emu(AMBE変換エミュレータ)導入・ビルド
4-1. DMRToolsディレクトリ作成
mkdir -p ~/DMRTools
cd ~/DMRTools
4-2. Travis Goodspeed版md380toolsクローン
git clone https://github.com/travisgoodspeed/md380tools.git
cd md380tools/emulator
4-3. Makefile修正
CC=arm-linux-gnueabi-gcc → CC=gccに変更
nano Makefile
# CC=gcc -static -g ←へ修正
sedコマンドでは置換されないこともあるので手動編集推奨
4-4. Python2インストール(ファームアンパック用)
sudo apt install python2
これがないとアンパックで「/usr/bin/env: python2: そのようなファイルやディレクトリはありません」エラーになる
4-5. シングルジョブでビルド(-j2禁止)
make clean all
「md380-emu.oが無い」エラー回避のため並列ビルドせず必ずシングルで実行!
2回目のmake allで全部揃う場合あり。
4-6. 実行ファイル確認
ls -l md380-emu
5️⃣ PCM→AMBE変換テスト
~/DMRTools/md380tools/emulator/md380-emu -e -i /opt/voice-id/id.pcm -o /opt/voice-id/id.ambe
ls -l /opt/voice-id/id.ambe
ファイルサイズが0でなければ成功
6️⃣ Analog_Bridgeの導入(GitHubクローン)
cd /opt/Analog_Bridge
git clone https://github.com/DVSwitch/Analog_Bridge.git src
cd src/bin
# Pi Zero 2 Wなら
cp Analog_Bridge.armhf /opt/Analog_Bridge/Analog_Bridge
chmod +x /opt/Analog_Bridge/Analog_Bridge
makeは不要。bin/にバイナリ同梱
必ず自分の権限でcp/chmod。root配下で直接作業しない。
7️⃣ Analog_Bridge設定ファイル配置・編集
cd /opt/Analog_Bridge
cp src/Analog_Bridge.ini Analog_Bridge.ini
nano Analog_Bridge.ini
ポイントのみ修正例:
[GENERAL]
decoderFallBack = true
useEmulator = true
[AMBE_AUDIO]
gatewayDmrId = 4401505 ;自局のDMRID
repeaterID = 440150501 ;推奨
txTg = 9 ;テスト時TG9
txTs = 2 ;TS2
colorCode = 1
useEmulator = true必須(md380-emu連携)
AMBE_AUDIO, USRPセクションのポート番号が後述のMMDVM_Bridgeと一致していることを確認
8️⃣ Analog_Bridge起動&送信テスト
cd /opt/Analog_Bridge
./Analog_Bridge Analog_Bridge.ini -e /opt/voice-id/id.ambe
-cオプションは不要、iniファイル名を最初に指定する
マクロファイルやsubscriberエラーは無視でOK
9️⃣ MMDVM_Bridge導入の準備(次ステップ)
- 上記Analog_BridgeでAMBE送信パケット生成まで成功
- RF送信にはMMDVM_Bridgeの設定・起動が必要
【本日つまずきやすいポイントまとめ】
- /opt配下のパーミッションエラー対策:最初に
sudo chown推奨 - Makefile編集は手動推奨(sed効かないことあり)
- python2インストール必須
- md380-emuのビルドは-j無し(並列NG)
- Analog_Bridgeは同梱バイナリ利用(make不要)
- iniファイルのファースト引数指定・-c不要
- 警告やsubscriber IDファイルエラーは無視してOK
📝【この続きは…】
- MMDVM_Bridgeの導入→設定→RF送出(次工程)
- ご希望に合わせてさらに詳細な手順を順次ご案内可能です!
このまとめを**そのまま「手順書」や「再現作業用メモ」としてご利用いただけます。
追加で書いておきたいポイントや、「ここをもっと細かく」といったご要望があればお伝えください!