AI in a Box

@ai-in-a-box

Homemade version of "AI in a Box"

Public team

Joined on Dec 5, 2023

  • 使用OpenVINO加速語音辨識 前言 本篇為「Homemade version of “AI in a Box”」專案的系列文章,關於該專案的整體描述請參閱這篇內容。本篇為「使用whisper.cpp進行語音辨識」文章的延續,將會使用whisper.cpp專案的「OpenVINO support」機制來加速語音辨識程序。用以改善前一篇文章所實作之「語音對談」功能運作起來並不是很順暢的問題。 先前準備 基本的環境都跟「使用whisper.cpp進行語音辨識」文章相同。由於接下來要重新進行whisper.cpp專案的組態與建構,因此請先刪除whisper.cpp目錄下的build子目錄。接下來下載OpenVINO toolkit檔案,解壓縮後放在專案目錄以便後續使用。 下載與轉換模型 開啟「Anaconda prompt」,在該命令提示視窗執行以下命令建立虛擬環境:(base) > conda create --name openvino_conv_env python=3.10完成後切換至whisper.cpp目錄下的models子目錄:(base) > cd whisper.cpp\models進入剛剛建立好的虛擬環境:(base) > conda activate openvino_conv_env接著安裝必要套件:(openvino_conv_env) > pip install -r openvino-conversion-requirements.txt完成後就可以進行模型下載與轉換,在此使用Base模型:(openvino_conv_env) > python convert-whisper-to-openvino.py --model base
     Like  Bookmark
  • 土炮版「AI in a Box」 (Homemade version of "AI in a Box") 「AI in a Box」是什麼? 以下摘錄自「Edge AI Taiwan邊緣智能交流區」,圖片來自AI in a Box: TinyML大老Pete Warden開的公司「Useful Sensors」這次竟看上離線式LLM應用,開啟網路募資專案,名為「AI in Box」,其主板使用RockChip 3588S (SoC with NPU, 8 GB DRAM),預計可以用在即時字幕機、語音對談、即時翻譯及語音鍵盤等功能。Imgur 什麼是土炮版(Homemade version)的「AI in a Box」? 「AI in a Box」的軟體在人工智慧方面使用到的是Whisper與Llama2這兩個開放原始碼模型,因此只要考慮在本地端(local)/邊緣端(edge)運作這兩個模型(Whisper與Llama2)應該就可以達到與之相同的功能。因此找一台中古電腦(Intel Core i5微型主機)與周邊設備來嘗試著達成這件事,並且仿照「AI in a Box」的原型來做規劃:Imgur目前架設起來的情況如下:Imgur 兩者之間的規格比較:
     Like  Bookmark
  • 筆記索引 依照筆記發佈順序排列: 土炮版「AI in a Box」 (Homemade version of “AI in a Box”) (發表於2023年12月5日) 使用llama.cpp來執行Taiwan-LLM大語言模型 (發表於2023年12月7日) 以原生方式建置llama.cpp for Windows (發表於2023年12月8日) 使用whisper.cpp進行語音辨識 (發表於2023年12月15日) 實作「AI in a Box」之語音對談功能 (發表於2023年12月21日) 使用OpenVINO加速語音辨識 (發表於2023年12月22日)
     Like  Bookmark
  • 實作「AI in a Box」之語音對談功能 前言 本篇為「Homemade version of “AI in a Box”」專案的系列文章,關於該專案的整體描述請參閱這篇內容。 前面已經完成大語言模型(llama.cpp)與自動語音辨識(whisper.cpp)實作。接下來整合這兩部份以完成「語音對談」功能。 程式實作 直接使用範例程式碼並做相對應的修改,用到的是llama.cpp專案之main範例與whisper.cpp之stream範例。兩個範例程式會使用Windows IPC的Named Pipe方式進行通訊。其中whisper.cpp之stream範例程式將做為用戶端(Client),負責將語音轉換為字串後送至llama.cpp專案之main範例程式。而llama.cpp專案之main範例程式將做為伺服器端(Server),接收whisper.cpp之stream範例程式所發送過來的字串後交由Llama 2模型進行回應。依前述進行修改後的程式碼為stream.cpp與main.cpp,下載這兩個程式碼後覆蓋至對應的位置;接著重新建置兩個專案,建置程序請參考先前文章之說明。 範例執行 修改完程式碼並完成專案建置後;首先執行llama.cpp專案之main範例程式,之後再執行whisper.cpp之stream範例程式。範例程式的執行程序請參考先前文章之說明,執行結果如下所示:231221
     Like  Bookmark
  • 使用whisper.cpp進行語音辨識 前言 本篇為「Homemade version of “AI in a Box”」專案的系列文章,關於該專案的整體描述請參閱這篇內容。接著實作「AI in a Box」中的自動語音辨識(ASR)部分。在這邊使用whisper.cpp專案以及其附帶之已轉換的Whisper模型。因此無需進行模型轉換程序,只要將whisper.cpp程序建置起來即可進行相關應用。 準備工作 就如專案整體描述文章中所說明的會使用whisper.cpp專案,所以從GitHub下載whisper.cpp程式碼檔案並解壓縮。接著參照「以原生方式建置llama.cpp for Windows」,將CMake與Visual Studio Community安裝起來。由於whisper.cpp實際使用需要使用到對外介面(麥克風),因此需先建置SDL2;詳細請參考GitHub上的這篇討論,SDL2的預先編譯的版本可由此處下載。最後下載所需的模型。開啟「Windows PowerShell」,然後切換至whisper.cpp目錄之下一層models子目錄;執行download-ggml-model.cmd批次腳本以取得模型,用以下命令下載多國語言Base模型:PS > download-ggml-model.cmd base 建置whisper.cpp 開啟「x64 Native Tools Command Prompt for VS 2022」,並用以下命令切換至whisper.cpp目錄: > cd whisper.cpp
     Like  Bookmark
  • 以原生方式建置llama.cpp for Windows 前言 本篇為「Homemade version of "AI in a Box"」專案的系列文章,關於該專案的整體描述請參閱這篇內容。前面一篇文章「使用llama.cpp來執行Taiwan-LLM大語言模型」撰寫當下因不熟悉CMake的使用方式而選擇了使用GCC與Makefile方式來建置llama.cpp專案。但在Windows平台上更為原生的建置方式應是使用CMake,並且搭配微軟的C/C++編譯器(MSVC,附帶於Visual Studio內);但llama.cpp專案的README.md對於這方面的說明語焉不詳,自我摸索後完成驗證並將過程整理在此。由於是延續前一篇文章「使用llama.cpp來執行Taiwan-LLM大語言模型」,因此接下來不會完整的講述所有過程。只會將建置或執行的差異項目條列說明。 準備工作 與前一篇文章不同處是不再使用w64devkit編譯環境。首先安裝CMake(下載Windows x64 Installer後進行安裝,安裝過程中選擇"Add CMake to the system path for the current user"),接著安裝Visual Studio Community。並在Visual Studio Community工作負載中選擇安裝「使用C++的桌面開發」:231208_3完成安裝程序後,執行開始功能表的「x64 Native Tools Command Prompt for VS 2022」進入命令提示字元;做為專案建置與執行之用。 建置llama.cpp 參照官方說明進行建置,這些動作都是在「x64 Native Tools Command Prompt for VS 2022」視窗中進行:> mkdir build> cd build> cmake ..> cmake --build . --config Release
     Like 1 Bookmark
  • 使用llama.cpp來執行Taiwan-LLM大語言模型 前言 本篇為「Homemade version of "AI in a Box"」專案的系列文章,關於該專案的整體描述請參閱這篇內容。接下來會先實作「AI in a Box」中的大語言模型部分。大語言模型(LLM)是很熱門的技術因此資訊較為完整(如鐵人賽內容LLM Note Day 16 - ggml & llama.cpp),所以也就將其做為專案實作的起手式。在這邊所使用的是Taiwan-LLM模型是專屬於台灣的大語言模型,讓我們這些在台灣的使用者在與人工智慧對話時能夠得到更符合在地文化的回應及語言使用習慣。該模型發佈的相關報導請參閱:專屬台灣!優必達攜手台大打造「Taiwan LLM」,為何我們需要本土化的AI?。並且為了要在邊緣裝置上運行,因此選用了7B模型(Taiwan-LLM-7B-v2.1-chat)。 準備工作 就如專案整體描述文章中所說明的會使用llama.cpp專案,因此接下來從GitHub下載llama.cpp程式碼,而在Windows上我是用Makefile方式來進行編譯(因為我不熟CMake),因此還需要從GitHub下載w64devkit編譯環境。把從GitHub下載下來的Zip檔案解壓縮後放在一個專案目錄。另外還需要使用Python程式碼來做模型下載與轉換程序,因此安裝了Anaconda軟體。由於在Windows上編譯與使用會使用到各種不同的環境。接下來開啟了三個命令列視窗,功能分別於下: 第一個「命令提示字元」視窗,之後切換至w64devkit目錄並執行w64devkit.exe進入類Unix環境(Bash)。之後敘述中的命令提示會以「$」表示。 第二個「命令提示字元」視窗,為Windiows命令列環境用以執行應用程序(因在w64devkit環境下執行應用程序會有不少問題)。之後敘述中的命令提示會以「>」表示。 「Anaconda prompt」視窗為Python環境。之後敘述中的命令提示會以「(XXX) >」表示,其中的XXX為目前Anaconda對應環境之名稱。
     Like 3 Bookmark