Skip to content

Instantly share code, notes, and snippets.

@johnlindquist
Created December 7, 2023 16:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnlindquist/98c461a845ea373d92113cdf0090e67d to your computer and use it in GitHub Desktop.
Save johnlindquist/98c461a845ea373d92113cdf0090e67d to your computer and use it in GitHub Desktop.
// Name: Dictate to Editor
import "@johnlindquist/kit"
import Deepgram from "@deepgram/sdk"
let DEEPGRAM_API_KEY = await env("DEEPGRAM_API_KEY")
let client = new Deepgram.Deepgram(DEEPGRAM_API_KEY)
let deepgram = client.transcription.live({
punctuate: true,
})
await new Promise(resolve => deepgram.addListener("open", resolve))
let fullTranscript = ""
let onInit = async () => {
deepgram.addListener("transcriptReceived", async packet => {
// console.log("deepgram: packet received")
let data = JSON.parse(packet)
switch (data.type) {
case "Results":
// console.log("deepgram: transcript received")
let transcript = (data.channel.alternatives[0].transcript as string) ?? ""
let firstSpace = fullTranscript.length === 0 ? "" : " "
let appendText = firstSpace + transcript
await editor.append(appendText)
fullTranscript += appendText
break
case "Metadata":
// console.log("deepgram: metadata received")
break
default:
// console.log("deepgram: unknown packet received")
break
}
})
await mic.start()
mic.stream.on("data", chunk => {
deepgram.send(chunk)
})
}
await editor({
onInit,
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment