在最近的 AI 實驗中,我利用 MediaPipe、OpenCV 以及 Local LLM (Ollama) 開發了一個有趣的互動系統。當使用者比出「V 字 ✌️」或「韓式手指心心」時,畫面會噴發出心心💖,且能透過廣東話語音改變顏色。

核心技術棧 (Tech Stack)
- 視覺處理:OpenCV
- 手勢偵測:MediaPipe (Hands 解決方案)
- 語言模型:Ollama (Llama 3 模型)
- 語音辨識:SpeechRecognition (Google zh-HK 引擎)
- 圖像渲染:Pillow (處理 Unicode Emoji 與字型)
🛠️ 技術突破點:從「能跑」到「好玩」
1. 韓式手指心心 (Finger Heart) 的數學邏輯
不同於簡單的 V 字手勢,手指心心需要偵測大拇指與食指尖端的距離。
- 邏輯實現:我撰寫了
get_distance函式計算歐幾里得距離,並結合其他手指的收起狀態(關節座標對比)來精準判斷。
2. 整合 Local LLM 的語音控制
為了讓互動更自然,我引入了 Ollama。
- 跨越語意障礙:廣東話指令如「轉粉紅色」對傳統關鍵字匹配來說較具挑戰性。
- Prompt Engineering:我透過設計精準的 Prompt,要求 Ollama 扮演「語意分類器」,將語音轉化的文字分類為單一顏色標籤(BLUE, PINK, RED),大幅提升了指令執行的準確度。
📈 優化與迭代 (Optimization)
- 畫面密度控制:為避免愛心瀑布遮擋人臉,我加入了
frame_count % 3 == 0的頻率控制與隨機噴發邏輯。 - 解決偵測閃爍:針對手指心心不穩定的特性,我設計了
heart_timer緩衝機制,即使偵測短暫中斷,視覺特效依然連貫。
💡 總結
這個專案證明了 Edge AI(邊緣運算) 結合 LLM 能創造出極具互動性的使用者體驗。它不只是代碼的堆砌,更多的是對視覺算法邊界條件的處理與使用者語意理解的整合。
🔮 下一步計劃:從互動特效到「心心射擊」Mini Game 💘
目前的專案已經實現了穩定的人機互動與語義控制,但我並不打算止步於此。下一步,我計劃將這個系統「遊戲化 (Gamification)」,提升玩味。🎯🏹💘