To play sound using golang, you can use the sound signal: http://github.com/faiface/beep , see the Tutorial :
package main import ( "log" "os" "time" "github.com/faiface/beep" "github.com/faiface/beep/mp3" "github.com/faiface/beep/speaker" ) func main() { f, err := os.Open("../Lame_Drivers_-_01_-_Frozen_Egg.mp3") if err != nil { log.Fatal(err) } streamer, format, err := mp3.Decode(f) if err != nil { log.Fatal(err) } defer streamer.Close() speaker.Init(format.SampleRate, format.SampleRate.N(time.Second/10)) done := make(chan bool) speaker.Play(beep.Seq(streamer, beep.Callback(func() { done <- true }))) <-done }
To record sound from your computer (microphone), you can try this guide: https://medium.com/@valentijnnieman_79984/how-to-build-an-audio-streaming-server-in-go-part-1-1676eed93021, which uses PortAudio bindings:
package main import ( "encoding/binary" "github.com/gordonklaus/portaudio" "net/http" ) const sampleRate = 44100 const seconds = 1 func main() { portaudio.Initialize() defer portaudio.Terminate() buffer := make([]float32, sampleRate * seconds) stream, err := portaudio.OpenDefaultStream(1, 0, sampleRate, len(buffer), func(in []float32) { for i := range buffer { buffer[i] = in[i] } }) if err != nil { panic(err) } stream.Start() defer stream.Close() }
source share