win10下用python+openai打造一个ai语音交互助手

win10下用python+openai打造一个ai语音交互助手

科幻电影中总有一个ai语音助理,通过语音帮助人类处理各种问题,辅助人类工作,这也大大提高了工作效率,随着chatgpt的兴起,我们可以创建一个这样的ai语音交互助手了。

win10下用python+openai打造一个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

win10下用python+openai打造一个ai语音交互助手

三、代码

# -*- 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美元的额度,额度用完就要自己充值了,不过成本这么低,还是值得的。

{{collectdata}}

网友评论0