* perf: insert mongo dataset data session * perf: dataset data index * remove delay * rename bill schema * rename bill record * perf: bill table * perf: prompt * perf: sub plan * change the usage count * feat: usage bill * publish usages * doc * 新增团队聊天功能 (#20) * perf: doc * feat 添加标签部分 feat 信息团队标签配置 feat 新增团队同步管理 feat team分享页面 feat 完成team分享页面 feat 实现模糊搜索 style 格式化 fix 修复迷糊匹配 style 样式修改 fix 团队标签功能修复 * fix 修复鉴权功能 * merge 合并代码 * fix 修复引用错误 * fix 修复pr问题 * fix 修复ts格式问题 --------- Co-authored-by: archer <545436317@qq.com> Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com> * update extra plan * fix: ts * format * perf: bill field * feat: standard plan * fix: ts * feat 个人账号页面修改 (#22) * feat 添加标签部分 feat 信息团队标签配置 feat 新增团队同步管理 feat team分享页面 feat 完成team分享页面 feat 实现模糊搜索 style 格式化 fix 修复迷糊匹配 style 样式修改 fix 团队标签功能修复 * fix 修复鉴权功能 * merge 合并代码 * fix 修复引用错误 * fix 修复pr问题 * fix 修复ts格式问题 * feat 修改个人账号页 --------- Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com> * fix chunk index; error page text * feat: dataset process Integral prediction * feat: stand plan field * feat: sub plan limit * perf: index * query extension * perf: share link push app name * perf: plan point unit * perf: get sub plan * perf: account page --------- Co-authored-by: yst <77910600+yu-and-liu@users.noreply.github.com> Co-authored-by: liuxingwan <liuxingwan.lxw@alibaba-inc.com>
68 lines
1.6 KiB
TypeScript
68 lines
1.6 KiB
TypeScript
import type { NextApiRequest, NextApiResponse } from 'next';
|
|
import { jsonRes } from '@fastgpt/service/common/response';
|
|
import { authCert } from '@fastgpt/service/support/permission/auth/common';
|
|
import { withNextCors } from '@fastgpt/service/common/middle/cors';
|
|
import { getUploadModel } from '@fastgpt/service/common/file/multer';
|
|
import { removeFilesByPaths } from '@fastgpt/service/common/file/utils';
|
|
import fs from 'fs';
|
|
import { getAIApi } from '@fastgpt/service/core/ai/config';
|
|
import { pushWhisperUsage } from '@/service/support/wallet/usage/push';
|
|
|
|
const upload = getUploadModel({
|
|
maxSize: 2
|
|
});
|
|
|
|
export default withNextCors(async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
|
|
let filePaths: string[] = [];
|
|
|
|
try {
|
|
const {
|
|
file,
|
|
data: { duration }
|
|
} = await upload.doUpload<{ duration: number; shareId?: string }>(req, res);
|
|
|
|
filePaths = [file.path];
|
|
|
|
const { teamId, tmbId } = await authCert({ req, authToken: true });
|
|
|
|
if (!global.whisperModel) {
|
|
throw new Error('whisper model not found');
|
|
}
|
|
|
|
if (!file) {
|
|
throw new Error('file not found');
|
|
}
|
|
|
|
const ai = getAIApi();
|
|
|
|
const result = await ai.audio.transcriptions.create({
|
|
file: fs.createReadStream(file.path),
|
|
model: global.whisperModel.model
|
|
});
|
|
|
|
pushWhisperUsage({
|
|
teamId,
|
|
tmbId,
|
|
duration
|
|
});
|
|
|
|
jsonRes(res, {
|
|
data: result.text
|
|
});
|
|
} catch (err) {
|
|
console.log(err);
|
|
jsonRes(res, {
|
|
code: 500,
|
|
error: err
|
|
});
|
|
}
|
|
|
|
removeFilesByPaths(filePaths);
|
|
});
|
|
|
|
export const config = {
|
|
api: {
|
|
bodyParser: false
|
|
}
|
|
};
|