Spaces:
Sleeping
Sleeping
var factory = require('../bindings/javascript/whisper.js') | |
factory().then(function(whisper) { | |
var fs = require('fs'); | |
// to avoid reading WAV files and depending on some 3rd-party package, we read | |
// 32-bit float PCM directly. to genereate it: | |
// | |
// $ ffmpeg -i samples/jfk.wav -f f32le -acodec pcm_f32le samples/jfk.pcmf32 | |
// | |
let fname_wav = "../samples/jfk.pcmf32"; | |
let fname_model = "../models/ggml-base.en.bin"; | |
// init whisper | |
{ | |
// read binary data from file | |
var model_data = fs.readFileSync(fname_model); | |
if (model_data == null) { | |
console.log("whisper: failed to read model file"); | |
process.exit(1); | |
} | |
// write binary data to WASM memory | |
whisper.FS_createDataFile("/", "whisper.bin", model_data, true, true); | |
// init the model | |
var ret = whisper.init("whisper.bin"); | |
if (ret == false) { | |
console.log('whisper: failed to init'); | |
process.exit(1); | |
} | |
} | |
// transcribe wav file | |
{ | |
// read raw binary data | |
var pcm_data = fs.readFileSync(fname_wav); | |
if (pcm_data == null) { | |
console.log("whisper: failed to read wav file"); | |
process.exit(1); | |
} | |
// convert to 32-bit float array | |
var pcm = new Float32Array(pcm_data.buffer); | |
// transcribe | |
var ret = whisper.full_default(pcm, "en", false); | |
if (ret != 0) { | |
console.log("whisper: failed to transcribe"); | |
process.exit(1); | |
} | |
} | |
// free memory | |
{ | |
whisper.free(); | |
} | |
}); | |