Xây dựng giao diện người dùng được kiểm soát bằng giọng nói

Sep 12, 2025
Cách

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.

  • 8 mẹo để thiết kế giao diện giọng nói

01. Bắt đầu dự án

Build a voice controlled UI: Start the project

Đừng lo lắng về CSS như đã viết [Hình ảnh: Trình thiết kế web]

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; 

02. Thêm nội dung

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; 

03. Chọn kết quả

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; 

04. Đài phát thanh hai.

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; 

05. Hiển thị văn bản

Build a voice controlled UI: Display the text

Bài phát biểu của người dùng sẽ kết thúc trong khu vực văn bản 'phiên mã' [Hình ảnh: Trình thiết kế web]

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; 

06. Giao diện cuối cùng

Build a voice controlled UI: The last interface

Nhấp vào nút giọng nói bắt đầu và dừng phát hiện giọng nói [Hình ảnh: Trình thiết kế web]

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; 

07. Thêm javascript.

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; 

08. Kết quả biến

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; 

09. Nó có được hỗ trợ không?

Đ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 {

10. Bắt đầu sự công nhận

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 ++) {

11. Cuối cùng hoặc tạm thờ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ể };

12. Xử lý lỗi

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;
}; 

13. Bắt đầu nói!

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; 

14. Lấy đầu vào

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;
} 

15. Bấm để dừng

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ể
}); 

16. Xóa văn bản

Build a voice controlled UI: Clear the text

Nút rõ ràng sẽ loại bỏ lời nói sai lệch [Hình ảnh: Trình thiết kế web]

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 = '';
});
} 

17. Thêm mục đích

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; 

18. Tổng số nộp

Build a voice controlled UI: Total submission

Nút Gửi gửi bài phát biểu nhập vào [Hình ảnh: Trình thiết kế web]

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; 

19. Các yếu tố giao diện mới

Ở đầ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á'); 

20. Gửi mục

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ỏ'); 

21. Bài cuối cùng

Build a voice controlled UI: Final submission

Nếu bạn muốn lưu trữ bài phát biểu gửi, bạn sẽ phải sử dụng cơ sở dữ liệu [Hình ảnh: Trình thiết kế web]

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:

  • 14 của API JavaScript tốt nhất
  • Xây dựng một chatbot hỗ trợ ai
  • 5 xu hướng UX mới nổi trong năm 2019

Cách - Các bài báo phổ biến nhất

21 bước để JavaScript siêu tốc độ

Cách Sep 12, 2025

[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 ..


Giải quyết tranh chân dung với dầu

Cách Sep 12, 2025

[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..


14 mẹo quy trình làm việc Zbrush

Cách Sep 12, 2025

[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..


10 mẹo để thành thạo ứng dụng Ảnh của Apple

Cách Sep 12, 2025

[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�..


Tạo khung kiểu trong Photoshop

Cách Sep 12, 2025

[số 8] Trang 1/2: trang 1 trang 1 Trang..


Xây dựng các thành phần đáp ứng có thể mở rộng

Cách Sep 12, 2025

[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..


Tạo môi trường trò chơi trong Unreal Engine 4

Cách Sep 12, 2025

[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..


15 mẹo để tối ưu hóa thiết bị chéo

Cách Sep 12, 2025

[số 8] Thiết kế cho tất cả các thiết bị! Anna Dahlström. sẽ nói về t�..


Thể loại