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的。
const axios = require("axios");
const fs = require("fs");
const FormData = require('form-data');const express = require("express");
const app = express();const multer = require("multer");
const uploader = multer({ dest: 'uploads/' });const asrurl="http://127.0.0.1:9000/asr?output=json"app.post("/v1/audio/transcriptions", uploader.single("file"), (req, res, next)=> {let formData = new FormData();formData.append('audio_file', fs.createReadStream(req.file.path));axios.post(asrurl, formData, { headers: { 'Content-Type': 'multipart/form-data' }}).then(resp=>{ console.log("success"); console.log(resp.data); res.json(resp.data);}).catch(e=>{ console.log(e.response.data.detail); });});var server=app.listen(9100,()=>{console.log("openai_whisper_asr API 启动 ");});
这样可以在dify中添加openai兼容模型,选择speech2text模型,模型名称随便填,API endpoint URL
填 http://ip:9100/v1