如何在python中根据用户的语音识别输入调用特定函数?



是否可以根据在python中使用语音识别从用户收到的输入调用函数?我的意思是,如果用户说一个像"add"这样的词,那么基于该输入调用add((函数。可能吗?

我已经编辑并添加了我的完整代码。它正确理解我的输入,打印它,然后再次开始侦听而不调用特定函数。所以现在任何人都可以推荐我该怎么做?

import pyttsx3
import datetime
import speech_recognition as sr
import os
import sys
import smtplib
engine = pyttsx3.init('sapi5')
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[0].id)
def speak(audio):
engine.say(audio)
engine.runAndWait()
def wishme():
hour = int(datetime.datetime.now().hour)
if hour >= 0 & hour < 12:
speak("Good Morning!")
elif hour>=12 and hour<18:
speak("Good Afternoon!")
else:
speak("Good Afternoon!")
speak("I am an AI Sir. Please tell me how may I help you")

def takecommand():
# It takes microphone input from user
r = sr.Recognizer()
with sr.Microphone() as source:
print("Listening....")
r.pause_threshold = 1
r.adjust_for_ambient_noise(source, duration=1)
audio = r.listen(source)
try:
print("Recognizing....")
query = r.recognize_google(audio, language = 'en-IN')
print(f'User said: {query}n')
except Exception as e:
print(e)
print("Say that again please.....")
speak("Say that again please")
return "None"
return query
def add(num1, num2):
c = num1 + num2
print(c)
def subs(num1, num2):
d = num1 - num2
print(d)
def multiply(num1, num2):
e = num1 * num2
print(e)
def divide(num1, num2):
f = num1 / num2
print(f)
if __name__ == '__main__':
wishme()
while True:
query = takecommand().lower()
if 'add' in query:
add(2, 5)
if 'substract' in query:
subs(2, 5)
if 'multiply' in query:
multiply(2, 5)
elif 'exit' in query:
sys.exit()

这是可能的,但并不像你想象的那么容易做到,你需要语音识别,这本身就是一个大问题。但是如果你想要一个非常幼稚的选择,你可以使用一些包,比如

语音识别

如果可以从语音识别中获取字符串"add",则代码将按原样工作。

您可以使用Google Speech API执行此操作。 我推荐以下教程系列: https://www.youtube.com/watch?v=-AzGZ_CHzJk&t=333s

相关内容

  • 没有找到相关文章

最新更新