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 cho phép các nhà phát triển chuyển đổi âm thanh thành văn bản bằng hơn 125 ngôn ngữ và nhiều biến thể, 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 hướng dẫn 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 bằng Python.
Kiến thức bạn sẽ học được
- Cách thiết lập môi trường
- 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
- Một trình duyệt, chẳng hạn như Chrome hoặc Firefox
- Quen thuộc với Python
Khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm sử dụng Python?
Bạn đánh giá thế nào về trải nghiệm khi sử dụng các dịch vụ của Google Cloud?
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 Google 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 Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
- Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án của mình (thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian dự án. - Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. 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 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 đây là lần đầu tiên khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.
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 được tải tất cả các công cụ phát triển cần thiết. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên 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. Nhiều (nếu không nói là) tất cả công việc của bạn trong lớp học lập trình này đều có thể thực hiện bằng trình duyệt.
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`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
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. Thiết lập môi trường
Trước khi bạn có thể bắt đầu sử dụng API Chuyển lời nói thành văn bản, hãy chạy lệnh sau trong Cloud Shell để bật API này:
gcloud services enable speech.googleapis.com
Bạn sẽ thấy như sau:
Operation "operations/..." finished successfully.
Giờ đây, bạn có thể sử dụng API Chuyển lời nói thành văn bản!
Chuyển đến thư mục gốc:
cd ~
Tạo một môi trường ảo Python để tách biệt các phần phụ thuộc:
virtualenv venv-speech
Kích hoạt môi trường ảo:
source venv-speech/bin/activate
Cài đặt IPython và thư viện ứng dụng API Chuyển lời nói thành văn bản:
pip install ipython google-cloud-speech
Bạn sẽ thấy như sau:
... Installing collected packages: ..., ipython, google-cloud-speech Successfully installed ... google-cloud-speech-2.25.1 ...
Bây giờ, bạn đã sẵn sàng sử dụng thư viện ứng dụng API Chuyển lời nói thành văn bản!
Trong các bước tiếp theo, bạn sẽ sử dụng trình thông dịch Python tương tác có tên IPython mà bạn đã cài đặt trong bước trước. Bắt đầu một phiên bằng cách chạy ipython
trong Cloud Shell:
ipython
Bạn sẽ thấy như sau:
Python 3.9.2 (default, Feb 28 2021, 17:03:44) Type 'copyright', 'credits' or 'license' for more information IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help. In [1]:
Bạn đã sẵn sàng đưa ra yêu cầu đầu tiên...
4. Chép lời tệp âm thanh
Trong phần này, bạn sẽ chép lời một tệp âm thanh tiếng Anh.
Sao chép mã sau vào phiên IPython của bạn:
from google.cloud import speech
def speech_to_text(
config: speech.RecognitionConfig,
audio: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
client = speech.SpeechClient()
# Synchronous speech recognition request
response = client.recognize(config=config, audio=audio)
return response
def print_response(response: speech.RecognizeResponse):
for result in response.results:
print_result(result)
def print_result(result: speech.SpeechRecognitionResult):
best_alternative = result.alternatives[0]
print("-" * 80)
print(f"language_code: {result.language_code}")
print(f"transcript: {best_alternative.transcript}")
print(f"confidence: {best_alternative.confidence:.0%}")
Hãy dành chút thời gian nghiên cứu mã này và xem cách mã này sử dụng phương thức thư viện ứng dụng recognize
để chép lời tệp âm thanh*.* Tham số config
cho biết cách xử lý yêu cầu và tham số audio
chỉ định dữ liệu âm thanh cần nhận dạng.
Gửi yêu cầu:
config = speech.RecognitionConfig(
language_code="en",
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Bạn sẽ thấy kết quả sau đây:
-------------------------------------------------------------------------------- language_code: en-us transcript: how old is the Brooklyn Bridge confidence: 98%
Cập nhật cấu hình để bật tính năng đặt dấu câu tự động và gửi một yêu cầu mới:
config.enable_automatic_punctuation = True
response = speech_to_text(config, audio)
print_response(response)
Bạn sẽ thấy kết quả sau đây:
-------------------------------------------------------------------------------- language_code: en-us transcript: How old is the Brooklyn Bridge? confidence: 98%
Tóm tắt
Ở bước này, bạn đã có thể chép lời một tệp âm thanh bằng tiếng Anh, sử dụng nhiều tham số và in kết quả ra. Bạn có thể đọc thêm về cách chép lời tệp âm thanh.
5. Lấy 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.
Để chép lời một tệp âm thanh bằng dấu thời gian của từ, hãy cập nhật mã của bạn bằng cách sao chép đoạn mã sau vào phiên IPython của bạn:
def print_result(result: speech.SpeechRecognitionResult):
best_alternative = result.alternatives[0]
print("-" * 80)
print(f"language_code: {result.language_code}")
print(f"transcript: {best_alternative.transcript}")
print(f"confidence: {best_alternative.confidence:.0%}")
print("-" * 80)
for word in best_alternative.words:
start_s = word.start_time.total_seconds()
end_s = word.end_time.total_seconds()
print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
Hãy dành chút thời gian nghiên cứu đoạn mã này và xem cách mã này chép lời một tệp âm thanh bằng dấu thời gian của từ*.* Tham số enable_word_time_offsets
yêu cầu API trả về độ lệch thời gian cho từng từ (xem tài liệu để biết thêm chi tiết).
Gửi yêu cầu:
config = speech.RecognitionConfig(
language_code="en",
enable_automatic_punctuation=True,
enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Bạn sẽ thấy kết quả sau đây:
-------------------------------------------------------------------------------- language_code: en-us transcript: How old is the Brooklyn Bridge? confidence: 98% -------------------------------------------------------------------------------- 0.000 | 0.300 | How 0.300 | 0.600 | old 0.600 | 0.800 | is 0.800 | 0.900 | the 0.900 | 1.100 | Brooklyn 1.100 | 1.400 | Bridge?
Tóm tắt
Ở bước này, bạn đã có thể chép lời một tệp âm thanh bằng tiếng Anh bằng các dấu thời gian của từ và in kết quả. Hãy đọc thêm về cách nhận dấu thời gian của từ.
6. 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 nhận dạng hơn 125 ngôn ngữ và biến thể! 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 tiếng Pháp.
Để chép lời tệp âm thanh bằng tiếng Pháp, hãy cập nhật mã bằng cách sao chép đoạn mã sau vào phiên IPython của bạn:
config = speech.RecognitionConfig(
language_code="fr-FR",
enable_automatic_punctuation=True,
enable_word_time_offsets=True,
)
audio = speech.RecognitionAudio(
uri="gs://cloud-samples-data/speech/corbeau_renard.flac",
)
response = speech_to_text(config, audio)
print_response(response)
Bạn sẽ thấy kết quả sau đây:
-------------------------------------------------------------------------------- language_code: fr-fr transcript: Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau. confidence: 94% -------------------------------------------------------------------------------- 0.000 | 0.700 | Maître 0.700 | 1.100 | corbeau 1.100 | 1.300 | sur 1.300 | 1.600 | un 1.600 | 1.700 | arbre 1.700 | 2.000 | perché 2.000 | 3.000 | Tenait 3.000 | 3.000 | dans 3.000 | 3.200 | son 3.200 | 3.500 | bec 3.500 | 3.700 | un 3.700 | 3.800 | fromage ... 10.800 | 11.800 | monsieur 11.800 | 11.900 | du 11.900 | 12.100 | corbeau.
Tóm tắt
Ở bước này, bạn đã có thể chép lời một tệp âm thanh bằng tiếng Pháp và in kết quả. Bạn có thể đọc thêm về các ngôn ngữ được hỗ trợ.
7. Xin chúc mừng!
Bạn đã tìm hiểu cách dùng Python để chuyển lời nói thành văn bản nhằm thực hiện nhiều loại bản chép lời trên tệp âm thanh!
Dọn dẹp
Để dọn dẹp môi trường phát triển, từ Cloud Shell:
- Nếu bạn vẫn đang trong phiên IPython, hãy quay lại shell:
exit
- Ngừng sử dụng môi trường ảo Python:
deactivate
- Xoá thư mục môi trường ảo của bạn:
cd ~ ; rm -rf ./venv-speech
Cách xoá dự án của bạn trên Google Cloud khỏi Cloud Shell:
- Truy xuất mã dự án hiện tại của bạn:
PROJECT_ID=$(gcloud config get-value core/project)
- Hãy đảm bảo đây là dự án mà bạn muốn xoá:
echo $PROJECT_ID
- Xoá dự án:
gcloud projects delete $PROJECT_ID
Tìm hiểu thêm
- Kiểm tra bản minh hoạ trong trình duyệt: https://cloud.google.com/speech-to-text
- Tài liệu chuyển lời nói thành văn bản: https://cloud.google.com/speech-to-text/docs
- Python trên Google Cloud: https://cloud.google.com/python
- Thư viện ứng dụng Cloud dành cho Python: https://github.com/googleapis/google-cloud-python
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.