草庐IT

OpenAI Whisper and ChatGPT 语音助手

ML_python_get√ 2023-10-21 原文

OpenAI Whisper and ChatGPT ASR Gradio Web UI


麦克风输入,展示三种结果

  • 输入ASR结果
  • 输出文本
  • 输出TTS结果

一 环境准备

1.1 python

gradio==3.19.1
gTTS==2.3.1
openai==0.27.0
openai-whisper==20230124

1.2 windows

使用以下命令安装 ffmpeg

choco install ffmpeg

需要科学上网,否则连接超时

二 导入所需要的包

import whisper
import gradio as gr 
import time
import warnings
import json
import openai
import os
from gtts import gTTS

三 加载模型

openai.api_key='输入你自己的openai-key'
model = whisper.load_model("base")

四 定义openai和whisper接口

def chatgpt_api(input_text):
    messages = [
    {"role": "system", "content": "you are great!"}]
    
    if input_text:
        messages.append(
            {"role": "user", "content": input_text},
        )
        chat_completion = openai.ChatCompletion.create(
            model="gpt-3.5-turbo", messages=messages
        )
    
    reply = chat_completion.choices[0].message.content
    return reply

def transcribe(audio):
    language = "zh-CN"
    audio = whisper.load_audio(audio)
    audio = whisper.pad_or_trim(audio)
    mel = whisper.log_mel_spectrogram(audio).to(model.device)

    _, probs = model.detect_language(mel)

    options = whisper.DecodingOptions(fp16 = False)
    result = whisper.decode(model, mel, options)
    result_text = result.text
    
    out_result = chatgpt_api(result_text)
    
    audioobj = gTTS(text = out_result, 
                    lang = language, 
                    slow = False)
    
    audioobj.save("Aria.mp3")

    return [result_text, out_result, "Aria.mp3"]

五 生成Gradio Web UI

output_1 = gr.Textbox(label="Speech to Text")
output_2 = gr.Textbox(label="ChatGPT Output")
output_3 = gr.Audio("Aria.mp3")

gr.Interface(
    title = 'OpenAI Whisper and ChatGPT ASR Gradio Web UI', 
    fn=transcribe, 
    inputs=[
        gr.inputs.Audio(source="microphone", type="filepath")
    ],

    outputs=[
        output_1,  output_2, output_3
    ],
    live=True).launch()

参考:https://github.com/bhattbhavesh91/voice-assistant-whisper-chatgpt

