Skip to content

Commit

Permalink
update README: new getting-started
Browse files Browse the repository at this point in the history
  • Loading branch information
cdfmlr committed Mar 8, 2023
1 parent 51a9d0c commit 35f7a94
Showing 1 changed file with 91 additions and 23 deletions.
114 changes: 91 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ Makes your AI vtuber.
![obs](attachments/obs.png)

- 不定期的测试直播:http://live.bilibili.com/26949229
- 介绍文章:[知乎 - 写个AI虚拟主播:看懂弹幕,妙语连珠,悲欢形于色,以一种简单的实现](https://zhuanlan.zhihu.com/p/609878670)

## 项目构成

![muvtuber-impl](attachments/muvtuber-impl.png)
Expand All @@ -14,7 +17,7 @@ Makes your AI vtuber.

| 服务 | 说明 | 基于 |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| [xfgryujk/blivechat](https://github.com/xfgryujk/blivechat) | 获取直播间弹幕消息。 | [xfgryujk/blivechat](https://github.com/xfgryujk/blivechat) 做的非常好,直接用了,没有额外封装。 |
| [blivechat](https://github.com/cdfmlr/blivechat/tree/muvtuber) | 获取直播间弹幕消息。 | [xfgryujk/blivechat](https://github.com/xfgryujk/blivechat) 做的非常好,直接用了,没有额外封装。 |
| [Live2dView](https://github.com/cdfmlr/live2dview) | 前端:显示 [Live2D](https://www.live2d.com/en/) 模型 | [guansss/pixi-live2d-display](https://github.com/guansss/pixi-live2d-display) |
| [Live2dDriver](https://github.com/cdfmlr/live2ddriver) | 驱动前端 Live2D 模型动作表情 | - |
| [ChatGPTChatbot](https://github.com/cdfmlr/chatgpt_chatbot) | 基于 [ChatGPT](https://chat.openai.com) 的优质聊天机器人 | [acheong08/ChatGPT](https://github.com/acheong08/ChatGPT) |
Expand All @@ -25,48 +28,71 @@ Makes your AI vtuber.

## 起步

0. 开发环境:
(首次使用,毋必按照如下步骤走一边,不能直接看后面的部署一节)

-1. 开发环境:

```sh
$ uname -mrs
Darwin 22.3.0 x86_64
Darwin 22.3.0 arm64
# 目前 TTS 模块还依赖于 macOS,其他系统可能不行。
$ go version
go version go1.19.6 darwin/amd64
go version go1.20.1 darwin/arm64
$ python3 --version
Python 3.10.9
Python 3.9.16 # blivechat
Python 3.10.10 # others
$ poetry --version
Poetry (version 1.3.2)
Poetry (version 1.4.0)
$ node --version
v19.4.0
v18.14.2
$ pyenv --version
pyenv 2.3.14
$ pnpm --version
7.26.0
7.29.0
```

Node.js 和 Python 的包管理配置:

```sh
# 前端统一使用 pnpm (珍爱硬盘,远离 npm)
pnpm config set auto-install-peers true -g
# python统一使用 pyenv + poetry
poetry config virtualenvs.prefer-active-python true
poetry config virtualenvs.in-project true # 只是个人的保守偏好
```

0. 现在可用 git submodule 一次性拉取整个项目,无需手动 clone 各个模块了:

```sh
git clone --recursive https://github.com/cdfmlr/muvtuber.git
```

1. [xfgryujk/blivechat](https://github.com/xfgryujk/blivechat)
接下来编译运行各个模块(Docker 仍不可用,需手动做散装服务编排)可以预先开 7 个终端页,然后:

1. [blivechat](https://github.com/cdfmlr/blivechat/tree/muvtuber)

```sh
# clone repo
git clone --recursive https://github.com/xfgryujk/blivechat.git
cd blivechat

# 编译前端
cd frontend
npm install
npm run build
pnpm install
pnpm run build
cd ..

# 运行服务
pip3 install -r requirements.txt
python3 main.py
pyenv local 3.9.16
poetry install
poetry run python main.py
# 服务运行在 http://localhost:12450,会自动在默认浏览器打开
```

2. [Emotext](https://github.com/cdfmlr/emotext)

```sh
git clone https://github.com/cdfmlr/emotext.git
cd emotext

pyenv local 3.10.10
poetry install
poetry run python emotext/httpapi.py --port 9003
# emotext server: http://localhost:9003
Expand All @@ -75,9 +101,9 @@ poetry run python emotext/httpapi.py --port 9003
3. [ChatGPTChatbot](https://github.com/cdfmlr/chatgpt_chatbot)

```sh
git clone https://github.com/cdfmlr/chatgpt_chatbot.git
cd chatgpt_chatbot

pyenv local 3.10.10
poetry install
poetry run python chatgpt
# ChatGPTChatbot gRPC server: localhost:50052
Expand All @@ -86,9 +112,9 @@ poetry run python chatgpt
4. [MusharingChatbot](https://github.com/cdfmlr/musharing_chatbot)

```sh
git clone https://github.com/cdfmlr/musharing_chatbot.git
cd musharing_chatbot

pyenv local 3.10.10
poetry install
poetry run python -m spacy download en_core_web_sm # 一个执行不到的依赖,但是不装跑不起来。
PYTHONPATH=$PYTHONPATH:. poetry run python musharing_chatbot
Expand All @@ -99,35 +125,45 @@ PYTHONPATH=$PYTHONPATH:. poetry run python musharing_chatbot
5. [Live2dDriver](https://github.com/cdfmlr/live2ddriver)

```sh
git clone https://github.com/cdfmlr/live2ddriver.git
#git clone https://github.com/cdfmlr/live2ddriver.git
cd live2ddriver

go run . -shizuku localhost:9004 -verbose
# live2d shizuku driver: localhost:9004
# websocket message forwarder: localhost:9001 # 前端会连这个

# 不开发该模块也可以 build 出来再运行
```

6. [Live2dView](https://github.com/cdfmlr/live2dview)

```sh
git clone https://github.com/cdfmlr/live2dview.git
#git clone https://github.com/cdfmlr/live2dview.git
cd live2dview

pnpm install
pnpm exec quasar dev
# 浏览器访问: 调试(戏)页: http://localhost:9000/#/debug
# 生产环境: OBS 添加浏览器源: http://localhost:9000/

# 如果不开发这个模块可以 build & serve:
pnpm exec quasar build
httpstatic -d dist/spa/ -l :9000 # 你的某种静态网页服务工具,如 python -m http.server,如果开发环境最好有宽松的 CROS。这里用的是 https://github.com/cdfmlr/tools/#httpstatic
```

7. [muvtuberdriver](https://github.com/cdfmlr/muvtuberdriver)

muvtuberdriver 必须在前面所有服务正确启动后才能启动,否则会 panic 退出。

```sh
git https://github.com/cdfmlr/muvtuberdriver.git
#git clone https://github.com/cdfmlr/muvtuberdriver.git
cd muvtuberdriver

go run . -chatgpt_access_token='eyJ***99A' -chatgpt_prompt="请扮演一个正在直播的 vtuber,之后我的输入均为用户评论,用简短的一句话回答它们" -roomid 000000 -reduce_duration=2s
# chatgpt_access_token: 浏览器访问https://chat.openai.com/api/auth/session获取
# roomid 你的 b 站直播间 id,https://live.bilibili.com/000000?... 中的000000

# 不开发该模块也可以 build 出来再运行
```

8. OBS
Expand All @@ -143,6 +179,40 @@ brew install obs
# 【开始直播】
```

给新手的 OBS 配置详解:

- Live2DView:来源 > `+` > 浏览器 > 新建 > URL: http://localhost:9000/#/
- blivechat:来源 > `+` > 浏览器 > 新建 > URL:
- 先用浏览器打开 http://localhost:12450
- 首页 > 房间号:设置为你的房间号 > 进入房间
- 弹出的窗口 -> 拷贝地址
- 粘贴到 OBS 的 URL
- 音频:来源 > `+` >音频输入采集 > 新建 > 设备:BlackHole 2ch
- 要先安装一个 [BlackHole](https://github.com/ExistentialAudio/BlackHole)。(但测试了一下感觉 BlackHole 音质似乎有的怪?还是 soundflower 香啊,但太难了)
- 在开始直播前,控制中心 > 声音> 右边 AirPlay 图标 > 选 BlackHole。
- 然后电脑输出的声音就会 -> BlackHole -> OBS。
- B 站推流:设置(Preferences)> 直播 > 服务:选 `Bilibili Live ...`,推流码填「B 站首页 > 头像 > 推荐服务 > 直播中心 > 左侧“我的直播间”> 填好直播分类、房间标题 > 开始直播,然后会显示的串流密钥」

## 部署

(首次使用,毋必按照前面步骤走一边,不能直接用下面的)

按照上面步骤走过一次之后就可以比较方便地再启动了:

```sh
cd blivechat; nohup poetry run python main.py >> ../run-muvtuber.log 2>&1 &; cd ..
cd emotext; nohup poetry run python emotext/httpapi.py --port 9003 >> ../run-muvtuber.log 2>&1 &; cd ..
cd chatgpt_chatbot; nohup poetry run python chatgpt >> ../run-muvtuber.log 2>&1 &; cd ..
cd musharing_chatbot; PYTHONPATH=$PYTHONPATH:. nohup poetry run python musharing_chatbot >> ../run-muvtuber.log 2>&1 &; cd ..
cd live2ddriver; nohup go run . -shizuku localhost:9004 -verbose >> ../run-muvtuber.log 2>&1 &; cd ..
# alias httpstatic="~/tools/httpstatic/bin/httpstatic"
cd live2dview; nohup httpstatic -d dist/spa/ -l :9000 >> ../run-muvtuber.log 2>&1 &; cd ..
cd muvtuberdriver; nohup go run . -chatgpt_access_token='eyJ***99A' -chatgpt_prompt="请扮演一个正在直播的 vtuber,之后我的输入均为用户评论,用简短的一句话回答它们" -roomid 000000 -reduce_duration=2s >> ../run-muvtuber.log 2>&1 &; cd ..
# 然后就是开 OBS,推流开播了。
```

懒得写 Makefile 或者 sh 脚本了。总之先这样凑合一下吧。之后还要重构成 Docker 的,到时候再一起加 make。

## TODO

- [ ] 文档:各项目的 README、文档
Expand All @@ -167,8 +237,6 @@ brew install obs

欢迎任何有关 Issue 问题、PR 贡献以及讨论。

(以上说明仅限于本人维护的项目,如 [muvtuberdriver](https://github.com/cdfmlr/muvtuberdriver);不包括[xfgryujk/blivechat](https://github.com/xfgryujk/blivechat)[OBS](https://obsproject.com) 等。)




Expand Down

0 comments on commit 35f7a94

Please sign in to comment.