Phạm vi ứng dụng của công nghệ thông tin đã được mở rộng và góp mặt trên rất nhiều các lĩnh vực như truyền thông, tự động hóa, quản trị các hoạt động của con người và xã hội… Với mục đíc
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
NHẬP MÔN TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
XÂY DỰNG TRỢ LÝ ẢO BẰNG NGÔN NGỮ PYTHON”
Sinh viên thực hiện : LẠI QUANG MINH
: VŨ VIỆT HOÀNG Giảng viên hướng dẫn : VŨ VĂN ĐỊNH
Hà Nội, tháng 11 năm 2023
Trang 3LỜI MỞ ĐẦU
Ngày nay, ứng dụng công nghệ thông tin và việc tin học hóa được xem là một trong những yếu tố mang tính quyết định trong hoạt động của các chính phủ, tổ chức, cũng như của các công ty, nó đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ Sự phát triển nhanh chóng của AI và học máy đã giúp phát triển công nghệ nhận dạng giọng nói, công nghệ này ngày càng đi sâu vào mọi lĩnh vực trong cuộc sống Từ những điều trên, cũng với những phân tích bên dưới, ta sẽ chứng minh một cách sinh động rằng tại sao công nghệ điều khiển giọng nói nên được coi là xu thế công nghệ hiện tại không chỉ bới những ông lớn về IT hay những người có niềm đam mê với AI mà các doanh nghiệp cũng đang ráo riết nâng cấp, tối ưu hệ thống bằng công nghệ giọng nói hay còn gọi
là trợ lý ảo Bắt nguồn với ý tưởng này, cùng với những gợi ý của thầy
Vũ Văn Định , em đã thực hiện đồ án: “XÂY DỰNG TRỢ LÝ ẢO BẰNG NGÔN NGỮ PYTHON”
Trang 4PHẦN MỞ ĐẦU 1.1 Giới thiệu
1.1.1 Lí do chọn đề tài
Với tốc độ công nghiệp hóa - hiện đại hóa trong nhiều năm gần đây, công nghệ thông tin đã và đang phát triển trên mọi mặt, trở thành động lực của sự phát triển Phạm vi ứng dụng của công nghệ thông tin đã được mở rộng và góp mặt trên rất nhiều các lĩnh vực như truyền thông, tự động hóa, quản trị các hoạt động của con người và xã hội…
Với mục đích xây dựng một trợ lý ảo với khả năng nhận diện giọng nói
để thực hiện yêu cầu, giao tiếp một cách thân thiện với người dùng Do đó,
đề tài “ Xây dựng trợ lý ảo AI” này của chúng em mong muốn người sử
dụng có một trải nghiệm tốt nhất với trợ lý ảo
1.1.2 Mục tiêu đề tài
Giao tiếp, chào hỏi
Nghe và nhận diện giọng nói
Phản hồi người dùng bằng giọng nói
Khởi chạy bất kỳ ứng dụng hệ thống
Thực hiện hầu hết các yêu cầu người dùng đưa ra
Cho bạn biết tin tức mới nhất
Nói cho bạn về hầu hết mọi thứ bạn yêu cầu
Trang 51.1.3 Lợi ích khi có trợ lý ảo
Tiện lợi, sử dụng được mọi lúc mọi với vài câu nói
Tiết kiệm thời gian
Nâng cao hiệu suất
1.2 Tổng quan về hệ thống
1.2.1 Mô tả bài toán
Trợ lý ảo bằng tiếng Việt là là chương trình ứng dụng được thiết kế để "hiểu" các lệnh thoại bằng ngôn ngữ tự nhiên và thực hiện các tác vụ cho người dùng Các tác vụ này bao gồm đọc tin nhắn văn bản hoặc địa chỉ email, tìm kiếm số điện thoại, lên lịch, đặt cuộc gọi điện và nhắc nhở người dùng cuối về các cuộc hẹn
1.2.2 Các yêu cầu của hệ thống
A YÊU CẦU CHỨC NĂNG:
Giao tiếp, chào hỏi
Cho người dùng biết thời gian hiện tại
Mở Google search và tìm kiếm thay cho bạn
Gửi email đến những người trong danh bạ của bạn
Cho bạn biết thời tết và nhiệt độ hiện tại của hầu hết mọi thành phố
Phát cho bạn một bài hát trên Youtube
Thay đổi hình nền máy tính
Cho ngươi dùng biết tin tức mới nhất
B YÊU CẦU PHI CHỨC NĂNG:
Giao diện thân thiện, dễ sử dụng
Dễ bảo trì, nâng cấp , dễ sửa chữa, bảo mật
Phương pháp
Đọc xem tài liệu, và tìm hiểu các mã nguồn mở thiết kế một trợ lý ảo với yêu cầu đặt ra
Trang 6CHƯƠNG 1 :
CÁC KHÁI NIỆM
AI-Artificial Intelligence hay còn gọi là Trí tuệ nhân tạo là một ngành khoa học, kỹ thuật chế tạo máy móc thông minh, đặc biệt là các chương trình máy tính thông minh AI được thực hiện bằng cách nghiên cứu cách suy nghĩ của con người, cách con người học hỏi, quyết định và làm việc trong khi giải quyết một vấn đề nào đó, và sử dụng những kết quả nghiên cứu này như một nền tảng để phát triển các phần mềm và hệ thống thông minh, từ đó áp dụng vào các mục đích khác nhau trong cuộc sống Nói một cách dễ hiểu thì AI là việc sử dụng, phân tích các dữ liệu đầu vào nhằm đưa ra sự dự đoán rồi đi đến quyết định cuối cùng
Xử lý ngôn ngữ tự nhiên (natural language processing - NLP) là một
nhánh của trí tuệ nhân tạo tập trung vào các ứng dụng trên ngôn ngữ của con người Trong trí tuệ nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến việc phải hiểu ý nghĩa ngôn ngữ-công cụ hoàn
hảo nhất của tư duy và giao tiếp
Trợ lý ảo (Virtual Assistant) hay còn gọi là trợ lý AI hay trợ lý kỹ thuật
số, clhương trình ứng dụng được thiết kế để "hiểu" các lệnh thoại bằng ngôn ngữ
tự nhiên và thực hiện các tác vụ cho người dùng Các tác vụ này bao gồm đọc tin nhắn văn bản hoặc địa chỉ email, tìm kiếm số điện thoại, lên lịch, đặt cuộc gọi điện và nhắc nhở người dùng cuối về các cuộc hẹn
Lợi ích của trợ lí ảo
Các ứng dụng trợ lý giọng nói hoạt động dựa trên hệ thống Nhận dạng giọng nói tự động (ASR) Các hệ thống ASR ghi lại lời nói và sau đó chia nhỏ thành các
âm vị, sau này được xử lý thành văn bản Một âm vị (không phải từ của âm tiết) là một đơn vị đo lường cơ bản để nhận dạng giọng nói của con người Nhận dạng âm
vị mang lại kết quả tốt hơn quá trình giải mã từ, vì người cuối cùng có xu hướng phân tích từ dưới dạng một đơn vị độc lập bỏ qua các giới hạn ngữ cảnh
Trang 7Có thể sử dụng loại phần mềm nhận dạng giọng nói nào, tất cả đều dựa trên ASR Để tạo ra một phần mềm trợ lý ảo, điều quan trọng nhất cần làm là làm quen với cách ASR hoạt động Tóm lại, quá trình bắt đầu với việc thiết bị thu thập âm thanh với micro Các dạng sóng giọng nói đã ghi được chuyển thẳng sang phân tích
âm thanh, được thực hiện ở ba cấp độ khác nhau:
Mô hình âm thanh, đại diện cho những âm vị được phát âm và những
từ mà các âm vị này hoàn thành là gì;
Mô hình phát âm, phân tích cách phát âm của âm vị, có bất kỳ trọng
âm hoặc đặc thù nào khác của bộ máy phát âm để nắm bắt sự biến đổi ngữ âm
của lời nói;
Mô hình hóa ngôn ngữ, nhằm mục đích tìm kiếm xác suất theo ngữ
cảnh tùy thuộc vào âm vị nào được ghi lại
Tất cả các dữ liệu được xử lý bởi AI mà không cần sự tương tác của con người, giảm tỷ lệ lỗi xuất hiện bằng cách sử dụng các thuật toán học máy Dữ liệu dạng sóng giọng nói sau đó được truyền đến bộ giải mã, nơi cuối cùng nó chuyển thành văn bản để sử dụng thêm như lệnh hoặc chính tả
Trí thông minh nhân tạo mang đến cho các ứng dụng trợ lý giọng nói hiện đại
sự tự do không dựa vào vốn từ vựng hạn chế, mà sử dụng lưu trữ đám mây với hàng triệu từ và cụm từ thay thế Nói cách khác, học máy làm cho các ứng dụng nghe toàn bộ bài phát biểu, không phải mỗi từ riêng biệt Bằng cách đó, các ứng dụng giọng nói sẽ phân tích bối cảnh và xác suất để xác định những gì bạn đang cố gắng nói
Trang 8Ứng dụng thực tế của trợ lí ảo
Phát triển mạng nơ-ron và xử lý ngôn ngữ tự nhiên hoàn toàn hoạt động theo hướng biến điều khiển giọng nói thành một tiêu chuẩn mới cho nhiều sản phẩm và hành động mà mọi người sử dụng/thực hiện hàng ngày Chiến lược Amazon Alexa Everywhere bắt đầu một xu hướng mới của các công ty phát hành bộ công cụ phát triển thiết bị dịch vụ để tích hợp ứng dụng trợ lý giọng nói
Sau đây là một vài công việc mà Trợ lý ảo có thể thực hiện :
Gửi thông tin cập nhật về các chủ đề mà bạn quan tâm mà không cần bạn
tìm kiếm chúng;
Dự báo thời tiết;
Thêm các sự kiện và cuộc họp vào lịch của một nhóm hoặc từng
thành viên riêng biệt;
Đặt báo thức và nhắc nhở mọi việc thứ diễn ra theo đúng lịch trình;
Trả lời câu hỏi chung bằng giọng nói (thay vì mở liên kết để bạn tìm
kiếm câu trả lời);
Tạo và điền vào danh sách To-do list;
Thực hiện dịch thuật thời gian thực;
Cập nhật cho bạn về lưu lượng trên lộ trình của bạn (đặc biệt hữu ích cho các hoạt động hậu cần);
Theo dõi hàng tồn kho trong kho và tự động điền vào danh sách mua
sắm với các mặt hàng sẽ được đưa ra ngoài;
Điều khiển các thiết bị khác từ ánh sáng đến PC;
Đọc email và các tài liệu khác thành tiếng;
Ghi lại lời nói chính tả và chuyển nó thành văn bản thay vì gõ thủ công;
Trang 9CHƯƠNG 2 :PHƯƠNG PHÁP XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Ngôn ngữ tự nhiên là gì ?
Ngôn ngữ tự nhiên là ngôn ngữ mà các loài động vật sáng tạo ra để giao tiếp với đồng loại Con người cũng là một loại động vật sử dụng ngôn ngữ để giao tiếp Thế giới ngôn ngữ của con người rất phong phú, theo thông kê của các nhà khoa học thì có tới hàng ngàn ngôn ngữ tồn tại trên trái đất Ngôn ngữ tự nhiên có 2 dạng
là chữ viết và âm thanh (tức tiếng nói) Ngôn ngữ của mỗi dân tộc, quốc gia lại khác nhau bao gồm khác nhau cả về cách viết cũng như cách phát âm
Tại sao cần phải xử lí ngôn ngữ tự nhiên ?
Xử lí ngôn ngữ tự nhiên có vai trò hết sức quan trọng trong ngành Khoa Học Máy Tính Nó có vô vàn ứng dụng hữu ích trong cuộc sống cũng như nghiên cứu Chúng ta có thể điểm qua một vài ứng dụng của xử lý ngôn ngữ tự nhiên như:
Nhận dạng chữ viết: Có hai kiểu nhận dạng, thứ nhất là nhận dạng chữ
in, ví dụ nhận dạng chữ trên sách giáo khoa rồi chuyển nó thành dạng văn bản điện
tử như dưới định dạng doc của Microsoft Word chẳng hạn Phức tạp hơn là nhận dạng chữ viết tay, có khó khăn bởi vì chữ viết tay không có khuôn dạng rõ ràng và thay đổi từ người này sang người khác Với chương trình nhận dạng chữ viết in có thể chuyển hàng ngàn đầu sách trong thư viện thành văn bản điện tử trong thời gian ngắn Nhận dạng chữ viết của con người có ứng dụng trong khoa học hình sự và bảo mật thông tin (nhận dạng chữ ký điện tử)
Nhận dạng tiếng nói: Nhận dạng tiếng nói rồi chuyển chúng thành văn bản tư tưởng ứng Giúp thao tác của con người trên các thiết bị nhanh hơn và đơn giản hơn, chẳng hạn thay vì gõ một tài liệu nào đó bạn đọc nó lên và trình soạn thảo
sẽ tự ghi nó ra Đây cũng là bước đầu tiên cần phải thực hiện trong ước mơ thực hiện giao tiếp giữa con người với robot Nhận dạng tiếng nói có khả năng trợ giúp người khiếm thị rất nhiều
Tổng hợp tiếng nói: Từ một văn bản tự động tổng hợp thành tiếng nói Thay vì phải tự đọc một cuốn sách hay nội dung một trang web, nó tự động đọc cho chúng ta Giống như nhận dạng tiếng nói, tổng hợp tiếng nói là sự trợ giúp tốt cho người khiếm thị, nhưng ngược lại nó là bước cuối cùng trong giao tiếp giữa robot với người
Trang 10 Dịch tự động (Machine translate): Như tên gọi đây là chương trình dịch
tự động trong ngôn ngữ này sang ngôn ngữ khác Một phần mềm điển hình về tiếng Việt của chương trình này là Evtrans của Softex, dịch tự động từ tiếng Anh sang tiếng Việt và ngược lại
Tìm kiếm thông tin (Information retrieval): Đặt câu hỏi và chương trình
tự tìm ra nội dung phù hợp nhất Thông tin ngày càng đầy lên theo cấp số nhân, đặc biệt với sự trợ giúp của Internet việc tiếp cận thông tin trở lên dễ dàng hơn bao giờ hết Việc khó khăn lúc này là tìm đúng nhất thông tin mình cần giữa bề bộn tri thức và đặc biệt thông tin đó phải đáng tin cậy
Tóm tắt văn bản: Từ một văn bản dài tóm tắt thành một văn bản ngắn hơn theo mong muốn nhưng vẫn chứa những nội dung thiết yếu nhất
Khai phá dữ liệu (Data mining) và phát hiện tri thức: Từ rất nhiều tài liệu khác nhau phát hiện ra tri thức mới Thực tế để làm được điều này rất khó, nó gần như là mô phỏng quá trình học tập, khám phá khoa học của con người, đây là lĩnh vực đang trong giai đoạn đầu phát triển Ở mức độ đơn giản khi kết hợp với máy tìm kiếm nó cho phép đặt câu hỏi để từ đó công cụ tự tìm ra câu trả lời dựa trên các thông tin trên web mặc cho việc trước đó có câu trả lời lưu trên web hay không (giống như trang Yahoo! hỏi và đáp, nơi chuyên đặt các câu hỏi để người khác trả lời), nói một cách nôm na là nó đã biết xử lý dữ liệu để trả lời câu hỏi của người sử dụng, thay vì máy móc đáp trả những gì chỉ có sẵn trong bộ nhớ
Sử dụng Python trong xử lí ngôn ngữ tự nhiên
Python ra đời năm 1991, và là một ngôn ngữ thông dịch Trải qua hơn 20
năm phát triển, Python là một trong những ngôn ngữ được sử dụng nhiều nhất
trong dậy lập trình và nghiên cứu khoa học Rất nhiều trường đại học sử dụng
Python để dậy về lập trình cho các sinh viên ngành Khoa Học Máy Tính Rất
nhiều công ty lớn sử dụng Python để xây dựng hệ thống như Google, Youtube,
Instagram, Dropbox, Atlassian Python là một ngữ sử dụng được cho nhiều mô
hình lập trình, đơn giản khi học và sử dụng Tôi sử dụng Python chưa lâu nhưng
Trang 11khi so sánh việc Code sử dụng Pythong thì nó ngắn hơn rất nhiều so với khi viết
bằng PHP hoặc Java Bạn có thể bay bổng tự do với Python hoặc cũng có thể bắt
nó trở lên vững chắc và mạnh mẽ như Java
Theo những thông tin mà tôi được biết thì Python cũng là một ngôn ngữ rất
phát triển trong lĩnh vực Data Science và Machine Learning Python cũng cung
cấp những hàm và thư viện xử lý ngôn ngữ tuyệt vời Scikit-learn và Tensor-flow
là 2 thư viện Machine Learning nổi tiếng được viêt bằng Python Đứng ở góc độ người tiếp cận sau, cá nhân tôi thấy Python là một lựa chọn hợp lý khi làm Xử
Lý Ngôn Ngữ Tự Nhiên
Trang 12CHƯƠNG 3 : TRIỂN KHAI HỆ THỐNG
1 Mô hình quá trình
Hình 1 Mô hình quá trình
2 Các bước xây dựng:
Bước thứ nhất: Nhận dạng giọng nói (speech to text) hay nói cách
khác là chuyển giọng nói về dạng văn bản
2.2 Bước thứ hai: Đưa ra hành động (action) có nghĩa là với văn bản đó
thì sẽ đưa ra câu trả lời là gì (đưa ra hành động cho câu hỏi trên)
2.3 Bước thứ ba: Chuyển văn bản về giọng nói (text to speech) Ngược
với bước thứ nhất, sau khi có được câu trả lời bằng văn bản ở bước 2 thì ta cần chuyển về giọng nói
Trang 133 Xây dựng chương trình
4.3.1 Import các thư viện
Với mỗi chức năng mà trợ lý ảo thực hiện sẽ đại diện bằng một hàm Mỗi hàm có thể trả về giá trị hoặc chỉ thực hiện lệnh tùy theo chức năng của nó.Việc đầu tiên sẽ khai báo một vài biến để lưu đường dẫn hay các tham số để xử lý ngôn ngữ dưới dạng tiếng việt
4.3.2 Khai báo biến mặc định
Hình 2 Khai báo biến mặc định
4.3.3 Chức năng chuyển văn bản thành âm thanh
Trang 14Hình 3 Mô hình chuyển đổi văn bản thành âm thanh
Hình 4 Chuyển đổi văn bản thành âm thanh
Chức năng đầu tiên: chuyển một đoạn văn bản thành âm thanh và đọc nó lên trên máy tính Sử dụng hàm gTTS (google Text To Speech) để chuyển văn bản thành âm thanh theo ngôn ngữ nhận dạng tiếng việt rồi lưu về máy tính dữ liệu âm thanh dưới file sound.mp3 Sau đó dùng hàm playsound.playsound() để đọc file sound.mp3 trên máy tính Sau khi đọc xong, phải xóa file sound.mp3 để tránh lỗi khi mình đọc một đoạn văn bản khác thì cũng được lưu lại dưới file sound.mp3
4.3.4 Chức năng chuyển âm thanh thành văn bản
Trang 15Hình 5 Quy trình chung hệ thống nhận dạng giọng nói
Đây là chức năng cơ bản thứ hai cùng với chức năng chuyển văn bản thành
âm thanh Trong chức năng này, sử dụng 2 hàm khác hỗ trợ là get_audio() và stop()
Hình 6 Nhận dạng giọng nói
Thư viện speech_recognition (sr) có chức năng là nhận dạng giọng nói để chuyển âm thanh thành văn bản Âm thanh được đọc vào microphone của máy tính sau đó được xử lý qua hàm listen của sr.Recognition rồi lưu dữ liệu âm thanh vào biến audio Dữ liệu âm thanh audio thu được sẽ được nhận dạng ở ngôn ngữ tiếng việt trong hàm r.recognize_google để chuyển thành dạng văn bản rồi lưu
dữ liệu vào biến text
Nếu dữ liệu âm thanh audio không lỗi tức là hàm r.recognize_google có thể nhận dạng được audio để chuyên thành text thì hàm get_audio() sẽ được trả về
Trang 16thì hàm get_audio() sẽ được trả về giá trị là 0 (Mục đích là khi máy tính không hiểu
Hình 7 Hàm Stop
Hình 8 Hàm nhận dạng giọng nói
Hàm get_text() có chức năng là máy tính sẽ cố gắng nhận dạng âm thanh của người
không hiểu) mà chưa đọc đến lần thứ 3 thì mình sẽ yêu cầu người sử dụng đọc lại Nếu sau 3 lần mà máy tính vẫn không hiểu thì người dùng nói gì hay không nghe thấy gì thì
đích là khi máy tính không nghe thấy gì thì sẽ cho dừng chương trình luôn).
Câu lệnh time.sleep(2) được thêm vào với mục đích là chương trình tạm dừng 2 giây để tránh máy tính đọc các đoạn văn bản bị khớp nhau.
4.3.5 Chức năng giao tiếp, chào hỏi