随着人工智能技术的不断进步,个人数字助手越来越受到关注。在智能家居和智能设备的时代,基于语音的个人助手因其便捷性而广受欢迎。这些助手可以通过简单的语音命令来执行许多日常任务。本文将指导如何快速开发一个名为“Minchu”(意为“闪电”)的基于语音的桌面助手,可以在任何设备上部署它。开发此应用的先决条件是了解Python语言。
要构建任何基于语音的助手,需要两个主要功能:一个用于听取命令,另一个用于响应命令。除了这两个核心功能外,还需要提供定制化的指令。首先,需要安装并导入所有必要的库。使用pip install
来安装库,然后导入它们。以下是程序中使用的一些关键库:
语音识别库(SpeechRecognition
)允许Python访问系统麦克风的音频,转录音频并保存。Google的文本转语音包gTTS
将音频问题转换为文本。为获取问题答案编写的查找函数的响应通过gTTS
转换为音频短语。这个包与Google Translate的API接口。
Playsound
包用于给答案配音。Playsound
允许Python播放MP3文件。Web浏览器包提供了一个高级接口,允许向用户显示基于Web的页面。Selenium是显示Web页面的另一个选项。但是,使用这个需要安装并提供特定于浏览器的Web驱动程序。
Wikipedia用于从Wikipedia网站获取各种信息。Wolfram|Alpha是一个计算知识引擎或答案引擎,可以使用Wolfram的知识库和AI技术计算数学问题。需要获取API来使用这个包。
整个应用程序的代码都是用Python编写的,使用的是Python支持的库。导入所需的库:
import speech_recognition as sr # 将语音转换为文本
import datetime # 用于获取日期和时间
import wikipedia
import webbrowser
import requests
import playsound # 用于播放保存的mp3文件
from gtts import gTTS # Google文本转语音
import os # 用于保存/打开文件
import wolframalpha # 用于计算字符串到公式
from selenium import webdriver # 用于控制浏览器操作
编写一个函数来捕获请求/问题:
def talk():
input = sr.Recognizer()
with sr.Microphone() as source:
audio = input.listen(source)
data = ""
try:
data = input.recognize_google(audio)
print("问题答案是," + data)
except sr.UnknownValueError:
print("抱歉,没有听到问题,请重复。")
return data
接下来,编写一个函数来回应问题:
def respond(output):
num = 0
print(output)
num += 1
response = gTTS(text=output, lang='en')
file = str(num) + ".mp3"
response.save(file)
playsound.playsound(file, True)
os.remove(file)
现在编写模块,将所有所需的定制化响应添加到问题中:
if __name__ == '__main__':
respond("嗨,是Minchu,个人桌面助手")
while(1):
respond("该如何帮助?")
text = talk().lower()
if text == 0:
continue
if "停止" in str(text) or "退出" in str(text) or "再见" in str(text):
respond("好的,再见,保重")
break
if '维基百科' in text:
respond('搜索维基百科')
text = text.replace("维基百科", "")
results = wikipedia.summary(text, sentences=3)
respond("根据维基百科")
print(results)
respond(results)
elif '时间' in text:
strTime = datetime.datetime.now().strftime("%H:%M:%S")
respond(f"时间是 {strTime}")
elif '搜索' in text:
text = text.replace("搜索", "")
webbrowser.open_new_tab(text)
time.sleep(5)
elif "计算" or "什么是" in text:
question = talk()
app_id = "填写API密钥"
client = wolframalpha.Client(app_id)
res = client.query(question)
answer = next(res.results).text
respond("答案是 " + answer)
elif '打开谷歌' in text:
webbrowser.open_new_tab("https://www.google.com")
respond("谷歌已打开")
time.sleep(5)
elif 'YouTube' in text:
driver = webdriver.Chrome(r"填写webdriver位置")
driver.implicitly_wait(1)
driver.maximize_window()
respond("在YouTube中打开")
indx = text.split().index('YouTube')
query = text.split()[indx + 1:]
driver.get("http://www.youtube.com/results?search_query=" + '+'.join(query))
elif "打开Word" in text:
respond("打开Microsoft Word")
os.startfile('填写Word在系统中的位置')
else:
respond("应用程序不可用")
一旦程序的所有模块都准备好了,就执行它。会兴奋地听到自己的个人助手与对话。可以根据需求添加更多的定制化,开发一个非常直观的基于语音的助手。一旦桌面助手准备好了,就是部署它的时候了。可以将其转换为可执行文件,并在任何设备上运行它。
为语音助手生成一个可执行文件:
要从Python脚本创建一个可执行文件,可以使用Pyinstaller。首先,必须将.ipynb Python文件转换为.py扩展名。为此,请使用ipython和nbconvert包。接下来,使用Pyinstaller为.py文件创建一个.exe文件。所有以下步骤都需要在命令提示符中执行,从Python安装的位置开始:
pip install ipython
pip install nbconvert
pip install pyinstaller
ipython nbconvert --to script minchu.ipynb # 提及.ipynb文件名转换为.py
pyinstaller minchu.py # 构建.exe文件
创建的.py文件应该位于.ipynb文件所在的同一文件夹中。一旦构建完成,Pyinstaller会创建两个文件夹,build和dist。导航到dist文件夹并执行.exe文件以运行个人桌面助手。这个应用程序是便携式的,可以在任何设备上执行。