ChatGPT是由OpenAI训练的一款大型语言模型,能够和你进行任何领域的对话。 这款程序主要让chatGPT拥有处理音频和视频的能力
我能用这个程序干什么?
- jdk8
- SpringBoot
- 讯飞API
- ChatGPT-Java-API
- hutool
- okhttp3
你可以从以下链接下载并安装 JDK 8:
- Oracle JDK 8 Downloads: 访问 Oracle 官方网站以获取 JDK 8 的下载链接。
提供了四个不同功能的聊天测试用例
该接口适合一些简单的一问一答制功能
该接口适合进行一些简单的不需要聊天记录的对话功能,适合进行长时间的一问一答制功能
该接口适合进行一些富有逻辑的单向问题
该接口适合进行复杂的大型逻辑处理,在每次聊天的时候都会带上chatGPT和自己的完整聊天记录,随着聊天的增加,会消耗大量的token。你可能需要修改这段代码提示chatGPT
Message GPTMessage = Message.of("我会在每次聊天中添加我们的聊天历史 以下chatGPT回复的聊天历史内容:"+lastMessageValue);
//文件位于:com.example.gptvideohelper.common.ConfigParameter
//需要配置的内容
String GPT_API_KEY="";//chatGPT的API密钥
String KEY_SECRET="";//讯飞API接口
String GPT_API_KEY="";//chatGPT的API密钥
**********************************************************************
//如果需要走代理
int PROXY_PORT=7880;//代理走的端口号 列如7080 要改成自己的
String PROXY_IP ="";//代理的IP地址 列如127.0.0.1
1.将视频移动到src/main/resources/video中
2.打开test文件,修改成自己专属的test文件
2.使用getAudio()获取到音频文件
3.使用getText()获取文本文件
4.使用ToContent解析返回的json
5.配置调用适合自己的GptAPI聊天接口
代码位于VideoHelper中
使用getAudio()功能
里面可以配置编码器、格式等功能 列如:
// 创建一个音频属性对象,指定音频的编码器、比特率、采样率和声道数
AudioAttributes audioAttr = new AudioAttributes();
audioAttr.setCodec("pcm_s16le");//无损音频编码 同时也是讯飞要求的格式 想要音频文件变小一点可以在这里改
audioAttr.setBitRate(128000);
audioAttr.setSamplingRate(44100);
audioAttr.setChannels(2);
// 创建一个编码属性对象,指定音频属性和空的视频属性
EncodingAttributes encodingAttr = new EncodingAttributes();
encodingAttr.setFormat("wav");
encodingAttr.setAudioAttributes(audioAttr);
encodingAttr.setVideoAttributes(null);
-
在这个部分,我们主要使用了讯飞开放平台的音频转文字 API。 已经编写了一个示例,名为
IfasrDemo
,它包含了文件上传、解析 JSON 等功能。你只需要配置好自己的 AppID 和 Key 即可开始使用。 -
如果想自定义其他配置 详细的配置参数可以参考这里。 一旦提取出文字,你可以使用
ToContent()
函数来获取主要内容。 -
最后,我建议将提取出来的文字传递给 ChatGPT 进行文本修正,然后再将修正后的文本发送给 ChatGPT。
//以视频文件为例 将这里的请求头和Url设置对即可 或者还有更多包括Se开头的安全信息头(依据下载需要的文件头而定)
HttpResponse response = HttpRequest.get(videoUrl)
.header("Accept", "改成你的Accept值")
.header("Accept-Encoding", "改成你的请求头编码方式")
.header("Accept-Language", "改成你的语言偏好的值")//语言偏好
.header("Origin", "改成你的视频链接地址")
.header("Range", "bytes=0-1048575")//请求数据范围 改成你要的值
.header("Referer", "改成你的视频链接地址")
.header("User-Agent", "改成你的用户标识")
.header("Upgrade-Insecure-Requests", "1")
.header("Range", "bytes=" + fileSize + "-") // 设置Range头部,从已下载的字节后开始下载
.execute();
/*先通过Api文件夹下的GetHeader获取到需要的文件头信息
一般网站都是会做加密等手段,你需要依据你获取到的Header去获取到真实的视频地址
然后将获取到的信息头添加到getRealUrl方法中
这里的data2要依据具体下载的视频地址进行修改
一般都会存在于json内置的某一数据内有着真实的数据地址
*/
String realUrl="";
String url = "你需要获取视频的真实地址的API接口" + parameter1 + "参数2:" +parameter2;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(url).build();
Response response = client.newCall(request).execute();
String responseBody = response.body().string();
JSONObject json = new JSONObject(responseBody);
JSONObject data = json.getJSONObject("data");
//修改:获取data2数组
JSONArray data2 = data.getJSONArray("data2");//获取嵌套在data json内的其他属性数据
//修改:遍历data2数组
for (int i = 0; i < data2.size(); i++) {
//修改:获取durl数组中的每个元素
JSONObject durlItem = data2.getJSONObject(i);
//修改:获取每个元素中的url字段
realUrl = durlItem.getStr("url");
System.out.println(realUrl);
}
return realUrl;
-
配置方式参考PlexPt-chatGPT-Java。
-
chatGPTAPI的详细参考这里(需要一定的英语阅读能力)
- OpenAi:https://openai.com/
- PlexPt的chatGPT-JAVA 的开源SDK。
欢迎进行技术以及代码交流 包括后续的更新