mirror of
https://github.com/ggerganov/whisper.cpp.git
synced 2025-01-02 02:36:42 +00:00
abce28ea99
This way, we can share the same models across different WASM examples and not have to download them for each page
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# whisper.wasm
|
|
|
|
Inference of [OpenAI's Whisper ASR model](https://github.com/openai/whisper) inside the browser
|
|
|
|
This example uses a WebAssembly (WASM) port of the [whisper.cpp](https://github.com/ggerganov/whisper.cpp)
|
|
implementation of the transformer to run the inference inside a web page. The audio data does not leave your computer -
|
|
it is processed locally on your machine. The performance is not great but you should be able to achieve x2 or x3
|
|
real-time for the `tiny` and `base` models on a modern CPU and browser (i.e. transcribe a 60 seconds audio in about
|
|
~20-30 seconds).
|
|
|
|
This WASM port utilizes [WASM SIMD 128-bit intrinsics](https://emcc.zcopy.site/docs/porting/simd/) so you have to make
|
|
sure that [your browser supports them](https://webassembly.org/roadmap/).
|
|
|
|
The example is capable of running all models up to size `small` inclusive. Beyond that, the memory requirements and
|
|
performance are unsatisfactory. The implementation currently support only the `Greedy` sampling strategy. Both
|
|
transcription and translation are supported.
|
|
|
|
Since the model data is quite big (74MB for the `tiny` model) you need to manually load the model into the web-page.
|
|
|
|
The example supports both loading audio from a file and recording audio from the microphone. The maximum length of the
|
|
audio is limited to 120 seconds.
|
|
|
|
## Live demo
|
|
|
|
Link: https://whisper.ggerganov.com
|
|
|
|
![image](https://user-images.githubusercontent.com/1991296/197348344-1a7fead8-3dae-4922-8b06-df223a206603.png)
|
|
|
|
## Build instructions
|
|
|
|
```bash (v3.1.2)
|
|
# build using Emscripten
|
|
git clone https://github.com/ggerganov/whisper.cpp
|
|
cd whisper.cpp
|
|
mkdir build-em && cd build-em
|
|
emcmake cmake ..
|
|
make -j
|
|
|
|
# copy the produced page to your HTTP path
|
|
cp bin/whisper.wasm/index.html /path/to/html/
|
|
cp bin/whisper.wasm/whisper.js /path/to/html/
|
|
cp bin/libwhisper.worker.js /path/to/html/
|
|
```
|