最も単純なPython音声アシスタント





音声アシスタントを作成するために、プログラミングについて多くの知識を持っている必要はありません。主なことは、音声アシスタントがどの機能を所有する必要があるかを理解することです。多くの企業は、利便性、ワークフローの最適化、および最適な通話分類のために、クライアントとの最初の通信ラインでそれらを作成します。この記事では、独自のチャットボット、より正確には、音声認識とその後のコマンド実行のための音声アシスタントの基礎となるプログラムを紹介します。その助けを借りて、最も頻繁に使用される音声アシスタントがどのように機能するかを理解することができます。



まず、必要なライブラリを宣言しましょう。



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


また、ログファイルを保持することを忘れないでください。それでも、ニューラルネットワークを操作するためにボットを改善することにした場合に必要になります。多くの企業は、音声アシスタントでニューラルネットワークを使用して、顧客の感情を理解し、それに対応しています。



また、ログを分析することで、ボットアルゴリズムの弱点を理解し、顧客とのやり取りを改善できることを忘れないでください。



# 
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 = '!     ?'


ログファイルには、メッセージの時刻、作成者(ボットまたはユーザー)、および実際のテキスト自体を書き込みます。



#       
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])


ボットによって作成された最初のメッセージを表示します:Hello!どんな御用でしょうか?



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


そして、Jupyter Notebookでこの手順を使用すると、デフォルトの再生デバイスである話し言葉で話すことができます。



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


テキストを声に出す方法については上で説明しましたが、どうすれば声をテキストに変えることができますか?ここでは、Googleからの音声認識と、マイクを使用したいくつかの操作が役立ちます。



#     
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


私たちのアシスタントは私たちの話を聞く以外に何ができますか?すべては私たちの想像力によって制限されています!いくつかの興味深い例を見てみましょう。



簡単なものから始めましょう、彼にコマンドでサイトを開かせてください-彼はサイトを開きます(あなたは期待していませんでしたか?)



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


自分の言葉を聞くと便利な場合もありますが、他の人の唇を通して聞いてください。ボットが私たちの後に繰り返しられるようにします:



#  
    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)


彼も対話者にしましょう。しかし今のところ、私たちは知人から始めます。



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


また、音声アシスタントに、選択した制限内のランダム番号に次の形式で名前を付けるように依頼することもできます。(1番目の番号)から(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)


プログラムを完了するには、ボットに別れを告げる必要があります。



# 
    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()


そして、すべてを継続的に機能させるために、無限のループを作成します。



#   
while True:
    makeSomething(command())


テストダイアログを実行しましょう:







作成されたセッションフォルダに、音声のすべての音声録音ファイルとテキストログファイルが保存されます:







テキストログファイルが書き込まれます:







この記事では、最も単純な音声ボットと、ニューラルネットワークでボットをさらに機能させるための主な便利な機能について説明しました。提供された支援の質を分析し、さらなる改善に取り組むために、ログファイルを確認することができます。



このボットはあなた自身のジャービスの基礎になることができます!



All Articles