CARA MEMBUAT VIDEO PRESENTASI MENGGUNAKAN AI
CARA MEMBUAT VIDEO PRESENTASI MENGGUNAKAN AI
Sekarang kita akan membuat video presentasi durasi 5 menit dari bahan naskah presentasi proposal menjadi video presentasi berikut ini:
Mantap π, berarti sekarang kita perlu mengubah Bahan Presentasi Proposal (PDF) itu menjadi video presentasi berdurasi maksimal 5 menit.
Untuk membuat video, langkah teknisnya:
- Slide → diambil dari file presentasi (sudah Anda siapkan di PDF).
- Narasi suara (voice-over) → teks presentasi dibacakan dengan durasi ±5 menit.
- Output → file video (format MP4), yang bisa diputar saat presentasi di venue BRIN Jakarta.
π Supaya sesuai target 5 menit, saya sarankan kita buat alur videonya:
- Opening (20 detik): Judul & identitas tim.
- Masalah (40 detik).
- Solusi & Formula MMAG (80 detik).
- Target & Keunggulan (40 detik).
- Dampak & Potensi Skala (40 detik).
- Timeline (30 detik).
- RAB Ringkas (30 detik).
- Closing (10 detik).
Total = ± 5 menit.
⚡ Pertanyaan sebelum saya mulai buatkan file videonya:
Apakah Anda ingin:
- Video dengan narasi suara otomatis (text-to-speech) bahasa Indonesia?
- Atau cukup video berisi slide + teks berjalan (tanpa suara, hanya musik latar)?
Kalau boleh pilih, Anda lebih suka yang mana?
Kita pilih membuat Video dengan narasi suara otomatis (text-to-speech) bahasa Indonesia.
Sip π berarti kita akan bikin video presentasi (MP4) berdurasi ±5 menit dengan:
- Slide dari bahan presentasi proposal (file PDF/PPT yang Anda sediakan).
- Narasi otomatis bahasa Indonesia (TTS) → membaca naskah sesuai poin penting di setiap slide.
- Output: file video (format MP4) siap diputar di venue BRIN.
⚡ Supaya hasilnya pas:
- Saya akan ekstrak slide utama dari bahan presentasi Anda.
- Saya buat naskah narasi singkat (bahasa Indonesia, 5 menit).
- Saya gabungkan slide + narasi TTS menjadi video.
✍️ Contoh potongan narasi (draft TTS):
“SmartNutriChefAI adalah aplikasi pintar berbasis kecerdasan buatan dengan Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam. Aplikasi ini membantu masyarakat menyusun menu makanan sehat, bergizi seimbang, dan sesuai dengan bahan pangan lokal yang tersedia…”
❓Sebelum saya mulai proses pembuatan video:
Apakah Anda ingin musik latar lembut (misalnya instrumental ringan) ditambahkan agar lebih menarik, atau cukup suara narasi saja tanpa musik?
Cukup suara narasi saja tanpa musik Video dengan narasi suara otomatis (text-to-speech), tanpa musik.
Mantap, jelas ✅
Berarti videonya akan berisi:
- Slide presentasi dari proposal SmartNutriChefAI
- Narasi otomatis (bahasa Indonesia) sesuai isi slide
- Tanpa musik latar, agar lebih fokus dan formal
π Alurnya saya atur jadi ±5 menit:
- Opening (20 detik) → Judul, tagline, identitas tim
- Masalah (40 detik)
- Solusi & Formula MMAG (80 detik)
- Target & Keunggulan (40 detik)
- Dampak & Potensi Skala (40 detik)
- Timeline (30 detik)
- RAB Ringkas (30 detik)
- Closing (10 detik)
Total: ~5 menit
⚡ Langkah teknis berikutnya:
Saya akan:
- Ambil isi dari file presentasi PDF yang sudah Anda lampirkan.
- Susun naskah narasi otomatis (TTS).
- Buat video MP4 berisi slide + narasi.
π Pertanyaan terakhir sebelum saya jalankan:
Apakah Anda ingin setiap slide ditampilkan penuh layar dengan narasi membacakan poin-poin, atau cukup teks narasi langsung ditampilkan di bawah slide (mirip subtitle)?
Video cukup dengan teks narasi langsung ditampilkan di bawah slide (mirip subtitle).
Oke, jelas ✅
Jadi videonya nanti:
- Slide penuh layar dari presentasi proposal.
- Narasi otomatis bahasa Indonesia membacakan isi utama slide.
- Teks narasi ditampilkan sebagai subtitle di bawah slide (jadi penonton bisa baca sekaligus dengar).
- Durasi total ±5 menit.
π Langkah saya berikutnya:
- Susun naskah narasi ringkas per slide (agar durasi pas).
- Generate suara TTS bahasa Indonesia.
- Sinkronkan slide + narasi + subtitle.
- Hasilkan file MP4 final siap diputar.
✍️ Contoh narasi (untuk Slide 2 – Masalah):
“Indonesia menghadapi masalah gizi ganda. Sebagian anak masih kekurangan gizi, sementara remaja dan dewasa banyak yang obesitas. Selain itu, literasi gizi rendah dan harga pangan tidak stabil. Aplikasi nutrisi yang ada belum memperhatikan bahan lokal dan kondisi kesehatan personal.”
❓Mau saya langsung buatkan naskah narasi lengkap (5 menit) dulu supaya bisa Anda cek, sebelum saya lanjut ke tahap bikin video MP4?
Mengkonversi Nadkah Asli Panjang Menjadi Naskah Narasi lengkap Berdurasi 5 Menit
Mau, kamu langsung buatkan naskah narasi lengkap (5 menit) dulu.
Baik π Saya buatkan naskah narasi lengkap berdurasi ±5 menit (sekitar 650–750 kata) sesuai urutan slide yang ada di bahan presentasi Anda. Narasi ini akan dibacakan otomatis (TTS) dalam video, dan teksnya juga bisa tampil sebagai subtitle.
π️ Naskah Narasi Lengkap Presentasi SmartNutriChefAI (5 Menit)
Slide 1 – Judul & Identitas Tim (20 detik)
“Selamat siang, perkenalkan kami dari tim SmartNutriChefAI.
SmartNutriChefAI adalah aplikasi pintar berbasis kecerdasan buatan dengan Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam.
Aplikasi ini membantu masyarakat menyusun menu sehat, bergizi seimbang, dan sesuai dengan bahan pangan lokal.
Tagline kami adalah: Makan sehat, gizi tepat, berbasis AI.”
Slide 2 – Masalah (40 detik)
“Indonesia masih menghadapi masalah gizi ganda.
Data Kementerian Kesehatan menunjukkan, 17 koma 7 persen anak usia sekolah mengalami kekurangan gizi, sementara 21 koma 8 persen remaja dan dewasa mengalami obesitas.
Selain itu, literasi gizi masyarakat masih rendah, pola makan tidak seimbang, dan harga pangan sering tidak stabil.
Aplikasi nutrisi yang ada belum memperhatikan kondisi kesehatan personal dan belum mengoptimalkan bahan pangan lokal.
Inilah masalah nyata yang ingin kami jawab dengan SmartNutriChefAI.”
Slide 3 – Solusi & Formula MMAG (80 detik)
“Solusi kami adalah SmartNutriChefAI, aplikasi kecerdasan buatan yang memberikan rekomendasi menu sehat secara personal.
Kami memperkenalkan metode Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam.
Formula ini memastikan keseimbangan asupan harian dengan pendekatan yang sederhana, ilmiah, dan sesuai dengan budaya makan masyarakat Indonesia.
Fitur utama aplikasi ini antara lain:
Pertama, AI Gizi Personal yang menghitung kebutuhan kalori dan nutrisi setiap individu.
Kedua, algoritma Formula MMAG yang unik, untuk menjaga keseimbangan antara minyak, makanan pokok, air, dan garam.
Ketiga, pemindaian label gizi menggunakan barcode atau QR code, sehingga masyarakat lebih mudah memahami kandungan pangan kemasan.
Keempat, resep otomatis berbasis bahan lokal, yang dirancang agar sehat dan terjangkau.
Dan terakhir, edukasi gizi interaktif untuk meningkatkan literasi gizi masyarakat.
Sebagai contoh, kami mengembangkan resep Nasi Santan Sup Tahu dengan modifikasi Formula MMAG.
Resep ini menambahkan lemak sehat, memperkaya mikronutrien, menjaga asupan cairan, dan mengatur penggunaan garam agar tetap sehat.
Inilah cara nyata Formula MMAG membantu masyarakat makan lebih sehat.”
Slide 4 – Target & Keunggulan (40 detik)
“Target pengguna aplikasi ini adalah masyarakat umum, sekolah, klinik gizi, dan pemerintah daerah.
Keunggulan utama SmartNutriChefAI ada empat.
Pertama, memiliki algoritma Formula MMAG yang unik dan ilmiah.
Kedua, bersifat personal dan adaptif sesuai kondisi kesehatan pengguna.
Ketiga, mendukung konsumsi bahan pangan lokal, sehingga biaya lebih hemat dan berdampak pada ekonomi masyarakat.
Dan keempat, terintegrasi dengan modul edukasi gizi, sehingga bukan hanya memberi menu, tetapi juga mengubah perilaku makan.”
Slide 5 – Dampak & Potensi Skala (40 detik)
“SmartNutriChefAI membawa dampak yang luas.
Dampak pertama, menurunkan angka malnutrisi dan obesitas.
Dampak kedua, meningkatkan literasi gizi di masyarakat.
Dan dampak ketiga, mendorong konsumsi bahan pangan lokal yang lebih sehat dan berkelanjutan.
Potensi skalanya sangat besar.
SmartNutriChefAI dapat diadopsi secara nasional dengan kolaborasi pemerintah, sekolah, dan komunitas.
Bahkan, aplikasi ini berpotensi dikembangkan ke tingkat regional, khususnya negara-negara ASEAN yang menghadapi masalah gizi serupa.”
Slide 6 – Timeline (30 detik)
“Rencana eksekusi kami berlangsung enam bulan.
Bulan pertama dan kedua, riset kebutuhan dan desain sistem.
Bulan ketiga dan keempat, pengembangan aplikasi berbasis kecerdasan buatan dan mobile.
Bulan kelima, uji coba terbatas di dua kota.
Dan bulan keenam, evaluasi, perbaikan fitur, serta peluncuran publik.”
Slide 7 – RAB Ringkas (30 detik)
“Rencana anggaran biaya untuk proyek ini adalah 185 juta rupiah.
Rinciannya meliputi:
85 juta untuk pengembangan kecerdasan buatan dan algoritma Formula MMAG.
65 juta untuk pengembangan aplikasi mobile.
10 juta untuk server dan database cloud.
8 juta untuk pengumpulan data gizi dan resep lokal.
12 juta untuk uji coba lapangan.
Dan 5 juta untuk pelatihan pengguna awal.
Total keseluruhan, 185 juta rupiah.”
Slide 8 – Penutup (10 detik)
“Demikian presentasi SmartNutriChefAI.
Kami percaya aplikasi ini adalah wujud nyata AI for Good, membantu masyarakat makan lebih sehat, mendukung ketahanan pangan lokal, dan berkontribusi pada Indonesia yang lebih kuat.
Terima kasih.”
⏱️ Estimasi total durasi: ± 5 menit.
Apakah Anda ingin saya langsung lanjutkan ke tahap membuat video MP4 dengan narasi otomatis sesuai naskah ini?
Mau, kamu langsung lanjutkan ke tahap membuat video MP4 dengan narasi otomatis sesuai naskah ini.
Siap π
Untuk membuat video MP4 dengan narasi otomatis saya butuh gabungkan 3 hal:
- Slide → diambil dari presentasi PDF/PPT yang sudah Anda unggah.
- Narasi suara otomatis (TTS bahasa Indonesia) → membacakan naskah yang barusan saya susun.
- Subtitle (teks narasi) → ditampilkan di bawah slide.
⚠️ Tapi saat ini, di lingkungan ChatGPT saya belum bisa langsung menghasilkan file video dengan audio (MP4 + suara). Yang bisa saya lakukan adalah:
- Buatkan file audio TTS bahasa Indonesia (misalnya format MP3 atau WAV).
- Buatkan slide presentasi (PPTX / gambar per slide).
- Lalu saya sertakan instruksi Python/FFmpeg yang bisa Anda jalankan di komputer Anda untuk menggabungkan slide + audio jadi video MP4.
π Jadi, langkah paling aman:
- Saya generate narasi TTS bahasa Indonesia per slide (format MP3).
- Saya ekstrak slide presentasi jadi gambar.
- Saya kasih Anda script Python siap jalan untuk gabungkan audio + slide menjadi video (durasi total 5 menit).
Apakah Anda mau saya mulai dari buat file audio narasi TTS (MP3) dulu untuk semua slide?.
Mau kamu mulai dari buat file audio narasi TTS (MP3) dulu untuk semua slide.
Sip π kita mulai dari audio narasi (MP3) dulu.
Saya akan hasilkan file per slide supaya mudah disinkronkan nanti ke video.
Tapi perlu saya jelaskan dulu ya π:
Di lingkungan ini saya belum bisa langsung generate audio TTS. Yang bisa saya lakukan adalah:
- Menyediakan script Python yang bisa Anda jalankan di laptop/PC untuk otomatis membuat file MP3 per slide dengan suara bahasa Indonesia.
- Script ini akan menggunakan library TTS populer seperti gTTS (Google Text-to-Speech) atau pyttsx3.
✅ Script Python untuk Generate Audio TTS per Slide
from gtts import gTTS
# Narasi per slide
narasi = {
"slide1": "Selamat siang, perkenalkan kami dari tim SmartNutriChefAI. SmartNutriChefAI adalah aplikasi pintar berbasis kecerdasan buatan dengan Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam. Aplikasi ini membantu masyarakat menyusun menu sehat, bergizi seimbang, dan sesuai dengan bahan pangan lokal. Tagline kami adalah: Makan sehat, gizi tepat, berbasis AI.",
"slide2": "Indonesia masih menghadapi masalah gizi ganda. Data Kementerian Kesehatan menunjukkan, 17 koma 7 persen anak usia sekolah mengalami kekurangan gizi, sementara 21 koma 8 persen remaja dan dewasa mengalami obesitas. Selain itu, literasi gizi masyarakat masih rendah, pola makan tidak seimbang, dan harga pangan sering tidak stabil. Aplikasi nutrisi yang ada belum memperhatikan kondisi kesehatan personal dan belum mengoptimalkan bahan pangan lokal. Inilah masalah nyata yang ingin kami jawab dengan SmartNutriChefAI.",
"slide3": "Solusi kami adalah SmartNutriChefAI, aplikasi kecerdasan buatan yang memberikan rekomendasi menu sehat secara personal. Kami memperkenalkan metode Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam. Formula ini memastikan keseimbangan asupan harian dengan pendekatan yang sederhana, ilmiah, dan sesuai dengan budaya makan masyarakat Indonesia. Fitur utama aplikasi ini antara lain: Pertama, AI Gizi Personal yang menghitung kebutuhan kalori dan nutrisi setiap individu. Kedua, algoritma Formula MMAG yang unik. Ketiga, pemindaian label gizi menggunakan barcode atau QR code. Keempat, resep otomatis berbasis bahan lokal. Dan terakhir, edukasi gizi interaktif. Sebagai contoh, kami mengembangkan resep Nasi Santan Sup Tahu dengan modifikasi Formula MMAG.",
"slide4": "Target pengguna aplikasi ini adalah masyarakat umum, sekolah, klinik gizi, dan pemerintah daerah. Keunggulan utama SmartNutriChefAI ada empat. Pertama, memiliki algoritma Formula MMAG yang unik dan ilmiah. Kedua, bersifat personal dan adaptif sesuai kondisi kesehatan pengguna. Ketiga, mendukung konsumsi bahan pangan lokal. Dan keempat, terintegrasi dengan modul edukasi gizi, sehingga bukan hanya memberi menu, tetapi juga mengubah perilaku makan.",
"slide5": "SmartNutriChefAI membawa dampak yang luas. Dampak pertama, menurunkan angka malnutrisi dan obesitas. Dampak kedua, meningkatkan literasi gizi di masyarakat. Dan dampak ketiga, mendorong konsumsi bahan pangan lokal yang lebih sehat dan berkelanjutan. Potensi skalanya sangat besar. SmartNutriChefAI dapat diadopsi secara nasional dengan kolaborasi pemerintah, sekolah, dan komunitas. Bahkan, aplikasi ini berpotensi dikembangkan ke tingkat regional, khususnya negara-negara ASEAN yang menghadapi masalah gizi serupa.",
"slide6": "Rencana eksekusi kami berlangsung enam bulan. Bulan pertama dan kedua, riset kebutuhan dan desain sistem. Bulan ketiga dan keempat, pengembangan aplikasi berbasis kecerdasan buatan dan mobile. Bulan kelima, uji coba terbatas di dua kota. Dan bulan keenam, evaluasi, perbaikan fitur, serta peluncuran publik.",
"slide7": "Rencana anggaran biaya untuk proyek ini adalah 185 juta rupiah. Rinciannya meliputi: 85 juta untuk pengembangan kecerdasan buatan dan algoritma Formula MMAG. 65 juta untuk pengembangan aplikasi mobile. 10 juta untuk server dan database cloud. 8 juta untuk pengumpulan data gizi dan resep lokal. 12 juta untuk uji coba lapangan. Dan 5 juta untuk pelatihan pengguna awal. Total keseluruhan, 185 juta rupiah.",
"slide8": "Demikian presentasi SmartNutriChefAI. Kami percaya aplikasi ini adalah wujud nyata AI for Good, membantu masyarakat makan lebih sehat, mendukung ketahanan pangan lokal, dan berkontribusi pada Indonesia yang lebih kuat. Terima kasih."
}
# Generate audio per slide
for slide, teks in narasi.items():
tts = gTTS(teks, lang='id')
filename = f"{slide}.mp3"
tts.save(filename)
print(f"Audio untuk {slide} berhasil dibuat: {filename}")
π Cara Menggunakan:
- Install library gTTS:
pip install gTTS
- Simpan script di file Python, misalnya
buat_audio.py
. - Jalankan:
python buat_audio.py
- Hasil: file audio
slide1.mp3
,slide2.mp3
, …slide8.mp3
.
Mau saya lanjutkan juga dengan script untuk menggabungkan audio + slide jadi video MP4 setelah audio TTS ini jadi?.
Sebelum bertanya lebih lanjut ke ChatGPT, di sini kita sudah mendapatkan file audio (mp3) untuk bahan membuat video (mp4), yaitu:
- File slide1.mp3
- File slide2.mp3
- File slide3.mp3
- File slide4.mp3
- File slide5.mp3
- File slide6.mp3
- File slide7.mp3
- File slide8.mp3
Selanjutnya kita lanjutkan dengan script untuk menggabungkan audio + slide jadi video MP4.
Mau, kamu lanjutkan dengan script untuk menggabungkan audio + slide jadi video MP4 setelah audio TTS ini jadi.
Sip π, saya lanjutkan.
Setelah Anda berhasil membuat file audio TTS (slide1.mp3
, slide2.mp3
, dst.), kita perlu gabungkan gambar slide dengan audio narasi menjadi satu video MP4.
Untuk itu kita bisa pakai MoviePy (Python library).
✅ Script Python: Gabungkan Slide + Audio TTS → MP4
from moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips
# Daftar slide (gambar) dan audio (mp3) sesuai urutan
slides = [
{"img": "slide1.png", "audio": "slide1.mp3"},
{"img": "slide2.png", "audio": "slide2.mp3"},
{"img": "slide3.png", "audio": "slide3.mp3"},
{"img": "slide4.png", "audio": "slide4.mp3"},
{"img": "slide5.png", "audio": "slide5.mp3"},
{"img": "slide6.png", "audio": "slide6.mp3"},
{"img": "slide7.png", "audio": "slide7.mp3"},
{"img": "slide8.png", "audio": "slide8.mp3"},
]
video_clips = []
for s in slides:
audio = AudioFileClip(s["audio"])
img = ImageClip(s["img"]).set_duration(audio.duration).set_audio(audio)
img = img.set_fps(24).resize(height=720) # resolusi 720p
video_clips.append(img)
# Gabungkan semua slide jadi satu video
final_video = concatenate_videoclips(video_clips)
final_video.write_videofile("SmartNutriChefAI_Presentasi.mp4", codec="libx264", audio_codec="aac")
π Cara Menggunakan:
-
Pastikan Anda punya gambar slide (
slide1.png
,slide2.png
, …slide8.png
).
π Bisa diekspor langsung dari PowerPoint/PDF → Save As → PNG/JPG per slide. -
Pastikan file audio (
slide1.mp3
, dst.) hasil TTS sudah tersedia di folder yang sama. -
Install MoviePy:
pip install moviepy
-
Jalankan script di atas.
-
Hasilnya → file video
SmartNutriChefAI_Presentasi.mp4
berdurasi ±5 menit, dengan narasi otomatis.
π Pertanyaan:
Apakah Anda ingin saya buatkan juga script otomatis untuk mengekstrak slide (PDF → PNG) supaya langsung bisa dipakai, tanpa perlu manual export dari PowerPoint?.
Ternyata lewat HP, ketika script di atas dijalankan, ada muncul error.
Ketika script di atas dieksekusi, muncul error:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), main.dict)
File "
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/init.py", line 5, in
from moviepy.audio import fx as afx
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/audio/fx/init.py", line 5, in
from moviepy.audio.fx.AudioDelay import AudioDelay
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/audio/fx/AudioDelay.py", line 5, in
from moviepy.audio.AudioClip import CompositeAudioClip
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/audio/AudioClip.py", line 13, in
from moviepy.audio.io.ffmpeg_audiowriter import ffmpeg_audiowrite
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 7, in
from moviepy.config import FFMPEG_BINARY
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/moviepy/config.py", line 41, in
FFMPEG_BINARY = get_exe()
^^^^^^^^^
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/imageio/plugins/ffmpeg.py", line 173, in get_exe
return imageio_ffmpeg.get_ffmpeg_exe()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/imageio_ffmpeg/_utils.py", line 33, in get_ffmpeg_exe
raise RuntimeError(
RuntimeError: No ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
[Program finished]
Masalahnya jelas: MoviePy butuh FFmpeg, dan di Android (Pydroid 3) FFmpeg belum ada, sehingga muncul error “No ffmpeg exe could be found”.
Di bawah ini saya kasih solusi yang bekerja di Pydroid 3 + script lengkap untuk: (1) ekstrak slide dari PDF → PNG, (2) bikin audio TTS per slide (gTTS), (3) tempel teks narasi di bawah slide (subtitle ala bar putih), dan (4) gabungkan jadi MP4.
1) Instal dependensi (di Pydroid 3 → Pip)
Jalankan satu-satu:
pip install --upgrade pip
pip install imageio-ffmpeg moviepy pymupdf gTTS pillow
pymupdf
= render PDF → PNG tanpa butuh poppler (cocok di Android)
imageio-ffmpeg
= kita pakai untuk mengunduh FFmpeg ke folder yang bisa ditulis
moviepy
= gabung gambar+audio → video
gTTS
= TTS bahasa Indonesia
Pillow
= gambar subtitle ke bawah slide
2) Jalankan script ini (satu file, mis. buat_video.py
)
Pastikan file PDF Anda bernama sama seperti yang Anda upload:
SR Pakpahan-Bahan Presentasi Proposal.pdf
dan diletakkan di folder kerja Pydroid 3 yang sama dengan script.
import os, textwrap
import fitz # PyMuPDF
from gtts import gTTS
from PIL import Image, ImageDraw, ImageFont
# >>>>>>>>>>>>>>> KONFIGURASI <<<<<<<<<<<<<<<
PDF_PATH = "SR Pakpahan-Bahan Presentasi Proposal.pdf" # ganti bila beda
OUTPUT_MP4 = "SmartNutriChefAI_Presentasi.mp4"
SLIDE_DPI = 200
VIDEO_HEIGHT = 720 # 720p
FPS = 24
GENERATE_TTS = True # set False bila sudah punya slide1.mp3 ... slide8.mp3
ADD_SUBTITLES = True # render teks narasi di bawah slide
FFMPEG_HOME = "/storage/emulated/0/Download/ffmpeg_bin" # folder tulis utk FFmpeg
# Narasi per slide (silakan ubah/rapikan jika perlu)
narasi = {
1: "Selamat siang, perkenalkan kami dari tim SmartNutriChefAI. SmartNutriChefAI adalah aplikasi pintar berbasis kecerdasan buatan dengan Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam. Aplikasi ini membantu masyarakat menyusun menu sehat, bergizi seimbang, dan sesuai dengan bahan pangan lokal. Tagline kami adalah: Makan sehat, gizi tepat, berbasis AI.",
2: "Indonesia masih menghadapi masalah gizi ganda. Data Kementerian Kesehatan menunjukkan, 17 koma 7 persen anak usia sekolah mengalami kekurangan gizi, sementara 21 koma 8 persen remaja dan dewasa mengalami obesitas. Selain itu, literasi gizi masyarakat masih rendah, pola makan tidak seimbang, dan harga pangan sering tidak stabil. Aplikasi nutrisi yang ada belum memperhatikan kondisi kesehatan personal dan belum mengoptimalkan bahan pangan lokal. Inilah masalah nyata yang ingin kami jawab dengan SmartNutriChefAI.",
3: "Solusi kami adalah SmartNutriChefAI, aplikasi kecerdasan buatan yang memberikan rekomendasi menu sehat secara personal. Kami memperkenalkan metode Formula MMAG, yaitu Minyak, Makanan, Air, dan Garam. Formula ini memastikan keseimbangan asupan harian dengan pendekatan yang sederhana, ilmiah, dan sesuai dengan budaya makan masyarakat Indonesia. Fitur utama aplikasi ini antara lain: Pertama, AI Gizi Personal yang menghitung kebutuhan kalori dan nutrisi setiap individu. Kedua, algoritma Formula MMAG yang unik. Ketiga, pemindaian label gizi menggunakan barcode atau QR code. Keempat, resep otomatis berbasis bahan lokal. Dan terakhir, edukasi gizi interaktif. Sebagai contoh, kami mengembangkan resep Nasi Santan Sup Tahu dengan modifikasi Formula MMAG.",
4: "Target pengguna aplikasi ini adalah masyarakat umum, sekolah, klinik gizi, dan pemerintah daerah. Keunggulan utama SmartNutriChefAI ada empat. Pertama, memiliki algoritma Formula MMAG yang unik dan ilmiah. Kedua, bersifat personal dan adaptif sesuai kondisi kesehatan pengguna. Ketiga, mendukung konsumsi bahan pangan lokal. Dan keempat, terintegrasi dengan modul edukasi gizi, sehingga bukan hanya memberi menu, tetapi juga mengubah perilaku makan.",
5: "SmartNutriChefAI membawa dampak yang luas. Dampak pertama, menurunkan angka malnutrisi dan obesitas. Dampak kedua, meningkatkan literasi gizi di masyarakat. Dan dampak ketiga, mendorong konsumsi bahan pangan lokal yang lebih sehat dan berkelanjutan. Potensi skalanya sangat besar. SmartNutriChefAI dapat diadopsi secara nasional dengan kolaborasi pemerintah, sekolah, dan komunitas. Bahkan, aplikasi ini berpotensi dikembangkan ke tingkat regional, khususnya negara-negara ASEAN yang menghadapi masalah gizi serupa.",
6: "Rencana eksekusi kami berlangsung enam bulan. Bulan pertama dan kedua, riset kebutuhan dan desain sistem. Bulan ketiga dan keempat, pengembangan aplikasi berbasis kecerdasan buatan dan mobile. Bulan kelima, uji coba terbatas di dua kota. Dan bulan keenam, evaluasi, perbaikan fitur, serta peluncuran publik.",
7: "Rencana anggaran biaya untuk proyek ini adalah 185 juta rupiah. Rinciannya meliputi: 85 juta untuk pengembangan kecerdasan buatan dan algoritma Formula MMAG. 65 juta untuk pengembangan aplikasi mobile. 10 juta untuk server dan database cloud. 8 juta untuk pengumpulan data gizi dan resep lokal. 12 juta untuk uji coba lapangan. Dan 5 juta untuk pelatihan pengguna awal. Total keseluruhan, 185 juta rupiah.",
8: "Demikian presentasi SmartNutriChefAI. Kami percaya aplikasi ini adalah wujud nyata AI for Good, membantu masyarakat makan lebih sehat, mendukung ketahanan pangan lokal, dan berkontribusi pada Indonesia yang lebih kuat. Terima kasih."
}
# 1) Ekstrak slide dari PDF -> PNG
def pdf_to_pngs(pdf_path, dpi=200):
doc = fitz.open(pdf_path)
paths = []
for i, page in enumerate(doc, start=1):
pix = page.get_pixmap(dpi=dpi)
out = f"slide{i}.png"
pix.save(out)
paths.append(out)
doc.close()
return paths
# 2) Generate TTS per slide (gTTS)
def make_tts_files(narasi_dict):
for i, teks in narasi_dict.items():
mp3 = f"slide{i}.mp3"
if os.path.exists(mp3):
continue
tts = gTTS(teks, lang="id")
tts.save(mp3)
print("OK:", mp3)
# 3) Render subtitle ke bawah slide (Pillow)
def add_subtitle_to_image(img_path, caption, out_path, video_width=None):
im = Image.open(img_path).convert("RGB")
# Resize tinggi ke VIDEO_HEIGHT, jaga rasio
if video_width:
w0, h0 = im.size
scale = VIDEO_HEIGHT / float(h0)
im = im.resize((int(w0*scale), VIDEO_HEIGHT), Image.LANCZOS)
# Siapkan bar putih bawah
w, h = im.size
bar_h = int(h * 0.22) # 22% tinggi untuk subtitle
bar = Image.new("RGB", (w, bar_h), (255, 255, 255))
draw = ImageDraw.Draw(bar)
# Coba pakai font TrueType; kalau gagal, fallback default
try:
font = ImageFont.truetype("DejaVuSans.ttf", size=int(bar_h*0.18))
except:
font = ImageFont.load_default()
margin_x = int(w*0.04)
margin_y = int(bar_h*0.12)
max_width = w - 2*margin_x
# Bungkus teks supaya muat
wrapped = []
for line in caption.split("\n"):
wrapped.extend(textwrap.wrap(line, width=60)) # atur lebar baris
y = margin_y
for line in wrapped:
draw.text((margin_x, y), line, font=font, fill=(0,0,0))
_, lh = draw.textsize(line, font=font)
y += lh + int(bar_h*0.04)
# Gabung slide + bar
out = Image.new("RGB", (w, h + bar_h), (255,255,255))
out.paste(im, (0,0))
out.paste(bar, (0,h))
out.save(out_path, quality=95)
def prepare_caption_slides(slide_pngs, narasi_dict):
out_imgs = []
for i, p in enumerate(slide_pngs, start=1):
cap = narasi_dict.get(i, "")
outp = f"slide{i}_cap.png" if ADD_SUBTITLES else f"slide{i}_resized.png"
if ADD_SUBTITLES:
add_subtitle_to_image(p, cap, outp, video_width=True)
else:
# hanya resize ke 720p tinggi
im = Image.open(p).convert("RGB")
w0, h0 = im.size
scale = VIDEO_HEIGHT / float(h0)
im = im.resize((int(w0*scale), VIDEO_HEIGHT), Image.LANCZOS)
im.save(outp, quality=95)
out_imgs.append(outp)
return out_imgs
# 4) Siapkan FFmpeg lewat imageio-ffmpeg (Android-safe)
def ensure_ffmpeg():
import imageio_ffmpeg
os.makedirs(FFMPEG_HOME, exist_ok=True)
os.environ["IMAGEIO_FFMPEG_HOME"] = FFMPEG_HOME
exe = imageio_ffmpeg.get_ffmpeg_exe() # akan mengunduh ke FFMPEG_HOME bila belum ada
os.environ["IMAGEIO_FFMPEG_EXE"] = exe
print("FFmpeg OK:", exe)
# 5) Gabung gambar+audio -> MP4
def build_video(imgs, narasi_dict, out_mp4, fps=24):
# IMPORT setelah FFmpeg siap
from moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips
clips = []
for i, img in enumerate(imgs, start=1):
audio_path = f"slide{i}.mp3"
audio = AudioFileClip(audio_path)
clip = ImageClip(img).set_duration(audio.duration).set_audio(audio)
clip = clip.set_fps(fps)
clips.append(clip)
final = concatenate_videoclips(clips, method="chain")
final.write_videofile(out_mp4, codec="libx264", audio_codec="aac", fps=fps)
print("Video jadi ->", out_mp4)
def main():
# 1) PDF -> PNG
slides = pdf_to_pngs(PDF_PATH, dpi=SLIDE_DPI)
print("Slide PNG:", slides)
# 2) TTS
if GENERATE_TTS:
make_tts_files(narasi)
# 3) Subtitle gambar
cap_imgs = prepare_caption_slides(slides, narasi)
# 4) FFmpeg siapkan
ensure_ffmpeg()
# 5) Build MP4
build_video(cap_imgs, narasi, OUTPUT_MP4, fps=FPS)
if __name__ == "__main__":
main()
3) Jalankan
python buat_video.py
Output: SmartNutriChefAI_Presentasi.mp4
(±5 menit), dengan narasi TTS & teks narasi di bawah slide.
Jika masih error FFmpeg
- Pastikan folder
FFMPEG_HOME
ada dan bisa ditulis (mis./storage/emulated/0/Download/ffmpeg_bin
). - Pastikan internet aktif saat pertama kali jalan (supaya
imageio-ffmpeg
bisa mengunduh FFmpeg). - Jalankan kecil ini dulu di Pydroid (sekali saja) untuk memaksa unduh ke folder yang kita set:
import os, imageio_ffmpeg
os.environ["IMAGEIO_FFMPEG_HOME"] = "/storage/emulated/0/Download/ffmpeg_bin"
os.makedirs(os.environ["IMAGEIO_FFMPEG_HOME"], exist_ok=True)
print(imageio_ffmpeg.get_ffmpeg_exe())
Jika berhasil, akan muncul path FFmpeg; setelah itu script utama harusnya jalan.
Butuh saya sederhanakan lagi (mis. tanpa subtitle bar) bila HP masih kurang kuat? Atau mau saya sesuaikan supaya hasil videonya 16:9 fix dengan background gelap?
Muncul error:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), main.dict)
File "
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/fitz/init.py", line 1, in
from frontend import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/init.py", line 1, in
from .events import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/events/init.py", line 1, in
from .clipboard import *
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/events/clipboard.py", line 2, in
from ..dom import Event
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/dom.py", line 439, in
from . import dispatcher
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/dispatcher.py", line 15, in
from . import config, server
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/frontend/server.py", line 24, in
app.mount(config.STATIC_ROUTE, StaticFiles(directory=config.STATIC_DIRECTORY), name=config.STATIC_NAME)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/data/user/0/ru.iiec.pydroid3/files/aarch64-linux-android/lib/python3.11/site-packages/starlette/staticfiles.py", line 56, in init
raise RuntimeError(f"Directory '{directory}' does not exist")
RuntimeError: Directory 'static/' does not exist
[Program finished]
Oke, jelas penyebabnya π
Error Anda ini bukan dari script kita, tapi karena di HP terinstal package frontend
yang “tabrakan” dengan fitz
(PyMuPDF).
Saat Anda import fitz
, ternyata yang terbaca justru bukan pymupdf
, tapi paket lain bernama frontend
→ makanya muncul error Directory 'static/' does not exist
.
π§ Solusi cepat:
-
Uninstall package
frontend
yang salah:pip uninstall frontend -y
(Itu bukan bagian dari PyMuPDF, jadi aman dihapus.)
-
Pastikan PyMuPDF yang benar terpasang:
pip uninstall fitz -y pip install --upgrade pymupdf
⚠️ Catatan: Library yang benar bernama
pymupdf
, bukanfitz
.
fitz
itu hanya alias internal. Jadi setelah install, script tetapimport fitz
, tapi paket aslinyapymupdf
. -
Jalankan ulang script.
π Kalau masih sulit di Android, alternatif:
- Jangan pakai
fitz
(PDF → PNG), tapi ekspor dulu slide ke PNG dari PowerPoint (di laptop/HP → Save As → PNG). - Lalu jalankan script gabungan audio+gambar saja (lebih ringan, tanpa PyMuPDF).
Mau saya buatkan versi script sederhana tanpa PDF → PNG, jadi langsung pakai file PNG (hasil ekspor manual dari slide)? Itu biasanya lebih aman di HP Anda.
Muncul error:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), main.dict)
File "
ModuleNotFoundError: No module named 'fitz'
[Program finished]
Mantap ✨, sekarang errornya sudah berubah → artinya masalah “tabrakan frontend” tadi sudah selesai.
Sekarang errornya:
ModuleNotFoundError: No module named 'fitz'
π Artinya PyMuPDF (pymupdf
) belum terinstal dengan benar di Pydroid.
Perlu dicatat: library yang benar bernama pymupdf
, bukan fitz
.
Saat Anda install pymupdf
, modulnya tetap di-import dengan import fitz
.
π§ Solusi di Pydroid:
- Hapus sisa instalasi lama:
pip uninstall fitz -y
pip uninstall pymupdf -y
- Pasang ulang PyMuPDF:
pip install pymupdf
- Pastikan bisa di-import:
import fitz
print(fitz.__doc__)
Kalau tidak ada error → artinya berhasil.
⚡ Alternatif Lebih Mudah (Tanpa PyMuPDF)
Kalau PyMuPDF tetap bandel di Android, ada jalan pintas:
- Ekspor slide presentasi ke PNG (langsung dari PowerPoint/Google Slides →
Save As
→ PNG). - Taruh file di folder kerja dengan nama
slide1.png
,slide2.png
, dst. - Gunakan script versi sederhana (langsung gabung gambar + audio → MP4) tanpa
fitz
.
π Mau saya tuliskan script versi simpel (tanpa PyMuPDF, langsung dari slide1.png
, slide2.png
+ slide1.mp3
, dst.) biar Anda tidak perlu pusing instalasi pymupdf
di Pydroid?
Masih muncul error:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), main.dict)
File "
ModuleNotFoundError: No module named 'fitz'
[Program finished]
Sip π errornya jelas: di Android Pydroid3 modul pymupdf
gagal di-install → sehingga import fitz
tidak ada.
Karena di HP Android sering susah install pymupdf
(butuh C compiler), maka saran terbaik: kita buang bagian PDF → PNG pakai fitz
, dan cukup pakai gambar slide (PNG/JPG) hasil ekspor manual dari presentasi.
✅ Solusi lebih simpel (tanpa fitz
)
-
Ekspor slide ke PNG
Dari PowerPoint / Google Slides →File > Download as > PNG
→ simpan jadi:slide1.png slide2.png slide3.png ...
-
Pastikan file audio TTS sudah ada (
slide1.mp3
,slide2.mp3
, dst).
(Anda sudah buat sebelumnya dengan gTTS.) -
Script final tanpa fitz:
from moviepy.editor import ImageClip, AudioFileClip, concatenate_videoclips
# Jumlah slide yang dipakai
jumlah_slide = 8
clips = []
for i in range(1, jumlah_slide + 1):
img_file = f"slide{i}.png"
audio_file = f"slide{i}.mp3"
audio = AudioFileClip(audio_file)
clip = ImageClip(img_file).set_duration(audio.duration).set_audio(audio)
clip = clip.set_fps(24).resize(height=720) # output 720p
clips.append(clip)
# Gabungkan semua slide jadi satu video
final_video = concatenate_videoclips(clips, method="chain")
final_video.write_videofile("SmartNutriChefAI_Presentasi.mp4", codec="libx264", audio_codec="aac", fps=24)
π Hasil:
File SmartNutriChefAI_Presentasi.mp4
berdurasi sesuai total narasi.
Resolusi: 720p
Audio: narasi TTS per slide
π Jadi, Anda tidak perlu fitz
sama sekali.
Cukup siapkan gambar slide + audio mp3.
Apakah Anda mau saya lengkapi dengan subtitle teks narasi otomatis di bawah slide juga (tanpa pakai fitz
, cukup pakai Pillow
untuk gabung teks + gambar)?
Karena sudah 3 kali muncul pesan error, karena saya pakai HP (bukan laptop/komputer), akhirnya saya ambil keputusan untuk membuat video sendiri dengan pakai applikasi CapCut. Sampai di sini saya sudah mendapat file audio (mp3), ini hasil dari mengesekusi script python, yaitu:
- File slide1.mp3
- File slide2.mp3
- File slide3.mp3
- File slide4.mp3
- File slide5.mp3
- File slide6.mp3
- File slide7.mp3
- File slide8.mp3
Dan gambar-gambar (png) sebanyak 8 buah sebagai bahan visual gambar untuk pembuatan video ini saya sediakan sendiri.
Akhirnya saya berkreasi sendiri di CapCut untuk menghasilkan Video (mp4) tentang Presentasi Proposal SmartNutriChefAI. Hasilnya ada di sini:
Saya membuat video mengagumkan ini dengan CapCut. Ketuk tautan untuk mencobanya! https://www.capcut.com/tv2/ZSA6UGMxn/
Agar mahir berkreasi membuat Video menggunakan Capcut, lihat di URL Link sini: Membuat Video dengan Applikasi "Capcut"
Bersambung ke : CARA MENGEDIT VIDEO AGAR LEBIH HIDUP DENGAN BANTUAN AI
Comments
Post a Comment