Generate TTS audio from Mandarin news scripts for AC878 radio. Use after scriptwriting to convert .txt scripts into broadcast-ready MP3 files using Microsoft Edge TTS (zh-CN-YunyangNeural voice). Handles TTS generation, audio conversion, and quality validation.
Convert Mandarin text scripts into broadcast-ready MP3 audio files.
# Morning bulletin
bash /Users/jackycheung/.openclaw/skills/ac878-news-tts/scripts/generate_tts.sh morning
# Afternoon bulletin
bash /Users/jackycheung/.openclaw/skills/ac878-news-tts/scripts/generate_tts.sh afternoon
For each of the 4 script files:
zh-CN-YunyangNeural voiceWORKSPACE="/Users/jackycheung/.openclaw/workspace"
# For each file (1-4):
python3 -m edge_tts --voice zh-CN-YunyangNeural \
--file "$WORKSPACE/news/bulletin-file-1.txt" \
--write-media "$WORKSPACE/news/bulletin-raw-1.mp3"
ffmpeg -y -i "$WORKSPACE/news/bulletin-raw-1.mp3" \
-ar 44100 -ac 2 -b:a 128k \
"$WORKSPACE/news/bulletin-file-1.mp3"
rm -f "$WORKSPACE/news/bulletin-raw-1.mp3"
| Parameter | Value |
|---|---|
| Voice | zh-CN-YunyangNeural (Male, Professional, News) |
| Sample rate | 44100 Hz |
| Channels | Stereo (2) |
| Bitrate | 128 kbps |
| Format | MP3 |
| Duration | 18-27 minutes per file |
| File size | ~15-25 MB per file |
for f in news/bulletin-file-{1..4}.mp3; do
DUR=$(ffprobe -v error -show_entries format=duration -of csv=p=0 "$f")
SIZE=$(ls -la "$f" | awk '{print $5}')
echo "$(basename $f): ${DUR}s, ${SIZE} bytes"
done
Each file must be >5MB and 18-27 minutes. If any file fails, regenerate it.
After TTS generation, deliver to OneDrive:
bash /Users/jackycheung/.openclaw/skills/ac878-news-deliver/scripts/deliver.sh morning