AIGC: 关于ChatGPT中基于Whisper模型实现音频转文本
概述
- 到目前,GPT只能去接收文本的输入,但是在现实的生活当中,会有语音的需求
- GPT也有相关的能力接入,我们就需要一个能够将语音内容转换成文本的能力
- 当然其他第三方的软件或者接口也是支持这个功能
- 在 Open AI 有一个语音转文本的模型叫做 whisper
- 在 Open AI 它的官方网站当中,在左侧可以看到有一个 Audio 关于音频的API
- 文档: https://platform.openai.com/docs/api-reference/audio/create-transcription
- 接口: https://api.openai.com/v1/audio/transcriptions
- 可以看到它的参数
- file 参数,必选,file类型,支持 mp3,mp4,mpeg,mpga,m4a,wav,or webm.
- model 参数,必选,string 类型,目前仅支持 whisper-1
- prompt 参数,可选,string 类型
- response_format 参数,可选,string 类型
- temperature 参数,可选,number 类型 默认 0
- language 参数,可选,string 类型
- …
- 与其他的音频转文本的方法或者工具不同的是 Open AI 允许我们去输入 Prompt
- 这个 Prompt 就是对于我们音频的一个介绍
- 举个例子,我们的音频是计算机相关的论文,或者法学,医学相关的论文
- 在这些论文当中,可能会有很多的特有的专业的名词
- 如果我们按照正常行的音频翻译的话,有可能得到的并不是我们想要的结果
- 但是 Open AI 不一样,我们在进行 whisper 调用的时候,可以去向它发送 Prompt
- 这里 Prompt 就是对音频的介绍,我们可以清晰的告诉 GPT,我们的音频是哪个领域,哪个方向
- 然后研究是的是什么的内容等,这样可辅助GPT对音频的内容进行分析转换成较准确的相关的文本,提升转换的质量
- response_format 是对于输出进行一个格式化,默认是 Json
- 这是和音频相关的接口
代码
whisper_example.py
# -*- coding: utf-8
import os
import openai
openai.api_key = "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"
openai.proxy="http://127.0.0.1:7890"
audio_file = open("test.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", audio_file, prompt=r"这是一篇机器学习相关的公开课")
print(transcript['text'])
分析
- 比如,test.mp3 内容是一段机器学习的英文教学章节
- 整体的代码看上去非常的简单,只需要两步就可以了
- 接下来执行一下我们刚刚实现的python代码
- 可以看到音频已经转换成了文本,但是是英文,有时候我们希望它是中文
- 这里有几个方案
- 方案一,通过其他的翻译软件去进行翻译
- 方案二,可以调用GPT的接口, 通过GBT3.5的模型, 对文章去做一个翻译
- 把这篇文章作为 Prompt 传递给它,由GPT去做翻译
- 方案三,利用 whisper 去做一个简单的处理
- 它的输入参数中,有一个 language的输入参数,这里指音频文件输入的语言
- 这里并不代表我们设置之后会以对应的形式对我们进行输出
- 我们想要去输出中文怎么办呢?其实,有一个非常简便的方法
- 在调用 whisper 模型的时候,可以去传入,Prompt, 告诉它这是一篇机器学习相关的公开课
- 我们通过中文的描述去构建了一个Prompt告诉whisper
- 由于我们的 Prompt 是输入的中文的描述, 最终whisper给我们返回的结果也是中文的
- 以上是通过GPT的 whisper 模型将音频转换成文本的一个简单的示例代码