Trò chuyện bằng giọng nói bằng python

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ố 8

Sau 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é

Chủ Đề