Implementierung
Unser Assistent arbeitet nach folgendem Prinzip:
- Ständig auf das Mikrofon "hören"
- Erkennen Sie Wörter auf Google
- Führen Sie den Befehl aus oder antworten Sie
1) Sprachsynthese
Zuerst werden wir russische Stimmen in das Windows-System einbauen. Folgen Sie dazu dem Link und laden Sie die Stimmen im Abschnitt SAPI 5 -> Russisch herunter. Es gibt 4 Stimmen, Sie können eine beliebige auswählen. Installieren und weitermachen.
Wir müssen die pyttsx3-Bibliothek für die Sprachsynthese bereitstellen:
pip install pyttsx3
Anschließend können Sie das Testprogramm ausführen und prüfen, ob es ordnungsgemäß ausgeführt wird.
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) Spracherkennung
Es gibt viele Spracherkennungswerkzeuge, die jedoch alle bezahlt werden. Also habe ich versucht, eine kostenlose Lösung für mein Projekt zu finden und habe sie gefunden! Dies ist die Spracherkennungsbibliothek.
pip install SpeechRecognition
Um mit einem Mikrofon arbeiten zu können, benötigen wir außerdem die PyAudio-Bibliothek.
pip install PyAudio
Einige Benutzer haben Probleme bei der Installation von PyAudio. Folgen Sie daher diesem Link und laden Sie die benötigte Version von PyAudio herunter. Dann betreten Sie die Konsole:
pip instal
Dann führen Sie das Testprogramm aus. Zuvor müssen Sie jedoch device_index = 1 auf Ihren Mikrofonindexwert korrigieren. Mit diesem Programm können Sie den Mikrofonindex ermitteln:
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))
Spracherkennungstest:
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()
Wenn alles in Ordnung ist, fahren Sie fort.
Wenn Sie möchten, dass der Assistent nur mit Ihnen spricht (keine KI), können Sie dies mit dem kostenlosen DialogFlow- Tool von Google tun . Nachdem Sie sich angemeldet haben, wird ein Bildschirm angezeigt, auf dem Sie bereits Ihren ersten Bot erstellen können. Klicken Sie auf Agent erstellen. Wir erstellen einen Namen für den Bot (Agentenname), wählen die Sprache (Standardsprache) aus und klicken auf Erstellen. Der Bot wurde erstellt!
Um neue Antworten auf verschiedene Fragen hinzuzufügen, müssen Sie eine neue Absicht erstellen. Klicken Sie dazu im Abschnitt Absichten auf Absicht erstellen. Wir füllen die Felder "Titel" und Trainingsphrasen aus und dann die Antworten. Klicken Sie auf Speichern. Das ist alles.
Um einen Bot in Python zu steuern, müssen Sie den folgenden Code schreiben. In meinem Programm gibt der Bot alle Antworten.
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()
Das ist alles für heute. Im nächsten Teil werde ich Ihnen erklären, wie man einen intelligenten Bot macht, d. H. damit er nicht nur antworten, sondern auch etwas tun kann.