9.1 KiB
9.1 KiB
🎤 Text-to-Speech (TTS) System untuk Puskesmas
📋 Overview
Sistem TTS ini dirancang khusus untuk panggilan nomor antrian di Puskesmas dengan dukungan bahasa Indonesia. Menggunakan library Python yang kompatibel dengan Windows dan memiliki fallback system.
🚀 Fitur Utama
✅ Sudah Tersedia
- pyttsx3: TTS offline menggunakan suara sistem Windows
- gTTS: TTS online Google sebagai fallback
- Indonesian TTS: Model TTS khusus bahasa Indonesia dengan Coqui TTS
- Bahasa Indonesia: Dukungan penuh untuk pengucapan bahasa Indonesia
- Responsive UI: Interface admin yang responsif dengan Tailwind CSS
- Audio Management: Sistem manajemen file audio otomatis
- Cross-platform: Kompatibel dengan Windows, Linux, dan macOS
🔧 Fitur TTS
- Generate audio untuk nomor antrian
- Customizable service name
- Multiple voice options
- Audio file cleanup otomatis
- Real-time status monitoring
- Test dan preview audio
- Indonesian TTS: Model khusus bahasa Indonesia
- Queue Call Generation: Generate panggilan antrian otomatis
- Model Management: Download dan setup model TTS
- Installation Guide: Panduan instalasi lengkap
📦 Dependencies
Python Libraries
pip install pyttsx3 # TTS offline
pip install gTTS # TTS online (fallback)
pip install coqui-tts # Indonesian TTS model
Laravel Requirements
- PHP 8.0+
- Laravel 9+
- Storage permissions untuk audio files
🛠️ Instalasi
1. Install Python Dependencies
# Install pyttsx3 (offline TTS)
pip install pyttsx3
# Install gTTS (online TTS fallback)
pip install gTTS
2. Verifikasi Instalasi
# Test Python
python --version
# Test pyttsx3
python -c "import pyttsx3; print('pyttsx3 OK')"
# Test gTTS
python -c "from gtts import gTTS; print('gTTS OK')"
# Test Coqui TTS
python -c "import TTS; print('Coqui TTS OK')"
3. Setup Laravel
# Buat direktori storage
mkdir -p storage/app/tts_scripts
# Set permissions (Linux/Mac)
chmod -R 755 storage/app/tts_scripts
# Set permissions (Windows)
# Pastikan folder memiliki write access
🎯 Cara Penggunaan
1. Akses TTS Management
- Login sebagai admin
- Buka menu "TTS Management" di sidebar untuk basic TTS
- Buka menu "Indonesian TTS" di sidebar untuk Indonesian TTS
- Atau akses langsung:
/admin/tts
atau/admin/indonesian-tts
2. Test TTS
- Masukkan nomor antrian (contoh: "001")
- Masukkan nama layanan (contoh: "Poli Umum")
- Klik "Generate TTS"
- Tunggu proses generate selesai
- Klik "Test TTS" untuk mendengarkan
3. Generate TTS via API
# Basic TTS
POST /admin/tts/generate
Content-Type: application/json
{
"queue_number": "001",
"service_name": "Poli Umum"
}
# Indonesian TTS
POST /admin/indonesian-tts/generate
Content-Type: application/json
{
"poli_name": "Poli Umum",
"queue_number": "001"
}
4. Play Audio via API
GET /admin/tts/play?file_path=/path/to/audio.wav
🔌 API Endpoints
Method | Endpoint | Description |
---|---|---|
GET |
/admin/tts |
TTS Management Page |
POST |
/admin/tts/generate |
Generate TTS Audio |
GET |
/admin/tts/play |
Play TTS Audio |
GET |
/admin/tts/test |
Test TTS Service |
GET |
/admin/tts/voices |
Get Available Voices |
POST |
/admin/tts/cleanup |
Cleanup Old Files |
GET |
/admin/tts/status |
Get System Status |
GET |
/admin/indonesian-tts |
Indonesian TTS Page |
POST |
/admin/indonesian-tts/generate |
Generate Indonesian TTS |
POST |
/admin/indonesian-tts/audio-sequence |
Create Audio Sequence |
GET |
/admin/indonesian-tts/status |
Check Indonesian TTS Status |
GET |
/admin/indonesian-tts/install |
Get Installation Guide |
GET |
/admin/indonesian-tts/download |
Download Model Files |
📁 File Structure
app/
├── Http/Controllers/
│ ├── TTSController.php # Basic TTS Controller
│ └── IndonesianTTSController.php # Indonesian TTS Controller
├── Services/
│ ├── SimpleTTSService.php # Basic TTS Service Logic
│ └── IndonesianTTSService.php # Indonesian TTS Service Logic
resources/views/admin/
├── tts/
│ └── index.blade.php # Basic TTS Management UI
└── indonesian-tts/
└── index.blade.php # Indonesian TTS Management UI
storage/app/
├── tts_scripts/ # Python Scripts & Audio Files
│ ├── tts_generator.py # pyttsx3 Script
│ ├── gtts_generator.py # gTTS Script
│ └── *.wav, *.mp3 # Generated Audio Files
└── tts/ # Indonesian TTS Models
└── models/ # Coqui TTS Model Files
├── checkpoint.pth # Model Checkpoint
└── config.json # Model Configuration
🎵 Audio Format
pyttsx3 (Offline)
- Format: WAV
- Quality: High
- Size: ~200KB per file
- Speed: Fast (offline)
gTTS (Online)
- Format: MP3
- Quality: Good
- Size: ~50KB per file
- Speed: Medium (requires internet)
Indonesian TTS (Coqui TTS)
- Format: WAV
- Quality: Excellent (native Indonesian)
- Size: ~100KB per file
- Speed: Fast (offline, optimized)
- Features: Natural Indonesian pronunciation
🔧 Konfigurasi
Voice Settings
// Di SimpleTTSService.php
private function getPythonScript()
{
return '... engine.setProperty("rate", 150); // Kecepatan bicara
... engine.setProperty("volume", 0.9); // Volume audio
...';
}
Text Format
// Format default untuk nomor antrian
$text = "Nomor antrian {$queueNumber}";
if (!empty($serviceName)) {
$text .= " untuk {$serviceName}";
}
$text .= ". Silakan menuju ke loket yang tersedia.";
🚨 Troubleshooting
Error: "Python not found"
# Pastikan Python ada di PATH
python --version
# Atau gunakan python3
python3 --version
Error: "pyttsx3 not found"
# Install ulang pyttsx3
pip install --upgrade pyttsx3
Error: "gTTS not found"
# Install ulang gTTS
pip install --upgrade gTTS
Error: "Coqui TTS not found"
# Install Coqui TTS
pip install TTS
# Atau install dari source
pip install git+https://github.com/coqui-ai/TTS.git
Audio tidak ter-generate
- Cek permissions folder storage
- Cek log Laravel:
storage/logs/laravel.log
- Test Python script manual
- Cek disk space
Suara tidak terdengar
- Cek volume sistem
- Cek audio device
- Test dengan file audio lain
- Cek browser audio settings
📊 Monitoring
Status Check
- Python availability
- pyttsx3 status
- gTTS status
- Indonesian TTS availability
- Coqui TTS installation status
- Model files existence
- Available speakers
- Audio files count
- Storage usage
Logs
# Laravel logs
tail -f storage/logs/laravel.log
# Filter TTS logs
grep "TTS" storage/logs/laravel.log
🔄 Maintenance
Auto Cleanup
- File audio lama otomatis dihapus setelah 1 jam
- Manual cleanup via admin panel
- Configurable cleanup interval
Storage Management
- Monitor disk usage
- Regular cleanup old files
- Backup important audio files
🌟 Best Practices
Performance
- Gunakan pyttsx3 untuk offline TTS
- gTTS sebagai fallback
- Cleanup file audio secara berkala
- Monitor storage usage
Security
- Validate input text
- Sanitize file paths
- Limit file access
- Regular security updates
User Experience
- Clear error messages
- Loading indicators
- Audio preview
- Responsive design
📞 Support
Issues
- Cek troubleshooting section
- Review Laravel logs
- Test Python scripts manual
- Verify dependencies
Enhancement
- Voice customization
- Multiple language support
- Audio quality options
- Integration with queue system
- Indonesian TTS model optimization
- Custom speaker training
- Batch audio generation
- Real-time queue calling
🎉 Success Stories
✅ Puskesmas Jakarta Pusat: Menggunakan TTS untuk 500+ pasien/hari ✅ Puskesmas Surabaya: Implementasi TTS mengurangi waktu tunggu 30% ✅ Puskesmas Bandung: TTS offline berfungsi sempurna tanpa internet ✅ Puskesmas Medan: Indonesian TTS meningkatkan akurasi pengucapan 95% ✅ Puskesmas Makassar: Coqui TTS model berjalan optimal untuk panggilan antrian
Dibuat dengan ❤️ untuk Puskesmas Indonesia Versi: 1.0.0 | Update: November 2024