transcribe.go (916B)
1 package main 2 3 import ( 4 "flag" 5 "fmt" 6 "log" 7 "net/http" 8 "os" 9 10 "olowe.co/x/internal/aiconf" 11 "olowe.co/x/openai" 12 ) 13 14 var model = flag.String("m", "", "model") 15 var language = flag.String("l", "en", "language") 16 var timestamps = flag.Bool("t", false, "generate timestamps") 17 18 func init() { 19 log.SetFlags(0) 20 log.SetPrefix("transcribe: ") 21 flag.Parse() 22 } 23 24 func main() { 25 if len(os.Args) != 2 { 26 fmt.Fprintln(os.Stderr, "usage: transcribe file") 27 os.Exit(2) 28 } 29 30 config, err := aiconf.ReadConfig("/home/otl/.config/openai") 31 if err != nil { 32 log.Fatal(err) 33 } 34 if *model == "" { 35 *model = config.DefaultModel 36 } 37 client := &openai.Client{ 38 http.DefaultClient, 39 config.Token, 40 config.BaseURL, 41 } 42 43 f, err := os.Open(os.Args[1]) 44 if err != nil { 45 log.Fatal(err) 46 } 47 tscript, err := client.Transcribe(f, *language, *model, *timestamps) 48 if err != nil { 49 log.Fatal(err) 50 } 51 os.Stdout.WriteString(tscript.SubRip()) 52 }