Chúng tôi đã thấy nhiều API mới được thêm vào Web trong vài năm qua đã kích hoạt nội dung Web thực sự có cùng loại chức năng vì nhiều ứng dụng đã có một thời gian. Một API tương đối mới là API nhận dạng giọng nói, mà có lẽ bạn có thể đoán, cho phép bạn sử dụng văn bản của mình dưới dạng đầu vào trên trang. Nó yêu cầu một cú nhấp chuột để bắt đầu dịch vụ và một lần nữa để dừng lại.
Một trường hợp tuyệt vời cho việc này có thể đang cho phép khả năng truy cập giữa người dùng của bạn, đưa ra đầu vào bằng giọng nói như một sự thay thế để nhấp vào. Nếu Analytics của bạn cho thấy rằng bạn có rất nhiều trình duyệt di động, thì hãy nghĩ rằng nó sẽ dễ dàng hơn bao nhiêu vào điện thoại của bạn hơn là sử dụng bàn phím.
[số 8]Đã có những dự đoán rằng các giao diện dựa trên màn hình có thể bắt đầu biến mất trong vòng mười năm. Lúc đầu, điều này nghe có vẻ như khoa học viễn tưởng, nhưng vì người dùng ngày càng thoải mái với lời nói như đầu vào thông qua các lượt thích của Alexa và Siri thì nó có lý do này sẽ trở nên phổ biến như một phương thức nhập liệu. Hướng dẫn ở đây sẽ giúp bạn tăng tốc độ cho đầu vào giọng nói và sau đó sử dụng để để lại đánh giá sản phẩm trên một Trang web thương mại điện tử. .
Tải về các tập tin cho hướng dẫn này.
Từ thư mục Tệp Dự án, hãy mở thư mục 'Bắt đầu' trong mã IDE của bạn và mở tệp 'speech.html' để chỉnh sửa. Tất cả các CSS cho dự án được viết là không phải là trọng tâm của API giọng nói, vì vậy hãy thêm liên kết được hiển thị ở đây để lấy kiểu chữ Noto serif và liên kết tệp CSS.
& lt; liên kết href = "https://fonts.geogleapis.com/cs?family=noto+serif" rel = "stylesheet" & gt;
& lt; link rel = "stylesheet" href = "css / style.css" & gt;
Các yếu tố đầu tiên của điều này sẽ là có một trình bao bọc trong đó để chứa tất cả nội dung trên màn hình của chúng tôi. Phần tử đầu tiên ở đây sẽ là một thông báo ẩn cho người dùng biết nếu API giọng nói được hỗ trợ trong trình duyệt. Điều này sẽ chỉ được nhìn thấy nếu nó không. Sau đó, một tiêu đề cho người dùng biết rằng các thành phần biểu mẫu sẽ được sử dụng cho thông báo của họ.
& lt; div id = "wrapper" & gt;
& lt; span id = "Lớp" không được hỗ trợ = "Hỗ trợ ẩn" & gt; API lời nói không được hỗ trợ & lt; / span & gt;
& lt; h2 & gt; thông điệp của bạn: & lt; / h2 & gt;
Khi sử dụng API Speech, có hai cách để hiển thị nội dung. Trong một, văn bản hiển thị khi người dùng đã ngừng nói và nút 'nghe' được nhấp vào. Khác cho thấy các từ trên màn hình như được nói. Nút radio đầu tiên này cho phép hiển thị kết quả giọng nói cuối cùng.
& lt; div id = "typeOfinput" & gt;
& lt; span & gt; kết quả: & lt; / span & gt;
& lt; nhãn & gt;
& lt; loại đầu vào = tên vô tuyến = giá trị loại nhận dạng = cuối cùng & gt; Bài phát biểu cuối cùng & lt; / nhãn & gt;
Nút radio thứ hai được thêm vào đây và cái này cho phép người dùng chọn văn bản sẽ được hiển thị khi chúng nói. Các nút radio này sẽ được chọn bởi JavaScript sau này và được sử dụng để điều khiển đầu vào giọng nói, nhưng bây giờ điều này cho phép người dùng có giao diện để kiểm soát điều đó.
& lt; nhãn & gt;
& lt; loại đầu vào = tên radio = giá trị loại nhận dạng = kiểm tra tạm thời & gt; Khi bạn nói & lt; / nhãn & gt;
& lt; / div & gt;
Văn bản mà người dùng nói vào trang sẽ cần được hiển thị trên màn hình. Ở đây, khu vực văn bản được thêm vào đó có id của 'phiên mã' - điều này sẽ được nhắm mục tiêu để bài phát biểu của người dùng kết thúc tại đây. Ngoài ra còn có một nút rõ ràng để xóa văn bản.
& lt; textarea id = "phiên mã" readonly & gt;
& lt; / textarea & gt;
& lt; br / & gt;
& lt; nút id = "xóa tất cả" lớp = "nút" & gt; xóa văn bản & lt; / nút & gt;
Các phần tử giao diện cuối cùng được thêm vào màn hình ngay bây giờ. Nút giọng nói cho phép và vô hiệu hóa lời nói, vì vậy nó phải được nhấp vào trước khi nói. Nhấp lại dừng lại. Vì đây là một tương tác tương đối mới, nhật ký bên dưới sẽ cho người dùng biết phải làm gì.
& lt; div class = "nút-wrapper" & gt;
& lt; div id = "speechbutton" class = "start" & gt; & lt; / div & gt;
& lt; / div & gt;
& lt; div id = "log" & gt; nhấp để bắt đầu nói & lt; / div & gt;
& lt; / div & gt;
Bây giờ thêm các thẻ script trước thẻ bế thân. Đây là nơi tất cả các javascript sẽ đi. Hai dòng đầu tiên lấy các phần tử trang với ID phù hợp và lưu trữ chúng trong một biến. Phiên âm là kết quả văn bản của bài phát biểu. Nhật ký sẽ cập nhật người dùng cách sử dụng nó.
& lt; script & gt;
var phiên mã = document.getelementById ('phiên mã');
var log = document.getelementById ('log');
& lt; / script & gt;
Sử dụng một vài biến tiếp theo, nhiều phần tử giao diện được lưu trong bộ nhớ cache. Nút nói sẽ trở thành chuyển đổi, cho phép người dùng chuyển đổi và tắt bài phát biểu., Được giám sát bởi một biến Boolean, TRUE / FALSE. Nút rõ ràng sẽ xóa kết quả giọng nói không đạt yêu cầu.
var start = document.getelementbyId ('speechbutton');
var clear = document.getelementbyId ('rõ ràng tất cả');
var nói = sai;
Điều đầu tiên Mã của chúng tôi sẽ làm là tìm hiểu xem tính năng giọng nói này được hỗ trợ bởi trình duyệt của người dùng hay không. Nếu kết quả này trở lại dưới dạng null thì câu lệnh if ném lên thông báo ẩn, đồng thời lấy nút khởi động cách xa giao diện để dừng đầu vào giọng nói.
window.speechrecognition = window.speechrecognit ||
window.webkitspeechrecogn | |
vô giá trị;
if (window.speechrecognition === null) {
tài liệu.getelementbyId ('không được hỗ trợ'). ClassList.Remove ('ẩn');
start. classlist.add ('ẩn');
} other {
Việc nhận dạng giọng nói được bắt đầu là 'Khác' để nhận dạng giọng nói có sẵn. Đầu vào liên tục được khởi động là mặc định trên các nút radio. Chức năng 'OnResult' sẽ xử lý kết quả của đầu vào lời nói. Điều này sẽ được thêm vào trường văn bản của phiên mã.
var advice = cửa sổ mới.
Nhận dạng giọng nói();
nhận dạng. Liên tục = Đúng;
advice.onresult = hàm (sự kiện) {
phiên mã.TextContent = '';
cho (var i = event.resultindex; i & lt; sự kiện.
kết quả.length; I ++) {
Câu lệnh IF hiện đang kiểm tra xem người dùng có muốn hiển thị văn bản như họ đang nói chuyện không (tạm thời) hoặc chỉ sau khi họ hoàn thành việc nói (trận chung kết). Bạn sẽ nhận thấy rằng nếu nó tạm thời, mỗi từ được thêm vào văn bản với '+ =', trong khi cuối cùng chỉ đổ toàn bộ văn bản trong đó.
if (event.results [i] .isfinal) {
phiên mã.TextContent = event.results [i] .transcript;
} other {
phiên mã.TextContent + = event.results [i] .transcript;
Không thể
Không thể
};
Cũng như hầu hết các API JavaScript, có một trình xử lý lỗi sẽ cho phép bạn quyết định phải làm gì với bất kỳ vấn đề nào có thể phát sinh. Những thứ này được ném vào Div 'Log' để cung cấp phản hồi cho người dùng, vì điều cần thiết là họ biết về những gì có thể xảy ra với giao diện.
adioizer.onerror = hàm (sự kiện) {
log.innerhtml = 'Lỗi nhận dạng:' +
sự kiện.message + '& lt; br / & gt;' + log.innerhtml;
};
Trình nghe sự kiện ở đây được bắt đầu khi người dùng nhấp vào nút để bắt đầu nói. Nếu người dùng không nói, thì nút thay đổi màu sắc để hiển thị Nói đã bắt đầu, biến để biết đọc thành TRUE và nút radio 'Interim' được chọn để xem liệu đây có phải là lựa chọn của người dùng để nhập.
start.addeventlistener ('nhấp', hàm () {
Nếu (! Nói) {
nói = đúng;
start. classlist.Toggle ('stop');
advice.interimresults = tài liệu.
QuerySelector ('đầu vào [tên = "nhận dạng
"Loại"] [Giá trị = "tạm thời"] '). Đã kiểm tra;
Tuyên bố 'thử và bắt' bây giờ bắt đầu nhận dạng giọng nói và cho người dùng biết rằng họ nên bắt đầu nói và khi chúng được thực hiện, 'nhấp lại để dừng'. Việc bắt sẽ lấy lỗi và ném nó vào div 'log' để người dùng có thể hiểu những gì có thể sai.
thử {
advice.start ();
log.innerhtml = 'Bắt đầu nói ngay bây giờ
& lt; br / & gt; nhấp để dừng ';
} bắt (ví dụ) {
log.innerhtml = 'Lỗi nhận dạng:
& lt; br / & gt; ' + Ex.Message;
}
Bây giờ khi người dùng nhấp để dừng nói chuyện, việc nhận dạng giọng nói bị dừng. Nút được thay đổi trở lại màu xanh lục từ màu đỏ trong khi nói chuyện. Giao diện người dùng được cập nhật để người dùng thông báo rằng dịch vụ đã dừng. Biến nói được đặt thành false, sẵn sàng để người dùng nói lại.
} other {
advice.stop ();
start. classlist.Toggle ('stop');
log.innerhtml = 'Nhận dạng dừng lại
& lt; br / & gt; bấm để nói ';
Nói = Sai;
Không thể
});
Mã cuối cùng cho phần này chỉ là một nút xóa để xóa văn bản nhập lời nói trong trường hợp nó được giải thích sai. Lưu tệp và kiểm tra điều này trong trình duyệt của bạn. Bạn sẽ có thể nhấp vào nút để nói vào máy tính và xem kết quả.
Clear.addeventlistener ('nhấp', hàm () {phiên mã.TextContent = '';
});
}
Bây giờ như bạn có một ví dụ làm việc, cần có một số mục đích cho giao diện, vì vậy hãy thực hiện điều này để người dùng có thể nhập đánh giá. Lưu trang và sau đó chọn Lưu dưới dạng, với tên mới của 'đánh giá.html'. Thêm các yếu tố HTML sau ngay sau đó & lt; div id = "wrapper" & gt; hàng.
& lt; H1 & GT; Đánh giá sản phẩm & LT; / H1 & GT;
& lt; div id = "đánh giá" & gt; & lt; / div & gt;
Mã trước sẽ giữ các đánh giá. Người dùng sẽ cần gửi đầu vào giọng nói của họ, vì vậy hãy thêm nút gửi ngay sau nút 'Xóa văn bản', sẽ xung quanh dòng 28 trong mã của bạn. Sau đó, bạn có thể di chuyển xuống JavaScript cho bước tiếp theo.
& lt; nút id = "Gửi" class = "nút" & gt; gửi đánh giá & lt; / nút & gt;
Ở đầu JavaScript của bạn, thêm các biến mới để giữ các tham chiếu đến các thành phần giao diện mới vừa được thêm vào. Chúng sẽ cung cấp cho bạn một cách để gửi và hiển thị kết quả trên màn hình trong phần 'đánh giá' của trang.
var Gửi = document.getelementbyId ('gửi');
var Đánh giá = document.getelementById ('đánh giá');
Bây giờ mã ở đây sẽ xử lý khi người dùng nhấp vào nút gửi, đặt ngay bên phải trước mã nút 'rõ ràng', phải xung quanh dòng 88 trong mã của bạn. Đầu tiên, một thẻ đoạn văn được tạo và đầu vào giọng nói sau đó được thêm vào này. Sau đó, điều này sẽ được thêm vào phần 'Đánh giá'.
Gửi.addeventlistener ('nhấp', hàm () {
Đặt p = document.createase ('p');
var textnode = document.creatTextNode
(phiên mã.Value);
p.appendchild (Textnode);
Xem lại.appendchild (p);
Hãy để hôm nay = ngày mới ();
hãy để s = document.createase ('nhỏ');
Ngày được thêm vào để đánh giá được định kỳ theo dấu chấm thời vào tài liệu. Cuối cùng, quy tắc ngang được thêm vào để hiển thị nơi mỗi đánh giá kết thúc, sau đó văn bản bị xóa sẵn sàng cho đầu vào mới. Lưu trang và kiểm tra điều này. Bây giờ bạn sẽ thấy rằng bạn có thể gửi bài phát biểu của mình vào trang dưới dạng đánh giá. Vì sự kiên trì, bạn sẽ cần sử dụng cơ sở dữ liệu để lưu trữ các kết quả này.
Textnode = document.creatTextNode (hôm nay);
s.appendchild (textnode);
Đánh giá.appendchild (s);
hãy để Hr = document.createase ('hr');
Xem lại.appendchild (HR);
phiên mã.TextContent = '';
});
Bài viết này ban đầu được xuất bản trong số 286 của Tạp chí Thiết kế web sáng tạo Nhà thiết kế web . MUA VẤN ĐỀ 286 TẠI ĐÂY hoặc là Đăng ký nhà thiết kế web ở đây .
Những bài viết liên quan:
[số 8] (Tín dụng hình ảnh: pexels.com) Thoạt nhìn, xử lý song song nghe có vẻ như một lời mời ..
[số 8] Hội thảo này là về việc tạo ra một bức tranh sơn dầu chân dung với ý nghĩa. Cũng về ý tưởn..
[số 8] Tất cả các nghệ sĩ có quy trình làm việc độc đáo của riêng họ khi tạo nghệ thuật 3D trong Zb..
[số 8] Ứng dụng hình ảnh MacOS bắt đầu cuộc sống như iPhoto: một ứng dụng tiêu dùng để quản lý c�..
[số 8] Bất cứ khi nào chúng ta nói về việc xây dựng các trang web có thể duy trì và có thể mở rộng, c..
[số 8] Sử dụng Project 4 Project của tôi, điểm dừng cuối cùng như một ví dụ, tôi muốn hiển thị cho b..
[số 8] Thiết kế cho tất cả các thiết bị! Anna Dahlström. sẽ nói về t�..