Trong hướng dẫn này, mình sẽ giúp bạn học cách sử dụng thư viện trí tuệ nhân tạo (AI) của Google gọi là Text-to-speech (TTS) để đọc 1 đoạn text nhất định. Giọng nói cũng sẽ do AI của Google cung cấp.
Các bước cơ bản sẽ như sau:
1. Tạo file readme.txt và ghi nội dung cần đọc
2. Dùng Google Text-to-Speech để đọc nội dung readme.txt và tạo file giọng nói vào output.wav
3. Dùng thư viện sounddevice để chạy file output.wav ra loa máy tính.
Bài hướng dẫn này sử dụng python3. Nếu bạn muốn dùng code PHP, hãy xem ở cuối bài.
Thiết lập môi trường ảo (venv)
Đầu tiên, bạn cần cài đặt các thư viện cần thiết bằng cách chạy các lệnh sau trong môi trường Python:
- Tạo thư mục dự án tạm gọi là
google-text-to-speech, - Di chuyển vào dự án
- Tạo môi trường ảo của python:
python3 -m pip install --user virtualenv
python3 -m venv env
kích hoạt:. env/bin/activate - Tạo trong folder của dự án file
tts.py
Cài đặt thư viện
Cài các thư viện sau để sử dụng được Google Text-to-Speech
pip install soundfile
pip install sounddevice
pip install google-cloud-texttospeech
Triển khai kết nối Google TTS, đọc file readme
Mở file tts.py và import các thư viện vừa cài đặt
import sounddevice as sd # dùng để đọc ra loa máy tính
from google.cloud import texttospeech # thư viện TTS của google
import soundfile as sf # dùng để tạo file output.wav sau khi đọc text trong readme.txt
from google.oauth2 import service_account # để cung cấp thông tin xác thực
Tiếp đó, cung cấp thông tin xác thực cho TTS. Cách tạo thông tin xác thực được cung cấp ở cuối bài.
credentials = service_account.Credentials.from_service_account_file('tts_service_account_credentials.json')
# Tạo client Text-to-Speech
client = texttospeech.TextToSpeechClient(credentials=credentials)
Nội dung cần đọc
Bây giờ bạn tạo file readme.txt với nội dung sau và đặt nó vào thư mục google-text-to-speech của dự án:
Hello world. Google is reading this to you!
Trong file tts.py, tiếp tục thêm đoạn code sau để mở file readme.txt và lấy nội dung:
# Đường dẫn đến file readme.txt
input_file = "readme.txt"
# Đọc nội dung từ file
with open(input_file, "r") as file:
text = file.read()
# Tạo input text
input_text = texttospeech.SynthesisInput(text=text)
Thiết lập giọng nói
Bây giờ chúng ta sẽ dùng TTS để truyền vào input text, và thiết lập dọng nói cho đoạn text này. Dọng nói sẽ được ghi vào file output.wav:
# Thiết lập thông tin giọng nói
voice = texttospeech.VoiceSelectionParams(
language_code="en-US", # Ngôn ngữ và vùng miền của văn bản
ssml_gender=texttospeech.SsmlVoiceGender.FEMALE # Giới tính giọng nói
)
# Thiết lập định dạng âm thanh đầu ra
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16 # Sử dụng định dạng âm thanh WAV
)
# Gửi yêu cầu tạo âm thanh
response = client.synthesize_speech(
input=input_text,
voice=voice,
audio_config=audio_config
)
# Lưu âm thanh thành file .wav
output_file = "output.wav"
with open(output_file, "wb") as file:
file.write(response.audio_content)
print("Đã tạo file âm thanh:", output_file)
Bạn có thể tham khảo tại đây các giọng nói khác nhau của TTS để truyền vào texttospeech.VoiceSelectionParams. Có cả tiếng Việt đó bạn nhé 😉
Phát giọng nói qua loa
Cuối cùng, dùng thư viện sounddevice để phát giọng qua loa máy tính:
# Đọc file âm thanh
audio_data, sample_rate = sf.read(output_file)
# Chạy file âm thanh sử dụng sounddevice
sd.play(audio_data, sample_rate)
sd.wait() # Đợi cho đến khi phát xong
Bạn có thể download code của toàn bộ dự án này tại đây. Nhớ tạo môi trường ảo, kích hoạt và cài đặt đầy đủ các thư viện. Bạn sẽ cần phải dùng bản python3.8 trở lên.
Chạy toàn bộ script để thấy kết quả được đọc qua loa!
python3 tts.py
Vậy là bạn đã biết cách dùng Google Text-to-Speech rồi nhé 🙂
Code dành cho lập trình viên PHP: xem tại đây.
Cách lấy xác thực trên Google Cloud cho TTS
Để tạo file service_account_credentials.json trên Google Cloud Console, bạn cần thực hiện các bước sau:
- Truy cập vào Google Cloud Console: https://console.cloud.google.com/
- Tạo một dự án mới hoặc chọn dự án hiện có.
- Đảm bảo rằng dự án của bạn đã được bật dịch vụ Google Text-to-Speech API bằng cách làm theo các bước sau:
- Truy cập vào trang “API & Services” trong Google Cloud Console.
- Chọn “Library” từ menu điều hướng bên trái.
- Tìm và chọn “Text-to-Speech API”.
- Bật dịch vụ Text-to-Speech API cho dự án của bạn.
- Tạo một tài khoản dịch vụ để sử dụng trong ứng dụng của bạn:
- Truy cập vào trang “API & Services” trong Google Cloud Console.
- Chọn “Credentials” từ menu điều hướng bên trái.
- Chọn “Create credentials” và sau đó chọn “Service account key”.
- Trong trường “Service account”, chọn “New service account” và đặt tên cho tài khoản dịch vụ của bạn.
- Với trường “Role”, chọn “Project” > “Owner” hoặc các vai trò tương tự phù hợp với quyền truy cập bạn muốn cấp cho tài khoản dịch vụ.
- Định dạng khóa tài khoản dịch vụ: chọn “JSON”.
- Nhấn nút “Create” để tạo tệp JSON chứa thông tin xác thực. Tệp JSON sẽ tự động tải xuống máy tính của bạn.
- Lưu tệp JSON được tải xuống thành
service_account_credentials.jsontrong cùng thư mục với script của bạn (thư mục dự ángoogle-text-to-speech).
