md380tools を使った音声ファイルAMBE変換手順書
2025年7月10日
2025年9月3日
この手順書は、Raspberry Pi (または同様のDebian系Linux環境) 上で、Travis Goodspeed氏の md380tools を導入し、音声ファイル (WAV形式) をDMRで使用されるAMBE形式に変換する方法を説明します。
重要事項
- AMBEコーデックは特許保護されており、非公式なツールでの変換は自己責任で行ってください。
- md380toolsのビルドにはクロスコンパイルツールチェーンや開発ライブラリが必要です。
- Raspberry Pi OS (Debian系) 環境を前提としています。
- この手順書では、以前のやり取りで発生したビルドエラー(Boost、Dynarmicなど)を回避するために、特定の手順(
Makefileの修正)を含んでいます。
1. 必要なツールのインストール
md380toolsのビルドと音声変換に必要なパッケージをインストールします。
| ステップ | 操作 | 説明 |
| 1.1 | システムアップデート | パッケージリストを最新の状態に更新し、既存のパッケージをアップグレードします。 |
sudo apt update && sudo apt upgrade -y | ||
| 1.2 | ビルドツールのインストール | C/C++コンパイラ、Make、Gitなど、ビルドに必要な基本的なツールをインストールします。 |
sudo apt install -y build-essential git wget unzip sox mplayer libusb-1.0-0-dev gcc-arm-none-eabi | 注: gcc-arm-none-eabiはARMクロスコンパイラですが、今回のビルドでは後ほどgccに置き換えます。soxとmplayerは音声変換と再生に必要です。 |
Google スプレッドシートにエクスポート
2. md380toolsのクローンとビルド
GitHubからmd380toolsリポジトリをクローンし、ビルドします。
| ステップ | 操作 | 説明 |
| 2.1 | 作業ディレクトリの作成と移動 | プロジェクトを配置するためのディレクトリを作成し、その中に移動します。 |
mkdir -p ~/tmp/md380tools <br> cd ~/tmp/md380tools | ||
| 2.2 | リポジトリのクローン | md380toolsリポジトリをGitHubからクローンします。 |
git clone https://github.com/travisgoodspeed/md380tools . | 注: ピリオド(.)を付けることで、現在のディレクトリに直接クローンされます。 | |
| 2.3 | emulatorディレクトリへ移動 | AMBE変換ツールを含むemulatorディレクトリへ移動します。 |
cd emulator | ||
| 2.4 | Makefileの修正 (重要) | クロスコンパイラarm-linux-gnueabi-gccが見つからないエラーを回避するため、Makefileを修正します。<br>警告: この修正は一時的な回避策です。本来の目的(クロスコンパイル)とは異なる動作になりますが、Raspberry Pi上で直接ビルドして実行するために必要です。 |
sed -i 's/^CC=arm-linux-gnueabi-gcc -static -g/CC=gcc -static -g/' Makefile | このコマンドは、Makefile内のCC=arm-linux-gnueabi-gcc -static -gという行をCC=gcc -static -gに直接書き換えます。 | |
| 2.5 | md380toolsのビルド | md380toolsをビルドします。ファームウェアのダウンロードもここで行われます。 |
make | 注: インターネット接続が必要です。ファームウェアのダウンロードに時間がかかる場合があります。md380-emuという実行ファイルが作成されれば成功です。 |
Google スプレッドシートにエクスポート
3. 音声ファイルのAMBE変換
ビルドしたmd380-emuツールを使用して、WAVファイルをAMBE形式に変換します。
| ステップ | 操作 | 説明 |
| 3.1 | 変換したい音声ファイルの準備 | 変換したいWAVファイルを、現在のディレクトリ (~/tmp/md380tools/emulator) にコピーするか、ダウンロードします。ここでは例として、Linus Torvalds氏の音声ファイルを使用します。 |
wget http://suseroot.com/misc/torvalds-says-linux.wav -O my_speech.wav | 注: 変換したいファイル名に置き換えてください。例: your_audio.wav | |
| 3.2 | WAVからRAWへの変換 | WAVファイルを、md380-emuが処理できる8kHz、16bit、モノラルの生データ (RAW) 形式に変換します。 |
sox my_speech.wav --bits 16 --encoding signed-integer -c1 -r 8000 -L my_speech.raw | 注: my_speech.wavとmy_speech.rawは適宜ファイル名に置き換えてください。 | |
| 3.3 | RAWからAMBEへのエンコード | RAW形式の音声データをAMBE形式にエンコードします。 |
./md380-emu -e -i my_speech.raw -o my_speech.amb | 注: -eオプションがエンコードを示します。入力 (-i) と出力 (-o) ファイル名を指定します。 |
Google スプレッドシートにエクスポート
4. AMBEファイルの確認 (オプション)
変換されたAMBEファイルをデコードし、再生して確認します。
| ステップ | 操作 | 説明 |
| 4.1 | AMBEからRAWへのデコード | 作成したAMBEファイルをRAW形式にデコードします。 |
./md380-emu -d -i my_speech.amb -o my_speech_decoded.raw | 注: -dオプションがデコードを示します。 | |
| 4.2 | RAWからWAVへの変換 | デコードされたRAWファイルを再生可能なWAV形式に変換します。 |
sox -r 8000 -e signed-integer -L -b 16 -c 1 my_speech_decoded.raw my_speech_decoded.wav | ||
| 4.3 | デコードされたWAVファイルの再生 | デコードされた音声を聞いて、変換が正しく行われたか確認します。 |
mplayer my_speech_decoded.wav | 注: mplayerがインストールされていない場合は、aplay my_speech_decoded.wavなど、他の再生コマンドを試してください。 |
Google スプレッドシートにエクスポート
トラブルシューティング
make: *** [md380-emu.o] エラー 127(arm-linux-gnueabi-gccが見つからない): 上記「2.4 Makefileの修正」が正しく行われているか確認してください。Boost (missing: Boost_INCLUDE_DIR)/static assertion failed: これは本来md380toolsのリポジトリとは異なる「md380emu (rhgndf)」で発生したエラーです。今回の手順ではTravis Goodspeed氏のmd380toolsを使用しているため、このエラーは発生しないはずです。もし発生した場合は、リポジトリが正しいか、または最新の状態か確認してください。soxまたはmplayerが見つからない: 「1.2 ビルドツールのインストール」でこれらのパッケージが正しくインストールされているか確認してください。
以上で、音声ファイルのAMBE変換手順は完了です。