MIF_E31222851/TTS_README.md

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

  1. Masukkan nomor antrian (contoh: "001")
  2. Masukkan nama layanan (contoh: "Poli Umum")
  3. Klik "Generate TTS"
  4. Tunggu proses generate selesai
  5. 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

  1. Cek permissions folder storage
  2. Cek log Laravel: storage/logs/laravel.log
  3. Test Python script manual
  4. Cek disk space

Suara tidak terdengar

  1. Cek volume sistem
  2. Cek audio device
  3. Test dengan file audio lain
  4. 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