Overview
This is an implementation of whisper from scratch in C++. This is a proof-of-concept. Further modifications, imporvements are coming.
Feedbacks are wellcomed in the corresponding github repository, precompAId.
Binary contains:
- exe for testing the app quickly
- header and dll for building custom solutions
- main.cpp as an example, how to use the header (the exe compiled from this)
- weights.xdf (required to load into the graph, no other input required)
- audios folder, containing examples to try the application
- convert.py for creating the right input for the application from and arbitrary audio file
Versions:
- for windows there are 4 compiled versions
- all versions corresponds to the level of available instruction sets
- avx512: requires avx512F, avx512BW, avx512VL and FMA
- avx2: requires avx2 and FMA
- sse: requires sse4.1
- default: requires no intrinsic related cpu features
Quick start
Example for the usage of whisper.exe (dll should be discoverable by the exe):
whisper.exe weights.xgdf audios\voice_example1.pb
Example compilation (with clang from the root):
clang++ main.cpp win64\whisper.lib -o whisper.exe
Example for converting:
python convert.py --ipath audios\voice_example_orig1.wav --opath voice_example.pb
Implementation info
Tested on:
- windows 11 and ubuntu20
- intel i7 11th gen
- clang 16.06 as compiler
Current properties:
- fp32
- this tool can help enlisting the available cpu features for selecting the right library version
Further Notes
Improved versions will arrive regularly. Feedbacks are wellcomed. Especially the following:
- features to be add (input format, expected output format etc.)
- devices (plan to extend for mobiles, IPUs etc.)
- models (what other models would be great to accelerate)