gTTS là gì?
gTTS là thư viện Python mã nguồn mở và công cụ dòng lệnh để chuyển văn bản thành tệp âm thanh MP3 thông qua endpoint chuyển văn bản thành giọng nói của Google Translate. Bạn có thể xuất ra tệp, đối tượng dạng tệp để xử lý âm thanh tiếp, hoặc ghi thẳng ra stdout. Tác giả là Pierre Nicolas Durette, giấy phép MIT, và đây là một trong các gói TTS được tải nhiều trên PyPI, khoảng 175.000 lượt/tuần ở thời điểm này. Nếu từng muốn chuyển chuỗi văn bản thành MP3 chỉ với ba dòng Python, rất có thể gTTS là cái tên bạn gặp đầu tiên.
Nhưng lưu ý gTTS không phải là Google Cloud Text-to-Speech. Nó dùng chính backend không công bố ẩn sau nút "Nghe" nhỏ trong Google Translate. Sự khác biệt này quyết định điểm mạnh, điểm yếu, và thời điểm bạn nên chọn công cụ khác thay vì gTTS.

Khi nào nên dùng gTTS?
Dùng gTTS khi bạn cần demo nhanh, miễn phí; tạo MP3 từ văn bản với một dòng code; demo đa ngôn ngữ; dự án cá nhân; ví dụ trong lớp học; hay script hỗ trợ tiếp cận đọc lớn file Google Docs. Không nên dùng nếu bạn cần hệ thống chạy ổn định cho sản xuất, hợp đồng SLA rõ ràng, nhân bản giọng, kiểm soát SSML, chất lượng giọng neural, phát trực tuyến, hoặc giấy phép thương mại minh bạch.
gTTS hoạt động như thế nào?
gTTS không tổng hợp giọng cục bộ. Nó gửi yêu cầu lên backend “Nghe” của Google Translate, tải về tệp MP3 kết quả và trả về bytes. Bạn bắt buộc cần internet vì không có chế độ ngoại tuyến, âm thanh được xử lý trên máy chủ Google chứ không phải trên máy bạn. Endpoint này cũng không chính thức. Dự án không thuộc Google hay Google Cloud, mọi thay đổi phía Google đều có thể khiến gTTS ngừng hoạt động bất ngờ.
Cài đặt
bash
pip install gTTS
gTTS yêu cầu Python 3.7+ và chạy tốt trên macOS, Windows, Linux. Phiên bản PyPI hiện tại là 2.5.4 (11/2024). Trên hệ Debian như Raspberry Pi OS hãy chú ý tên: pip package là gTTS, apt package là python3-gtts. Nếu pip install báo lỗi externally-managed-environment, hãy cài trong virtualenv.
Cách dùng cơ bản
Ví dụ tối thiểu:
python
from gtts import gTTS
tts = gTTS("Hello, world.")tts.save("hello.mp3")
Từ dòng lệnh:
bash
gtts-cli "hello" --output hello.mp3
Chọn ngôn ngữ và giọng
python
tts = gTTS("Bonjour le monde", lang="fr")tts.save("bonjour.mp3")
gTTS cũng hỗ trợ sub-tag qua tham số tld — ví dụ
tld="co.uk" cho giọng Anh - Anh hoặc tld="ca" cho giọng Pháp - Canada, bằng cách chuyển sang domain Google Translate tương ứng.
Chế độ đọc chậm
python
tts = gTTS("Read this slowly.", lang="en", slow=True)tts.save("slow.mp3")
Đó gần như là toàn bộ tùy chọn điều khiển giọng nói. Không chỉnh cao độ, không kéo thả tốc độ (ngoài slow=True), không chọn giọng, không hỗ trợ SSML.
Stream vào bộ đệm thay vì ghi ra đĩa
python
from io import BytesIOfrom gtts import gTTS
buf = BytesIO()gTTS("Stream me").write_to_fp(buf)buf.seek(0)# now feed buf into pydub, ffmpeg, a web response, etc.
Tiền xử lý và văn bản dài
Điểm mạnh của gTTS là bộ tokenizer chia văn bản dài thành các đoạn nhỏ (giới hạn khoảng 100 ký tự mỗi req/backend), vẫn giữ được ngữ điệu giữa các đoạn, xử lý ổn từ viết tắt, số thập phân, dấu câu khó. Bạn cũng có thể gắn tiền xử lý tùy chỉnh để sửa lỗi phát âm thường gặp (như tên sản phẩm, từ viết tắt thành phiên âm).
Ưu điểm của gTTS?
gTTS (Google Text-to-Speech) được ưa chuộng vì nhẹ, dễ dùng, tích hợp mượt với workflow Python. Nó tạo tệp MP3, ghi kết quả ra file, đối tượng kiểu file hoặc stdout nên rất tiện cho tự động hóa/scripting. Hỗ trợ ~60 ngôn ngữ, nhiều giọng địa phương qua thiết lập ngôn ngữ + miền tld, đáp ứng tốt nhu cầu đa ngữ cơ bản. CLI (gtts-cli) chạy ngon với shell script. Bạn có thể tùy chỉnh tokenizer, tiền xử lý để xử lý từ viết tắt, số, thay văn bản. API Python tối giản, dễ gắn tính năng TTS vào Jupyter, Flask, Discord bot… mà không tốn nhiều thời gian làm quen.
Nhược điểm của gTTS?
Dù đơn giản, gTTS còn nhiều giới hạn so với giải pháp AI hiện đại. Giọng dựa trên đầu ra cơ bản của Google Translate, nghe rõ nghĩa nhưng thiếu tự nhiên, cảm xúc, độ chân thực như các hệ thống chuyển văn bản thành giọng neural mới. Bạn không được chọn kiểu giọng trong cùng một ngôn ngữ, không hỗ trợ SSML, chỉnh cao độ hay tốc độ linh hoạt. gTTS phải tải toàn bộ MP3 về trước mới phát được thay vì stream tức thì, làm tăng độ trễ cho ứng dụng tương tác. Mỗi lần chuyển đổi đều gửi dữ liệu lên internet, không hoạt động offline nên không hợp nếu cần độ trễ thấp hoặc yêu cầu bảo mật nghiêm ngặt.
Giới hạn của gTTS đối với lập trình viên?
1. Giới hạn tốc độ trên endpoint không công bố
Đây là vướng mắc lớn nếu bạn đi xa hơn mức “hello world”. gTTS không có hạn mức chính thức vì dịch vụ gốc cũng không. Thực tế, mỗi IP có thể gửi hàng chục ngàn ký tự/giờ trước khi Google trả HTTP 429, nhưng từng trường hợp sẽ khác nhau. Nếu ứng dụng phục vụ nhiều người từ một server, sớm muộn bạn cũng đụng trần mà không có SLA nào bảo vệ.
2. Endpoint có thể thay đổi bất ngờ
Do gTTS dùng route nội bộ của Google Translate chứ không phải API công khai có version, Google từng thay đổi request/response bất chợt làm gTTS ngừng chạy cho đến khi tác giả sửa. Bạn cập nhật (pip install -U gTTS) rồi chạy tiếp. Ổn cho script nhỏ, không ổn cho hệ thống sản xuất lúc 2 giờ sáng.
pip install -U gTTS, và dùng lại bình thường. Chấp nhận được với script cá nhân, không phù hợp cho sản phẩm đang chạy ngoài giờ hành chính.
3. Chu kỳ bảo trì không đều
Dự án vẫn được cập nhật (ít nhất trong 12 tháng gần nhất), nhưng phản hồi issue chậm và chỉ có một người phát triển chính. Một số trang đánh giá repo là "không hoạt động" (inactive). Với thư viện MIT miễn phí thì vậy là bình thường, nhưng nếu bạn dùng cho sản phẩm thương mại quan trọng thì cần cân nhắc kỹ.
4. Khó xác định tính thương mại, điều khoản sử dụng
gTTS sử dụng frontend Google Translate thay cho Google Cloud TTS, nên quyền thương mại của âm thanh tạo ra không rõ ràng. Thư viện dùng giấy phép MIT, nhưng bytes âm thanh tuân theo điều khoản dịch vụ của Google cho một dịch vụ không có API công khai rõ ràng. Đội pháp lý sẽ khó lấy được câu trả lời minh bạch.
5. Dữ liệu nhạy cảm rời khỏi máy bạn
Mỗi chuỗi văn bản đều được gửi lên máy chủ Google. Nếu bạn đọc tài liệu nội bộ, PII khách hàng, hay thông tin từ Google Docs hoặc kho tri thức khác, hãy cân nhắc kỹ về dữ liệu trước khi đưa vào sản xuất.
Khác biệt giữa gTTS và Google Cloud Text-to-Speech?
Dù thường bị nhầm lẫn, gTTS và Google Cloud Text-to-Speech là hai sản phẩm khác nhau. Các điểm khác biệt gồm:
Nếu bạn cần âm giọng Google trong sản phẩm, gần như chắc chắn bạn nên dùng Google Cloud TTS thay vì gTTS.
Khi nào nên nâng cấp lên API TTS chuyên nghiệp?
Nên chuyển từ gTTS sang API chuyển văn bản thành giọng chuyên nghiệp khi chất lượng âm thanh, độ ổn định và khả năng tùy chỉnh bắt đầu quan trọng. gTTS phù hợp cho bản mẫu, dự án cá nhân, demo giáo dục... vì dễ dùng, miễn phí. Khi bạn ra mắt sản phẩm thu phí, coi trọng trải nghiệm âm thanh, hoặc cần SLA, giải pháp chuyên nghiệp là ưu tiên. Nâng cấp càng cần thiết nếu bạn cần nhiều giọng, nhân bản giọng, SSML, stream, kiểm soát tốc độ, phát âm, hay giấy phép thương mại rõ ràng. Khi dự án chuyển từ thử nghiệm sang sản xuất, những tính năng này sẽ trở nên thiết yếu.
Nên chọn gTTS hay API của Speechify?
API chuyển văn bản thành giọng của Speechify là dịch vụ trả phí, có hỗ trợ chính thức, giọng neural, nhiều giọng mỗi ngôn ngữ, SSML và cấp phép thương mại rõ ràng, không chỉ là lớp bọc cho endpoint không công khai. Nếu bạn bị giới hạn bởi tốc độ, chất lượng giọng, hay điều khoản mập mờ của gTTS, nên cân nhắc chuyển sang Speechify.
FAQ
gTTS có miễn phí không?
Có, gTTS là thư viện Python miễn phí, MIT, nhưng nếu cần âm thanh thương mại, hợp pháp thì nên dùng dịch vụ tính phí như Speechify API.
gTTS dùng offline được không?
Không, gTTS cần internet để gọi server Google; các dịch vụ đám mây như Speechify API cũng vậy.
Có thể dùng gTTS cho sản phẩm thương mại không?
Quyền thương mại đầu ra gTTS không rõ ràng do dùng endpoint Google không công khai, trong khi Speechify API có cấp phép thương mại rõ ràng.
Làm sao đổi giọng trong gTTS?
Bạn không thể. gTTS chỉ có một giọng mỗi ngôn ngữ, còn Speechify API cho phép chọn nhiều giọng neural.
gTTS có hỗ trợ SSML không?
Không, gTTS không hỗ trợ SSML, điều chỉnh cao độ hay tốc độ chi tiết, trong khi Speechify API hỗ trợ SSML điều khiển ngữ điệu đầy đủ.
Tại sao gTTS báo lỗi HTTP 429?
Bạn đã vượt giới hạn rate của endpoint chưa công bố của Google Translate, đây là lý do phổ biến khiến lập trình viên chuyển sang dịch vụ như Speechify API.
gTTS và Google Cloud Text-to-Speech có giống nhau?
Không, gTTS là lớp bọc endpoint không chính thức của Google Translate, trong khi Google Cloud TTS là sản phẩm trả phí riêng — Speechify API là một lựa chọn trả phí khác với giọng neural.
Thư viện TTS Python nào tốt cho sản xuất?
gTTS phù hợp cho prototyping, không lý tưởng cho sản xuất. Khi vào sản xuất nên dùng API trả phí như Speechify API.
gTTS có thể nhân bản giọng không?
Không, nhân bản giọng không được hỗ trợ trên gTTS, nhưng sẵn có trên Speechify API.
Làm sao stream âm thanh với gTTS?
gTTS không hỗ trợ phát trực tiếp mà chỉ trả về tệp MP3 hoàn chỉnh; nếu cần stream trễ thấp hãy dùng Speechify API.

