@onebudd/obdt
v1.0.2
Published
OneBudd Dataset Tool — upload audio, get back emotion-labeled WAV chunks as a ZIP dataset
Maintainers
Readme
obdt — OneBudd Dataset Tool
CLI tool to upload audio files to the OneBudd Emotion Labeler API and get back a labeled dataset as a ZIP file.
Install
npm install -g @onebudd/obdtRequires Node.js 18+
First-time Setup
Run any command for the first time and it will prompt you for your API key and server URL — these are saved to ~/.obdt/config.json and reused automatically.
obdt "audio.mp3"
🔧 First-time setup — configure your OneBudd connection:
🔑 OneBudd API key: <your-api-key>
🌐 Server URL (e.g. https://emotion.onebudd.com): https://emotion.onebudd.com
✔ Config savedCommands
Process an audio file (main command)
obdt "path/to/audio.mp3"Uploads the file, waits for processing, prints an emotion summary, and downloads the labeled dataset as a ZIP — all in one command.
By default the audio is treated as English. For other supported languages, pass --language <code>:
# English (default — no flag needed)
obdt "audio.mp3"
# Marathi
obdt "audio.mp3" --language mrThe language code controls which Deepgram transcription model is used and how much weight the transcript + LLM ranking gets vs. the acoustic model when picking the final emotion label — non-English audio leans more heavily on transcript/LLM signal since the acoustic model was trained on English speech.
◆ OneBudd Emotion Labeler
─────────────────────────────────────
File: interview.mp3 (14.2 MB)
URL: https://emotion.onebudd.com
Uploading ████████████████████████████████████████ 100% 14.2 MB
✔ Uploaded → Job a3f91b2c… (482.3s of audio)
Processing ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ✔ 23s elapsed
✔ Done
Emotion Summary
─────────────────────────────────────
neutral ████████████████ 72% (38 chunks)
happy ████ 18% (9 chunks)
sad ██ 10% (5 chunks)
✔ All done!
Saved to: /Users/you/emotion_results_a3f91b2c.zipWhat's inside the ZIP:
emotion_results_a3f91b2c.zip
├── neutral/
│ ├── chunk_001.wav
│ └── chunk_002.wav
├── happy/
│ └── chunk_001.wav
├── emotion_log.csv ← timestamps, transcripts, labels per chunk
├── emotion_curve.png ← emotion timeline chart
└── metadata.csv ← file-level summaryOptions
# Save ZIP to a specific location
obdt "audio.mp3" --out "/path/to/output.zip"
# Disable transcription (ON by default)
obdt "audio.mp3" --no-transcribe
# Disable LLM semantic analysis (ON by default)
obdt "audio.mp3" --no-llm
# Use a different server
obdt "audio.mp3" --url https://your-server.com
# Override API key for this run only
obdt "audio.mp3" --key <your-api-key>
# Skip downloading the ZIP (just process)
obdt "audio.mp3" --no-download
# Audio language — defaults to "en" if omitted. Also works with `obdt submit`.
obdt "audio.mp3" --language mrSupported --language codes:
| Code | Language |
|------|----------|
| en | English (default) |
| mr | Marathi |
Check your quota
Each API key has a 40-minute lifetime audio quota.
obdt quota ◆ OneBudd API Quota
─────────────────────────────────────
████████░░░░░░░░░░░░░░░░░░░░░░ 30%
Used: 8.0 min / 40 min total
Remaining: 32.0 minCheck server health
obdt healthSubmit without waiting (get job ID only)
obdt submit "audio.mp3"Returns a job_id immediately. Use it later:
obdt status <job-id>
obdt download <job-id>
obdt download <job-id> --out "/path/to/output.zip"Limits
- Max 30 minutes of audio per file
- Max 40 minutes of audio total per API key (lifetime)
- Supported formats: MP3, WAV, M4A, FLAC, OGG
Config file
Stored at ~/.obdt/config.json. You can edit it directly:
{
"apiKey": "your-api-key-here",
"serverUrl": "https://emotion.onebudd.com"
}License
MIT © OneBudd
