V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
XiaoBaiYa
V2EX  ›  分享发现

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

  •  
  •   XiaoBaiYa · 2023-03-08 18:04:48 +08:00 · 983 次点击
    这是一个创建于 629 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是产品经理,不会代码

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

    总 build 时间,大约 2.5 小时。

    程序具体功能:

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

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

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

    实现效果:

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

    jietu.png

    程序不完善:

    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()))
    
    2 条回复    2023-03-09 19:56:19 +08:00
    XiaoBaiYa
        1
    XiaoBaiYa  
    OP
       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
        2
    mengyang  
       2023-03-09 19:56:19 +08:00
    挺有意思
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2829 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 113ms · UTC 00:24 · PVG 08:24 · LAX 16:24 · JFK 19:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.