1. Tổng quan về Mô hình Nói
1.1. Giới thiệu về Mô hình TTS và STT của OpenAI
Mô hình Text-to-Speech (TTS)
Mô hình TTS của OpenAI có thể chuyển đổi dữ liệu văn bản thành đầu ra âm thanh. Quá trình này bao gồm phân tích văn bản, áp dụng các thuật toán tổng hợp giọng nói và điều chỉnh chất lượng âm thanh. Nó cho phép máy tính đọc bất kỳ văn bản nào, làm nội dung trở nên dễ hiểu và dễ tiếp cận hơn. TTS là một công nghệ quan trọng đối với người mù, lái xe hoặc bất kỳ ai muốn nhận thông tin thông qua việc nghe.
Mô hình Speech-to-Text (STT)
Tương ứng với TTS, mô hình STT có thể chuyển đổi thông tin nói thành văn bản viết. Khi xử lý đầu vào âm thanh gốc, hệ thống STT trước tiên thực hiện phát hiện giọng nói, tiếp theo là trích xuất đặc tính. Sau đó, nó ánh xạ tín hiệu âm thanh vào từ vựng bằng cách sử dụng các mô hình âm thanh và ngôn ngữ, cuối cùng tạo ra đầu ra văn bản. Công nghệ STT được sử dụng rộng rãi trong việc nhận dạng giọng nói, chuyển hội nghị thành văn bản và tạo chú thích thời gian thực.
1.2. Các Kịch Bản Ứng Dụng
- Đọc bài blog đọc to
- Tạo ra giọng nói đa ngôn ngữ
3. Text-to-Speech API
3.1. Bắt Đầu Nhanh
Trong phần này, chúng tôi sẽ minh họa cách nhanh chóng chuyển đổi văn bản thành giọng nói bằng cách sử dụng lệnh curl và một client Python. Dù bạn là một nhà phát triển hay người dùng không kỹ thuật, bạn có thể dễ dàng tạo ra các tệp âm thanh bằng cách gửi yêu cầu API.
Gửi Yêu Cầu Bằng Lệnh curl
Để tạo ra giọng nói bằng công cụ dòng lệnh curl, làm theo các bước sau:
- Đảm bảo rằng curl đã được cài đặt trên hệ thống của bạn và bạn có một khóa API OpenAI hợp lệ.
- Sử dụng lệnh curl sau để chuyển đổi văn bản thành giọng nói:
curl https://api.openai.com/v1/audio/speech \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Hôm nay là một ngày tuyệt vời để xây dựng những sản phẩm mà mọi người yêu thích!",
"voice": "alloy"
}' \
--output speech.mp3
Trong lệnh trên, $OPENAI_API_KEY
đại diện cho khóa API của bạn, trường input
là văn bản bạn muốn chuyển đổi, trường model
chỉ định mô hình giọng nói sử dụng, và tham số voice
chọn giọng nói. Ở đây, chúng ta chọn giọng nói nhân tạo alloy
. Tùy chọn --output
cuối cùng chỉ định tên và định dạng của tệp đầu ra.
Sử Dụng Client Python
Nếu bạn muốn sử dụng ngôn ngữ lập trình Python, bạn có thể sử dụng đoạn mã sau:
from openai import OpenAI
client = OpenAI()
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Hôm nay là một ngày tuyệt vời để xây dựng những sản phẩm mà mọi người yêu thích!"
)
response.stream_to_file("output.mp3")
Trong đoạn mã này, chúng ta trước tiên nhập thư viện openai
và tạo một phiên bản của client OpenAI. Sau đó, chúng tôi sử dụng phương thức audio.speech.create
để gửi một yêu cầu, chỉ định mô hình, giọng nói và văn bản cần chuyển đổi. Cuối cùng, chúng ta sử dụng phương thức stream_to_file
để lưu luồng giọng nói tạo ra vào một tệp.
3.2. Lựa Chọn Chất Lượng Âm Thanh và Giọng Nói
Việc chọn chất lượng âm thanh và giọng nói phù hợp cho dự án của bạn là một bước quan trọng để đảm bảo trải nghiệm người dùng tốt nhất. API của chúng tôi cung cấp hai tùy chọn cho mô hình chất lượng âm thanh: tts-1
và tts-1-hd
.
-
tts-1
: Cung cấp thời gian trễ thấp, phù hợp cho các ứng dụng thời gian thực, nhưng có chất lượng âm thanh tương đối thấp. -
tts-1-hd
: Cung cấp đầu ra âm thanh chất lượng cao hơn, phù hợp cho nhu cầu tạo ra giọng nói chất lượng cao không thời gian thực.
Ngoài ra, API TTS của OpenAI cung cấp các tùy chọn giọng nói khác nhau:
- Alloy
- Echo
- Fable
- Onyx
- Nova
- Shimmer
Tùy theo yêu cầu dự án và đối tượng người dùng, bạn có thể kiểm tra các mẫu giọng nói khác nhau để chọn giọng phù hợp nhất. Cân nhắc các yếu tố như phong cách nói, tốc độ nói và ngữ điệu để tìm ra giọng nói truyền đạt cảm xúc và chuyên nghiệp.
3.3. Định Dạng Đầu Ra và Ngôn Ngữ Được Hỗ Trợ
API TTS của OpenAI mặc định cho định dạng đầu ra MP3 nhưng cũng hỗ trợ nhiều định dạng âm thanh khác:
- Opus: Phù hợp cho streaming internet và giao tiếp, thời gian trễ thấp.
- AAC: Sử dụng cho nén âm thanh số, được ưa chuộng bởi các nền tảng như YouTube, Android, và iOS.
- FLAC: Định dạng nén âm thanh không mất dữ liệu được sử dụng bởi người yêu âm nhạc để lưu trữ dữ liệu âm thanh.
Về mặt hỗ trợ ngôn ngữ, API chủ yếu tuân theo mô hình Whisper, cung cấp nhiều tùy chọn ngôn ngữ để hỗ trợ nhiều ngôn ngữ quốc gia.
3.4. Chức năng Truyền Luồng Âm Thanh Thời Gian Thực
Để đáp ứng nhu cầu của các ứng dụng thời gian thực, API của chúng tôi cung cấp hỗ trợ cho việc truyền luồng âm thanh thời gian thực. Dưới đây là một ví dụ Python để thực hiện truyền luồng âm thanh thời gian thực:
from openai import OpenAI
client = OpenAI()
response = client.audio.speech.create(
model="tts-1",
voice="alloy",
input="Xin chào thế giới! Đây là một bài kiểm tra truyền luồng.",
)
response.stream_to_file("output.mp3")
4. API Chuyển Đổi Giọng Nói thành Văn Bản
4.1. Bắt Đầu Nhanh
Ở phần này, chúng tôi sẽ giới thiệu chức năng chính của API của OpenAI cho việc chuyển đổi giọng nói thành văn bản.
Trước tiên, bạn cần có một khóa API hợp lệ từ OpenAI và chuẩn bị một tệp âm thanh.
Bạn có thể sử dụng lệnh curl
để gửi yêu cầu POST chứa tệp âm thanh. Thay thế OPENAI_API_KEY
bằng khóa API của bạn và chỉnh đúng đường dẫn của tệp.
curl --request POST \
--url https://api.openai.com/v1/audio/transcriptions \
--header 'Authorization: Bearer OPENAI_API_KEY' \
--header 'Content-Type: multipart/form-data' \
--form file=@/đường/dẫn/đến/tệp/âm/thanh/của/bạn.mp3 \
--form model=whisper-1
Sau khi thực hiện lệnh trên, bạn sẽ nhận được một phản hồi định dạng JSON chứa thông tin về văn bản đã chuyển đổi.
Ví dụ:
{
"text": "Hãy tưởng tượng ý tưởng điên rồ nhất mà bạn từng có, và bạn đang tò mò về cách nó có thể mở rộng thành một cái gì đó lớn hơn 100, 1,000 lần. ..."
}
4.2. Định Dạng và Kích Thước Tệp Âm Thanh Được Hỗ Trợ
API này hỗ trợ nhiều định dạng tệp âm thanh phổ biến để đáp ứng các nhu cầu khác nhau trong các tình huống khác nhau. Các định dạng tệp được hỗ trợ bao gồm nhưng không giới hạn đến mp3
, mp4
, mpeg
, mpga
, m4a
, wav
, webm
, v.v. Điều này giúp người dùng dễ dàng xử lý tệp âm thanh từ nhiều nguồn khác nhau.
Đối với kích thước tệp, API hiện tại có một giới hạn không vượt quá 25MB. Điều này có nghĩa là nếu tệp âm thanh của bạn lớn hơn 25MB, bạn sẽ cần phải chia nó thành nhiều đoạn nhỏ hơn 25MB, hoặc sử dụng định dạng nén hiệu quả hơn. Ví dụ, các định dạng mp3
và opus
thường cung cấp việc nén hiệu quả, giảm kích thước tệp mà không ảnh hưởng nhiều đến chất lượng âm thanh.
Nếu bạn gặp phải tệp lớn hơn 25MB, bạn có thể xem xét sử dụng thư viện PyDub
trong Python để chia tệp âm thanh của bạn:
from pydub import AudioSegment
audio_file = AudioSegment.from_file("tệp_âm_thanh_lớn_của_bạn.mp3")
khoảng_cách = 10 * 60 * 1000 # 10 phút
đoạn = make_chunks(audio_file, khoảng_cách)
for i, chunk in enumerate(đoạn):
tên_đoạn = f"đoạn_âm_thanh_{i}.mp3"
đoạn.export(tên_đoạn, format="mp3")
Trong đoạn mã trên, hàm make_chunks
sẽ chia tệp âm thanh lớn thành nhiều phần nhỏ có khoảng cách thời gian 10 phút. Những đoạn này đều nằm trong giới hạn kích thước tệp yêu cầu bởi API và có thể được tải lên một cách riêng lẻ đến API của OpenAI để chuyển đổi.
Vui lòng lưu ý rằng mặc dù PyDub
cung cấp cho chúng ta một cách dễ dàng để xử lý tệp âm thanh, nhưng vẫn nên chú ý đặc biệt đến an toàn và sự ổn định của bất kỳ phần mềm bên thứ ba nào khi sử dụng nó. OpenAI không đảm bảo cho bất kỳ phần mềm bên thứ ba nào.