Um einen Sprachassistenten zu erstellen, müssen Sie nicht viel Programmierkenntnisse haben. Die Hauptsache ist, zu verstehen, welche Funktionen er besitzen sollte. Viele Unternehmen erstellen sie in der ersten Kommunikationslinie mit dem Kunden, um die Arbeit zu vereinfachen, die Arbeitsprozesse zu optimieren und Anrufe optimal zu klassifizieren. In diesem Artikel wird ein Programm vorgestellt, das als Grundlage für Ihren eigenen Chatbot oder genauer gesagt als Sprachassistent für die Spracherkennung und die anschließende Befehlsausführung dienen kann. Mit seiner Hilfe werden wir in der Lage sein, das Funktionsprinzip der gängigsten Sprachassistenten zu verstehen.
Lassen Sie uns zunächst die Bibliotheken deklarieren, die wir benötigen:
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
Vergessen wir auch nicht, eine Protokolldatei aufzubewahren, die wir benötigen, wenn wir uns dennoch dazu entschließen, den Bot für die Arbeit mit einem neuronalen Netzwerk zu verbessern. Viele Unternehmen verwenden ein neuronales Netzwerk in ihren Sprachassistenten, um Kundenemotionen zu verstehen und darauf zu reagieren.
Vergessen Sie auch nicht, dass wir durch die Analyse der Protokolle die Schwachstellen des Bot-Algorithmus verstehen und die Interaktion mit Kunden verbessern können.
#
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 = '! ?'
In die Protokolldatei schreiben wir die Uhrzeit der Nachricht, den Autor (Bot oder Benutzer) und den eigentlichen 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])
Wir zeigen die erste vom Bot verfasste Nachricht an: Hallo! Womit kann ich Ihnen behilflich sein?
#
print("Bot: "+ text)
log_me(author, text, audio)
Mit diesem Verfahren in Jupyter Notebook können wir über das Standardwiedergabegerät gesprochene Wörter sprechen:
# words
def talk(words):
engine.say(words)
engine.runAndWait()
Wir haben oben besprochen, wie man den Text ausspricht, aber wie können wir unsere Stimme in Text umwandeln? Hier helfen uns die Spracherkennung von Google und einige Manipulationen mit dem Mikrofon.
#
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
Was kann unser Assistent tun, außer uns zuzuhören? Alles ist durch unsere Vorstellungskraft begrenzt! Schauen wir uns einige interessante Beispiele an.
Beginnen wir mit einem einfachen, lassen Sie ihn die Site mit dem Befehl öffnen - er wird die Site öffnen (haben Sie nicht erwartet?).
# ,
def makeSomething(text):
if ' ' in text:
print('Bot: NewTechAudit.')
talk(' NewTechAudit.')
log_me('Bot',' NewTechAudit.', Null)
webbrowser.open('https://newtechaudit.ru/')
Manchmal ist es nützlich, auf eigene Worte zu hören, aber durch die Lippen eines anderen. Lassen Sie den Bot noch nach uns wiederholen können:
#
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)
Lassen Sie ihn auch der Gesprächspartner sein, aber jetzt werden wir nur mit einem Bekannten beginnen:
#
elif ' ' in text or ' ' in text or ' ' in text:
print('Bot: Bot.')
talk(' Bot')
log_me('Bot', ' Bot', Null)
Wir können den Sprachassistenten auch bitten, eine Zufallszahl innerhalb der von uns gewählten Grenzen im folgenden Format zu benennen: Benennen Sie eine Zufallszahl von (1. Nummer) bis (2. Nummer).
#
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)
Um das Programm abzuschließen, müssen Sie sich nur vom Bot verabschieden:
#
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()
Und damit alles kontinuierlich funktioniert, erstellen wir eine Endlosschleife.
#
while True:
makeSomething(command())
Führen wir einen Testdialog durch:
Im erstellten Sitzungsordner werden alle Audioaufzeichnungsdateien unserer Stimme und eine Textprotokolldatei gespeichert:
Die Textprotokolldatei wird geschrieben:
In diesem Artikel haben wir den einfachsten Sprachbot und die wichtigsten nützlichen Funktionen für die weitere Arbeit des Bots mit einem neuronalen Netzwerk untersucht. Um die Qualität der geleisteten Unterstützung zu analysieren und weitere Verbesserungen vorzunehmen, können wir die Protokolldatei überprüfen.
Dieser Bot kann die Basis für Ihr eigenes Jarvis sein!