Thứ bảy, 20/09/2025
Bạn muốn sử dụng API để tạo âm thanh từ văn bản (Text-to-Speech - TTS), tức là:
Lấy văn bản từ một trang web → chuyển nó thành giọng nói → có thể nghe được hoặc tải xuống file âm thanh.
OpenAI hiện đã hỗ trợ tính năng này thông qua Text-to-Speech API (mới, rất mạnh và tự nhiên). Dưới đây là hướng dẫn chi tiết từng bước.

Mục tiêu
Tạo một chương trình Python:
- Truy cập một URL (trang web)
- Lấy nội dung văn bản
- Gửi văn bản đó đến OpenAI TTS API
- Tạo ra file âm thanh (MP3) từ văn bản
Công cụ cần thiết
1. Cài thư viện Python
pip install openai beautifulsoup4 requests
Bước 1: Lấy văn bản từ trang web
Sử dụng requests + BeautifulSoup để trích xuất nội dung HTML.
import requests
from bs4 import BeautifulSoup
def extract_text_from_url(url):
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# Lấy nội dung văn bản chính (tùy vào trang, bạn có thể tùy chỉnh thêm)
paragraphs = soup.find_all('p')
text = "\n".join(p.get_text() for p in paragraphs if p.get_text())
return text.strip()
Bước 2: Sử dụng OpenAI Text-to-Speech (TTS)
import openai
openai.api_key = "sk-..." # Thay bằng API key của bạn
def text_to_speech(text, output_filename="output.mp3"):
response = openai.audio.speech.create(
model="tts-1", # hoặc tts-1-hd
voice="nova", # giọng đọc: nova, alloy, shimmer, echo, fable, onyx
input=text
)
# Ghi file âm thanh
with open(output_filename, "wb") as f:
f.write(response.content)
print(f"Đã lưu file âm thanh tại: {output_filename}")
Bước 3: Kết hợp tất cả lại
def main():
url = "https://example.com" # 👉 Thay bằng URL thật
text = extract_text_from_url(url)
print("Đang chuyển văn bản thành âm thanh...")
text_to_speech(text[:4096]) # Giới hạn 4096 ký tự cho mỗi lần gọi API
if __name__ == "__main__":
main()
Giới hạn: OpenAI hiện cho phép tối đa 4096 ký tự cho mỗi request TTS. Nếu văn bản dài hơn, bạn cần chia nhỏ đoạn văn và chuyển từng phần.
Gợi ý giọng đọc
|
Giọng đọc
|
Mô tả
|
|
alloy
|
Nam, trung tính, tự nhiên
|
|
echo
|
Trung tính, ấm áp
|
|
fable
|
Giọng kể chuyện, nữ tính
|
|
nova
|
Nữ, rõ ràng, tự nhiên
|
|
onyx
|
Nam, mạnh mẽ
|
|
shimmer
|
Giọng nhẹ nhàng, quyến rũ
|
Thử nghiệm nhanh? (Không cần code)
Kết quả
Sau khi chạy chương trình, bạn sẽ có một file output.mp3 chứa giọng đọc của bài viết trên web.
Bạn có thể dùng thêm playsound hoặc pygame để phát âm thanh trong Python nếu muốn.