x

Programs, configuration and documentation that don't fit anywhere else
Log | Files | Refs | README | LICENSE

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 }