当前位置: 首页 > article >正文

ChatGPT搭建语音智能助手

环境

python:3+
ffmpeg:用于处理视频和语音
gradio:UI界面和读取语音

概述

我们的目的是做一个语音智能助手
在这里插入图片描述
下面我们开始

准备工作

下载Visual Studio Code

Visual Studio Code

因为需要写python代码,用Visual Studio Code比较方便。

安装python

python官网
在这里插入图片描述

执行下载好的exe文件,可以建议选择自定义安装,这样可以修改安装路径,只要别安装到C盘就行。

记得勾选添加到环境变量

添加环境变量

假设在安装时候,忘记了勾选添加到环境变量,那么我们可以自己配置

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

修改subprocess.py文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

安装ffmpeg

https://ffmpeg.org/

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

将下载好的安装包,进行解压,然后将解压后的文件夹放到平时自己喜欢的安装目录里。

比如:我的是D盘:D:\Program Files\ffmpeg

WINDOWS系统文字转语音WSAY

https://github.com/p-groarke/wsay/releases/tag/v1.5.0

点击下图进行下载:
在这里插入图片描述

在这里插入图片描述

使用GRADIO建立用户界面

先创建一个项目文件夹,比如我的:E:\openai\project\Chatbot

在这里插入图片描述
然后打开我们之前下载好的vsCode,并打开相关目录。

参照gradio官网写测试代码

https://gradio.app/quickstart/

测试代码1:页面

import gradio as gr

def greet(name):
    return "Hello " + name + "!"

demo = gr.Interface(fn=greet, inputs="text", outputs="text")

demo.launch()   

执行代码:

PS E:\openai\project\Chatbot> python ui.py

可以看到控制台会打印如下信息:

Running on local URL:  http://127.0.0.1:7860

然后浏览器打开网址http://127.0.0.1:7860

在这里插入图片描述

但是我们是需要做成语音的,所以我们需要调整下;

在官网找到:
https://gradio.app/docs/#audio

在这里插入图片描述

测试代码2:

import gradio as gr

def transcribe(audio):
    print(audio)
    return "这里显示音频"

demo = gr.Interface(
    fn=transcribe, 
    inputs=gr.Audio(source="microphone"), 
    outputs="text")

demo.launch()   

在这里插入图片描述

执行命令:py uimp.py

浏览器刷新地址如下页面:
在这里插入图片描述

接入openAI:

测试代码3:

在这里插入图片描述

执行命令:py uifinish.py

# 最终稿:

import gradio as gr
import openai, subprocess
from pathlib import Path

# 换成你自己的api_key
openai.api_key = "XXXXXXXXXXXXXXXXXXXXXX"

messages = [{"role": "system", "content": '你是一名知识渊博,乐于助人的智能聊天机器人.你的任务是陪我聊天,请用简短的对话方式,用中文讲一段话,每次回答不超过50个字!'}]

def transcribe(audio):
    global messages

    myfile=Path(audio)
    myfile=myfile.rename(myfile.with_suffix('.wav'))
    audio_file = open(myfile,"rb")
    transcript = openai.Audio.transcribe("whisper-1", audio_file)

    messages.append({"role": "user", "content": transcript["text"]})

    response = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=messages)

    system_message = response["choices"][0]["message"]
    # print(response)
    messages.append(system_message)

    subprocess.call(["wsay", system_message['content']])

    chat_transcript = ""
    for message in messages:
        if message['role'] != 'system':
            chat_transcript += message['role'] + ": " + message['content'] + "\n\n"

    return chat_transcript

ui = gr.Interface(fn=transcribe, inputs=gr.Audio(source="microphone", type="filepath"), outputs="text")
ui.launch()

效果如下:

在这里插入图片描述

总结

  1. ffmpeg 来处理语音
  2. 利用WSAY,将文字转成语音
  3. 利用gradio,来生成UI页面,并提供语音输入

参考地址:

https://updayday.notion.site/Chat-GPT-WHISPER-API-GPT-3-5-TURBO-2af2630c857a4f0da92abcc763b4fd48

Whisper API cannot read files correctly

Renaming file extension using pathlib (python 3)

Path not found in Python


http://www.kler.cn/news/10246.html

相关文章:

  • 工作中英语学习的几个阶段
  • Three.js教程:第一个3D场景
  • 【MyBatis Plus】003 -- 配置(基本、进阶、DB策略) 条件构造器
  • Linux下使用ClamAV病毒查杀
  • Lottie加载的一些坑
  • 【OpenCV-Python】cvui 之 trackbar
  • 因果推断14--DRNet论文和代码学习
  • 如果让你做技术负责人,你会怎么设计后端架构?
  • 查看 Elasticsearch 分析器
  • selenium库有哪些功能呢?都是如何实现的呢?
  • ( “树” 之 DFS) 543. 二叉树的直径 ——【Leetcode每日一题】
  • Git的安装与基本使用
  • 2021蓝桥杯真题大写 C语言/C++
  • 计算机网络笔记(横向)
  • 代码随想录算法训练营第三十四天-贪心算法3| 1005.K次取反后最大化的数组和 134. 加油站 135. 分发糖果
  • 微服务+springcloud+springcloud alibaba学习笔记【Eureka服务注册中心】(3/9)
  • C++标准库--IO库(Primer C++ 第五版 · 阅读笔记)
  • 离散数学_第二章:基本结构:集合、函数、序列、求和和矩阵(1)
  • 探索树形数据结构,通识树、森林与二叉树的基础知识(专有名词),进一步利用顺序表和链表表示、遍历和线索树形结构
  • 梯度的看法
  • MyBatis配置文件 —— 相关标签详解
  • 干翻Hadoop系列之:Hadoop前瞻之分布式知识
  • Leetcode.1992 找到所有的农场组
  • NumPy 秘籍中文第二版:十、Scikits 的乐趣
  • vue3+TS+Pinia+Vite项目实战之一
  • 程序员的日常瞎想,个人规划,和企业把控之间的微妙关系。职场人你懂!!
  • WPF MVVM模式构建项目
  • “三步走”推动云原生转型之路
  • Unity资源-音效初识
  • 【MySQL】表的约束