Implementasi
Asisten kami akan bekerja sesuai dengan prinsip berikut:
- Terus-menerus "mendengarkan" mikrofon
- Kenali kata-kata di google
- Jalankan perintah, atau tanggapi
1) Sintesis ucapan
Pertama, kita akan menginstal suara Rusia di sistem windows. Untuk melakukan ini, ikuti tautan dan unduh suara di SAPI 5 -> bagian Rusia. Ada 4 suara, Anda bisa memilih mana yang Anda suka. Instal dan lanjutkan.
Kami perlu menyediakan perpustakaan pyttsx3 untuk sintesis ucapan:
pip install pyttsx3
Kemudian Anda dapat menjalankan program pengujian dan memeriksa apakah itu berjalan dengan benar.
import pyttsx3
text = '- '
tts = pyttsx3.init()
rate = tts.getProperty('rate') #
tts.setProperty('rate', rate-40)
volume = tts.getProperty('volume') #
tts.setProperty('volume', volume+0.9)
voices = tts.getProperty('voices')
#
tts.setProperty('voice', 'ru')
#
for voice in voices:
if voice.name == 'Anna':
tts.setProperty('voice', voice.id)
tts.say(text)
tts.runAndWait()
2) Pengenalan Pidato
Ada banyak alat pengenalan suara, tetapi semuanya berbayar. Jadi saya mencoba menemukan solusi gratis untuk proyek saya dan menemukannya! Ini adalah pustaka speech_recognition.
pip install SpeechRecognition
Kami juga membutuhkan pustaka PyAudio untuk bekerja dengan mikrofon.
pip install PyAudio
Beberapa orang mengalami masalah saat menginstal PyAudio, jadi Anda harus mengikuti tautan ini dan mengunduh versi PyAudio yang Anda butuhkan. Kemudian masuk ke dalam konsol:
pip instal
Kemudian Anda menjalankan program pengujian. Tetapi sebelum itu, Anda harus memperbaiki device_index = 1 di dalamnya ke nilai indeks mikrofon Anda. Anda dapat mengetahui indeks mikrofon menggunakan program ini:
import speech_recognition as sr
for index, name in enumerate(sr.Microphone.list_microphone_names()):
print("Microphone with name \"{1}\" found for `Microphone(device_index={0})`".format(index, name))
Tes pengenalan ucapan:
import speech_recognition as sr
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
print('.')
r.adjust_for_ambient_noise(source, duration=0.5) #
print('...')
audio = r.listen(source)
print('.')
try:
query = r.recognize_google(audio, language = 'ru-RU')
text = query.lower()
print(f' : {query.lower()}')
except:
print('Error')
while True:
record_volume()
Jika semuanya baik-baik saja, lanjutkan.
Jika Anda ingin asisten hanya berbicara dengan Anda (tanpa AI), ini dapat dilakukan menggunakan alat DialogFlow gratis dari Google. Setelah Anda masuk, Anda akan melihat layar di mana Anda sudah dapat membuat bot pertama Anda. Klik Buat agen. Kami datang dengan nama untuk bot (nama Agen), pilih bahasa (Bahasa Default) dan klik Buat. Bot telah dibuat!
Untuk menambahkan jawaban baru ke berbagai pertanyaan, Anda perlu membuat maksud baru. Untuk melakukan ini, di bagian maksud, klik Buat maksud. Kami mengisi kolom "Judul" dan frase Pelatihan, lalu jawabannya. Klik Simpan. Itu saja.
Untuk mengontrol bot di python, Anda perlu menulis kode berikut. Dalam program saya, bot menyuarakan semua jawaban.
import apiai, json, re
import pyttsx3
import speech_recognition as sr
tts = pyttsx3.init()
rate = tts.getProperty('rate')
tts.setProperty('rate', rate-40)
volume = tts.getProperty('volume')
tts.setProperty('volume', volume+0.9)
voices = tts.getProperty('voices')
tts.setProperty('voice', 'ru')
for voice in voices:
if voice.name == 'Anna':
tts.setProperty('voice', voice.id)
def record_volume():
r = sr.Recognizer()
with sr.Microphone(device_index = 1) as source:
print('.')
r.adjust_for_ambient_noise(source, duration=1)
print('...')
audio = r.listen(source)
print('.')
try:
query = r.recognize_google(audio, language = 'ru-RU')
text = query.lower()
print(f' : {query.lower()}')
textMessage( text )
except:
print(' .')
def talk( text ):
tts.say( text )
tts.runAndWait()
def textMessage( text ):
request = apiai.ApiAI(' ').text_request() # API Dialogflow
request.lang = 'ru' #
request.session_id = ' id' # ID (, )
request.query = text #
responseJson = json.loads(request.getresponse().read().decode('utf-8'))
response = responseJson['result']['fulfillment']['speech'] # JSON
# - , -
if response:
request.audio_output = response
talk(response)
else:
talk('. .')
while True:
record_volume()
Sekian untuk hari ini. Di bagian selanjutnya saya akan memberi tahu Anda cara membuat bot pintar, yaitu. sehingga dia tidak hanya bisa menjawab, tapi juga melakukan sesuatu.