package main import ( "fmt" "io" "log" "os" "github.com/hajimehoshi/oto" "github.com/hajimehoshi/go-mp3" ) func run() error { f, err := os.Open("alert.mp3") if err != nil { return err } defer f.Close() d, err := mp3.NewDecoder(f) if err != nil { return err } c, err := oto.NewContext(d.SampleRate(), 2, 2, 44100) if err != nil { return err } defer c.Close() p := c.NewPlayer() defer p.Close() fmt.Printf("Length: %d[bytes]\n", d.Length()) if _, err := io.Copy(p, d); err != nil { return err } return nil } func main() { if err := run(); err != nil { log.Fatal(err) } }