01
Microphone
avfoundation device :0, unless you pass another format and device.
Enterprise API and SDK
Resum opens a speech socket, then captures audio from a microphone, a file, or a live stream. Finalized turns append to a transcript while people are still talking. When the session ends, each named agent gets one file.
Pricing is available from sales. Resum is offered to enterprises only.
The session
One path, from the moment the socket opens to the files left on disk. The API and the terminal runner share it.
01
Audio is not sent until the AssemblyAI websocket is open. The terminal waits on session.ready() before ffmpeg starts.
02
ffmpeg emits mono 16 kHz AAC. The same bytes are written to audio.aac and handed to the session in ten-second chunks.
03
A turn is appended to transcript.srt when it ends. Cue times step one second per finalized turn. They are not media timestamps.
04
notes and summary have a fixed shape. Any other tag is plain text. Files are written once, after the session ends, with gpt-4o-mini.
05
Ctrl+E, a duration, or stop-request.json each flush the buffer, send Terminate, and then write the agent files. The default duration is 60 minutes.
06
STT_KEY opens the live session. OPENAI_API_KEY is required only when the session ends and agent files are written. Secret values are not logged.
Where audio enters
01
avfoundation device :0, unless you pass another format and device.
02
A local recording, paced with ffmpeg -re so the session stays realtime.
03
A live stream URL. The URL is used by ffmpeg and is not written to the log.
Left on disk
SDK
Open it, wait until the socket is ready, then pipe audio. Listen while people are still talking. End it when the conversation is over.
import Resum, { AudioListener } from "resum";
const resum = new Resum({
key: process.env.STT_KEY,
platform: "assembly",
openAiKey: process.env.OPENAI_API_KEY,
audioChunkSeconds: 10,
});
const session = await resum.sessions.create({
participants: [
{ name: "Alice", device: "web" },
{ name: "Bob", device: "mobile" },
],
agents: ["notes", "summary"],
realtime: true,
audioSource: "microphone: avfoundation :0",
});
await session.ready();
const listener = new AudioListener({
source: {
kind: "microphone",
inputFormat: "avfoundation",
device: ":0",
},
});
listener.connect().pipe(session.input());Enterprise
Resum is not sold self-serve. There is no public price. An agreement with Viroke Technologies Inc sets the license and the price.
williams@viroke.com