diff --git a/backend/go/transcribe/transcript.go b/backend/go/transcribe/transcript.go index dc331cae..fdfaa974 100644 --- a/backend/go/transcribe/transcript.go +++ b/backend/go/transcribe/transcript.go @@ -11,21 +11,21 @@ import ( "github.com/go-skynet/LocalAI/core/schema" ) -func sh(c string) (string, error) { - cmd := exec.Command("/bin/sh", "-c", c) +func runCommand(command []string) (string, error) { + cmd := exec.Command(command[0], command[1:]...) cmd.Env = os.Environ() - o, err := cmd.CombinedOutput() - return string(o), err + out, err := cmd.CombinedOutput() + return string(out), err } -// AudioToWav converts audio to wav for transcribe. It bashes out to ffmpeg +// AudioToWav converts audio to wav for transcribe. // TODO: use https://github.com/mccoyst/ogg? func audioToWav(src, dst string) error { - out, err := sh(fmt.Sprintf("ffmpeg -i %s -format s16le -ar 16000 -ac 1 -acodec pcm_s16le %s", src, dst)) + command := []string{"ffmpeg", "-i", src, "-format", "s16le", "-ar", "16000", "-ac", "1", "-acodec", "pcm_s16le", dst} + out, err := runCommand(command) if err != nil { return fmt.Errorf("error: %w out: %s", err, out) } - return nil }