Mình sẽ có một bài phân tích về sau nhé. Còn bây giờ cứ coi như nó là một. Chúng ta bắt đầu xây dựng nào
Để xây dựng một hệ thống trợ lý ảo bao gồm 3 bước
- Bước thứ nhất. Nhận dạng giọng nói [lời nói thành văn bản] hay nói cách khác là chuyển giọng nói về dạng văn bản
- Step thứ hai. rủ ra hành động [hành động] 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]
- Step 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 trả lời bằng văn bản ở bước 2 thì ta cần chuyển về giọng nói
Xem hình sau để hiểu về cách hoạt động của hệ thống
2. Lời nói thành văn bản
Mục đính kèm bài viết này mình chỉ muốn các bạn viết là một chương trình hỗ trợ lý ảo bằng python cho nên mình sẽ không đi sâu vào phần lý thuyết
Để thực hiện bước này mình sẽ sử dụng thư viện [API] của google là Speech Recognition
pip install SpeechRecognition
Tiếp theo, để xử lý SpeechRecognition phần Micrô, bạn cần cài đặt thêm thư viện pyaudio
pip install pyaudio
Nếu bước cài đặt pyaudio bị lỗi, bạn vào ,nhấn [ ctrl + f ] gõ “pyaudio” để chuyển đến phần thư viện pyaudio và tải thư viện tương thích với máy của bạn sau đó cài đặt
VD. mình tải phiên bản “PyAudio-0. 2. 11-cp37-cp37m-win_amd64. whl” [Do mình dùng python3. 7 và win 64 bit] vào thư mục Tải xuống thì tại thư mục Tải xuống mở cmd và thực hiện lệnh cài đặt như sau
pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl
Như vậy là đã hoàn thành phần cài đặt thư viện cho lời nói thành văn bản, chúng ta bắt đầu code thôi. Create a Trolyao directory and add to 3 file as after. lời nói thành văn bản. py, hành động. py, texttopeech. py. Mỗi tệp tương ứng với từng phần xử lý
Tệp lời nói thành văn bản. py bạn thực hiện cho mình đoạn mã sau
import speech_recognition as sr
import pyaudio
r = sr.Recognizer[]
with sr.Microphone[] as source:
print["Mời bạn nói: "]
audio = r.listen[source]
try:
text = r.recognize_google[audio,language="vi-VI"]
print["Bạn -->: {}".format[text]]
except:
print["Xin lỗi! tôi không nhận được voice!"]
Lưu ý. language=”vi-VI” là để khai báo Tiếng Việt. Nếu bạn không khai báo thì mặc định sẽ là Tiếng Anh
Và sau đây là kết quả khi mình chạy file speechtotext. py
3. Chuyển văn bản thành giọng nói
Tiếp theo thì mình sẽ viết file texttopeech. py before, to when write file action. py sẽ dễ hiểu hơn. Để chuyển văn bản thành giọng nói thì mình sẽ sử dụng thư viện gTTS cũng của Google
pip install gTTS
Cài đặt thêm thư viện phát âm thanh để phát âm thanh trực tiếp cho python
pip install playsound
Sau khi cài đặt xong 2 thư viện trên, bạn thực hiện cho mình đoạn mã sau vào file texttopeech. py
from gtts import gTTS
import playsound
text = "Em nhà ở đâu thế"
output = gTTS[text,lang="vi", slow=False]
output.save["output.mp3"]
playsound.playsound['output.mp3', True]
Lưu ý. lang=”vi” to khai báo Tiếng Việt
Sau đây là kết quả khi chạy file texttopeech. py
4. Hoạt động
Để thuận tiên hơn trước khi viết hành động tập tin. py thì các bạn chuyển file speechtotext. py và texttospeech. py to the function [function], can as after
Đối chiếu với tập tin speechtotext. py thì cần đưa vào hàm không tham số,. return text
import speech_recognition as sr
import pyaudio
def speechtotext[]:
r = sr.Recognizer[]
with sr.Microphone[] as source:
print["Mời bạn nói: "]
audio = r.listen[source]
try:
text = r.recognize_google[audio,language="vi-VI"]
print["Bạn -->: {}".format[text]]
except:
print["Xin lỗi! tôi không nhận được voice!"]
return text
Còn file texttopeech. py thì cần đưa vào hàm nhận tham số là văn bản, không cần trả về
________số 8Sau khi có 2 hàm trên ta bắt đầu viết file action. py
from speechtotext import speechtotext
from texttospeech import texttospeech
text = speechtotext[]
if [text=="Hello"]:
texttospeech["chào bạn"]
elif [text=="Bạn tên gì"]:
texttospeech["tôi là trợ lý ảo quán trà ai"]
else:
texttospeech["xin lỗi tôi chưa thông minh nên không hiểu câu này"]
Giải thích về hành động. nếu người dùng nói “Xin chào” thì bot sẽ là “chào bạn”. Nếu hỏi “Bạn tên gì” bot sẽ trả lời “tôi là trợ lý ảo quán tra ai”, câu hỏi khác thì nó không biết
Sau đây là kết quả
5. Tổng kết
Trong bài viết trên mình đã hướng dẫn các bạn viết một chương trình trở lý ảo cơ bản bằng ngôn ngữ Python. Vấn đề của con robot hiện tại
- Còn phải nhấn Enter để giao tiếp
- Nó chưa hề có gì là thông minh
Trong bài viết tiếp theo, mình sẽ hướng dẫn các bạn giải quyết các vấn đề trên. Sử dụng kỹ thuật xử lý ngôn ngữ tự nhiên [NLP] và Machine Learning để làm cho con bot của mình thông minh lên nhé
Cảm ơn các bạn đã xem bài viết của mình. mọi thắc mắc xin để lại bình luận bên dưới
🤖 Hơn 1 năm rồi mình mới quay lại viết tiếp phần nâng cao 2. Mong các bạn ủng hộ và đăng ký kênh nhé