使用GPT和Whisper打造个性化语音助手

译文 精选
人工智能
本文旨在指导您创建一个简单而强大的语音助手,以满足您的喜好。我们将使用两个强大的工具——Whisper和GPT来实现这一点。你可能已经知道GPT及其功能,但你知道Whisper是什么吗?

译者 | 朱先忠

审校 | 重楼

简介

本文旨在指导您创建一个简单而强大的语音助手,以满足您的喜好。我们将使用两个强大的工具——Whisper和GPT来实现这一点。你可能已经知道GPT及其功能,但你知道Whisper是什么吗?

其实,Whisper是OpenAI公司开发的一种高级语音识别模型,可提供准确的音频到文本转录。

我们将带您完成示例工程构建的每一步,包括编码说明。最后,您将拥有一款可启动并正常运行的语音助手。

准备工作

打开AI API密钥

如果你已经有了OpenAI API密钥,你可以跳过这一节。

Whisper和GPT API都需要访问OpenAI API密钥。与ChatGPT的订阅需要支持固定费用不同,API密钥是根据您使用服务的数量进行支付的。

价格还算是比较合理的。在撰写本文时,Whisper的价格为0.006美元/分钟,GPT(模型为GPT-3.5-turbo)的价格为0.002/1K代币(代币约为0.75个单词)。

OpenAI的网站(作者自己的图片)

要获取密钥,请首先在OpenAI网站上创建一个帐户。登录后,单击右上角的姓名并选择查看API密钥。单击按钮“创建新密钥(Create new secret key)”后,将显示您的密钥。请确保保存此密钥,因为您将无法再次看到它。

示例工程依赖的第三方库

本小节介绍项目所需的开源代码库。本文示例项目包括使用OpenAI开发的Python库执行各种AI任务,以及使用pyttsx3生成语音,使用SoundDevice录制和播放音频,使用numpy和scipy进行数学运算等。和往常一样,在启动新项目时,您应该在安装包之前创建一个新的虚拟环境。

示例工程代码结构

我们的代码将围绕一个类构建,总共占用大约90行代码。在此,假设您对Python类语法知识已经有了基本的理解。整个类结构如下:

其中,Listen方法负责捕获用户的语音输入,并使用Whisper将其转换为文本。Think方法负责将文本发送到GPT,然后由GPT生成自然语言响应。speak方法负责将响应文本转换为可播放的音频。

注意:上图中最右边代表系统中的GPT助理部分(负责给出自然语言响应)。

下面这个过程是可以重复执行的,即用户可以通过发出另一个请求在对话中进行交互。

示例类对应的代码结构(作者自己的图片)

__init__函数

此函数负责初始化历史记录和设置API密钥。

我们需要一个历史记录来跟踪以前的消息。这基本上对应于我们助理的短期记忆,可以让它记住你在谈话中早些时候说的话。

listen函数

listen函数工作流程

这个方法相当于我们助理的耳朵功能。

listen函数允许接收来自用户的输入。此函数负责记录麦克风中的音频并将其转录为文本。

listen函数的具体作用如下:

  • 录制音频时打印出“Listening…”信息。
  • 使用声音设备以44100 Hz的采样率录制3秒的音频(或您想要的任何持续时间)。
  • 将录制的音频保存为临时WAV文件中的NumPy数组。
  • 使用OpenAI API的转录方法将音频发送给Whisper,由Whisper将其转录。
  • 将转录后的文本打印到控制台,以确认转录成功。
  • 以字符串形式返回转录后的文本。

在本例中,助理的监听时长为3秒钟,但您可以根据需要更改时间。

think函数

think函数工作流程

其实,我们系统中助理的大脑是由GPT驱动的。think函数负责接收助理听到的内容,并详细阐述回应内容。

值得注意的是,响应内容不是在您的本地计算机上创建的。文本需要发送到OpenAI的服务器,以便通过API进行处理。然后,响应内容被保存在响应变量中,用户消息和响应都被添加到历史记录中,即助手的短期记忆,负责为GPT模型提供上下文以生成响应。