有关OpenAI Whisper and ChatGPT 语音助手的更多相关文章

  1. ruby - Hanami link_to 助手只呈现最后一个元素 - 2

    我是HanamiWorld的新人。我已经写了这段代码:moduleWeb::Views::HomeclassIndexincludeWeb::ViewincludeHanami::Helpers::HtmlHelperdeftitlehtml.headerdoh1'Testsearchengine',id:'title'hrdiv(id:'test')dolink_to('Home',"/",class:'mnu_orizontal')link_to('About',"/",class:'mnu_orizontal')endendendendend我在模板上调用了title方法。htm

  2. ruby-on-rails - 将 Rails 路由助手作为类方法添加到类中 - 2

    我如何将像“root_path”这样的Rails路由助手作为类方法添加到像my_model.rb这样的类中?所以我的课是这样的:ClassMyModeldefself.fooreturnself.root_pathendendMyModel.foo以上不起作用,因为ClassMyModel不响应root_path这是我所知道的:我可以使用includeRails.application.routes.url_helpers,但这只会将模块的方法添加为实例方法我试过扩展Rails.application.routes.url_helpers但它没用请随时给我上课:)

  3. ruby 私有(private)类方法助手 - 2

    您好,我正在尝试创建一个帮助程序,用于将ruby​​方法大量定义为私有(private)类方法。通常,可以通过使用private_class_method键工作将方法定义为私有(private)类方法。但我想创建一个以下样式的助手:classPersondefine_private_class_methodsdodefmethod_oneenddefmethod_twoendendend我计划通过以下方式动态定义它,但根本不起作用:classObjectdefself.define_private_class_methods&blockinstance_evaldoprivate&bl

  4. ruby-on-rails - RSpec 应用程序助手测试 : Undefined local variable or method `helper` - 2

    有一段时间这似乎是一个闪烁的错误,但现在它一直出现:当我在一个相当简单的ApplicationHelper规范上运行RSpec时,我得到以下错误:%rspec--backtrace1)ApplicationHelperrendersMarkdownfromplaintextFailure/Error:expect(helper.md(plaintext)).toeq("Header\n")NameError:undefinedlocalvariableormethod`helper'for##/Users/danielsh/.rvm/gems/ruby-2.1.1@project-st

  5. jquery - 在 Rails 中从原型(prototype)切换到 jquery,助手呢? - 2

    我目前从prototype切换到jquery主要是为了支持简单的ajax文件上传。我使用:https://github.com/indirect/jquery-rails95%的javascript代码是由railshelper编写的,例如:-remote_function-render:updatedo|page|-page.replace_html'id',:partial=>'content'-page['form']['name']=something-page.visual_effect:highlight,'head_success'...我知道我必须为Jquery重写5%

  6. ruby - Sinatra 助手伪造请求 - 2

    总结在Sinatra内Web应用程序,如何向应用程序发出虚拟请求并以文本形式返回响应正文?例如,这些路线...get('/foo'){"foo"}get('/bar'){"#{spoof_request'/foo'}-bar"}...当使用Web浏览器请求“/bar”时,应产生响应“foo-bar”。动机我的应用程序有一个代表错误条目的页面,其中包含关于该错误条目的大量详细信息:错误出现在哪个版本中,它有多重要,与之关联的标签是什么,错误分配给了谁等等.用户可以在此页面上以交互方式编辑单个数据。使用我的AJAXFetchjQuery插件,JavaScript使用AJAX将页面的只读部分

  7. ruby-on-rails - "uninitialized constant"当包含测试助手模块时 - 2

    我在尝试将辅助模块包含到测试中时遇到未初始化的常量错误。我的rails测试目录中有以下文件functional>admin>school_controller_test.rbfunctional>controller_helper.rb类/模块主体如下:moduleControllerHelperdefcheck_sort_order(items,column,direction)...endendclassAdmin::SchoolsControllerTest当我运行它时,测试输出是:/.../.rvm/gems/ruby-1.9.2-p0/gems/rspec-core-2.3.

  8. ruby-on-rails - 如何在 Rake 任务中使用 asset_url 助手 - 2

    如何在Rake任务中访问asset_url或asset_pathSprocketsURL助手?我有一个Rake任务,用一些模型为数据库播种。其中一个模型具有Rails应用程序中Assets的URL。如何在Rake任务中为该Assets创建URL?SomeModel.create(image:asset_url('awesome.png'))目前我对这个问题的解决方案真的很差。path=URI.join(Rails.application.routes.url_helpers.root_url,'/assets/images/awesome.png')SomeModel.create(i

  9. ruby-on-rails - 在独立的 Rails 引擎中从父应用访问助手 - 2

    我正在编写一个可配置的Rails引擎。我有一个authentication_helper配置选项来定义在所有需要身份验证的Controller的before_action中应该调用哪个助手。问题是我无法从引擎的Controller访问父应用程序的助手。Myunderstanding是因为引擎是隔离的。我考虑过使用block而不是方法名称,但我不确定这是否可行,或者我是否能够从我的Controller外部干净地访问授权逻辑。ActiveAdmin,我过去用过,有一个类似的配置选项。我注意到他们的引擎不是隔离的,所以我可能高估了引擎隔离的重要性?有没有一种优雅的方式既可以享受引擎隔离的好处

  10. 蓝桥杯C/C++VIP试题每日一练之报时助手 - 2

    ?作者主页:静Yu?简介:CSDN全栈优质创作者、华为云享专家、阿里云社区博客专家,前端知识交流社区创建者?社区地址:前端知识交流社区?博主的个人博客:静Yu的个人博客?博主的个人笔记本:前端面试题个人笔记本只记录前端领域的面试题目,项目总结,面试技巧等等。接下来会更新蓝桥杯官方系统基础练习的VIP试题,依然包括解题思路,源代码等等。问题描述:给定当前的时间,请用英文的读法将它读出来。时间用时h和分m表示,在英文的读法中,读一个时间的方法是:  如果m为0,则将时读出来,然后加上“o’clock”,如3:00读作“threeo’clock”。  如果m不为0,则将时读出来,然后将分读出来,如5

随机推荐