Hướng Dẫn Dùng API Google TTS Miễn Phí: Chuyển Văn Bản Thành Giọng Nói Với Python

Hướng Dẫn Dùng API Google TTS Miễn Phí: Chuyển Văn Bản Thành Giọng Nói Với Python

2025-10-14 09:558 min read • 90 views


🗣️ Giới thiệu

Google cung cấp một API Text-to-Speech miễn phí thông qua thư viện gtts (Google Text-to-Speech). Đây là công cụ tuyệt vời cho những ai muốn chuyển văn bản thành giọng nói tự nhiên, hỗ trợ nhiều ngôn ngữ như tiếng Việt, tiếng Anh, Nhật, Hàn...

Bài viết này sẽ hướng dẫn bạn cách viết code Python để tạo file âm thanh từ văn bản hoàn toàn miễn phí, tự động ghép file, và có thể dùng cho podcast, video, hoặc chatbot.


⚙️ 1. Cài đặt thư viện cần thiết


Bạn cần cài hai thư viện:

pip install gtts
pip install pydub

gtts: giúp gửi văn bản đến Google để chuyển thành giọng nói.

pydub: hỗ trợ xử lý, ghép và phát file âm thanh.


💻 2. Code mẫu hoàn chỉnh

Dưới đây là đoạn code Python giúp bạn đọc file text, chia nhỏ nội dung, tạo nhiều file âm thanh, ghép lại thành một file duy nhất, và phát thử giọng nói:

import time
from gtts import gTTS
from pydub import AudioSegment
from pydub.playback import play
import os

# Hàm chia nhỏ văn bản
def split_text(text, max_length=2000):
return [text[i:i + max_length] for i in range(0, len(text), max_length)]

# Đọc nội dung từ file input
input_file = "./sample_data/1.txt" # Đặt tên file input
with open(input_file, "r", encoding="utf-8") as file:
text = file.read()

# Kiểm tra văn bản đầu vào
if not text.strip():
print("File input không có nội dung.")
exit()

language = 'vi'

# Chia nhỏ văn bản
parts = split_text(text)
print(f"Đã chia thành {len(parts)} phần.") # Kiểm tra số phần

Ở chỗ này sẽ xử lý từng file, nếu file đã có tên rồi thì bỏ qua

# Kiểm tra file nào đã được tạo
start = 1
BATCH = 3
output_files = []
for i in range(len(parts)):
if i >= start and i < start + BATCH:
filename = f"output_part_{i}.mp3"
if os.path.exists(filename): # Kiểm tra file đã tồn tại
print(f"Đã tồn tại: {filename}, bỏ qua...")
output_files.append(filename)
else:
print(f"Đang xử lý phần {i + 1}/{len(parts)}...")
tts = gTTS(text=parts[i], lang=language, slow=False)
tts.save(filename)
output_files.append(filename)


# Ghép các file âm thanh lại với pydub

combined_audio = AudioSegment.empty()
for file in output_files:
audio = AudioSegment.from_file(file)
combined_audio += audio

# Lưu file âm thanh cuối cùng
final_filename = "output_combined17.mp3"
combined_audio.export(final_filename, format="mp3")
print(f"File âm thanh đã được lưu: {final_filename}")

# Xóa các file âm thanh tạm
for file in output_files:
os.remove(file)

# Phát file âm thanh cuối cùng (tùy chọn)
play(combined_audio)


Chạy thử google colab tại đây


🧩 3. Giải thích cơ chế hoạt động

Bước Mô tả

1️⃣

Đọc nội dung từ file text đầu vào.

2️⃣

Chia nhỏ văn bản nếu dài hơn giới hạn của API Google (~2000 ký tự).

3️⃣

Tạo từng file .mp3 cho mỗi đoạn bằng gTTS.

4️⃣

Ghép tất cả các file lại thành một file duy nhất bằng pydub.

5️⃣

Xóa file tạm, chỉ giữ lại file cuối cùng để phát hoặc tải lên.


🌍 4. Ưu điểm & giới hạn của Google TTS Free


Ưu điểm:

  1. Miễn phí, dễ dùng, không cần API Key.
  2. Giọng tự nhiên, hỗ trợ nhiều ngôn ngữ.
  3. Dễ tích hợp vào Python script hoặc app web.

Hạn chế:

  1. Giới hạn độ dài văn bản (phải chia nhỏ).
  2. Không có tùy chọn giọng nam/nữ nâng cao.
  3. Không cho phép dùng thương mại ở quy mô lớn (Google có API Cloud TTS trả phí cho điều này).

💡 5. Gợi ý cho người dùng không biết code


Nếu bạn không rành lập trình nhưng vẫn muốn chuyển văn bản thành giọng nói miễn phí, hãy truy cập:

👉 ttsforfree.com — website hỗ trợ Text to Speech miễn phí, giao diện dễ dùng, không cần cài Python.

🏁 Kết luận

Việc sử dụng Google TTS API miễn phí là một cách tuyệt vời để tạo file giọng nói tự nhiên cho dự án cá nhân hoặc học tập.

Tuy nhiên, nếu bạn muốn nhanh, tiện và không cần code, ttsforfree.com là lựa chọn hoàn hảo: chỉ cần nhập văn bản, chọn ngôn ngữ → nghe giọng nói ngay.

Frequently Asked Questions

Q: gTTS có miễn phí không?

A: Có. Hoàn toàn miễn phí cho sử dụng cá nhân.

Q: Tôi có thể dùng gTTS cho YouTube không?

A: Được, nhưng nếu kiếm tiền → nên xem lại chính sách bản quyền.

Q: Giọng đọc có tự nhiên không?

A: Ổn, nhưng không cao cấp như Azure hoặc ElevenLabs.

Q: Có giới hạn ký tự không?

A: Có giới hạn ký tự, khoảng 100000 ký tự mỗi giờ.

Was this article helpful?

Related Articles

Latest from Our Blog

Không có bài viết nào