speak函数

speak函数工作流程

speak函数负责将文本转换为语音,并将其回放给用户。此函数只接受一个参数:text。此参数应该是一个字符串,表示要转换为语音的文本。

当用文本字符串作为参数调用函数时,它会用命令engine=pyttsx3.init()初始化pyttsx3语音引擎。这个对象是引擎用来将文本转换为语音的主要接口。

然后,该函数指示语音引擎使用命令引擎将提供的文本转换为语音。这会将提供的要speak(由引擎读出)的文本排队。命令engine.runAndWait则负责告诉引擎处理排队的命令。

值得注意的是,Pyttsx3是在本地处理所有文本到语音的转换,这在系统的延迟方面是一个显著的优势。

最后的润色

到此,系统中助理部分已经准备好了。接下来,我们只需要创建一个辅助对象,然后开始对话。

对话是一个无限循环,当用户说出包含“Goodbye(再见)”的句子时,对话就结束了。

个性化体验技巧

总体来看,自定义GPT助手是轻而易举的事情!我们构建的代码是极具模块化的,它允许您通过添加各种功能进行自定义。以下是一些帮助您进行定制的参考想法:

  • 给助理一个角色:改变最初的提示,让你的助理扮演你的英语老师、励志演说家或你能想到的任何其他角色!这方面定制,请查看Awesome ChatGPT Prompts了解更多想法。
  • 更改语言:想使用另一种语言吗?没问题!只需将代码中的英语更改为您想要的语言即可。
  • 构建应用程序:您可以轻松地将助手集成到任何应用程序中。
  • 添加个性:通过添加自定义回复或使用不同的语调和语言风格,让你的助手拥有独特的个性。
  • 与其他API集成:将您的助手与其他API进行集成,以提供更高级的功能,如天气预报或新闻更新等。

结论

在本文中,我们解释了如何检索OpenAI API密钥,并提供了用于捕获用户输入、生成响应以及将文本转换为语音以进行播放的listen、think和speak等函数的代码示例。

有了这些知识,您可以开始创建一款适合您自己特定需求的独特语音助手。总之,存在无限的可能性:从创建一个个人助理来帮助完成日常任务,到构建一个语音控制的自动化系统……有关本文示例的所有代码,您可以访问链接的GitHub存储库

译者介绍

朱先忠,51CTO社区编辑,51CTO专家博客、讲师,潍坊一所高校计算机教师,自由编程界老兵一枚。

原文标题:Creating Your Personalized Voice Assistant with GPT and Whisper,作者:Donato Riccio

责任编辑:华轩 来源: 51CTO
相关推荐

2024-03-25 07:57:10

ChatGPTPromote人工智能

2018-10-25 14:21:22

Oracle数字化助手

2022-11-01 07:19:45

推荐系统非个性化

2011-08-18 18:53:30

win7

2020-06-28 07:00:00

推荐系统智能商务服务平台

2023-05-17 15:01:04

iOS 17苹果系统

2023-09-25 15:54:28

Canvas国庆

2023-10-17 08:42:13

ChatGPT定制指令

2023-10-10 15:21:51

人工智能

2014-12-19 10:02:33

华为智慧城市

2011-01-20 10:19:21

PowerShell个性化

2012-03-28 14:58:37

手机推送移动应用

2015-04-17 15:36:50

Teradata数字化

2010-01-11 17:41:26

MXN旅游频道

2019-09-20 09:06:27

物联网个性化客户体验

2014-06-03 17:11:39

FM数据挖掘数据处理

2018-05-14 12:48:04

大数据销售企业

2011-05-04 14:38:53

海尔江山帝景一体机

2013-11-07 16:42:34

Windows 8.1个性化

2023-03-21 12:46:30

智慧城市人工智能大数据
点赞
收藏

51CTO技术栈公众号