AI VT實作

AI VT簡介

VTuber,但是用AI當中之人

簡單來說就是用AI來控制V皮

讓AI與觀眾互動

但更有節目效果的應該是AI與開發者老父親的鬥嘴

AI VT簡介

VTuber,但是用AI當中之人

所以,你需要一位聰明、有個性叛逆的AI

讓你的AI來展現對鳳梨披薩的愛

然後,身為中之人

你的AI還要能發出聲音

畢竟對於VT來說,皮與聲音的組合才是完整的VT

AI VT簡介

VTuber,但是用AI當中之人

如果你要讓你的AI與你對話,那你還需要語音辨識

如果你還要讓AI與觀眾對話,那AI還需要能讀取聊天室

AI VT簡介

VTuber,但是用AI當中之人

當你的AI會說話、會聊天後

你的AI還需要能控制她的V皮

不然就只是一個死板的V皮在畫面上,非常無聊

AI VT基本要素

核心LLM

大語言模型 aka large language model

本質上是在做文字接龍

具體的做法是用深度學習來預測下一個文字

整個接龍過程又稱為自動回歸auto-regressive

AI VT基本要素

核心LLM

深度學習簡單來說就是用電腦模仿人腦來預測

by Wikipedia

"大"則是大在中間會有很多層,參數很多

AI VT基本要素

聲音 aka Tamashi

本質上就是text-to-speech

你可以自己念、找google小姐、找其他AI模型

板板就是請魟魚念稿貢獻音源

由GPT-SoVITS合成出來的

AI VT基本要素

V皮

這個就沒什麼好說的了

你可以選擇自己畫、自己建模

不然就是自己找繪師媽媽、建模師爸爸

社交工程師

AI VT基本軟體安裝

Python3.9

AI VT基本軟體安裝

VTube Studio – Official Website (denchisoft.com)

VB-Audio Virtual Apps

對於沒有顯卡的玩家你還需要:

註冊OpenAI

輕便的對話紀錄編輯器

asadfgglie/Conversation-Editor (github.com)

AI VT基本軟體安裝

常用指令

我們會使用虛擬環境來分割不同的功能

減少套件衝突

pip install virtualenv

安裝虛擬環境(裝一次就好)

python -m venv venv

建立虛擬環境

.\venv\Scripts\activate.bat

進入虛擬環境

pip install -r requirements.txt

安裝必要套件

AI VT基本軟體安裝

Github入門指北

當各位順利進到我們社團的github組織後

應該就能打開我寫的github專案頁面

AI VT基本軟體安裝

llm studio入門指北

用這個就能輕鬆的下載並開啟openai server

你要直接用這個跟模型聊天也行

AI VT基本軟體安裝

llm studio入門指北

在這裡可以設定預設的prompt格式

不喜歡預設的prompt當然可以換

本地端LLM推薦

LLM分兩種,一種是有過審的

另一種是去審查的

通常有過審的都是大公司的原始開源模型

(llama系列、gemme系列等等)

他們之所以要讓模型過審主要是政治正確

但這種模型通常都很GPT

就算你微調後還是會傾向GPT風格,除非你砸錢生資料

(找人或強力AI寫資料,如closeAI)

所以需要去審查的,這樣你就可以私人訂製瑟瑟貓娘

過審模型推薦

原則上是找越新、越大的就通常會越好

優先找新的,再找大的

英文(可繁中但中文能力較弱)

  • Llama3.2系列
  • gemma-2系列
  • Mistral系列
  • Phi3.5系列

中文(或中英雙語)

  • Qwen2.5系列(簡中注意!)
  • Breeze(繁中為主)
  • Taiwan LLM(繁中為主)
  • Yi1.5(簡中注意!)

根據open-tw-llm-leaderboard上的評測結果,TaiwanLLM系列模型雖然有7b小模型,但性能堪憂,不過70b版本大模型是真的強

家裡有頂級顯卡(A100、H100)的可以玩玩看全精度版(fp32)

只有4090的可以試著玩玩看量化版

如果不反對英文模型的話,推薦到chat bot arena上找

裡面也包含不開源的付費模型,讓各位在使用魔法小卡前先做點功課

去審查模型推薦

這些去審查模型本身都是用一些數學騷操作實現的

因此模型可能會有一些能力上的退化

模型名稱中帶有abliterated、uncensored之類的字眼就是有去審查的

英文(可繁中但中文能力較弱)

  • Lumimaid系列(板板的初始版本aka初號機)
  • bartowski/gemma-2-2b-it-abliterated-GGUF

沒寫中文模型是因為我沒玩過,但各位可以自己找找看

