Upload README.md
Browse files
README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
language:
|
| 4 |
+
- en
|
| 5 |
+
- zh
|
| 6 |
+
pipeline_tag: audio-to-audio
|
| 7 |
+
base_model:
|
| 8 |
+
- FunAudioLLM/SenseVoiceSmall
|
| 9 |
+
- qwen2.5
|
| 10 |
+
- MeloTTS
|
| 11 |
+
tags:
|
| 12 |
+
- VAD
|
| 13 |
+
- ASR
|
| 14 |
+
- LLM
|
| 15 |
+
- TTS
|
| 16 |
+
---
|
| 17 |
+
|
| 18 |
+
|
| 19 |
+
# Spoken-Communication.axera
|
| 20 |
+
|
| 21 |
+
spoken communication demo on Axera
|
| 22 |
+
|
| 23 |
+
- [x] Python 示例
|
| 24 |
+
- [ ] C++ 示例
|
| 25 |
+
|
| 26 |
+
## Convert tools links:
|
| 27 |
+
|
| 28 |
+
For those who are interested in model conversion, you can try to export axmodel through the original repo :
|
| 29 |
+
How to Convert from ONNX to axmodel
|
| 30 |
+
- [ASR](https://github.com/AXERA-TECH/3D-Speaker-MT.axera/tree/main/model_convert)
|
| 31 |
+
- [MeloTTS](https://github.com/ml-inory/melotts.axera/tree/main/model_convert)
|
| 32 |
+
|
| 33 |
+
## 支持平台
|
| 34 |
+
|
| 35 |
+
- AX650N
|
| 36 |
+
|
| 37 |
+
## 功能
|
| 38 |
+
|
| 39 |
+
语音交流
|
| 40 |
+
|
| 41 |
+
## Pipeline组件
|
| 42 |
+
|
| 43 |
+
- [ASR](https://github.com/AXERA-TECH/3D-Speaker-MT.axera/tree/main)
|
| 44 |
+
- [LLM](https://github.com/AXERA-TECH/ax-llm/tree/ax-context),参考生成库文件,保存到libaxllm
|
| 45 |
+
- [MeloTTS](https://github.com/ml-inory/melotts.axera/tree/main/python)
|
| 46 |
+
|
| 47 |
+
## 上板部署
|
| 48 |
+
|
| 49 |
+
- AX650N 的设备已预装 Ubuntu22.04
|
| 50 |
+
- 以 root 权限登陆 AX650N 的板卡设备
|
| 51 |
+
- 链接互联网,确保 AX650N 的设备能正常执行 apt install, pip install 等指令
|
| 52 |
+
- 已验证设备:AX650N DEMO Board
|
| 53 |
+
|
| 54 |
+
## Python API 运行
|
| 55 |
+
|
| 56 |
+
在python3.10(验证)
|
| 57 |
+
|
| 58 |
+
### pipeline方案:ASR + LLM(Qwen) + MeloTTS
|
| 59 |
+
|
| 60 |
+
```
|
| 61 |
+
支持板端运行及算力卡模式运行
|
| 62 |
+
```
|
| 63 |
+
|
| 64 |
+
### 工程下载
|
| 65 |
+
```
|
| 66 |
+
git clone https://huggingface.co/AXERA-TECH/Spoken-Communication.axera 或者
|
| 67 |
+
hf download AXERA-TECH/Spoken-Communication.axera --local-dir Spoken-Communication.axera
|
| 68 |
+
|
| 69 |
+
cd Spoken-Communication.axera
|
| 70 |
+
|
| 71 |
+
工程目录文件结构如下:
|
| 72 |
+
.
|
| 73 |
+
|-- README.md
|
| 74 |
+
|-- ax_model
|
| 75 |
+
|-- ax_spoken_communication_demo.py
|
| 76 |
+
|-- config.json
|
| 77 |
+
|-- libaxllm
|
| 78 |
+
|-- libmelotts
|
| 79 |
+
|-- model.py
|
| 80 |
+
|-- requirements.txt
|
| 81 |
+
|-- utils
|
| 82 |
+
`-- input_question
|
| 83 |
+
|
| 84 |
+
```
|
| 85 |
+
|
| 86 |
+
### 具体流程
|
| 87 |
+
|
| 88 |
+
**板端 demo**
|
| 89 |
+
|
| 90 |
+
1、安装依赖库
|
| 91 |
+
|
| 92 |
+
```
|
| 93 |
+
1):
|
| 94 |
+
如果环境中没有axengine,下载安装,位置任意
|
| 95 |
+
hf download AXERA-TECH/PyAXEngine --local-dir PyAXEngine
|
| 96 |
+
cd PyAXEngine
|
| 97 |
+
pip3 install axengine-0.1.3-py3-none-any.whl
|
| 98 |
+
|
| 99 |
+
2):
|
| 100 |
+
cd Spoken-Communication.axera
|
| 101 |
+
pip3 install -r requirements.txt
|
| 102 |
+
|
| 103 |
+
3):
|
| 104 |
+
apt install espeak 或者
|
| 105 |
+
sudo apt install espeak
|
| 106 |
+
```
|
| 107 |
+
|
| 108 |
+
2、模型下载
|
| 109 |
+
|
| 110 |
+
```
|
| 111 |
+
主目录下执行命令:
|
| 112 |
+
hf download AXERA-TECH/Qwen2.5-1.5B-Instruct --local-dir libaxllm --include qwen2.5-1.5b-ctx-ax650/*
|
| 113 |
+
模型下载至libaxllm文件夹
|
| 114 |
+
|
| 115 |
+
hf download AXERA-TECH/Speech-Translation.axera --local-dir . --include ax_model/vad.axmodel
|
| 116 |
+
模型下载至ax_model文件夹
|
| 117 |
+
```
|
| 118 |
+
|
| 119 |
+
3、在开发板运行以下命令
|
| 120 |
+
|
| 121 |
+
```
|
| 122 |
+
1)、运行qwen api
|
| 123 |
+
cd libaxllm
|
| 124 |
+
|
| 125 |
+
启动支持上下文的 tokenizer 服务器
|
| 126 |
+
python3 qwen2.5_tokenizer_uid.py
|
| 127 |
+
|
| 128 |
+
运行
|
| 129 |
+
sh run_qwen2.5_1.5b_ctx_ax650_api.sh
|
| 130 |
+
|
| 131 |
+
2)、运行pipeline板端demo
|
| 132 |
+
cd ..
|
| 133 |
+
|
| 134 |
+
python3 ax_spoken_communication_demo.py --audio_dir input_question --output_dir output_answer --api_url http://10.126.29.158:8000
|
| 135 |
+
|
| 136 |
+
运行参数说明:
|
| 137 |
+
|
| 138 |
+
| 参数名称 | 说明|
|
| 139 |
+
|-------|------|
|
| 140 |
+
| `--audio_dir` | 音频路径 |
|
| 141 |
+
| `--api_url` | qwen API服务地址,对应其运行服务器 |
|
| 142 |
+
| `--output_dir` | 结果保存路径 |
|
| 143 |
+
```
|
| 144 |
+
|
| 145 |
+
输出:
|
| 146 |
+
1、与输入音频相对应的wav文件,
|
| 147 |
+
2、识别信息保存成txt文件 -> "output_answer/processing_summary.txt",如下:
|
| 148 |
+
```
|
| 149 |
+
批量处理结果汇总
|
| 150 |
+
==================================================
|
| 151 |
+
|
| 152 |
+
文件 1: Q1.wav
|
| 153 |
+
原始文本: 人工智能和人类智能最本质的区别是什么?。
|
| 154 |
+
回答结果: 人工智能和人类智能最本质的区别在于,人工智能是基于算法和数据进行学习和决策的机器智能,而人类智能是基于经验和直觉进行思考和决策的生物智能。
|
| 155 |
+
合成音频: Q1_answer.wav
|
| 156 |
+
处理时间: 8.22 秒
|
| 157 |
+
音频时长: 15.19 秒
|
| 158 |
+
RTF: 0.54
|
| 159 |
+
--------------------------------------------------
|
| 160 |
+
文件 2: Q2.wav
|
| 161 |
+
原始文本: 人工智能没有思想,为什么他能创作出震撼人心的艺术?。
|
| 162 |
+
回答结果: 人工智能创作艺术是因为它可以通过算法和数据进行学习和分析,理解艺术作品的风格、情感和意义,然后通过生成模型进行创作。这与人类艺术家创作艺术的灵感、经验和直觉不同,但人工智能在某些领域已经表现出超越人类的能力。
|
| 163 |
+
合成音频: Q2_answer.wav
|
| 164 |
+
处理时间: 9.43 秒
|
| 165 |
+
音频时长: 23.68 秒
|
| 166 |
+
RTF: 0.40
|
| 167 |
+
--------------------------------------------------
|
| 168 |
+
文件 3: Q3.wav
|
| 169 |
+
原始文本: 人工智能最终会统治人类吗?。
|
| 170 |
+
回答结果: 人工智能的发展可能会对人类社会产生重大影响,但目前来看,人工智能尚未达到能够统治人类的程度。人工智能主要是在特定任务上表现出色,如数据分析、图像识别等,但在决策、伦理和情感理解等方面仍存在局限。
|
| 171 |
+
合成音频: Q3_answer.wav
|
| 172 |
+
处理时间: 8.86 秒
|
| 173 |
+
音频时长: 22.62 秒
|
| 174 |
+
RTF: 0.39
|
| 175 |
+
--------------------------------------------------
|
| 176 |
+
|
| 177 |
+
总计: 3 个文件
|
| 178 |
+
总处理时间: 26.53 秒
|
| 179 |
+
```
|
| 180 |
+
|
| 181 |
+
4、Latency
|
| 182 |
+
|
| 183 |
+
AX650N
|
| 184 |
+
|
| 185 |
+
RTF: 约为0.4,如上例。
|
| 186 |
+
|
| 187 |
+
|
| 188 |
+
**算力卡demo**
|
| 189 |
+
|
| 190 |
+
运行步骤与板端demo大致相同,以aarch64环境为例:
|
| 191 |
+
```
|
| 192 |
+
1、运行qwen api
|
| 193 |
+
cd libaxllm
|
| 194 |
+
|
| 195 |
+
启动支持上下文的 tokenizer 服务器
|
| 196 |
+
python3 qwen2.5_tokenizer_uid.py
|
| 197 |
+
|
| 198 |
+
运行对应环境的api
|
| 199 |
+
sh run_qwen2.5_1.5b_ctx_axcl_aarch64_api.sh
|
| 200 |
+
|
| 201 |
+
2、运行pipeline算力卡demo
|
| 202 |
+
cd ..
|
| 203 |
+
python3 ax_spoken_communication_demo.py --audio_dir input_question --api_url http://10.126.33.13:8000 --output_dir output
|
| 204 |
+
```
|
| 205 |
+
x86环境运行步骤同上
|
| 206 |
+
|
| 207 |
+
|
| 208 |
+
|
| 209 |
+
## 参考
|
| 210 |
+
- [sensevoice.axera](https://github.com/ml-inory/sensevoice.axera/tree/main)
|
| 211 |
+
- [3D-Speaker.axera](https://github.com/AXERA-TECH/3D-Speaker.axera/tree/master)
|
| 212 |
+
- [melotts.axera](https://github.com/ml-inory/melotts.axera/tree/main)
|
| 213 |
+
- [ax-llm](https://github.com/AXERA-TECH/ax-llm/tree/ax-context)
|
| 214 |
+
|
| 215 |
+
|
| 216 |
+
## 技术讨论
|
| 217 |
+
|
| 218 |
+
- Github issues
|
| 219 |
+
- QQ 群: 139953715
|