170 lines
4.9 KiB
Markdown
170 lines
4.9 KiB
Markdown
# TakwayAI后端
|
||
|
||
### 项目架构
|
||
|
||
AI后端使用fastapi框架,采用分层架构
|
||
|
||
```
|
||
TakwayAI/
|
||
│
|
||
├── app/
|
||
│ ├── __init__.py # 应用初始化和配置
|
||
│ ├── main.py # 应用启动入口
|
||
│ ├── models/ # 数据模型定义
|
||
│ │ ├── __init__.py
|
||
│ │ ├── models.py # 数据库定义
|
||
│ ├── schemas/ # 请求和响应模型
|
||
│ │ ├── __init__.py
|
||
│ │ ├── user_schemas.py # 用户相关schema
|
||
│ │ └── ... # 其他schema
|
||
│ ├── controllers/ # 业务逻辑控制器
|
||
│ │ ├── __init__.py
|
||
│ │ ├── user_controllers.py # 用户相关控制器
|
||
│ │ └── ... # 其他控制器
|
||
│ ├── routes/ # 路由和视图函数
|
||
│ │ ├── __init__.py
|
||
│ │ ├── user_routes.py # 用户相关路由
|
||
│ │ └── ... # 其他路由
|
||
│ ├── dependencies/ # 依赖注入相关
|
||
│ │ ├── __init__.py
|
||
│ │ ├── database.py # 数据库依赖
|
||
│ │ └── ... # 其他依赖
|
||
│ └── exceptions/ # 自定义异常处理
|
||
│ ├── __init__.py
|
||
│ └── ... # 自定义异常类
|
||
│
|
||
├── tests/ # 测试代码
|
||
│ ├── __init__.py
|
||
| └── ...
|
||
│
|
||
├── config/ # 配置文件
|
||
│ ├── __init__.py
|
||
│ ├── production.py # 生产环境配置
|
||
│ ├── development.py # 开发环境配置
|
||
│ └── ... # 其他环境配置
|
||
│
|
||
├── utils/ # 工具函数和辅助类
|
||
│ ├── __init__.py
|
||
│ ├── stt # 语音转文本工具函数
|
||
│ ├── tts # 语音合成工具函数
|
||
│ └── ... # 其他工具函数
|
||
|
|
||
├── main.py #启动脚本
|
||
├── app.log # 日志文件
|
||
├── Dockerfile # 用于构建Docker镜像的Dockerfile
|
||
├── requirements.txt # 项目依赖列表
|
||
└── README.md # 项目说明文件
|
||
```
|
||
|
||
### 项目部署
|
||
|
||
#### (1) 将项目clone到本地:
|
||
|
||
``` shell
|
||
git clone http://43.132.157.186:3000/killua/TakwayPlatform.git
|
||
```
|
||
|
||
#### (2) 安装依赖
|
||
|
||
创建虚拟环境
|
||
|
||
``` shell
|
||
conda create -n takway python=3.9
|
||
conda activate takway
|
||
```
|
||
|
||
安装依赖
|
||
|
||
``` shell
|
||
cd TakwayPlatform/
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
#### (3) 安装openvoice
|
||
|
||
如果你的本地环境可以科学上网,则直接运行下面两行指令
|
||
|
||
``` shell
|
||
pip install git+https://github.com/myshell-ai/MeloTTS.git
|
||
python -m unidic download
|
||
```
|
||
|
||
如果不能科学上网
|
||
|
||
则先运行
|
||
|
||
``` shell
|
||
pip install git+https://github.com/myshell-ai/MeloTTS.git
|
||
```
|
||
|
||
1. unidic安装
|
||
|
||
然后手动下载[unidic.zip](https://cotonoha-dic.s3-ap-northeast-1.amazonaws.com/unidic-3.1.0.zip),并手动改名为unidic.zip
|
||
|
||
这边以miniconda举例,如果用的是conda应该也是一样的
|
||
|
||
将unidic.zip拷贝入~/miniconda3/envs/takway/lib/python3.9/site-packages/unidic
|
||
|
||
cd进入~/miniconda3/envs/takway/lib/python3.9/site-packages/unidic
|
||
|
||
vim download.py
|
||
|
||
将函数download_version()中除了最后一行全部注释掉,并且把最后一行的download_and_clean()的两个参数任意修改,比如"hello","world"
|
||
|
||
再将download_and_clean()函数定义位置,注释掉该函数中的download_process()行
|
||
|
||
运行`python -m unidic download`
|
||
|
||
2. huggingface配置
|
||
|
||
运行命令
|
||
|
||
```shell
|
||
pip install -U huggingface_hub
|
||
export HF_ENDPOINT=https://hf-mirror.com
|
||
```
|
||
|
||
最好把`export HF_ENDPOINT=https://hf-mirror.com`写入~/.bashrc,不然每次重启控制台终端就会失效
|
||
|
||
3. nltk_data下载
|
||
|
||
在/miniconda3/envs/takway/下创建nltk_data文件夹
|
||
|
||
在nltk_data文件夹下创建corpora和taggers文件夹
|
||
|
||
手动下载[cmudict.zip](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/corpora/cmudict.zip)和[averaged_perceptron_tragger.zip](https://raw.githubusercontent.com/nltk/nltk_data/gh-pages/packages/taggers/averaged_perceptron_tagger.zip)
|
||
|
||
将cmudict.zip放入corpora文件夹下
|
||
|
||
将averaged_perceptron_tragger.zip放入taggers文件夹下
|
||
|
||
#### (4) 安装FunASR
|
||
|
||
本项目使用的FunASRE在github上的FunASR的基础上做了一些修改
|
||
|
||
``` shell
|
||
git clone http://43.132.157.186:3000/gaohz/FunASR.git
|
||
cd FunASR/
|
||
pip install -v -e .
|
||
```
|
||
|
||
#### (5) 修改配置
|
||
|
||
1. 安装mysql,在mysql中创建名为takway的数据库
|
||
2. 安装redis,将密码设置为takway
|
||
3. 打开config中的development.py文件修改mysql和redis连接字符串
|
||
|
||
#### (6) 导入vits模型
|
||
|
||
在utils/tts/目录下,创建vits_model文件夹
|
||
|
||
从[链接](https://huggingface.co/spaces/zomehwh/vits-uma-genshin-honkai/tree/main/model)下载 vits_model并放入该文件夹下,只需下载config.json和G_953000.pth即可
|
||
|
||
#### (7) 启动程序
|
||
|
||
``` shell
|
||
cd TakwayPlatform
|
||
python main.py
|
||
```
|
||
|