Use when writing or reviewing Go code in this repo that transcribes prerecorded audio with Listen v1 REST or streams live audio with Listen v1 WebSockets. Route text generation to deepgram-go-text-to-speech, text analysis to deepgram-go-text-intelligence, audio analytics overlays to deepgram-go-audio-intelligence, and Flux or other v2 conversational work to deepgram-go-conversational-stt.
89
86%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Advisory
Suggest reviewing before use
Use this skill for pkg/client/listen work:
FromURL, FromFile, or FromStreampkg/client/listen/v1/websocketUse a different skill when:
deepgram-go-text-to-speech)deepgram-go-text-intelligence)deepgram-go-audio-intelligence)deepgram-go-conversational-stt)Set DEEPGRAM_API_KEY before constructing clients.
export DEEPGRAM_API_KEY="your_api_key"This SDK reads env-backed defaults via the client option layer. Prefer API key or token auth supported by the repo's client options; do not hardcode credentials.
Prerecorded REST:
package main
import (
"context"
"fmt"
"log"
api "github.com/deepgram/deepgram-go-sdk/v3/pkg/api/listen/v1/rest"
listen "github.com/deepgram/deepgram-go-sdk/v3/pkg/client/listen"
interfaces "github.com/deepgram/deepgram-go-sdk/v3/pkg/client/interfaces"
)
func main() {
if err := run(); err != nil {
log.Fatal(err)
}
}
func run() error {
ctx := context.Background()
client := listen.NewRESTWithDefaults()
dg := api.New(client)
resp, err := dg.FromURL(
ctx,
"https://dpgr.am/spacewalk.wav",
&interfaces.PreRecordedTranscriptionOptions{
Model: "nova-3",
SmartFormat: true,
Punctuate: true,
},
)
if err != nil {
return err
}
fmt.Println(resp.Results.Channels[0].Alternatives[0].Transcript)
return nil
}Live WebSocket with channel fan-out:
package main
import (
"context"
"fmt"
"log"
listenws "github.com/deepgram/deepgram-go-sdk/v3/pkg/api/listen/v1/websocket"
listen "github.com/deepgram/deepgram-go-sdk/v3/pkg/client/listen"
interfaces "github.com/deepgram/deepgram-go-sdk/v3/pkg/client/interfaces"
)
func main() {
if err := run(); err != nil {
log.Fatal(err)
}
}
func run() error {
ctx := context.Background()
handler := listenws.NewDefaultChanHandler()
conn, err := listen.NewWSUsingChanWithDefaults(
ctx,
&interfaces.LiveTranscriptionOptions{Model: "nova-3", InterimResults: true},
handler,
)
if err != nil {
return err
}
defer conn.Stop()
if ok := conn.Connect(); !ok {
return fmt.Errorf("connect failed")
}
conn.Start()
// The handler receives Open/Message/Metadata/UtteranceEnd events.
// In a real app, stream PCM/audio chunks from your mic or file reader here.
// For example (pseudo-code):
// for chunk := range audioChunks {
// if err := conn.WriteBinary(chunk); err != nil { return err }
// }
//
// When the input stream ends, flush any trailing audio and close cleanly:
// if err := conn.Finalize(); err != nil { return err }
return nil
}interfaces.PreRecordedTranscriptionOptions
Model, Language, Punctuate, SmartFormat, Diarize, Redact, Utterancespkg/api/listen/v1/rest: api.New(client).FromURL, FromFile, FromStreaminterfaces.LiveTranscriptionOptions
Model, Language, Encoding, SampleRate, Channels, InterimResults, Endpointinglisten.NewRESTWithDefaults(), listen.NewREST(apiKey, options)listen.NewWSUsingCallback...listen.NewWSUsingChan...Connect() returns bool; call Start(), stream/write audio, KeepAlive() as needed, Finalize(), then defer conn.Stop()README.mddocs.gopkg/client/listen/client.gopkg/client/listen/v1/rest/client.gopkg/client/listen/v1/websocket/client_callback.gopkg/client/listen/v1/websocket/client_channel.gopkg/client/interfaces/v1/types-prerecorded.gopkg/client/interfaces/v1/types-stream.gohttps://developers.deepgram.com/openapi.yamlhttps://developers.deepgram.com/asyncapi.yaml/llmstxt/developers_deepgram_llms_txthttps://developers.deepgram.com/reference/speech-to-text/listen-pre-recordedhttps://developers.deepgram.com/reference/speech-to-text/listen-streaminghttps://developers.deepgram.com/docs/speech-to-textlisten package names for STT v1, not transcription.NewWSUsingChan..., keep defer conn.Stop() near construction, and finalize before shutdown.context.Context and return error; do not translate examples into exception-style control flow.examples/speech-to-text/rest/url/main.goexamples/speech-to-text/rest/file/main.goexamples/speech-to-text/websocket/microphone_channel/main.goexamples/speech-to-text/websocket/microphone_callback/main.gotests/edge_cases/keepalive/main.gotests/edge_cases/reconnect_client/main.goFor cross-language Deepgram product knowledge — the consolidated API reference, documentation finder, focused runnable recipes, third-party integration examples, and MCP setup — install the central skills:
npx skills add deepgram/skillsThis SDK ships language-idiomatic code skills; deepgram/skills ships cross-language product knowledge (see api, docs, recipes, examples, starters, setup-mcp).
b7c92f4
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.