package audio import ( "context" "strings" dto "media/model/dto/audio" service "media/service/asr" "gitea.com/red-future/common/beans" "github.com/gogf/gf/v2/frame/g" ) type audio struct{} var AudioExtract = new(audio) // Create 创建语音转文字异步任务 POST /audio/transcribe func (c *audio) Create(ctx context.Context, req *dto.TranscribeReq) (res *dto.CreateTaskRes, err error) { ctx = withUser(ctx) fileNames := make([]string, len(req.VideoURLs)) for i, u := range req.VideoURLs { parts := strings.Split(u, "/") fileNames[i] = parts[len(parts)-1] } g.Log().Infof(ctx, "收到转写请求, 回调URL: %s", req.CallbackURL) params := &service.CreateTaskParams{ InputData: req.VideoURLs, FileNames: fileNames, Model: req.Model, Language: req.Language, Threshold: req.Threshold, CallbackURL: req.CallbackURL, } return service.AudioTask.Create(ctx, params) } // GetTask 获取任务详情 GET /audio/task/{taskId} func (c *audio) GetTask(ctx context.Context, req *dto.GetTaskReq) (res *dto.GetTaskRes, err error) { ctx = withUser(ctx) return service.AudioTask.GetTask(ctx, req) } // GetProgress 获取任务进度 GET /audio/task/{taskId}/progress func (c *audio) GetProgress(ctx context.Context, req *dto.GetProgressReq) (res *dto.GetProgressRes, err error) { ctx = withUser(ctx) return service.AudioTask.GetProgress(ctx, req) } // ListTasks 获取任务列表 GET /audio/tasks func (c *audio) ListTasks(ctx context.Context, req *dto.ListTaskReq) (res *dto.ListTaskRes, err error) { ctx = withUser(ctx) return service.AudioTask.ListTasks(ctx, req) } // withUser 为 context 注入默认用户(无认证基础设施时使用) func withUser(ctx context.Context) context.Context { if ctx.Value("user") == nil { ctx = context.WithValue(ctx, "user", &beans.User{UserName: "admin", TenantId: 1}) } return ctx }