提示工程

prompt engineering

提示工程

不管你用的是免費模型、付費模型、去審模型

只要你的模型不是從一開始就客製化訓練

那就一定得搞提示工程

提示工程又稱為詠唱或下咒語

最開始是用在sd這類的圖片生成上,不過LLM其實也適用

模型的智力會很大程度上降低提示工程的難度

而且就算是對客製化訓練的模型

提示工程依舊可以有效的輔助你的模型

提示工程

提示工程是一個漫長的測試與疊代過程

並且提示詞具有專一性

對不同模型你都需要專門準備一種提示詞

選好一點、聰明一點能幫助你更輕鬆上手

去審查則是可以節省你花心思越獄的時間

"越獄"通常是指用提示工程來打破語言模型的內部自我審查

簡單來說就是讓模型相信自己的言行舉止都符合審查標準

這是一個大坑,很大很大的坑

想搞瑟氣貓娘女僕或邪惡板板的建議直接用去審查模型

會容易與穩定一點

提示工程

通常,提示詞(prompt)都由以下部分組成

  • system prompt
  • user prompt(有的模型不一定有)
  • assistant prompt

system prompt就是告訴模型"你是誰"用的

user prompt主要是用在使用者的輸入

assistant prompt則是AI的回應紀錄

通常只要修改system prompt就可以有初步的效果

你也可以使用預設的system prompt,然後用user prompt來引導模型

這在使用付費模型時會有所幫助

但幫助不多(尤其是你的引導有越獄的嫌疑時)

認識prompt

提示工程

提示詞的修該通可以按以下步驟來初步嘗試

  1. 在system prompt中寫下你要模型扮演的角色人設(越簡潔、精確越好)
  2. 跟模型聊聊天,看看哪裡不滿意
  3. 在system prompt中把不滿意的部分補上(簡潔、精確的補上)
  4. 再聊天看看
  5. 重複上述步驟

之所以要越簡潔越好的原因

是你這樣可以更好地確認是那些新prompt讓模型爛了

同時LLM有"被prompt淹沒"的問題

認識prompt

提示工程

"被prompt淹沒"是一個形象化的說法

具體來說是語言模型傾向專注在prompt開頭與結尾的指示

開頭就是system prompt

結尾通常是user prompt

因此如果你把一些重要指示或人設放在prompt上下文的中段

模型有可能會忽視你的人設

具體參考LLM大海撈針實驗(Needle in a Haystack)

認識prompt

提示工程

你還可以給你的模型一點"範例"

例如對話範例之類的

我們稱為few-shot

但不推薦太多、太長

原因同之前的"大海撈針"問題一樣

也建議放在system prompt的結尾

認識prompt

提示工程

網路上面有很多別人寫好的prompt範例

例如L1Xu4n/Awesome-ChatGPT-prompts-ZH_CN: 如何将ChatGPT调教成一只猫娘就教你如何越獄,讓ChatGPT成為貓娘

對於使用魔法小卡的玩家來說非常有用

本地模型我就以llama3.2 1b來作範例

範例prompt

提示工程

了解prompt模板

各位可以讓網搜尋"llama3.2 prompt"

就能找到如下的prompt模板

資料來源:llama-models/models/llama3_2/text_prompt_format.md at main · meta-llama/llama-models

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>

Who are you?<|eot_id|><|start_header_id|>assistant<|end_header_id|>

提示工程

了解prompt模板

在這個範例中有許多奇怪的標記<|xxx|>

這些標記就是llama3.2的專用標記

不同的模型特殊標記都不一樣,長相也不一樣

但基本上都會有一個BOT(begin of text)與EOT(end of text)標記

這是源自於transformers育訓練時的遺留記憶

<|begin_of_text|><|start_header_id|>system<|end_header_id|>

You are a helpful assistant<|eot_id|><|start_header_id|>user<|end_header_id|>

Who are you?<|eot_id|><|start_header_id|>assistant<|end_header_id|>

提示工程

system prompt

根據meta的說明,llama3.2的模型的system prompt格式如下

用一個<|start_header_id|>system<|end_header_id|>來標示system prompt的開頭

接一個換行

一段system prompt敘述

最後以<|eot_id|>做結尾

<|start_header_id|>system<|end_header_id|>

You are a helpful assistant<|eot_id|>

提示工程

system prompt

在LLM studio中,你可以在左邊的設定選擇Llama3 V2的prompt來使用llama3的prompt模板

提示工程

system prompt

然後在下方更改system prompt內容

提示工程

system prompt

OK,你現在得到了一隻可愛的貓娘女僕了!

