2024-05-01 17:18:30 +08:00
|
|
|
|
# TakwayAI后端
|
|
|
|
|
|
|
|
|
|
### 项目架构
|
|
|
|
|
|
|
|
|
|
AI后端使用fastapi框架,采用分层架构
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
TakwayAI/
|
|
|
|
|
│
|
|
|
|
|
├── app/
|
|
|
|
|
│ ├── __init__.py # 应用初始化和配置
|
|
|
|
|
│ ├── main.py # 应用启动入口
|
|
|
|
|
│ ├── models/ # 数据模型定义
|
|
|
|
|
│ │ ├── __init__.py
|
|
|
|
|
│ │ ├── models.py # 数据库定义
|
|
|
|
|
│ ├── schemas/ # 请求和响应模型
|
|
|
|
|
│ │ ├── __init__.py
|
2024-05-18 17:58:12 +08:00
|
|
|
|
│ │ ├── user_schemas.py # 用户相关schema
|
2024-05-01 17:18:30 +08:00
|
|
|
|
│ │ └── ... # 其他schema
|
|
|
|
|
│ ├── controllers/ # 业务逻辑控制器
|
|
|
|
|
│ │ ├── __init__.py
|
2024-05-18 17:58:12 +08:00
|
|
|
|
│ │ ├── user_controllers.py # 用户相关控制器
|
2024-05-01 17:18:30 +08:00
|
|
|
|
│ │ └── ... # 其他控制器
|
|
|
|
|
│ ├── routes/ # 路由和视图函数
|
|
|
|
|
│ │ ├── __init__.py
|
2024-05-18 17:58:12 +08:00
|
|
|
|
│ │ ├── user_routes.py # 用户相关路由
|
2024-05-01 17:18:30 +08:00
|
|
|
|
│ │ └── ... # 其他路由
|
|
|
|
|
│ ├── 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 # 项目说明文件
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-01 18:20:56 +08:00
|
|
|
|
### 项目部署
|
|
|
|
|
|
|
|
|
|
#### (1) 将项目clone到本地:
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
git clone http://43.132.157.186:3000/killua/TakwayPlatform.git
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-23 10:44:14 +08:00
|
|
|
|
#### (2) 创建虚拟环境
|
2024-05-01 18:20:56 +08:00
|
|
|
|
|
2024-05-18 17:58:12 +08:00
|
|
|
|
创建虚拟环境
|
|
|
|
|
|
|
|
|
|
``` shell
|
2024-05-22 10:04:07 +08:00
|
|
|
|
conda create -n takway python=3.9
|
2024-05-18 17:58:12 +08:00
|
|
|
|
conda activate takway
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-23 10:44:14 +08:00
|
|
|
|
#### (3) 安装依赖
|
2024-05-22 10:04:07 +08:00
|
|
|
|
|
|
|
|
|
如果你的本地环境可以科学上网,则直接运行下面两行指令
|
|
|
|
|
|
|
|
|
|
``` 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文件夹下
|
|
|
|
|
|
2024-05-23 10:44:14 +08:00
|
|
|
|
4. 下载其他依赖
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
cd TakwayPlatform/
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-23 11:48:05 +08:00
|
|
|
|
5. debug
|
|
|
|
|
若出现AttributeError: module 'botocore.exceptions' has no attribute 'HTTPClientError'异常
|
|
|
|
|
则执行下述命令
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
pip uninstall botocore
|
|
|
|
|
pip install botocore==1.34.88
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-22 10:04:07 +08:00
|
|
|
|
#### (4) 安装FunASR
|
2024-05-18 17:58:12 +08:00
|
|
|
|
|
|
|
|
|
本项目使用的FunASRE在github上的FunASR的基础上做了一些修改
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
git clone http://43.132.157.186:3000/gaohz/FunASR.git
|
|
|
|
|
cd FunASR/
|
|
|
|
|
pip install -v -e .
|
|
|
|
|
```
|
|
|
|
|
|
2024-05-22 10:04:07 +08:00
|
|
|
|
#### (5) 修改配置
|
2024-05-01 18:20:56 +08:00
|
|
|
|
|
2024-05-01 18:27:51 +08:00
|
|
|
|
1. 安装mysql,在mysql中创建名为takway的数据库
|
|
|
|
|
2. 安装redis,将密码设置为takway
|
|
|
|
|
3. 打开config中的development.py文件修改mysql和redis连接字符串
|
2024-05-02 10:02:28 +08:00
|
|
|
|
|
2024-05-22 10:04:07 +08:00
|
|
|
|
#### (6) 导入vits模型
|
2024-05-02 10:02:28 +08:00
|
|
|
|
|
|
|
|
|
在utils/tts/目录下,创建vits_model文件夹
|
|
|
|
|
|
|
|
|
|
从[链接](https://huggingface.co/spaces/zomehwh/vits-uma-genshin-honkai/tree/main/model)下载 vits_model并放入该文件夹下,只需下载config.json和G_953000.pth即可
|
2024-05-22 10:04:07 +08:00
|
|
|
|
|
2024-05-22 17:31:33 +08:00
|
|
|
|
#### (7) 导入openvoice模型
|
|
|
|
|
|
|
|
|
|
在utils/tts/目录下,创建openvoice_model文件夹
|
|
|
|
|
|
|
|
|
|
从[链接](https://myshell-public-repo-hosting.s3.amazonaws.com/openvoice/checkpoints_v2_0417.zip)下载model文件,并放入该文件夹下
|
|
|
|
|
|
2024-05-23 11:48:05 +08:00
|
|
|
|
#### (8) 添加配置环境变量
|
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
vim ~/.bashrc
|
|
|
|
|
在最后添加
|
|
|
|
|
export MODE=development
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
#### (9) 启动程序
|
2024-05-22 10:04:07 +08:00
|
|
|
|
|
|
|
|
|
``` shell
|
|
|
|
|
cd TakwayPlatform
|
|
|
|
|
python main.py
|
|
|
|
|
```
|
|
|
|
|
|