tts_id / tts_standalone.py
aryo100's picture
first commit
fbb4cab
#!/usr/bin/env python3
"""
Standalone TTS Program untuk Bahasa Indonesia
Berdasarkan app.py - TTS Indonesiaku Gratis
Program ini menghasilkan file audio dari teks Bahasa Indonesia
dengan menggunakan model TTS yang sudah dilatih khusus untuk bahasa Indonesia.
Parameter:
- text: Teks yang akan diubah menjadi suara
- file_path: Path file output audio (.wav)
"""
import subprocess
import html
from pathlib import Path
try:
from g2pid import G2P
# Inisialisasi G2P (Grapheme to Phoneme)
g2p = G2P()
G2P_AVAILABLE = True
except ImportError:
print("WARNING: G2P module tidak tersedia. Install dependencies dengan: pip install -r requirements.txt")
G2P_AVAILABLE = False
# Parameter default untuk konfigurasi
params = {
"model_path": "checkpoint_1260000-inference.pth",
"config_path": "config.json",
# "speaker": "ardi" # Default speaker
"speaker": "gadis" # Default speaker
}
# params = {
# "model_path": "kobov2.pth",
# "config_path": "config.json",
# # "speaker": "kobov2.index" # Default speaker
# "speaker": "gadis",
# }
def generate_tts(text, file_path, speaker="ardi"):
"""
Generate TTS audio dari teks Bahasa Indonesia
Args:
text (str): Teks yang akan diubah menjadi suara
file_path (str): Path file output audio (.wav)
speaker (str): Nama speaker (default: "ardi")
Returns:
bool: True jika berhasil, False jika gagal
"""
try:
print(f"Memproses teks: {text}")
# Konversi teks ke format TTS menggunakan G2P jika tersedia
if G2P_AVAILABLE:
print("Mengonversi teks ke fonem...")
text_to_tts = g2p(text)
print(f"Teks setelah konversi G2P: {text_to_tts}")
else:
print("WARNING: Menggunakan teks asli tanpa konversi G2P")
text_to_tts = text
# Pastikan direktori output ada
output_path = Path(file_path)
output_path.parent.mkdir(parents=True, exist_ok=True)
# Perintah untuk menjalankan TTS
command = [
"tts",
"--text", text_to_tts,
"--model_path", params["model_path"],
"--config_path", params["config_path"],
"--speaker_idx", speaker,
"--out_path", str(output_path)
]
print("Menjalankan proses TTS...")
print(f"Command: {' '.join(command)}")
# Jalankan proses TTS
result = subprocess.run(command, capture_output=True, text=True)
if result.returncode != 0:
print(f"Error: {result.stderr}")
return False
print(f"SUCCESS: Audio berhasil dibuat: {file_path}")
return True
except Exception as e:
print(f"ERROR: {str(e)}")
return False
def main():
"""
Fungsi utama dengan parameter yang diminta
"""
# Parameter sesuai permintaan
text = "Selamat pagi, nama saya Aryo."
file_path = "output_id_coqui.wav"
print("=" * 60)
print("TTS Standalone - Bahasa Indonesia")
print("=" * 60)
print(f"Teks: {text}")
print(f"Output file: {file_path}")
print(f"Speaker: {params['speaker']}")
print("=" * 60)
# Generate TTS
success = generate_tts(text, file_path, params["speaker"])
if success:
print("\nSUCCESS: Proses TTS selesai!")
print(f"File audio tersimpan di: {file_path}")
else:
print("\nERROR: Proses TTS gagal!")
print("Pastikan:")
print("1. Model checkpoint_1260000-inference.pth tersedia")
print("2. File config.json tersedia")
print("3. TTS library terinstall (pip install TTS)")
print("4. Speaker tersedia dalam model")
print("5. Dependencies terinstall: pip install -r requirements.txt")
if __name__ == "__main__":
main()