win10下用python+openai打造一个ai语音交互助手
科幻电影中总有一个ai语音助理,通过语音帮助人类处理各种问题,辅助人类工作,这也大大提高了工作效率,随着chatgpt的兴起,我们可以创建一个这样的ai语音交互助手了。
一、准备
win10电脑需要安装visual studio,官网地址:https://visualstudio.microsoft.com/
还需要下载pocketsphinx中文语音包,下载地址:https://drive.google.com/file/d/0Bw_EqP-hnaFNSWdqdm5maWZtTGc/view?resourcekey=0-AYS4yrQJO-ieZqyo0g6h3g
下载完后放入
C:\Users\用户名AppData\Local\Programs\Python\Python311\Lib\site-packages\speech_recognition\pocketsphinx-data\目录下
安装相关的库
pip install openai
pip install pyaudio
pip install pyttsx3
pip install SpeechRecognition
pip install pocketsphinx
二、申请openai的key与secret
登录官网申请openai的key,申请地址: https://platform.openai.com/account/api-keys三、代码
# -*- coding: utf-8 -* import speech_recognition as sr import pyttsx3 import openai openai.api_key = "<your-api-key>" # 创建 TTS 对象 engine = pyttsx3.init() # 创建 Recognizer 对象 r = sr.Recognizer() def getopenairesponse(keyword): response = openai.Completion.create( engine="text-davinci-003", prompt=keyword, max_tokens=1024, temperature=0.5 ) return response["choices"][0]["text"] while True: # 使用麦克风录音 with sr.Microphone() as source: r.adjust_for_ambient_noise(source) # 噪音抑制 print("我在听,您请说:") audio = r.listen(source) # 将语音转成文本 try: text = r.recognize_sphinx(audio, language='zh-CN') print("你说的:" + text) # 将文字转成语音并播放 engine.say(getopenairesponse(text)) #engine.say(text) engine.runAndWait() except sr.UnknownValueError: print("识别失败") except sr.RequestError as e: print("网络错误:" + str(e))
如果你的普通话不标准,pocketsphinx识别结果就不高,可以采用百度或阿里的语音识别api来提高精度。
个人推荐谷歌的语音识别技术,免费好用,但是你必须能连接谷歌服务器
只要将recognize_sphinx改成recognize_google就行了
text = r.recognize_google(audio, language='zh-CN')
目前chatgpt新增了gpt-3.5-turbo模型,成本更低,响应更快,我们来将上面的代码改下
# -*- coding: utf-8 -* import speech_recognition as sr import pyttsx3 import openai openai.api_key = "<your-api-key>" # 创建 TTS 对象 engine = pyttsx3.init() # 创建 Recognizer 对象 r = sr.Recognizer() def getopenairesponse(keyword): msg = [{"role": "user", "content": 'Hello World'}] msg[0]['content'] = keyword completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=msg) return completion.choices # while True: # say = speech.input() # 接收语音 # #reps=getopenairesponse(say) # speech.say(say) #说话 while True: # 使用麦克风录音 with sr.Microphone() as source: r.adjust_for_ambient_noise(source) # 噪音抑制 print("请开始说话:") audio = r.listen(source) # 将语音转成文本 try: text = r.recognize_google(audio, language='zh-CN') print("识别结果:" + text) # 将文字转成语音并播放 # for c in getopenairesponse(text): # engine.say(c.message.content) engine.say(text) engine.runAndWait() except sr.UnknownValueError: print("识别失败") except sr.RequestError as e: print("网络错误:" + str(e))
好了,一个简单的基于chatgpt的语音交互助手就来了,简简单单几行代码就解决了,目前openai对于新注册用户赠送18美元的额度,额度用完就要自己充值了,不过成本这么低,还是值得的。
网友评论0