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

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

相关推荐
好奇的菜鸟4 小时前
在 WSL 中安装 Docker
运维·docker·容器
程序员爱钓鱼4 小时前
使用 Node.js 批量导入多语言标签到 Strapi
前端·node.js·trae
杨浦老苏5 小时前
AI驱动的图表生成器Next-AI-Draw.io
人工智能·docker·ai·群晖·draw.io
f***a3466 小时前
node.js+npm的环境配置以及添加镜像(保姆级教程)
arcgis·npm·node.js
秋邱7 小时前
高等教育 AI 智能体的 “导学诊践” 闭环
开发语言·网络·数据库·人工智能·python·docker
芥子沫8 小时前
日记应用推荐-Docker安装DailyNotes应用
docker·容器·日记
q***71858 小时前
Webpack、Vite区别知多少?
前端·webpack·node.js
带刺的坐椅8 小时前
Solon AI 开发学习6 - chat - 两种 http 流式输入输出
java·ai·solon
stormsha11 小时前
裸眼3D原理浅析AI如何生成平面裸眼3D图像以科幻战士破框而出为例
人工智能·计算机视觉·平面·3d·ai
贝锐16 小时前
Docker部署Teemii本地漫画库,并通过花生壳内网穿透实现远程访问
docker