Spaces:
Configuration error
Configuration error
| package backend | |
| import ( | |
| "context" | |
| "fmt" | |
| "time" | |
| "github.com/mudler/LocalAI/core/config" | |
| "github.com/mudler/LocalAI/core/schema" | |
| "github.com/mudler/LocalAI/pkg/grpc/proto" | |
| "github.com/mudler/LocalAI/pkg/model" | |
| ) | |
| func ModelTranscription(audio, language string, translate bool, ml *model.ModelLoader, backendConfig config.BackendConfig, appConfig *config.ApplicationConfig) (*schema.TranscriptionResult, error) { | |
| if backendConfig.Backend == "" { | |
| backendConfig.Backend = model.WhisperBackend | |
| } | |
| opts := ModelOptions(backendConfig, appConfig, []model.Option{}) | |
| transcriptionModel, err := ml.BackendLoader(opts...) | |
| if err != nil { | |
| return nil, err | |
| } | |
| if transcriptionModel == nil { | |
| return nil, fmt.Errorf("could not load transcription model") | |
| } | |
| r, err := transcriptionModel.AudioTranscription(context.Background(), &proto.TranscriptRequest{ | |
| Dst: audio, | |
| Language: language, | |
| Translate: translate, | |
| Threads: uint32(*backendConfig.Threads), | |
| }) | |
| if err != nil { | |
| return nil, err | |
| } | |
| tr := &schema.TranscriptionResult{ | |
| Text: r.Text, | |
| } | |
| for _, s := range r.Segments { | |
| var tks []int | |
| for _, t := range s.Tokens { | |
| tks = append(tks, int(t)) | |
| } | |
| tr.Segments = append(tr.Segments, | |
| schema.Segment{ | |
| Text: s.Text, | |
| Id: int(s.Id), | |
| Start: time.Duration(s.Start), | |
| End: time.Duration(s.End), | |
| Tokens: tks, | |
| }) | |
| } | |
| return tr, err | |
| } | |