Node.js bindings for OpenAI's Whisper.
- Output transcripts to JSON (also .txt .srt .vtt)
- Optimized for CPU (Including Apple Silicon ARM)
- Timestamp precision to single word
- Add dependency to project
npm install whisper-node
- Download whisper model of choice
npx whisper-node download
import whisper from "whisper-node";
const transcript = await whisper("example/sample.wav");
console.log(transcript); // output: [ {start,end,speech} ]
[
{
start: "00:00:14.310", // time stamp begin
end: "00:00:16.480", // time stamp end
speech: "howdy" // transcription
}
];
import whisper from 'whisper-node';
const filePath = "example/sample.wav", // required
const options = {
modelName: "tiny.en", // default
modelPath: "/custom/path/to/model.bin", // use model in a custom directory
whisperOptions: {
gen_file_txt: false, // outputs .txt file
gen_file_subtitle: false, // outputs .srt file
gen_file_vtt: false, // outputs .vtt file
timestamp_size: 10, // amount of dialogue per timestamp pair
word_timestamps: true // timestamp for every word
}
}
const transcript = await whisper(filePath, options);
- Support projects not using Typescript
- Allow custom directory for storing models
- Config files as alternative to model download cli
- Remove path, shelljs and prompt-sync package for browser, react-native expo, and webassembly compatibility
- fluent-ffmpeg to support more audio formats
- Pyanote diarization for speaker names
- Implement WhisperX as optional alternative model for diarization and higher precision timestamps (as alternative to C++ version)
npm run dev
- runs nodemon and tsc on '/src/test.ts'
npm run build
- runs tsc, outputs to '/dist' and gives sh permission to 'dist/download.js'