MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG VIỆT HÀN Khoa Khoa Học Máy Tính ĐỒ ÁN CƠ SỞ 5 TÊN ĐỀ TÀI TRỢ LÍ ẢO Sinh viên thực hiện BÙI ĐÌNH NHÃ HOÀNG VĂN TÚ LÂM Lớ[.]
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN CƠ SỞ 5
TÊN ĐỀ TÀI: TRỢ LÍ ẢO
Sinh viên thực hiện: BÙI ĐÌNH NHÃ
HOÀNG VĂN TÚ LÂM
Giảng viên hướng dẫn: ThS DƯƠNG THỊ MAI NGA
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN &
TRUYỀN THÔNG VIỆT HÀN
Khoa Khoa Học Máy Tính
ĐỒ ÁN CƠ SỞ 5
TÊN ĐỀ TÀI: TRỢ LÍ ẢO
Sinh viên thực hiện: BÙI ĐÌNH NHÃ Mã: 18IT160
HOÀNG VĂN TÚ LÂM Mã:
18IT160
Giảng viên hướng dẫn ThS DƯƠNG THỊ MAI NGA
Đà Nẵng, tháng 05 năm 2021
Trang 3NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
………
………
………
………
………
Trang 5MỤC LỤC
Trang
MỞ ĐẦU 1
1.1 Đặt vấn đề 1
1.2 Mục tiêu của đề tài 1
1.3 Cấu trúc đồ án 1
Chương 1: TỔNG QUAN 2
1 Khái niệm cơ bản 2
1.1 Trợ lý ảo 2
1.2 Google Assistant 3
1.3 Ưu điểm, nhược điểm 4
2 Ngôn ngữ sử dụng 5
2.1 Python 5
2.2 Lịch sử ra đời 5
Chương 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG 7
1 Sơ đồ Use Case tổng thể 7
2 Lưu đồ thuật toán 8
3 Xác định các tác nhân 8
4 Xác định các trường hợp sử dụng UserCase 9
4.1 Người dùng 9
5 Đặc tả các trường hợp sử dụng 9
5.1 Ca sử dụng hiển thị thời gian 9
5.2 Ca sử dụng xem thời tiết 10
5.3 Ca sử dụng nghe nhạc trên Youtube 11
5.4 Chức năng tìm kiếm 12
5.5 Xem định nghĩa từ Wikipedia 13
5.6 Đọc báo 14
Chương 3: TRIỂN KHAI XÂY DỰNG 16
1 Thiết Lập Môi Trường 16
1.1 Import Các Thư Viện 16
Trang 62 Phân Tích Thuật Toán 17
KẾT LUẬN 21
1 Kết quả đạt được 21
2 Kết quả chưa đạt được 21
3 Hướng nghiên cứu 21
TÀI LIỆU THAM KHẢO 22
Trang 7DANH MỤC HÌNH
Trang
Hình 1-1: Các trợ lý ảo trên Smartphone 2
Hình 1-2: Sử dụng Google Assistant trên điện thoại 4
Hình 1-1: Sơ đồ User Case 7
Hình 2-1: Lưu đồ thuật toán xử lí 8
Hình 5-1: Sơ đồ Use Case chi tiết hiển thị thời gian 10
Hình 5-2: Sơ đồ Use Case chi tiết xem thời tiết 11
Hình 5-3: Sơ đồ Use Case chi tiết nghe nhạc 12
Hình 5-4: Sơ đồ Use Case chi tiết tìm kiếm 13
Hình 5-5: Sơ đồ Use Case chi tiết xem định nghĩa 14
Hình 5-6: Sơ đồ Use Case chi tiết đọc báo 15
Hình 2-1: Cơ chế hoạt động của thuật toán nhận diện giọng nói 18
Hình 2-2: Chuyển âm thanh thành số 18
Hình 2-3: Tái tạo sóng âm gốc từ những mẫu tách biệt 19
Hình 2-4: Tiền xử lý âm thanh 19
Hình 2-5: Kết quả của tiền xử lý âm thanh 19
Hình 2-6: Minh họa nhận diện ký tự của VD 20
Trang 82 Mục tiêu của đề tài
Kết quả nghiên cứu từ đề tài này sẽ giúp nhóm em có nhiều kinh nghiệm để saukhi kết thúc môn học chúng em có đủ khả năng nghiên cứu chế tạo hoàn chỉnh để tạo ramột trợ lý ảo giúp cho học sinh sinh viên và những người có nhu cầu sử dụng
3 Cấu trúc đồ án
- Chương 1: Tổng quan
- Chương 2: Phân tích, thiết kế hệ thống
- Chương 3: Triển khai xây dựng
Trang 9Chương 1: TỔNG QUAN Khái niệm cơ bản
1 Trợ lý ảo
Trợ lý ảo là một khái niệm mới trong lĩnh vực công nghệ, phần mềm, lần đầuđược biết tới trên thế giới vào năm 1961 tại Hội chợ Thế giới Seattle, dưới dạng mộtthiết bị có tên IBM Shoebox, với khả năng nhận diện giọng nói
Đến năm 1970, Bộ Quốc phòng Hoa Kỳ và cơ quan DARPA của Bộ này đã pháttriển công cụ "Harpy" có thể nhận dạng khoảng 1000 từ, tương đương vốn từ vựng củamột đứa bé 3 tuổi
Phải tới những năm 1990, trợ lý ảo mới được các nhà sản xuất hàng đầu nhưMicrosoft, IBM, Philips và Lernout & Hauspie chính thức nghiên cứu và áp dụng trêncác máy tính cá nhân Trong đó, sự kiện ra mắt chiếc điện thoại thông minh đầu tiênIBM Simon vào năm 1994 đặt nền móng cho các trợ lý ảo thông minh mà ta biết tớingày nay
Năm 2011, trợ lý ảo số hiện đại đầu tiên được cài đặt trên một điện thoại thôngminh là Siri, từng được giới thiệu là một tính năng trên chiếc iPhone 4S của Apple
Từ năm 2017 đến nay, trợ lý ảo bắt đầu được người dùng chú ý nhờ các ứngdụng thực tiễn, đặc biệt là sự đầu tư mạnh tay từ các tập đoàn lớn như Amazon vớiAlexa, Google với Google Assistant hay Apple với Siri
Hình 1-1: Các trợ lý ảo trên Smartphone
Trang 10Từ trên chúng ta có thể hiểu đơn giản trợ lý ảo là phần mềm, công cụ được xâydựng dựa trên nền tảng trí thông minh nhân tạo (AI) và được các nhà phát triển hệ điềuhành, hay các hãng công nghệ tích hợp sâu vào trong hệ điều hành với mục đích chính
là hỗ trợ người dùng thiết bị dễ dàng hơn bằng chính thói quen mà người dùng thườnglàm trên thiết bị
2 Google Assistant
Google Assistant là một trợ lý cá nhân ảo được phát triển bởi Google và đượcgiới thiệu tại hội nghị nhà phát triển của hãng vào tháng 5 năm 2016 Không giống nhưGoogle Now, Google Assistant có thể tham gia các cuộc trò chuyện hai chiều
Assistant ban đầu được đưa vào ứng dụng nhắn tin Google Allo, và loa thôngminh Google Home Sau một thời gian chỉ có mặt trên hai chiếc điện thoại thông minhPixel và Pixel XL của hãng, Google bắt đầu triển khai Assistant trên các thiết bịAndroid khác vào tháng 2 năm 2017, bao gồm cả các điện thoại thông minh bên thứ ba
và các thiết bị Android Wear, và được phát hành dưới dạng ứng dụng riêng biệt trênIOS vào tháng 5 Cùng với sự ra mắt một bộ phát triển phần mềm (SDK) vào tháng 4năm 2017 cho phép các nhà phát triển bên thứ ba có thể tự xây dựng phần cứng tươngthích với Google Assistant, Assistant đã và đang được tiếp tục mở rộng hỗ trợ cho mộtlượng lớn thiết bị, bao gồm cả xe hơi và các thiết bị nhà thông minh Các chức năng củaAssistant cũng có thể được bổ sung bởi các nhà phát triển bên thứ ba
Người dùng chủ yếu có thể tương tác với Google Assistant qua giọng nói tựnhiên, hoặc có thể nhập qua bàn phím Các chức năng cơ bản của nó cũng tương tự nhưGoogle Now, như tìm kiếm trên Internet, đặt sự kiện trên lịch và báo thức, điều chỉnhcài đặt phần cứng trên thiết bị người dùng và hiển thị thông tin từ tài khoản Google củangười dùng Google cũng bổ sung các tính năng khác cho Assistant bao gồm khả năngnhận diện vật thể và thu thập thông tin về vật thể thông qua máy ảnh của thiết bị, cùngvới việc hỗ trợ mua sản phẩm và chuyển tiền
Trang 11Hình 1-2: Sử dụng Google Assistant trên điện thoại
Vào 6-5-2019, Google đã bổ sung tiếng Việt vào danh sách những ngôn ngữđược hỗ trợ bởi Google Assistant Nhờ đó, người Việt đã có thể sử dụng những câulệnh bằng tiếng Việt để hỏi đáp, truy vấn thông tin
Còn trước đây, người Việt muốn sử dụng Google Assistant buộc phải ra lệnhbằng tiếng Anh (hoặc một ngôn ngữ nước ngoài khác) Rào cản ngôn ngữ khiến choGoogle Assistant cũng như các trợ lý ảo khác không được sử dụng rộng rãi tại ViệtNam
3 Ưu điểm, nhược điểm
Ưu điểm:
- Khả năng nhận dạng Tiếng Việt trên Google Assistant rất tốt
- Người dùng thao tác mà không cần chạm vào điện thoại nhờ yêu cầu gọi điện
hoặc nhắn tin cho một ai đó, hẹn giờ, đặt nhắc nhở, lên lịch hẹn…
- Trợ lý của Google có thể làm tính, chuyển đổi đại lượng, tính tỷ giá trả lời các
câu hỏi liên quan đến thể thao, du lịch, tìm nhà hàng, trạm xăng
- Google Assistant cho phép người dùng điều khiển các thiết bị thông minh trong
nhà bằng Tiếng Việt
Nhược điểm:
Trang 12- Nhiều câu hỏi trợ lý ảo không đƣa ra câu trả lời trực tiếp mà chỉ gợi ý các kết
quả từ Google Seach
- Mặc dù đã hỗ trợ Tiếng Việt, nhƣng với các câu hỏi cho nhà thông minh,
Assistant lại trả lời bằng Tiếng Anh
Ngôn ngữ sử dụng
1 Python
Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng,
do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991 Python được thiết kế với
ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ Python là ngôn ngữ có hình thức rất sángsủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình
Sau đây là các đặc điểm của Python:
- Ngữ pháp đơn giản, dễ đọc
- Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng (object
oriented)
- Hỗ trợ module và hỗ trợ gói (package)
- Xử lý lỗi bằng ngoại lệ(Exception)
- Kiểu dữ liệu động ở mức cao
- Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu
lập trình
- Có khả năng tương tác với các module khác viết trên C/C++ (Java cho Jython
hoặc Net cho IronPython)
- Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface)
2 Lịch sử ra đời
Python đã được hình thành vào cuối những năm 1980, và việc thực hiện nó vàotháng 12 năm 1989 bởi Guido van Rossum tại Centrum Wiskunde & Informatica(CWI) ở Hà Lan như là một kế thừa cho ngôn ngữ ABC (tự lấy cảm hứng từ SETL) cókhả năng xử lý ngoại lệ và giao tiếp với Hệ điều hành Amoeba Van Rossum là tác giả
Trang 13chính của Python, và vai trò trung tâm của ông trong việc quyết định hướng phát triểncủa Python.
Python 2.0 đã được phát hành vào ngày 16 tháng 10 năm 2000 và có nhiều tínhnăng mới, bao gồm bộ thu gom rác theo chu kỳ (cycle-detecting garbage) và hỗtrợ Unicode Với việc phát hành này quá trình phát triển đã được thay đổi và trở nênminh bạch hơn và cộng đồng hậu thuẫn
Python 3.0 được phát hành năm 2008, sau một thời gian dài thử nghiệm
Cho tới năm 2017, Python đang có phiên bản 3.7
Trang 14Chương 2: PHÂN TÍCH, THIẾT KẾ HỆ THỐNG
Sơ đồ Use Case tổng thể
Hình 1-3: Sơ đồ User Case
Trang 15Lưu đồ thuật toán
Hình 2-4: Lưu đồ thuật toán xử lí
Xác định các tác nhân
Người dùng: người dùng sử dụng trợ lý ảo với các chức năng chảo hỏi, nghe
nhạc, xem thời tiết, tìm kiếm, …
Trang 16Xác định các trường hợp sử dụng UserCase
1 Người dùng
Hiển thị thời gian
Chức năng xem dự báo thời tiết
Chức năng phát nhạc trên youtube
Chức năng tìm kiếm trên google
Chức năng định nghĩa trên từ điển Wikipedia
Chức năng đọc báo
Đặc tả các trường hợp sử dụng
1 Ca sử dụng hiển thị thời gian
Tác nhân: Người dùng.
Điều kiện trước: Người dùng sử dụng trợ lí ảo
Điều kiện sau: Hiển thị thời gian
Mô tả: Người dùng yêu cầu hiển thị thời gian hiện tại
Các sự kiện chính:
Hành động của tác nhân Hành động của hệ thống
1 Yêu cầu hiển thị thời gian. 2 Hiển thị và đọc thời gian
Bảng 5-1: Xử lí sự kiện hiển thị thời gian
Ca sử dụng hiển thị thời gian được biểu diễn bởi biểu đồ sau:
Trang 17Hình 5-5: Sơ đồ Use Case chi tiết hiển thị thời gian
2 Ca sử dụng xem thời tiết
- Các tác nhân: Người dùng
- Điều kiện trước: Người dùng sử dụng hệ thống
- Điều kiện sau: Thông tin thời tiết của một địa điểm
- Mô tả: Người dùng yều xem thời tiết của địa điểm được chỉ định
- Các sự kiện chính:
Hành động của tác nhân Hành động của hệ thống
1 1 Người dùng yêu cầu xem thời
tiết
3 t 3 Người dùng đọc địa điểm
2 2 Hệ thống yêu cầu về địa điểm
4 4 Hệ thống kiểm tra tên địa điểm
5 H 5 Hệ thống hiển thị và đọc thời tiết
Trang 18Bảng 5-2: Xử lí sự kiện xem thời tiết
- Ca sử dụng xem thời tiết được biểu diễn bởi biểu đồ sau:
Hình 5-6: Sơ đồ Use Case chi tiết xem thời tiết
3 Ca sử dụng nghe nhạc trên Youtube
- Các tác nhân: Người dùng
- Điều kiện trước: Người dùng sủ dụng trợ lý
- Điều kiện sau: Người dùng muốn nghe một bài hát
- Mô tả: Người dùng yêu cầu hệ thống để tìm kiếm thông tin về bài hát mìnhmuốn nghe và mở bài hát
- Các sự kiện chính:
Hành động của tác nhân Hành động của hệ thống
1 Người dùng yêu cầu hệ thống phát
nhạc
2 Hệ thống sẽ bật trình duyệt tìm kiếm vàphát bài hát
Trang 193 Hệ thống hiển thị kết quả tìm kiếm.
Bảng 5-3: Xử lí sự kiện nghe nhạc
- Ca sử dụng Tìm kiếm nhạc được biểu diễn bởi biểu đồ sau:
Hình 5-7: Sơ đồ Use Case chi tiết nghe nhạc
4 Chức năng tìm kiếm
- Các tác nhân: Người dùng
- Điều kiện trước: Người dung sử dụng hệ thống
- Điều kiện sau: Người dùng yêu cầu về tìm kiếm
- Mô tả: Người muốn tìm kiếm thông tin trên google
- Các sự kiện chính:
Hành động của tác nhân Hành động của hệ thống
1 Người dùng muốn tìm kiếm thông
Trang 20Hình 5-8: Sơ đồ Use Case chi tiết tìm kiếm
5 Xem định nghĩa từ Wikipedia
- Các tác nhân: Người dùng
- Điều kiện trước: Người dùng đang sử dụng trợ lý
- Điều kiện sau: Người dùng có yêu cầu xem thông tin định nghĩa về nhân vậthoặc địa danh
- Mô tả: Người dùng yêu cầu định nghĩa về địa danh hoặc cá nhân
- Các sự kiện chính
Hành động của tác nhân Hành động của hệ thống
1 Người dùng muốn nghe định nghĩa 2 Hệ thống tìm kiếm hiển thị thông tin và
đọc định nghĩa về địa danh hoặc danh nhân
Bảng 5-5: Xử lí sự kiện định nghĩa
- Ca sử dụng định nghĩa được biểu diễn bằng biểu đồ sau:
Trang 21Hình 5-9: Sơ đồ Use Case chi tiết xem định nghĩa
6 Đọc báo
- Các tác nhân: Người dùng
- Điều kiện trước: Người dùng đang sử dụng trợ lý ảo
- Điều kiện sau: Người dùng viên có nhu cầu đọc báo để xem thông tin và tin
tức
- Mô tả: Người dùng yêu cầu hệ thống mở báo để xem thông tin và tin tức
- Các sự kiện chính:
Hành động của tác nhân Hành động của hệ thống
1 Người dùng yêu cầu hệ thông mở
trình duyệt và đọc báo
2 Hệ thống mở browser trang báo
Bảng 5-6: Xử lí sự kiện đọc báo
Trang 22- Ca sử dụng Đọc báo được biểu diễn bằng biểu đồ sau:
Hình 5-10: Sơ đồ Use Case chi tiết đọc báo
Trang 23Chương 3: TRIỂN KHAI XÂY DỰNG Thiết Lập Môi Trường
System requirements: Python 3.7.6, Jupyter notebook, Anaconda
Libraries:
speech_recognition: Nhận dạng giọng nói
time, datetime: Xử lý thời gian
wikipedia: Tìm kiếm trên từ điển Wikipedia
webbrowser, selenium, webdriver_manager, urllib: Truy cập web, trình duyệt(Chrome)
gTTS: Chuyển văn bản thành âm thanh của Google (Chị Google)
requests: Crawl thông tin từ web
smtplib: Gửi Email bằng giao thức SMTP
re: Biểu thức chính quy (Regular Expression)
os, sys, ctypes: Truy cập, xử lý file hệ thống
playsound: Phát âm thanh từ file mp3
json: Xử lý kiểu dữ liệu JSON
youtube_search: Tìm kiếm video trên Youtube
1 Import Các Thư Viện
Trang 24import urllib
import urllib.request as urllib2
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from webdriver_manager.chrome import ChromeDriverManagerfrom time import strftime
from gtts import gTTS
from youtube_search import YoutubeSearch
2 Khai Báo Biến Mặc Định
Trang 25 Vấn đề lớn nhất chính là tốc độ nói biến thiên Một người có thể nói "Hello" rấtnhanh và người khác nói "heeeellllllloooooo!" cực chậm, tạo ra âm thanh dàihơn với nhiều dữ liệu hơn.
Hình 2-11: Cơ chế hoạt động của thuật toán nhận diện giọng nói
- Chuyển âm thanh thành số:
Để chuyển sóng âm thành số, chúng ta chỉ cần ghi lại độ cao của sóng ở từngkhoảng
Phương pháp này gọi là sampling - lấy mẫu, tốc độ lấy mẫu ở 16khz (16,000mẫu mỗi giây)
Hình 2-12: Chuyển âm thanh thành số
- Dựa vào lý thuyết Nyquist, chúng ta có thể sử dụng toán học để tái tạo chính xácsóng âm gốc từ những mẫu tách biệt - miễn là chúng ta lấy mẫu với tần số gấpđôi tần số âm chúng ta muốn ghi lại
Hình 2-13: Tái tạo sóng âm gốc từ những mẫu tách biệt
- Tiền xử lý âm thanh:
Trang 26 Sau khi sử dụng lý thuyết Nyquist ở trên, sóng âm đã trở thành một dải liên tục.
Và sử dụng Fourier transform, chúng ta lại tách dải liên tục đó ra thành các notesriêng biệt (được tính toán bởi thuật toán Fourier) để tìm ra tổng năng lượng ởtừng note
Hình 2-14: Tiền xử lý âm thanh
Kết quả là một bảng số thể hiện độ năng lượng của mỗi khoảng tần số, từ âmthấp tới âm cao
Hình 2-15: Kết quả của tiền xử lý âm thanh
- Nhận diện ký tự từ những đoạn âm ngắn:
Mạng nơron trên dự đoán từ được nói là “HHHEE_LL_LLLOOO”, nhưng nócũng nghĩ là “HHHUU_LL_LLLOOO”, hoặc “AAAUU_LL_LLLOOO”
Bỏ đi những ký tự bị lặp, rồi bỏ đi khoảng trống:
VD: HHHEE_LL_LLLOOO => HE_L_LO => HELLO
Có 3 khả năng phân âm là "Hello", "Hullo" và "Aullo" Nếu nói chúng thật to, cả
3 đều nghe giống với "Hello" Bởi vì dự đoán từng ký tự một, mạng nơron tìm ra cáchđọc các âm chứ không phải cách viết