不会代码的产品经理写的程序“YouTube 视频自动总结,并可持续提问”,抛砖引玉

2023-03-08 18:04:48 +08:00
 XiaoBaiYa

我是产品经理,不会代码

所有程序代码均来自询问 chatGPT ,官网示例,以及直觉。

总 build 时间,大约 2.5 小时。

程序具体功能:

1 、可指定程序从 YouTube 上下载一个视频的音频流,并将其保存在本地

2 、自动调用 OpenAI 的语音转文字 API 将音频转换为文字

3 、使用 OpenAI 的 Chat API ,基于对话历史生成回复,实现人机对话互动,比如觉得总结得太短,还可以继续提问,让他生成更长的总结,或者

实现效果:

测试来源视频:[https://www.youtube.com/watch?v=VCpNlcffl4w]

程序不完善:

1 、比如视频不能太长,不然会超过 chatgpt 的 token 限制 2 、没有 GUI 界面(尝试用 GPT 转换为 GUI 界面,但是只能达到输出总结的效果,无法继续连续回答,故放弃)

目的:发这个贴子,我主要想表达,即使缺乏编程技能,也可以通过利用现有的技术简化工作流程,提高生产力和效率。;

希望这个例子能给大家提供一些可能有的没的新思路。

以下代码

import openai
from pytube import YouTube

# 设置 OpenAI API 密钥和模型 ID
API_KEY = '你的 API_KEY'
openai.api_key = API_KEY
model_id = 'gpt-3.5-turbo'

# 定义 ChatGPT_conversation 函数
def ChatGPT_conversation(conversation):
    # 使用 OpenAI 的 Chat API 生成回复
    response = openai.ChatCompletion.create(
        model=model_id,
        messages=conversation
    )
    
    # 将回复添加到对话列表中
    conversation.append({'role': response.choices[0].message.role, 'content': response.choices[0].message.content})
    return conversation

# 输入 YouTube 视频链接
video_link = "<https://www.youtube.com/watch?v=VCpNlcffl4w>"

# 创建 YouTube 对象并获取音频流
yt = YouTube(video_link)
audio_stream = yt.streams.filter(only_audio=True).first()

# 下载音频
audio_file_path = audio_stream.download()

# 使用 OpenAI 的语音转文字 API 将音频转换为文字

with open(audio_file_path, "rb") as file:
    transcription = openai.Audio.transcribe("whisper-1", file)
    text = str(transcription).encode('utf-8').decode('unicode_escape')
    print('转换文字成功')

# 初始化对话列表,并将从音频中提取的文字作为系统发起的第一个对话
conversation = []
conversation.append({'role': 'system', 'content': '这段文字是来源于 youtube 的一个视频,请总结一下:' + text})
conversation = ChatGPT_conversation(conversation)
print('{0}: {1}\n'.format(conversation[-1]['role'].strip(), conversation[-1]['content'].strip()))
# 循环进行对话
while True:
    # 接收用户输入,并将其添加到对话列表中
    prompt = input('User:')
    conversation.append({'role': 'user', 'content': prompt})
    
    # 使用 OpenAI 的 Chat API 生成回复,并输出到控制台
    conversation = ChatGPT_conversation(conversation)
    print('{0}: {1}\n'.format(conversation[-1]['role'].strip(), conversation[-1]['content'].strip()))
929 次点击
所在节点    分享发现
2 条回复
XiaoBaiYa
2023-03-08 18:23:31 +08:00
过程:

首先确定了自己的需求:总结 youtube 视频

因为有 4096 的 token 限制,所以我分为了三个模块来提问

1 、下载 youtube 视频,chatgpt 给我推荐了 pytube
2 、转换文字,这个采取了官方的 whisper 示例
3 、总结,这个就直接 chatgpt 就搞定了

最后再让 chatgpt 将三者结合,给我输出程序,中途还遇到一些 BUG 的地方,直接将输错错误结果发给 chatgpt,chatgpt 就会告诉我修改哪段代码来 debug 。
mengyang
2023-03-09 19:56:19 +08:00
挺有意思

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/922338

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX