/* Orion --- Speech to text bot Copyright (c) 2022 Sameer Rahmani This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ package main import ( "flag" "fmt" "log" "os" "os/signal" "path/filepath" "github.com/asticode/go-asticoqui" "github.com/joho/godotenv" "lxsameer.com/go/orion/pkg/core" ) var model = flag.String("model", "models/default.tflite", "Path to the model (protocol buffer binary file)") var scorer = flag.String("scorer", "models/default.scorer", "Path to the external scorer") var owner = flag.String("owner", "", "Telegram user id that is allowed to use this bot") var storage = flag.String("voice-storage", "", "Where to store the voices") func main() { flag.Parse() log.SetFlags(0) err := godotenv.Load(".env") if err != nil { log.Fatal(err) return } if *model == "" || *scorer == "" { // In case of error print error and print usage // This can also be done by passing -h or --help flags fmt.Fprintf(flag.CommandLine.Output(), "Usage of %s:\n", os.Args[0]) flag.PrintDefaults() return } if *storage == "" { dir, err := os.UserHomeDir() if err != nil { log.Fatal(err) return } *storage = filepath.Join(dir, ".orion", "storage") } bot, err := core.CreateBot(storage) if err != nil { log.Fatal(err) return } bot.Owner = *owner // Initialize Coqui m, err := asticoqui.New(*model) if err != nil { log.Fatal("Failed initializing model: ", err) } if err := m.EnableExternalScorer(*scorer); err != nil { log.Fatal("Failed enabling external scorer: ", err) return } bot.Model = m c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) go func(){ for range c { bot.ShutDown() os.Exit(0) } }() bot.StartBot() // a1 := "/home/lxsameer/src/orion/2022-04-09_11:48:57.ogg" // a2 := "/home/lxsameer/src/orion/blah.wav" // err = core.ConvertOggtoWav(&a1, &a2) log.Println("done!") }