使用Python基于Google语音识别和ChatGPT创建AI语音聊天机器人(SpeechGPT)

人工智能(AI)技术近年来有了显著的进步。这可以从开发者开发的各种AI应用中看出来,包括基于计算机视觉技术的图像处理、图像识别或物体检测的AI应用,以及最新的基于AI的聊天应用,通常被称为聊天机器人,由开放源代码社区OpenAI开发,称为ChatGPT。

在 ChatGPT 这种可以根据特定命令(通常称为提示)提供具体建议的 AI 应用广泛使用之前,谷歌搜索引擎已经通过实施机器学习算法提供可靠的搜索功能,为用户提供相关建议。但是,随着 ChatGPT 的出现,用户可以更方便地使用它,因为 ChatGPT 是基于聊天机器人的应用程序,可以提供用户搜索命令的具体和重点结果。使用谷歌搜索功能时,用户会收到多个与他们的搜索相关的建议,有时候他们需要打开几个链接来确保搜索结果的准确性。除了搜索功能外,谷歌还开发了几个应用程序特性,如谷歌翻译、谷歌语音识别和基于图像的搜索等应用了 AI 技术。

在本文中,我们将创建一个人工智能应用程序,将ChatGPT的能力(基于聊天机器人)和Google语音识别的能力(基于语音)结合起来。这将结果为一个名为SpeechGPT的语音聊天机器人应用程序。在此应用程序中,通过实施或组合Google提供的语音或语音识别功能,将通过语音命令取代在ChatGPT(提示)中输入命令。应用程序的开发本身将使用Python脚本或代码编写,因为Python有许多可以协助开发基于人工智能和机器学习的应用程序的软件包。

以下是一个Python代码(或脚本)的示例,用于创建名为SpeechGPT的语音聊天机器人应用程序。

步骤1:我们需要导入几个Python包来支持应用程序开发,包括以下:

import speech_recognition as sr
import pyttsx3
import requests
import json

from io import BytesIO
from gtts import gTTS
from pygame import mixer

在这第一步中,我们导入了几个与语音识别、语音处理以及基于HTTP的API请求相关的软件包。如果这些软件包在您的本地库中不可用,您需要使用Python中的pip命令进行安装(例如:pip install pyttsx3)。

第二步:我们将为音频输出创建一个Python函数,如下所示:

def speak_func(speak,the_mixer):
tts = gTTS(speak,lang='id')
audio_file = BytesIO()
tts.write_to_fp(audio_file)
audio_file.seek(0)
the_mixer.music.load(audio_file)
the_mixer.music.play()
while the_mixer.music.get_busy():
pass

第三步:我们将创建一个Python函数来向ChatGPT发出API请求。该函数将返回我们发送到ChatGPT API的提示的结果。

def chat_gpt(prompt_str):
url = 'https://api.openai.com/v1/chat/completions'
headers = {'Content-Type': 'application/json','Authorization': 'Bearer YOUR_GPT_TOKEN'}
data = {'model': 'gpt-3.5-turbo','messages':[{'role':'user','content':prompt_str}]}

response = requests.post(url, json=data, headers=headers)
j_obj = json.loads(response.text)

chat_result = j_obj["choices"][0]["message"]["content"]
print(chat_result)
chat_response = chat_result

return chat_response

在API头部,占位符“YOUR_GPT_TOKEN”应替换为您自己的ChatGPT API令牌,这是您在注册ChatGPT应用程序时获得的。您可以在OpenAI API链接上找到您的API令牌。在ChatGPT API中,我们使用gpt-3.5-turbo模型,这是ChatGPT-3的AI模型。

第四步:我们将创建与SpeechGPT应用程序相关的Python对象的初始化脚本,如下所示:

# Create a recognizer object
r = sr.Recognizer()
engine = pyttsx3.init()
mixer.init()

# Set the speech rate
rate = engine.getProperty('rate')
engine.setProperty('rate', 200)

# Set the volume
volume = engine.getProperty('volume')
engine.setProperty('volume', 0.9)

voices = engine.getProperty('voices')
engine.setProperty('voice','id')

步骤5:我们将创建一个Python脚本来初始化PC麦克风以进行音频输入,并使用Google语音识别执行语音识别,如下所示:

# Use the default microphone as the audio source
with sr.Microphone() as source:

# Set the audio source's noise threshold
r.adjust_for_ambient_noise(source)

while True:

# Ask the user to say something

text = "Hai I'm Veronica, Can I help you ?"
print(text)
speak_func(text,mixer)

# Recognize speech using Google Speech Recognition
try:
audio = r.listen(source)
text = r.recognize_google(audio,language='id-ID')
print("You said: " + text)

string_speak = "Processing "+text+", please wait..."
speak_func(string_speak,mixer)

str_response = chat_gpt(text)
speak_func("The Result: "+text,mixer)

speak_func(str_response,mixer)

text = "...Thank You....."
print(text)
speak_func(text,mixer)

except sr.UnknownValueError:
print("Google Speech Recognition could not understand audio")
except sr.RequestError as e:
print("Could not request results from Google Speech Recognition service; {0}".format(e))

在上面的脚本中实现了一个循环,语音命令将持续被识别直到程序或应用被终止(Ctrl+C)。在给出语音命令后,应用将会将其翻译成文本,然后将文本作为提示发送到ChatGPT API。一旦ChatGPT API返回结果或返回值作为文本时,文本将被转换回音频输出或语音输出。以下是SpeechGPT应用的完整Python代码。

请注意,SpeechGPT应用程序需要与ChatGPT API和Google语音识别API连接才能正常运行。这要求您的设备需要有网络连接。

谢谢和上帝保佑…

2023-06-19 04:31:19 AI中文站翻译自原文