SpeechRecognition: Phương thức tĩnh install()
Experimental: This is an experimental technology
Check the Browser compatibility table carefully before using this in production.
Phương thức tĩnh install() của Web Speech API cài đặt các gói ngôn ngữ cần thiết cho nhận dạng giọng nói trên thiết bị theo các ngôn ngữ được chỉ định.
Để kiểm tra xem các gói ngôn ngữ đã khả dụng hay chưa, sử dụng phương thức SpeechRecognition.available().
Quyền truy cập vào phương thức install() được kiểm soát bởi chỉ thị Permissions-Policy on-device-speech-recognition. Cụ thể, khi một chính sách được định nghĩa chặn việc sử dụng, mọi nỗ lực gọi phương thức sẽ thất bại.
Cú pháp
install(options)
Tham số
options-
Một đối tượng chỉ định các tùy chọn cho việc cài đặt. Các thuộc tính có thể bao gồm:
langs-
Một mảng chứa một hoặc nhiều chuỗi có thẻ ngôn ngữ BCP 47, mỗi chuỗi đại diện cho một ngôn ngữ mà bạn muốn cài đặt gói ngôn ngữ.
Giá trị trả về
Một Promise phân giải với một giá trị boolean cho biết gói ngôn ngữ đã được cài đặt thành công hay không. Các điều kiện dẫn đến mỗi giá trị trả về như sau:
Ngoại lệ
InvalidStateErrorDOMException-
Tài liệu hiện tại không ở trạng thái hoạt động đầy đủ.
SyntaxErrorDOMException-
Một hoặc nhiều chuỗi được chỉ định trong
langskhông phải là thẻ ngôn ngữ BCP 47 hợp lệ.
Ví dụ
>Kiểm tra khả dụng trên thiết bị và cài đặt các gói ngôn ngữ
Để nhận dạng giọng nói trên thiết bị hoạt động, trình duyệt phải có một gói ngôn ngữ được cài đặt cho ngôn ngữ bạn muốn nhận dạng. Nếu bạn chạy phương thức start() sau khi chỉ định processLocally = true nhưng gói ngôn ngữ chính xác chưa được cài đặt, lời gọi hàm sẽ thất bại với lỗi language-not-supported.
Để cài đặt gói ngôn ngữ chính xác, đảm bảo bạn làm theo hai bước sau:
- Kiểm tra xem gói ngôn ngữ có khả dụng trên máy tính của người dùng hay không bằng phương thức
SpeechRecognition.available(). - Cài đặt gói ngôn ngữ nếu nó không khả dụng bằng phương thức
install().
Các bước này được xử lý bằng đoạn mã sau:
startBtn.addEventListener("click", () => {
// check availability of target language
SpeechRecognition.available({ langs: ["en-US"], processLocally: true }).then(
(result) => {
if (result === "unavailable") {
diagnostic.textContent = `en-US not available to download at this time. Sorry!`;
} else if (result === "available") {
recognition.start();
console.log("Ready to receive a color command.");
} else {
diagnostic.textContent = `en-US language pack downloading`;
SpeechRecognition.install({
langs: ["en-US"],
processLocally: true,
}).then((result) => {
if (result) {
diagnostic.textContent = `en-US language pack downloaded. Try again.`;
} else {
diagnostic.textContent = `en-US language pack failed to download. Try again later.`;
}
});
}
},
);
});
Đầu tiên chúng ta chạy phương thức available(), chỉ định một ngôn ngữ (langs: ["en-US"]) để kiểm tra khả dụng, và processLocally: true. Chúng ta kiểm tra ba khả năng khác nhau của giá trị trả về:
- Nếu giá trị kết quả là
unavailable, có nghĩa là không có gói ngôn ngữ phù hợp nào để tải xuống. Chúng ta cũng in một thông báo thích hợp ra đầu ra. - Nếu giá trị kết quả là
available, có nghĩa là gói ngôn ngữ khả dụng cục bộ, nên việc nhận dạng có thể bắt đầu. Trong trường hợp này, chúng ta chạystart()và ghi một thông báo vào console khi ứng dụng sẵn sàng nhận giọng nói. - Nếu giá trị là một giá trị khác (
downloadablehoặcdownloading), chúng ta in một thông báo chẩn đoán để thông báo cho người dùng rằng việc tải xuống gói ngôn ngữ đang bắt đầu, sau đó chạy phương thứcinstall()để xử lý việc tải xuống.
Phương thức install() hoạt động tương tự như phương thức available(), ngoại trừ đối tượng tùy chọn của nó chỉ nhận mảng langs. Khi chạy, nó bắt đầu tải xuống gói ngôn ngữ en-US và trả về một Promise phân giải với một boolean cho biết các gói ngôn ngữ được chỉ định đã được tải xuống và cài đặt thành công (true) hay không (false).
Đoạn mã này được trích từ ví dụ on-device speech color changer (chạy demo trực tiếp). Xem Sử dụng Web Speech API để biết giải thích đầy đủ.
Đặc tả kỹ thuật
| Thông số kỹ thuật |
|---|
| Web Speech API> # dom-speechrecognition-install> |