openai-whisper-asr-webservice接入dify

openai-whisper-asr-webservice提供的asr的api其实并不兼容openai的api,所以在dify中是不能直接添加到语音转文字的模型中,对比了下两个api的传参情况,其实只要改动一处,就能支持:

openai兼容的asr调用中formdata中音频文件是file=XXX这样的,而openai-whisper-asr-webservice提供的asr的api中formdata中音频文件是audio_file=XXX这样的。感觉使用openresty的lua简单处理一下改formdata中的信息转发到后端就可以搞定,折腾了半天没有进展 😦 只好先用nodejs做个express服务来转发下,效果是ok的。

javascript 复制代码
const express = require("express");
const app = express();
const multer = require("multer");
const uploader = multer({ storage: multer.memoryStorage() });
const FormData = require('form-data');
const fetch = require('node-fetch');
const asrurl="http://127.0.0.1:9000/asr?output=json"

app.post("/v1/audio/transcriptions", uploader.single("file"), (req, res)=> {
	let newForm = new FormData();
	newForm.append('audio_file', req.file.buffer,{ filename: req.file.originalname, contentType: req.file.mimetype });
	fetch(asrurl, { method: 'POST', body: newForm, headers: newForm.getHeaders() }).then(resp=>resp.json()).then(response=> res.json({"text":response.text}) ).catch(error=>{ res.status(500).send(error.message); });
});


var server=app.listen(9100,()=>{ console.log("openai whisper 进程启动 "); });

这样可以在dify中添加openai兼容模型,选择speech2text模型,模型名称随便填,API endpoint URL

http://ip:9100/v1

又更新了下代码:采用内存存储上传文件,减少写入磁盘文件和读取磁盘文件环节

相关推荐
喜欢你,还有大家14 小时前
Docker-仓库-镜像制作
运维·docker·容器
老前端的功夫15 小时前
Web应用的永生之术:PWA落地与实践深度指南
java·开发语言·前端·javascript·css·node.js
武子康16 小时前
Java-166 Neo4j 安装与最小闭环 | 10 分钟跑通 + 远程访问 Docker neo4j.conf
java·数据库·sql·docker·系统架构·nosql·neo4j
浪裡遊19 小时前
Next.js路由系统
开发语言·前端·javascript·react.js·node.js·js
计算机小手19 小时前
使用 llama.cpp 在本地高效运行大语言模型,支持 Docker 一键启动,兼容CPU与GPU
人工智能·经验分享·docker·语言模型·开源软件
MaybeAI19 小时前
构建可靠的 AI 工作流:我们在 MCP 架构下的实践与经验
ai·工作流·mcp·ai自动化·工作流自动化·无代码工作流·maybeai
岚天start20 小时前
KubeSphere在线安装单节点K8S集群
docker·容器·kubernetes·k8s·kubesphere·kubekey
栗子~~20 小时前
shell-基于k8s/docker管理容器、监控模型训练所消耗的最大CPU与最大内存脚本
docker·容器·kubernetes
半梦半醒*20 小时前
k8s——pod详解2
linux·运维·docker·容器·kubernetes·负载均衡
AAA小肥杨20 小时前
K8s从Docker到Containerd的迁移全流程实践
docker·容器·kubernetes