Asisten suara Python paling sederhana





Untuk membuat asisten suara, Anda tidak perlu memiliki banyak pengetahuan tentang pemrograman, yang utama adalah memahami fungsionalitas apa yang harus dimiliki. Banyak perusahaan membuatnya di jalur komunikasi pertama dengan klien untuk kenyamanan, optimalisasi proses kerja, dan klasifikasi panggilan terbaik. Artikel ini menyajikan program yang dapat menjadi dasar untuk chatbot Anda sendiri, atau lebih tepatnya, asisten suara untuk pengenalan suara dan eksekusi perintah selanjutnya. Dengan bantuannya, kami dapat memahami cara kerja asisten suara yang paling sering digunakan.



Pertama, mari kita deklarasikan perpustakaan yang kita butuhkan:



import speech_recognition as sr
import os
import sys
import webbrowser
import pyttsx3 as p
from datetime import datetime
import time
import datetime
import random


Juga, jangan lupa untuk menyimpan file log, yang akan kita perlukan jika kita memutuskan untuk meningkatkan bot untuk bekerja dengan jaringan saraf. Banyak perusahaan menggunakan jaringan saraf di asisten suara mereka untuk memahami dan menanggapi emosi pelanggan.



Selain itu, jangan lupa bahwa dengan menganalisis log, kita akan dapat memahami titik lemah algoritme bot dan meningkatkan interaksi dengan pelanggan.



# 
chat_log = [['SESSION_ID', 'DATE', 'AUTHOR', 'TEXT', 'AUDIO_NUM']]
#  
i = 1
exit = 0
while exit == 0:
    session_id = str(i)
    if session_id not in os.listdir():
        os.mkdir(session_id)
        exit = 1
    else:
        i = i + 1
#   bot
author = 'Bot'
text = '!     ?'


Di file log, kami menulis waktu pesan, penulis (bot atau pengguna) dan teks itu sendiri.



#       
def log_me(author, text, audio): 
    now = datetime.datetime.now()
    i = 1
    exit = 0
    while exit == 0:
        audio_num = str(i)+'.wav'
        if audio_num not in os.listdir(session_id):
            exit = 1
        else:
            i = i + 1
    os.chdir(session_id)
    with open(audio_num , "wb") as file:
        file.write(audio.get_wav_data())
    chat_log.append([now.strftime("%Y-%m-%d %H:%M:%S"), author, text, audio_num])


Kami menampilkan pesan pertama yang dibuat oleh bot: Halo! Apa yang bisa saya bantu?



#             
print("Bot: "+ text)
log_me(author, text, audio)


Dan dengan prosedur ini di Notebook Jupyter, kita dapat berbicara melalui perangkat pemutaran default, kata-kata yang diucapkan:



# words
def talk(words):
    engine.say(words)
    engine.runAndWait()


Kita telah membahas di atas bagaimana cara menyuarakan teks, tetapi bagaimana kita bisa mengubah suara kita menjadi teks? Di sini pengenalan ucapan dari Google dan beberapa manipulasi dengan mikrofon akan membantu kami.



#     
def command():
    rec = sr.Recognizer()
    with sr.Microphone() as source:
        #   
        print('Bot: ...')
        #   
        rec.pause_threshold = 1
        #    
        rec.adjust_for_ambient_noise(source, duration=1)
        audio = rec.listen(source)
    try:
        #     GOOGLE
        text = rec.recognize_google(audio, language="ru-RU").lower()
        #    
        print(':  ' + text[0].upper() + text[1:])
        log_me('User', text, audio)
    #     
    except sr.UnknownValueError:
        text = ' . .'
        print('Bot: ' + text)
        talk(text)
        #  
        text = command()
        log_me('Bot', text, , Null)
    return text


Apa yang dapat dilakukan asisten kami selain mendengarkan kami? Semuanya dibatasi oleh imajinasi kita! Mari kita lihat beberapa contoh menarik.



Mari kita mulai dengan yang sederhana, biarkan dia membuka situs dengan perintah - dia akan membuka situs (bukankah Anda mengharapkan?).



#  ,       
def makeSomething(text):
    if ' ' in text:
        print('Bot:   NewTechAudit.')
        talk('  NewTechAudit.')
        log_me('Bot','  NewTechAudit.', Null)
        webbrowser.open('https://newtechaudit.ru/')


Terkadang bermanfaat untuk mendengarkan kata-kata Anda sendiri, tetapi melalui bibir orang lain. Biar bot masih bisa mengulang setelah kita:



#  
    elif '' in text or '' in text or '' in text:
        print('Bot: ' + text[10].upper() + text[11:])
        talk(text[10:])
        log_me('Bot', text[10].upper() + text[11:] , Null)


Biarlah dia juga menjadi teman bicara, tetapi untuk saat ini kita akan mulai hanya dengan seorang kenalan:



#  
    elif ' ' in text or '  ' in text or ' ' in text:
        print('Bot:   Bot.')
        talk('  Bot')
        log_me('Bot', '  Bot', Null)


Kami juga dapat meminta asisten suara untuk menyebutkan nomor acak dalam batas yang kami pilih dalam format: Beri nama nomor acak dari (nomor 1) sampai (nomor 2).



#  
    elif ' ' in text:
        ot=text.find('')
        do=text.find('')
        f_num=int(text[ot+3:do-1])
        l_num=int(text[do+3:])
        r=str(random.randint(f_num, l_num))
        print('Bot: ' + r)
        talk(r)
        log_me('Bot', r, Null)


Untuk menyelesaikan program ini, Anda hanya perlu mengucapkan selamat tinggal pada bot:



# 
    elif '' in text or ' ' in text:
        print('Bot:  !')
        talk(' ')
        log_me('Bot', ' ', Null)
        os.chdir(session_id)
        log_file = open( session_id + ".txt", "w")
        for row in chat_log:
            np.savetxt(log_file, row)
        log_file.close()
        sys.exit()


Dan untuk membuat semuanya bekerja terus menerus, kami membuat loop tanpa akhir.



#   
while True:
    makeSomething(command())


Mari kita lakukan dialog uji:







Di folder sesi yang dibuat, semua file rekaman audio dari suara kita dan file log teks disimpan:







File log teks tertulis:







Dalam artikel ini, kita memeriksa bot suara yang paling sederhana dan fungsi utama yang berguna untuk pekerjaan bot selanjutnya dengan jaringan saraf. Untuk menganalisis kualitas bantuan yang diberikan dan perbaikan lebih lanjut, kami akan dapat memeriksa file log.



Bot ini bisa menjadi dasar untuk Jarvis Anda sendiri!



All Articles