點燈坊

失くすものさえない今が強くなるチャンスよ

編譯 whisper.wasm

Sam Xiao's Avatar 2023-12-11

Whisper 可將語音直接輸出成文字,而 whisper.wasm 為其 Web 版本,可直接跑在 Browser 上,其編譯基於 Python、Emscripten 與 CMake,需裝好這三個才能 make 編譯。

Version

2020 13” MacBook Pro (Intel i5)
macOS Sonoma 14.1.2
Anaconda Navigator 2.5.1
Python 3.9
Emscripten 3.1.5
CMake 3.28.0

whisper.wasm

https://github.com/ggerganov/whisper.cpp/tree/master/examples/whisper.wasm

whisper001

  • Whisper 的 WebAssembly 版本

whisper002

  • 提供 index-tmp.html 整合範例

Anaconda

Python 版本管理工具,由於 whisper.wasm 目前只能在 Python 3.9 編譯,需使用 Anaconda 準備 Python 3.9 環境。

https://www.anaconda.com/download

whisper003

  • 下載 Graphical Installer 版本安裝 Anaconda (為 pkg)

Anaconda Navigator

whisper004

  • Create 建立執行環境
  • Name:建立環境名稱 (不能使用 .,只能以 - 代替)
  • Packages Python:指定 Python 版本為 3.9.18

whisper005

  • 選擇 環境名稱,右鍵 Open Terminal 開啟 Python 3.9.18 環境

Emscripten

$ brew install emscripten
  • 在 Python 3.9 下使用 Homebrew 安裝 Emscripten

CMake

$ brew install cmake
  • 在 Python 3.9 下使用 Homebrew 安裝 CMake

編譯 whisper.wasm

$ git clone https://github.com/ggerganov/whisper.cpp
$ cd whisper.cpp
  • 使用 git 下載 whisper.cpp

CMakeList.txt

whisper006

Line 9

set(CMAKE_THREAD_LIBS_INIT "-Ipthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
  • 開啟在 whisper.cpp 下的 CMakeList.txt
  • 在第 9 行加入以上 set

make

$ mkdir build-em && cd build-em
$ emcmake cmake ..
$ make -j
  • 建立 build-em 目錄
  • 並在 build-em 目錄下執行 emcmake cmake .. 產生 makefile
  • 執行 make -j 編譯 whisper.wasm