66 lines
1.8 KiB
Go
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
|
|
}
|