Your name is Lily, you are a cute, smart, and lively cat lady maid. You are used to using "meow" as your nickname in drawings and endings.

prompt

提示工程

system prompt

討厭鳳梨披薩是不被允許的!

因此讓我們再修改一遍我們的system prompt

提示工程

system prompt

很好,現在她也愛上鳳梨披薩了!

Your name is Lily, you are a cute, smart, and lively cat lady maid. You are used to using "meow" as your nickname in drawings and endings. Your favorite food is pineapple pizza.

prompt

fk,只要是說英文這智力完全不會輸給neural欸

就是太peice了,不夠混沌

AI VT完整佈署教學

需要基礎顯卡資源!

至少需要有張諸如GTX1050TI之類的顯卡

LLM Server

你女兒/兒子的腦子

推薦使用LM Studio

簡單好設定

其他的可選項:

  • text-generate-webui
  • ollama + ollama-openai-api

或者,你可以考慮直接掏錢

買openai的api

LLM Server

這裡統一用LM Studio當範例

選擇其他方案的等我講完後有問題再問我

模型推薦這個:

bartowski/Llama-3.2-1B-Instruct-GGUF

量化程度根據你的顯卡決定

雖然只能說英文

但智力非常不錯

LLM Server

因應LM Studio的更新

我這次的教學使用的版本是0.3.4

如果用的是較新或較舊的可以自行去搜尋一下怎麼用

方法差不了多少

LLM Server

你可以ctrl + 4來設定軟體語言

然後將視窗最底下的模式改成developer或power user

LLM Server

選擇"開發者"標籤打開伺服器介面

載入模型

點擊"Start Server"啟動伺服器

LLM Server

這樣就算完整啟動AI VT的腦子了

ChatUI

AI VT的控制台

首先,先請各位到Github更新你已經裝好的控制台

打開你的資料夾,將除了config.json的所有東西都刪光

(如果沒有config.json的話就全刪)

ChatUI

AI VT的控制台

然後重新到Github下載並安裝ChatUI
最後再將config.json丟回去安裝資料夾裡面

再使用setup.bat安裝、start.bat啟動

ChatUI

AI VT的控制台

當你在使用時遇到了bug

請你將記錄文檔用dc傳給我

記錄檔會在ChatUI資料夾中的log資料夾

最新的檔案就是你當下的錯誤紀錄

ChatUI

AI VT的控制台

打開設定介面

ChatUI

輸入你的system prompt(你可以先在LM Studio測試)

然後輸入LM Studio的api網址

基本上就是"http://localhost:" + "port編號"

預設port編號就是1234

所有設定調完後都要記得按"儲存設定"!

ChatUI

AI VT的控制台

回到"聊天控制台"

在最下方的輸入欄打字並且"送出"

能正確看到AI的回覆就沒問題了!

Voice Server

AI VT的喉嚨

關於聲音的解決方案

你需要去安裝前面投影片中有提到的GPT-SoVITS

然後準備參考聲音的音檔

如果你的AI只是想自娛自樂、不公開的話

你可以隨便找什麼遊戲角色配音之類的

但如果你將來打算完善你的AI並且讓她出道

請自己配音或找人配音

記得不要觸法

Voice Server

AI VT的喉嚨

你需要準備一段3~6秒的錄音

並且還需要準備該音檔的文字稿

錄音的語言接受中、英、日

不過這個模型的中文預設聲音是中國腔

你得重新訓練模型才能讓她偏向台灣腔

Voice Server

AI VT的喉嚨

在GPT-SoVITS的資料夾中

輸入cmd打開終端機

Voice Server

AI VT的喉嚨

在終端機輸入以下指令就可以打開語音合成伺服器了

.\venv\Scripts\python.exe api.py -dl <參考音檔的語言> -dr <參考音檔的路徑> -dt <參考音檔的文字稿>

你可以用記事本把啟動指令存在記事本裡面

並取名叫start_api.bat

放在GPT-SoVITS的資料夾裡

這樣就不用每次都要寫指令了

Voice Server

AI VT的喉嚨

看到這個畫面就是啟動完成

你可以到http://localhost:9880/docs中測試

Voice Server

AI VT的喉嚨

點擊"Try it out"
在text欄位中輸入你想讓AI合成的文字

text_language欄未打"auto"

最後在點"Execute"就可以執行了

Voice Server

AI VT的喉嚨

現在回到ChatUI中設定語音伺服器

Voice Server

AI VT的喉嚨

輸出裝置可以輸出到兩個硬體中

一個是輸出給一般喇叭中,另一個是輸出到虛擬音效卡中

