Cuộc sống Nhật Bản
Yuto Blog

Hướng dẫn sử dụng TTS API của OpenAI để chuyển văn bản thành giọng nói

Mua ngay trả dần cùng Muadee iOS
Nội dung chính

Trong bài viết này mình sẽ hướng dẫn chi tiết từng bước từ cách tạo API key đến cách sử dụng API TTS để tạo ra những giọng đọc truyền cảm, như người thật. Bài viết này cũng phù hợp với những bạn không rành về công nghệ.

OpenAI TTS là gì?

TTS là viết tắt của Text-to-Speech, ngày nay công nghệ TTS (chuyển văn bản thành giọng nói) đã rất phổ biến và được ứng dụng rộng rãi.

TTS của OpenAI có khả năng chuyển đổi văn bản thành giọng nói tự nhiên và mượt mà, giọng nói được tạo ra có cảm xúc giống như người thật. Ví dụ như clip truyện ma dưới đây mình làm từ API TTS của OpenAI, giọng đọc không hề qua chỉnh sửa, mặc dù đang còn mới nhưng giọng đọc tiếng Việt cũng rất truyền cảm, nghe lần đầu có thể sẽ không nghĩ là giọng đọc của AI.

Đăng nhập vào OpenAI và tạo API key

Những bạn nào cần hướng dẫn về tạo API key thì hãy xem bài viết bên dưới, mình đã có hướng dẫn rất chi tiết kèm hình ảnh minh họa:

https://yutojp.com/articles/huong-dan-chi-tiet-cach-lay-api-key-tren-tai-khoan-openai-chatgpt

Cách sử dụng OpenAI TTS

Ở thời điểm hiện tại đầu năm 2024, OpenAI TTS chưa có giao diện web, do đó để sử dụng được thì phải dùng thông qua API. Những bạn không chuyên về kỹ thuật cũng không cần để ý API nghĩa là gì đâu, tí nữa các bạn chỉ cần chạy code thông qua Terminal (macOS) hoặc Command Prompt (Windows)

Sau khi đăng nhập vào OpenAI, ở thanh menu bạn click vào Text-to-speech để chuyển đến trang hướng dẫn sử dụng chức năng này, hoặc có thể vào trực tiếp từ đường link bên dưới:
https://platform.openai.com/docs/guides/text-to-speech

huong-dan-su-dung-openai-tts-api-chuyen-van-ban-thanh-giong-noi.png

Các giọng đọc hiện có của OpenAI TTS

OpenAI TTS hiện tại có các giọng đọc sau, model "tts-1" hiện tại còn khá mới mẻ nên phát âm tiếng Việt nhiều chỗ chưa chuẩn lắm, nhưng nói chung là đủ chất lượng để có thể dùng rồi.

Alloy - Giọng nam trung

Echo - Giọng nam truyền cảm, phù hợp cho kể chuyện

Fable - Giọng nam cao

Onyx - Giọng nam trầm

Nova - Giọng nữ cao

Shimmer - Giọng nữ trầm

Chạy đoạn code để chuyển văn bản thành giọng nói

Mở Terminal nếu là macOS, hoặc Command Prompt nếu là Windows, sau đó paste đoạn code theo mẫu sau:

Nếu là Terminal của macOS

curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer <api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "<tts-1 hoặc tts-1-hd>",
    "input": "<đoạn văn bản>",
    "voice": "<tên giọng đọc>",
    "speed": <tốc độ đọc>
  }' \
  --output <tên file>.mp3

Nếu là Command Prompt của Windows

Lưu ý là để tránh bị lỗi, các bạn nên dùng Notepad để viết sẵn đoạn code, sau đó chỉ copy và paste vào Command Prompt để chạy.

curl https://api.openai.com/v1/audio/speech ^
-H "Authorization: Bearer <api_key>" ^
-H "Content-Type: application/json" ^
-d "{""model"": ""<tts-1 hoặc tts-1-hd>"", ""input"": ""<đoạn văn bản>"", ""voice"": ""<tên giọng đọc>"", ""speed"": <tốc độ đọc>}" ^
--output <tên file>.mp3

Giải thích
  • <api_key>: Đây là API key mà bạn đã tạo ở bước trước, ví dụ: "sk-abcdef..."
  • model: Có 2 model là tts-1tts-1-hd, trong một số trường hợp, âm thanh có thể không có sự khác biệt rõ rệt trong 2 model này. Tuy nhiên theo trải nghiệm ban đầu của mình thì nếu đọc tiếng Việt dùng model "tts-1" sẽ chuẩn hơn.
    • tts-1: Tốc độ tạo nhanh
    • tts-1-hd: Chất lượng cao
  • input: Đoạn văn bản cần đọc
  • voice: Tên giọng đọc, danh sách giọng đọc mình có mô tả bên trên, bao gồm: alloy, echo, fable, onyx, nova, shimmer
  • speed: Tốc độ đọc, trong khoảng 0.25 đến 4.0, 0.25 là đọc siêu chập, 4.0 là đọc siêu nhanh. Mặc định là 1.0
  • <tên file>: Tên file kết quả sau khi tạo
