Pendahuluan
Voice over menjadi elemen penting dalam video edukasi, iklan, atau konten e‑learning. Membuatnya secara manual memerlukan talent suara, studio, dan waktu yang tidak sedikit. Tutorial ini menunjukkan cara menghasilkan voice over Bahasa Indonesia secara otomatis menggunakan model AI text‑to‑speech (TTS), dengan bantuan tool penulisan AI untuk skrip dan tool editing audio untuk kualitas produksi.
Arsitektur singkat
[Script Generator] → [TTS Engine] → [Audio Post‑Processing] → [Video Integration]
- Script Generator: ChatGPT Plus, Claude Pro, atau Gemini Advanced.
- TTS Engine: Google Cloud Text‑to‑Speech (gratis tier) atau model open‑source Coqui TTS.
- Audio Post‑Processing: FFmpeg (normalisasi, trimming, noise reduction).
- Video Integration (opsional): Canva Pro atau Midjourney + Remove.bg untuk visual.
Prasyarat & Persiapan
| Kebutuhan | Detail |
|---|---|
| Akun AI Chat | ChatGPT Plus (https://tools.jartekindo.com/tool/chatgpt-plus/), Claude Pro, atau Gemini Advanced |
| Akun Google Cloud | Enable Text‑to‑Speech API dan buat Service Account JSON |
| Python 3.9+ | python3 -m venv venv && source venv/bin/activate |
| FFmpeg | sudo apt-get install ffmpeg (Linux) atau instal via Homebrew pada macOS |
| Optional: Visual | Canva Pro (https://tools.jartekindo.com/tool/canva-pro/) atau Midjourney (https://tools.jartekindo.com/tool/midjourney/) |
| Optional: Prompt Writing | Notion AI, Jasper, Writesonic, Copy.ai untuk memperkaya skrip |
Langkah Demi Langkah
Step 1 – Siapkan Lingkungan Python
# Buat dan aktifkan virtual environment
python3 -m venv venv
source venv/bin/activate
# Instal dependensi
pip install google-cloud-texttospeech tqdm
Step 2 – Buat Skrip dengan AI Chat
Gunakan ChatGPT Plus untuk menghasilkan naskah. Contoh prompt:
“Buatkan naskah video tutorial 2 menit tentang cara menginstal Docker di Ubuntu, dalam Bahasa Indonesia, dengan gaya profesional.”
Anda dapat menyalin output ke file script.txt. Jika ingin variasi, coba Claude Pro atau Gemini Advanced.
Step 3 – Konversi Teks ke Audio dengan Google Cloud TTS
- Unduh Service Account JSON dari Google Cloud Console dan simpan sebagai
gcp-key.json. - Script Python (
tts.py):
import os
from google.cloud import texttospeech
from tqdm import tqdm
# Inisialisasi client
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "gcp-key.json"
client = texttospeech.TextToSpeechClient()
def synthesize(text, output_path):
input_text = texttospeech.SynthesisInput(text=text)
# Pilih voice Bahasa Indonesia (female)
voice = texttospeech.VoiceSelectionParams(
language_code="id-ID",
name="id-ID-Wavenet-A", # atau "id-ID-Standard-A"
ssml_gender=texttospeech.SsmlVoiceGender.FEMALE,
)
# Audio config
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16,
speaking_rate=1.0,
pitch=0.0,
volume_gain_db=0.0,
)
response = client.synthesize_speech(
input=input_text, voice=voice, audio_config=audio_config
)
# Simpan file .wav
with open(output_path, "wb") as out:
out.write(response.audio_content)
if __name__ == "__main__":
with open("script.txt", "r", encoding="utf-8") as f:
lines = [l.strip() for l in f if l.strip()]
for idx, line in enumerate(tqdm(lines, desc="Synthesizing")):
out_file = f"output_{idx:03d}.wav"
synthesize(line, out_file)
Jalankan:
python tts.py
Setiap kalimat akan menjadi file audio terpisah (output_000.wav, ...). Memisahkan per kalimat memudahkan editing selanjutnya.
Step 4 – Gabungkan & Optimalkan Audio
Gunakan FFmpeg untuk menggabungkan, normalisasi, dan menghilangkan jeda berlebih.
# Buat file list.txt untuk concat
for f in output_*.wav; do echo "file '$f'" >> list.txt; done
# Gabungkan, normalisasi ke -3 dB LUFS, dan hapus silence >0.3s
ffmpeg -f concat -safe 0 -i list.txt -af "loudnorm=I=-16:TP=-1.5:LRA=11, silenceremove=start_periods=1:start_duration=0.3:start_threshold=-35dB" -c:a pcm_s16le final_voice_over.wav
Step 5 – Tambahkan Musik Latar (Opsional)
Jika diperlukan, overlay musik latar dengan volume 20 %:
ffmpeg -i final_voice_over.wav -i background_music.mp3 -filter_complex "[1:a]volume=0.2[a1];[0:a][a1]amix=inputs=2:duration=first:dropout_transition=2" -c:a libmp3lame -b:a 192k voice_over_with_music.mp3
Step 6 – Integrasi ke Video
- Buat visual menggunakan Canva Pro atau Midjourney. Simpan gambar sebagai
slide_*.png. - Hapus latar belakang otomatis dengan Remove.bg bila diperlukan.
- Gabungkan gambar dan audio:
# Contoh: 5 slide, masing‑masing 4 detik
ffmpeg -framerate 1/4 -i slide_%02d.png -i voice_over_with_music.mp3 -c:v libx264 -r 30 -pix_fmt yuv420p -c:a aac -b:a 192k final_video.mp4
Tips Optimasi & Keamanan
- Cache Service Account: Simpan
gcp-key.jsondi folder yang tidak di‑commit ke repo (.gitignore). - Rate Limiting: Google Cloud TTS memiliki kuota harian; gunakan batch synthesis bila volume tinggi.
- Voice Selection:
Wavenetmemberikan kualitas natural, tetapi biaya lebih tinggi dibandingStandard. - Audio Normalization: Selalu lakukan
loudnormuntuk konsistensi volume pada platform streaming. - CI/CD: Automasi pipeline (GitHub Actions) dapat menjalankan
tts.pydanffmpegsecara otomatis pada setiap commit skrip.
Troubleshooting Error Umum
| Error | Penyebab | Solusi |
|---|---|---|
PermissionDenied: Request had insufficient authentication scopes. |
Service Account tidak memiliki izin Text-to-Speech API. |
Aktifkan API di Google Cloud Console dan pastikan role roles/texttospeech.admin. |
InvalidArgument: languageCode not supported. |
Kode bahasa salah atau tidak tersedia. | Gunakan id-ID untuk Bahasa Indonesia. |
ffmpeg: Invalid argument |
File list tidak di‑generate atau path salah. | Pastikan list.txt berisi baris file 'output_000.wav' dan jalankan dari direktori yang sama. |
Audio clipping / distortion |
Gain terlalu tinggi pada volume_gain_db. |
Turunkan nilai gain atau gunakan loudnorm untuk otomatis. |
No such file or directory: 'background_music.mp3' |
File musik tidak ditemukan. | Verifikasi path atau gunakan wget/curl untuk mengunduh contoh musik royalty‑free. |
Kesimpulan
Dengan kombinasi ChatGPT Plus, Google Cloud Text‑to‑Speech, dan FFmpeg, Anda dapat menghasilkan voice over Bahasa Indonesia yang profesional dalam hitungan menit. Proses ini dapat di‑otomatisasi sepenuhnya, meminimalkan biaya produksi, dan tetap menjaga kualitas audio yang layak untuk publikasi di YouTube, LMS, atau platform e‑learning lainnya. Manfaatkan tool visual seperti Canva Pro atau Midjourney untuk melengkapi video, dan pastikan keamanan kredensial serta kepatuhan kuota API untuk produksi skala besar.