Xây dựng Tool "Text-to-Video": Tự động tạo Video TikTok/Shorts từ văn bản

AI Hunter

Member
Bạn muốn xây dựng kênh TikTok chia sẻ "Danh ngôn cuộc sống", "Sự thật thú vị" hay "Tin tức nhanh" nhưng ngại quay video và lười edit?
Trong bài viết này, chúng ta sẽ viết một script Python để biến văn bản thành video hoàn chỉnh chỉ trong 1 nốt nhạc.

Công cụ này sẽ tự động:
  • Đọc văn bản: Bằng giọng AI tiếng Việt siêu tự nhiên (Microsoft Edge).
  • Ghép hình: Chèn ảnh nền hoặc video background.
  • Dựng clip: Xuất ra file .mp4 chuẩn HD (9:16) để upload ngay lập tức.

1. Cài đặt thư viện​


Chúng ta cần 2 thư viện chính:
  • moviepy: Để xử lý video, cắt ghép, chèn chữ.
  • edge-tts: Để chuyển văn bản thành giọng nói (Text-to-Speech).

Mã:
pip install moviepy edge-tts

Lưu ý quan trọng: Để `moviepy` chèn được chữ, bạn cần cài đặt phần mềm ImageMagick trên máy tính. Đây là yêu cầu bắt buộc của thư viện này.

2. Triển khai Code (Full Source)​


Dưới đây là đoạn code Python hoàn chỉnh (`auto_video.py`).

Python:
import asyncio
import edge_tts
from moviepy.editor import *
from moviepy.config import change_settings

# --- CẤU HÌNH ---
# Nếu MoviePy không tìm thấy ImageMagick, hãy bỏ comment dòng dưới và trỏ đúng đường dẫn
# change_settings({"IMAGEMAGICK_BINARY": r"C:\Program Files\ImageMagick-7.1.1-Q16-HDRI\magick.exe"})

TEXT_CONTENT = "Không quan trọng bạn đi chậm thế nào, miễn là đừng bao giờ dừng lại. Hãy kiên trì theo đuổi ước mơ của bạn!"
OUTPUT_FILE = "tiktok_motivation.mp4"
BACKGROUND_IMAGE = "background.jpg" # Bạn cần chuẩn bị 1 ảnh nền dọc (1080x1920)

# Chọn giọng đọc: vi-VN-HoaiMyNeural (Nữ) hoặc vi-VN-NamMinhNeural (Nam)
VOICE = "vi-VN-HoaiMyNeural"

async def generate_audio(text, output_file):
    """Tạo file âm thanh từ văn bản bằng Edge-TTS"""
    print("🔊 Đang tạo giọng đọc AI...")
    communicate = edge_tts.Communicate(text, VOICE)
    await communicate.save(output_file)

def create_video():
    # 1. Tạo Audio
    audio_file = "temp_audio.mp3"
    # Chạy hàm async trong môi trường sync
    loop = asyncio.get_event_loop_policy().get_event_loop()
    loop.run_until_complete(generate_audio(TEXT_CONTENT, audio_file))
   
    # 2. Xử lý Audio Clip
    audio_clip = AudioFileClip(audio_file)
    duration = audio_clip.duration + 1 # Cộng thêm 1 giây để video không bị cụt
   
    print(f"🎬 Đang dựng video dài {duration} giây...")

    # 3. Tạo Background (Ảnh nền)
    # Resize ảnh về chuẩn TikTok (1080x1920)
    bg_clip = ImageClip(BACKGROUND_IMAGE).set_duration(duration)
    bg_clip = bg_clip.resize(height=1920)
    bg_clip = bg_clip.crop(x1=0, y1=0, width=1080, height=1920, x_center=1080/2, y_center=1920/2)

    # 4. Tạo Text (Chữ chạy trên màn hình)
    # Lưu ý: Cần chọn font hỗ trợ Tiếng Việt (ví dụ Arial)
    txt_clip = TextClip(TEXT_CONTENT, fontsize=50, color='white', font='Arial',
                        size=(900, None), method='caption') # size=(900, None) để tự xuống dòng
    txt_clip = txt_clip.set_position('center').set_duration(duration)
   
    # 5. Tổng hợp (Composite)
    video = CompositeVideoClip([bg_clip, txt_clip])
    video = video.set_audio(audio_clip)
   
    # 6. Xuất file
    video.write_videofile(OUTPUT_FILE, fps=24, codec="libx264", audio_codec="aac")
    print(f"✅ Xong! File video: {OUTPUT_FILE}")

    # Dọn dẹp file tạm
    if os.path.exists(audio_file):
        os.remove(audio_file)

if __name__ == "__main__":
    create_video()

3. Giải thích kỹ thuật​


  • Asyncio & Edge-TTS: Thư viện `edge-tts` chạy bất đồng bộ (async), nên chúng ta cần dùng `asyncio` để gọi nó hoạt động trơn tru trong script Python thường.
  • TextClip & Method 'caption': Tham số `method='caption'` và `size=(900, None)` cực kỳ quan trọng. Nó giúp MoviePy tự động xuống dòng khi văn bản quá dài, thay vì viết một dòng dài tràn ra khỏi màn hình.
  • Crop & Resize: Đoạn code xử lý ảnh giúp đảm bảo dù bạn đưa ảnh ngang hay ảnh vuông vào, nó cũng sẽ tự cắt (crop) lấy phần giữa để vừa khít màn hình điện thoại (9:16).

4. Mở rộng ý tưởng (MMO Automation)​


Bạn có thể nâng cấp tool này thành cỗ máy kiếm tiền tự động:
  • Nguồn nội dung: Kết hợp với bài "AI Writer" hôm trước. Dùng GPT-4 tạo 10 câu danh ngôn -> Lưu vào file text.
  • Vòng lặp: Viết vòng lặp `for` để tool đọc file text và tự động render ra 10 video khác nhau.
  • Random Background: Tự chọn ngẫu nhiên ảnh trong thư mục để mỗi video có một giao diện khác nhau.

Với cách này, bạn có thể tạo ra hàng trăm video Shorts mỗi ngày để xây dựng kênh vệ tinh mà không tốn chút công sức nào!
 
Back
Top