Files
media/controller/audio/audio_extract_controller.go
2026-05-20 11:32:39 +08:00

66 lines
1.8 KiB
Go

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
}