Ví dụ
Giả sử mình chạy đoạn code như sau:
curl https://api.openai.com/v1/audio/speech \
  -H "Authorization: Bearer sk-abcdefghijklmno" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "Cảm ơn các bạn đã xem blog của mình",
    "voice": "alloy",
    "speed": 1.0
  }' \
  --output speech.mp3
Mình sẽ có file kết quả là speech.mp3 nằm ở thư mục hiện tại, giống như sau:

Chi phí sử dụng

Trên website của OpenAI có mô tả chi phí sử dụng như sau:
  • Đối với model TTS: $0.015 / 1000 ký tự
  • Đối với model TTS HD: $0.030 / 1000 ký tự
Có vẻ cũng khó hình dung 😂 Theo kinh nghiệm thực tế của mình khi dùng model tts-1-hd và tạo ra file khoảng 45 phút thì tốn tầm 1 USD, cũng không hẳn là đắt lắm.

Một vài mẹo nhỏ khi sử dụng OpenAI TTS

Chèn ngắt quãng

Trong một đoạn văn, bạn có thể chèn thêm [pause] vào giữa để cho AI ngắt quãng, thường thì AI sẽ ngắt quãng khoảng 1, 2 giây.

Ví dụ đoạn văn bản "Hôm nay trời đẹp quá [pause] đi chơi không em?" thì sẽ cho ra kết quả như sau:

Chèn giọng cười khẩy

Bên trong đoạn văn bản, bạn có thể thêm [laugh] để chèn giọng cười khẩy vào. Tuy nhiên lúc được lúc không.

Ví dụ đoạn văn bản "[laugh] Khá lắm, đúng là con trai của ta" thì sẽ cho ra kết quả như sau:

Giọng cảm xúc

Trong đoạn văn bản, ở những chỗ biểu lộ cảm xúc, nếu chèn dấu chấm than vào, thì có thể sẽ ra giọng đọc kiểu hốt hoảng.

Ví dụ đoạn văn bản "Trời ơi! Cái gì thế này!" thì sẽ cho ra kết quả như sau:


Tuy nhiên, giọng cười khẩy và giọng hốt hoảng đa phần sẽ không ra được như ý muốn 😅

Khắc phục khi không ra được tiếng Việt

Khi bạn viết một đoạn văn bản ngắn chỉ vài từ, sẽ có lúc kết quả cho ra là giọng đọc tiếng gì đó chứ không phải tiếng Việt. Lúc này để khắc phục thì các bạn có thể chèn [Vietnamese] vào đầu đoạn văn bản.

Ví dụ: [Vietnamese] Chào bạn

Khắc phục khi không đọc được số

Có lẽ do còn mới, nên AI này chưa đọc rõ những con số, để khắc phục, bạn thay số thành chữ thì AI sẽ đọc tốt hơn.

Ví dụ: 275 thì bạn nên viết là hai trăm bảy mươi lăm

Một vài câu hỏi thường gặp

Làm thế nào tôi có thể kiểm soát phạm vi cảm xúc của âm thanh được tạo ra?
Không có cơ chế trực tiếp nào để kiểm soát đầu ra cảm xúc của âm thanh được tạo. 

Một số yếu tố có thể ảnh hưởng đến âm thanh đầu ra như việc sử dụng chữ in hoa hoặc ngữ pháp, nhưng các thử nghiệm nội bộ của OpenAI đã cho kết quả không nhất quán.
Liệu tôi có thể tạo bản sao giọng nói của mình không?
Không, điều này không phải là điều OpenAI hỗ trợ.
Tôi có sở hữu các tệp âm thanh được xuất ra không?
Có, giống như với tất cả sản phẩm đầu ra từ API của OpenAI, người tạo ra chúng sở hữu sản phẩm đầu ra.

Bạn vẫn cần phải thông báo cho người dùng cuối rằng họ đang nghe âm thanh được tạo bởi AI chứ không phải là giọng nói thực của một người.
Bài viết trên mình đã giới thiệu và hướng dẫn các bạn về chức năng TTS của OpenAI, chuyển văn bản thành giọng nói có cảm xúc như người thật. Ngoài ra các bạn có thể vào tài liệu chính thức trên trang chủ của OpenAI để xem chi tiết nhé.

Lưu ý quan trọng: Đừng bao giờ chia sẻ hoặc để lộ API key của bạn, vì nếu người khác dùng API key của bạn để sử dụng trong API, thì bạn sẽ là người phải trả tiền.

Updated at 2024-04-11
Nếu bài viết có ích thì các bạn hãy chia sẻ nhé
Rate this article: 5/5 (52 ratings)
You didn't rate yet
Le Minh Thien Toan

Tác giả:Yuto Yasunaga

Xin chào các bạn. Mình là kỹ sư IT đang làm việc ở Nhật Bản. Mình tạo blog này để chia sẻ về cuộc sống và những kinh nghiệm trong quá trình học tập và làm việc.
Hy vọng bài viết này sẽ có ích cho bạn.