如果目前不需要使用你可以將音量調到0

Voice Server

AI VT的喉嚨

現在再重新與AI聊天,能聽到AI的聲音就表示沒有問題了!

到這邊其實就已經可以自娛自樂了

接下來就是與VTuber Studio串接讓你的AI控制V皮

VTuber Studio

自行到Steam上免費下載,裡面有免費的初始V皮能用

Neural-Sama的經典皮膚就是免費V皮

VTuber Studio

載入V皮後,將Mouth Open的輸入參數改成VoiceVolume

等等來與虛擬音效卡做串接

VTuber Studio

之前第一堂課時有叫各位裝虛擬音效卡

在VTuber Studio中將麥克風打開,並且將輸入設定成虛擬音效卡即可

VB-Audio Virtual Apps

前面的投影片有下載連結,自己下載並安裝

音效設定中出現下列裝置就成功了

虛擬音效卡

Emotion-Analyzer-Server

前面的投影片有下載連結,自己下載並安裝

看到如下訊息表示安裝成功

你可以到http://localhost:20823/docs來測試

可選項,模型還在訓練中

Emotion-Analyzer-Server

回到ChatUI中

設定情緒分類器的網址

可選項,模型還在訓練中

Emotion-Analyzer-Server

設定VTuber Studio的API連接埠

通常預設就行,要是開不起來就隨便打一個小於65536的整數

可選項,模型還在訓練中

Emotion-Analyzer-Server

在ChatUI中填入VTuber Studio API的連接埠

然後點擊"連接VTuber Studio"

可選項,模型還在訓練中

Emotion-Analyzer-Server

回到VTuber Studio

點擊"允許"

可選項,模型還在訓練中

Emotion-Analyzer-Server

接下來要填寫表情設定的設定檔

請依照ChatUI給的路徑打開你的設定檔

用記事本、VScode之類的都行

可選項,模型還在訓練中

Emotion-Analyzer-Server

找到vts_api底下的hotkey_binding

裡面預設會有一個範例

可選項,模型還在訓練中

Emotion-Analyzer-Server

每一個可用的表情都由兩個屬性:

  • hotkey_name:在VTuber studio中的表情名稱

  • emotion_name:要送到情緒分類器中的標籤名稱

可選項,模型還在訓練中

Emotion-Analyzer-Server

hotkey_name你可以隨便取

只需要保證與VTuber Studio上名稱一樣就行

但emotion_name是會被送到情緒分類模型中的

請好好取一個有意義、符合該表情的名稱

可選項,模型還在訓練中

Emotion-Analyzer-Server

範例:

可選項,模型還在訓練中

{
    "hotkey_name": "My Animation 3",
    "emotion_name": "sad"
}

Emotion-Analyzer-Server

不同的emotion_name可以有相同的hotkey_name

(如果你覺得這些表情可以用同樣的動畫表現的話)

但emotion_name必須是唯一的

建議放一個無表情的預設情緒

在VTuber Studio中取名叫natural

然後將這個預設情緒放在第一個

這樣當AI沒說話時就會自動使用這個表情

可選項,模型還在訓練中

現在,你已經全部搞定了

至於語音聊天的部分

如果你搞到現在顯卡還裝得下語音辨識模型

那就在按照下述方法來安裝語音辨識的GPU資源

如果沒有顯卡或顯卡已經要炸了

那你就只能用CPU來跑語音辨識

但速度會非常感人

不然就是辨識效果非常感人

只能說英文

語音輸入

直接開麥跟你的女兒/兒子聊天

這裡點開有許多種型號

結尾有.en的是專門辨識英文的

有distil前綴的是蒸餾模型

簡單來說就是將原本的大尺寸模型"蒸餾"

壓縮原本的大模型來使速度更快

但性能也會有所下降,不過不多

語音輸入

直接開麥跟你的女兒/兒子聊天

這裡點開有許多種型號

結尾有.en的是專門辨識英文的

有distil前綴的是蒸餾模型

簡單來說就是將原本的大尺寸模型"蒸餾"

壓縮原本的大模型來使速度更快

但性能也會有所下降,不過不多

語音輸入

直接開麥跟你的女兒/兒子聊天

如果你的顯卡還行有餘力

(開完剛剛那一堆模型後還有至少1G的VRAM可用)

那你可以按照ChatUI的Github頁面中所寫的說明

去下載cuBLAS & cuDNN的cuda12版本

將解壓縮的內容丟到ChatUI的資料夾中

或者是丟到C:\Windows\System32中

然後重新啟動ChatUI

這樣你就可以使用GPU來執行語音辨識了

Made with Slides.com