使用Python语音搜索维基百科
每天,我们都会访问如此多的应用程序,无论是 Messenger、Telegram 等消息平台,还是在 Amazon、Flipkart 上订购产品,或者了解天气,等等。我们看到这些网站有自己的软件程序,用于使用规则或人工智能与人类进行对话。用户通过对话界面通过书面或口头文本与软件程序进行交互。这可以称为助手。
例子:
Input: what is coding
Output: What/If (stylized as WHAT/ IF) is an American thriller web television miniseries, created by Mike Kelley, that premiered on May 24, 2019, on Netflix. The series stars Renée Zellweger, Jane Levy, Blake Jenner, Daniella Pineda, Keith Powers, Samantha Ware, Dave Annable, Saamer Usmani, John Clarence Stewart and Louis Herthum.
== Premise ==
What/If is a neo-noir thriller that explores “the ripple effects of what happens when acceptable people start doing unacceptable things.
User:
你需要知道什么?
可以使用自然语言处理 (NLP) 来制作助手,这是最有前途的人工智能领域之一,它使用自然语言来实现人类与机器的交互。
NLP有两种主要方法:
- 基于规则的方法: 遵循一些预先指定的规则并按照这些规则回答。
- 统计方法: 即根据用户输入自行学习的与机器学习相关的方法。
本文将学习如何使用统计方法创建自己的助手。
要创建助手,我们将使用Python编程语言,因为它具有构建它所需的所有模块。其次, Python很容易理解,即使你没有太多编程经验。
让我们开始吧
在进入实际代码之前,我们需要了解,这个聊天机器人或助手将是基于语音的,因此我们需要导入以下模块。
- pyttsx3: 一个Python包,支持 Mac OS、Windows 和 Linux 上的常见文本到语音引擎。
- 语音识别: 用于执行语音识别的库,支持多种引擎和 API,例如 CMU Sphinx、Microsoft Bing Voice Recognition、Google Cloud Speech API 等。
- wolframalpha: Python 对 WolframAlpha 计算智能的支持库。
- 维基百科: Python 的库,可以轻松访问和解析来自 Wikipedia 的数据。
要在您的系统上安装上述模块,请使用以下命令:
pip install pyttsx3
pip install SpeechRecognition
pip install wolframalpha
pip install wikipedia
创建 WolframAlpha 帐户
由于该聊天机器人使用 WolframAlpha API 来查找答案,因此用户必须通过在 .按照所需的步骤设置免费且仅供个人使用的学生帐户。生成您的 app-id 并复制它以供进一步参考。
遵循的概念
- 语音识别: 语音识别是机器或程序识别口语中的单词和短语并将它们转换为机器可读格式的能力。
- TTS – 文字转语音: 一种将文本转换为口语语音输出的语音合成形式。
- 计算知识整合: 使用 Wolfram|Alpha 将您的机器人与计算知识智能集成。
下面是实现。
# Python package supporting common text-to-speech engines
import pyttsx3
# For understanding speech
import speech_recognition as sr
# For fetching the answers
# to computational queries
import wolframalpha
# for fetching wikipedia articles
import wikipedia
# Function to search the query
# that is either entered or spoken
# by user
def search(query):
# try is used for searching with wolframAlpha
try:
# Generate your App ID from WolframAlpha
app_id = "Your WolframAlpha App ID here"
client = wolframalpha.Client(app_id)
res = client.query(query)
answer = next(res.results).text
print(answer)
SpeakText("Your answer is " + answer)
# If the query cannot be searched using
# WolframAlpha then it is searched in
# wikipedia
except:
query = query.split(' ')
query = " ".join(query[0:])
SpeakText("I am searching for " + query)
print(wikipedia.summary(query, sentences = 3))
SpeakText(wikipedia.summary(query,
sentences = 3))
# Function to convert text to
# speech
def SpeakText(command):
# Initialize the engine
engine = pyttsx3.init()
engine.say(command)
engine.runAndWait()
# Driver's code
# input query from the user by
# typing or by voice
query = input()
query = query.lower()
# if query is blank then user
# is prompted to speak something.
if query == '':
r = sr.Recognizer()
# uses the default microphone
# as the source to record voice
with sr.Microphone() as source:
print("Say Something ")
# reduces the background disturbances
# and noise for 2 seconds
r.adjust_for_ambient_noise(source, 2)
# listening to source
audio = r.listen(source)
try:
speech = r.recognize_google(audio)
search(speech)
# Handling Exceptions if speech
# is not understood.
except sr.UnknownValueError:
print("Google Speech Recognition could not \
understand audio")
# Couldn't handle requests, occurs
# mainly because of network errors
except sr.RequestError as e:
print("Could not request results from Google \
Speech Recognition service;{0}".format(e))
else:
search(query)
输出:
注意:输出文本的语音输出也会生成。