ガイダンス送信pgm

【送信pgm】

# nano /etc/asterisk/scripts/dmr_monitor6.sh

 中身は次の通り

#!/bin/bash

# 設定
log_file="/var/log/mmdvm/MMDVM_Bridge-$(date -u +%Y-%m-%d).log"
LETTERS_DIR="/usr/share/asterisk/sounds/en/letters"
DIGITS_DIR="/usr/share/asterisk/sounds/en/digits"
FIXED_FILE="/tmp/asl-tts-root/at-jj1yeg.ul"
OUTPUT="/var/lib/asterisk/sounds/final_speech.ul"
EXT=".ulaw"

echo "monitoring $log_file (sox integration version)..."

tail -n 0 -F "$log_file" | while read -r line; do
   # 1. voice header 検知 (コールサインの抽出)
   if echo "$line" | grep -q "received network voice header"; then
       # コールサインを抽出して小文字に変換
       callsign=$(echo "$line" | sed -n 's/.*from \(.*\) to TG.*/\1/p' | tr '[:upper:]' '[:lower:]' | xargs)
       echo "Detected callsign: $callsign"
   fi

   # 2. end of transmission 検知
   if echo "$line" | grep -q "received network end of voice transmission"; then
       duration=$(echo "$line" | sed -n 's/.* transmission, \(.*\) seconds.*/\1/p' | tr -d '[:space:]')

       # durationが空でなく、2.0秒未満の場合に処理実行
       if [ -n "$duration" ] && [ "$(echo "$duration < 2.0" | bc)" -eq 1 ]; then
           echo "short key detected ($duration s). generating speech for $callsign..."

           # 音声ファイルリストの作成
           FILE_LIST=""
           for (( i=0; i<${#callsign}; i++ )); do
               char="${callsign:$i:1}"
               PARAMS="-t ul -r 8000 -c 1"

               if [[ "$char" =~ [a-z] ]]; then
                   FILE_LIST="$FILE_LIST $PARAMS $LETTERS_DIR/${char}$EXT"
               elif [[ "$char" =~ [0-9] ]]; then
                   FILE_LIST="$FILE_LIST $PARAMS $DIGITS_DIR/${char}$EXT"
               fi
           done

           # sox で結合して一つのファイルにする
           if [ -n "$FILE_LIST" ]; then
               sox $FILE_LIST -t ul -r 8000 -c 1 "$FIXED_FILE" -t ul -r 8000 -c 1 "$OUTPUT"

               # Asterisk で再生
               echo "playing final_speech..."
               asterisk -rx "rpt playback 52984 /var/lib/asterisk/sounds/final_speech"
           fi
       fi
   fi
done

 コマンドとして実行できるように

# chmod 755 /etc/asterisk/scripts/dmr_monitor6.sh

 次のサービスとして登録し自動起動とする

# nano /etc/systemd/system/dmr-monitor.service

 中身は

[Unit]

Description=DMR Monitor and ASL3 TTS Playback Service
After=asterisk.service
 
[Service]
ExecStart=/etc/asterisk/scripts/dmr_monitor6.sh
Restart=always
RestartSec=5
User=root
StandardOutput=append:/var/log/dmr_monitor.log
StandardError=inherit

[Install]
WantedBy=multi-user.target

 これを起動させるが、その前に音声ファイル?を作成しておくこと。

/tmp/asl-tts-root/at-jj1yeg

 
以下まだ工事中


リロード   新規 下位ページ作成 凍結解除 差分 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS