Thông tin về lớp học lập trình này
1. Tổng quan
API Chuyển lời nói thành văn bản của Google Cloud cho phép các nhà phát triển chuyển đổi âm thanh thành văn bản bằng 120 ngôn ngữ và nhiều biến thể khác nhau, bằng cách áp dụng các mô hình mạng nơron mạnh mẽ trong một API dễ sử dụng.
Trong lớp học lập trình này, bạn sẽ tập trung vào việc sử dụng API Chuyển lời nói thành văn bản với Node.js. Bạn sẽ tìm hiểu cách gửi tệp âm thanh bằng tiếng Anh và các ngôn ngữ khác tới Cloud Speech-to-Text API để chép lời.
Kiến thức bạn sẽ học được
- Cách bật API Chuyển lời nói thành văn bản
- Cách xác thực yêu cầu API
- Cách cài đặt thư viện ứng dụng Google Cloud cho Node.js
- Cách chép lời tệp âm thanh bằng tiếng Anh
- Cách chép lời tệp âm thanh bằng dấu thời gian của từ
- Cách chép lời tệp âm thanh bằng nhiều ngôn ngữ
Bạn cần có
- Một dự án trên Google Cloud Platform
- Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
- Quen thuộc với JavaScript/Node.js
Khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá trải nghiệm của bạn với Node.js như thế nào?
Bạn đánh giá trải nghiệm sử dụng các dịch vụ của Google Cloud Platform như thế nào?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. (Nếu chưa có tài khoản Gmail hoặc G Suite, bạn phải tạo một tài khoản.)
Xin lưu ý rằng mã dự án là một tên riêng biệt trong tất cả dự án Google Cloud (tên ở trên đã được sử dụng nên sẽ không phù hợp với bạn!). Lớp này sẽ được đề cập sau trong lớp học lập trình này là PROJECT_ID
.
- Tiếp theo, bạn sẽ cần bật tính năng thanh toán trong Cloud Console để sử dụng tài nguyên của Google Cloud.
Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Hãy nhớ làm theo mọi hướng dẫn trong phần "Dọn dẹp" sẽ tư vấn cho bạn cách tắt tài nguyên để bạn không phải chịu thanh toán ngoài hướng dẫn này. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell
.
Nếu trước đây chưa từng khởi động Cloud Shell, bạn sẽ được trình bày một màn hình trung gian (dưới màn hình đầu tiên) mô tả về ứng dụng này. Nếu trường hợp đó xảy ra, hãy nhấp vào Tiếp tục (và bạn sẽ không thấy thông báo đó nữa). Màn hình một lần đó sẽ có dạng như sau:
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.
Máy ảo này chứa tất cả các công cụ phát triển mà bạn cần. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trong Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Trong lớp học lập trình này, đa số mọi người đều có thể thực hiện chỉ bằng một trình duyệt hoặc Chromebook.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án đã được đặt thành mã dự án.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Kết quả lệnh
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể đặt chế độ này bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Bật API Chuyển lời nói thành văn bản
Bạn phải bật API này thì mới có thể bắt đầu sử dụng API Chuyển lời nói thành văn bản. Bạn có thể bật API này bằng cách dùng lệnh sau trong Cloud Shell:
gcloud services enable speech.googleapis.com
4. Xác thực các yêu cầu API
Để gửi yêu cầu tới API Chuyển lời nói thành văn bản, bạn cần sử dụng Tài khoản dịch vụ. Tài khoản dịch vụ thuộc về dự án của bạn và tài khoản này được thư viện Node.js của ứng dụng Google sử dụng để thực hiện các yêu cầu API Chuyển lời nói thành văn bản. Giống như mọi tài khoản người dùng khác, tài khoản dịch vụ được đại diện bằng địa chỉ email. Trong phần này, bạn sẽ sử dụng Cloud SDK để tạo một tài khoản dịch vụ, sau đó tạo thông tin xác thực mà bạn cần để xác thực là tài khoản dịch vụ.
Trước tiên, hãy đặt một biến môi trường bằng PROJECT_ID mà bạn sẽ sử dụng trong suốt lớp học lập trình này. Nếu bạn đang sử dụng Cloud Shell, thì biến này sẽ được thiết lập cho bạn:
export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)
Tiếp theo, hãy tạo một tài khoản dịch vụ mới để truy cập API Chuyển lời nói thành văn bản bằng cách sử dụng:
gcloud iam service-accounts create my-speech-to-text-sa \
--display-name "my speech-to-text codelab service account"
Tiếp theo, hãy tạo thông tin đăng nhập mà mã Node.js sẽ sử dụng để đăng nhập làm tài khoản dịch vụ mới của bạn. Tạo các thông tin đăng nhập này và lưu dưới dạng tệp JSON ~/key.json
bằng cách sử dụng lệnh sau:
gcloud iam service-accounts keys create ~/key.json \
--iam-account my-speech-to-text-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com
Cuối cùng, hãy đặt biến môi trường GOOGLE_APPLICATION_CREDENTIALS
(được thư viện Node.js của API Chuyển lời nói thành văn bản sử dụng trong bước tiếp theo) để tìm thông tin xác thực của bạn. Bạn phải đặt biến môi trường thành đường dẫn đầy đủ của tệp JSON chứa thông tin đăng nhập mà bạn đã tạo bằng cách sử dụng:
export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"
Bạn có thể đọc thêm về cách xác thực API Chuyển lời nói thành văn bản.
5. Cài đặt thư viện ứng dụng API Chuyển lời nói thành văn bản của Google Cloud cho Node.js
Trước tiên, hãy tạo dự án mà bạn sẽ sử dụng để chạy phòng thí nghiệm API Chuyển lời nói thành văn bản này, khởi chạy gói Node.js mới trong thư mục bạn chọn:
npm init
Đối tác phân bổ giá trị gia tăng đặt ra một số câu hỏi về cấu hình dự án, chẳng hạn như tên và phiên bản. Đối với mỗi câu hỏi, hãy nhấn ENTER
để chấp nhận các giá trị mặc định. Điểm truy cập mặc định là tệp có tên index.js
.
Tiếp theo, hãy cài đặt thư viện Google Cloud Speech cho dự án:
npm install --save @google-cloud/speech
Để được hướng dẫn thêm về cách thiết lập quy trình phát triển Node.js cho Google Cloud, vui lòng xem Hướng dẫn thiết lập.
Bây giờ, bạn đã sẵn sàng sử dụng API Chuyển lời nói thành văn bản!
6. Chép lời tệp âm thanh
Trong phần này, bạn sẽ chép lời tệp âm thanh ghi sẵn bằng tiếng Anh. Tệp âm thanh có trên Google Cloud Storage.
Chuyển đến tệp index.js
bên trong và thay thế mã bằng đoạn mã sau:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map(result => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Hãy dành một hoặc hai phút để nghiên cứu mã và xem mã đó được dùng để chép lời một tệp âm thanh*.*
Tham số Encoding
cho API biết loại mã hoá âm thanh mà bạn đang sử dụng cho tệp âm thanh. Flac
là kiểu mã hoá cho các tệp .raw (xem tài liệu để biết kiểu mã hoá để biết thêm chi tiết).
Trong đối tượng RecognitionAudio
, bạn có thể chuyển API đến URI của tệp âm thanh trong Cloud Storage hoặc đường dẫn tệp trên máy cho tệp âm thanh. Ở đây, chúng ta đang sử dụng URI Cloud Storage.
Chạy chương trình:
node .
Bạn sẽ thấy kết quả sau đây:
how old is the Brooklyn Bridge
7. Chép lời bằng dấu thời gian của từ
Tính năng Chuyển lời nói thành văn bản có thể phát hiện chênh lệch thời gian (dấu thời gian) cho âm thanh được chép lời. Chế độ bù trừ thời gian hiển thị thời điểm bắt đầu và kết thúc mỗi lời nói trong bản âm thanh được cung cấp. Giá trị bù trừ thời gian biểu thị khoảng thời gian đã trôi qua kể từ thời điểm bắt đầu âm thanh, theo gia số 100 mili giây.
Chuyển đến tệp index.js
bên trong và thay thế mã bằng đoạn mã sau:
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'LINEAR16',
sampleRateHertz: 16000,
languageCode: 'en-US',
enableWordTimeOffsets: true,
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
response.results.forEach((result) => {
result.alternatives.forEach((alternative) => {
console.log(`Transcript: ${alternative.transcript}`);
console.log(`Word details:`);
console.log(` Word count ${alternative.words.length}`);
alternative.words.forEach((item) => {
console.log(` ${item.word}`);
const s = parseInt(item.startTime.seconds) +
item.startTime.nanos/1000000000;
console.log(` WordStartTime: ${s}s`);
const e = parseInt(item.endTime.seconds) +
item.endTime.nanos/1000000000;
console.log(` WordEndTime: ${e}s`);
});
});
});
}
quickstart();
Hãy dành một hoặc hai phút để nghiên cứu đoạn mã và xem mã đó được dùng để chép lời một tệp âm thanh bằng dấu thời gian của từ*.* Tham số EnableWordTimeOffsets
yêu cầu API bật chế độ chênh lệch thời gian (xem tài liệu để biết thêm chi tiết).
Chạy lại chương trình:
node .
Bạn sẽ thấy kết quả sau đây:
Transcript: how old is the Brooklyn Bridge
Word details:
Word count 6
how
WordStartTime: 0s
WordEndTime: 0.3s
old
WordStartTime: 0.3s
WordEndTime: 0.6s
is
WordStartTime: 0.6s
WordEndTime: 0.8s
the
WordStartTime: 0.8s
WordEndTime: 0.9s
Brooklyn
WordStartTime: 0.9s
WordEndTime: 1.1s
Bridge
WordStartTime: 1.1s
WordEndTime: 1.4s
8. Chép lời các ngôn ngữ khác nhau
API Chuyển lời nói thành văn bản hỗ trợ chép lời cho hơn 100 ngôn ngữ! Bạn có thể tìm thấy danh sách ngôn ngữ được hỗ trợ tại đây.
Trong phần này, bạn sẽ chép lời một tệp âm thanh ghi sẵn bằng tiếng Pháp. Tệp âm thanh có trên Google Cloud Storage.
Chuyển đến tệp index.js
bên trong và thay thế mã bằng đoạn mã sau:
// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');
const client = new speech.SpeechClient();
/**
* Calls the Speech-to-Text API on a demo audio file.
*/
async function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
const audio = {
uri: gcsUri,
};
const config = {
encoding: 'FLAC',
languageCode: 'fr-FR',
};
const request = {
audio: audio,
config: config,
};
// Detects speech in the audio file
const [response] = await client.recognize(request);
const transcription = response.results
.map((result) => result.alternatives[0].transcript)
.join('\n');
console.log(`Transcription: ${transcription}`);
}
quickstart();
Chạy lại chương trình và bạn sẽ thấy kết quả sau:
maître corbeau sur un arbre perché tenait en son bec un fromage
Đây là một câu trong một câu chuyện trẻ em ở Pháp nổi tiếng.
Để biết danh sách đầy đủ các ngôn ngữ và mã ngôn ngữ được hỗ trợ, hãy xem tài liệu tại đây.
9. Xin chúc mừng!
Bạn đã tìm hiểu cách dùng API Node.js để chuyển lời nói thành văn bản để thực hiện nhiều loại bản chép lời trên tệp âm thanh!
Dọn dẹp
Để tránh bị tính phí vào tài khoản Google Cloud Platform của bạn cho các tài nguyên được sử dụng trong hướng dẫn bắt đầu nhanh này, hãy làm như sau:
- Truy cập vào Bảng điều khiển Cloud Platform.
- Chọn dự án bạn muốn tắt, sau đó nhấp vào "Xoá" ở trên cùng: thao tác này sẽ lên lịch xoá dự án.
Tìm hiểu thêm
- API Chuyển lời nói thành văn bản của Google Cloud: https://cloud.google.com/speech-to-text/docs
- Node.js trên Google Cloud Platform: https://cloud.google.com/nodejs/
- Ứng dụng Node.js của Google Cloud: https://googlecloudplatform.github.io/google-cloud-node/
Giấy phép
Tác phẩm này được cấp phép theo Giấy phép chung Ghi nhận tác giả Creative Commons 2.0.