|
|
--- |
|
|
license: mit |
|
|
language: |
|
|
- en |
|
|
- zh |
|
|
pipeline_tag: audio-to-audio |
|
|
base_model: |
|
|
- FunAudioLLM/SenseVoiceSmall |
|
|
- qwen2.5 |
|
|
- MeloTTS |
|
|
tags: |
|
|
- VAD |
|
|
- ASR |
|
|
- LLM |
|
|
- TTS |
|
|
--- |
|
|
|
|
|
|
|
|
# Spoken-Communication.axera |
|
|
|
|
|
spoken communication demo on Axera |
|
|
|
|
|
- [x] Python 示例 |
|
|
- [ ] C++ 示例 |
|
|
|
|
|
## Convert tools links: |
|
|
|
|
|
For those who are interested in model conversion, you can try to export axmodel through the original repo : |
|
|
How to Convert from ONNX to axmodel |
|
|
- [ASR](https://github.com/AXERA-TECH/3D-Speaker-MT.axera/tree/main/model_convert) |
|
|
- [MeloTTS](https://github.com/ml-inory/melotts.axera/tree/main/model_convert) |
|
|
|
|
|
## 支持平台 |
|
|
|
|
|
- AX650N |
|
|
|
|
|
## 功能 |
|
|
|
|
|
语音交流 |
|
|
|
|
|
## Pipeline组件 |
|
|
|
|
|
- [ASR](https://github.com/AXERA-TECH/3D-Speaker-MT.axera/tree/main) |
|
|
- [LLM](https://github.com/AXERA-TECH/ax-llm/tree/ax-context),参考生成库文件,保存到libaxllm |
|
|
- [MeloTTS](https://github.com/ml-inory/melotts.axera/tree/main/python) |
|
|
|
|
|
## 上板部署 |
|
|
|
|
|
- AX650N 的设备已预装 Ubuntu22.04 |
|
|
- 以 root 权限登陆 AX650N 的板卡设备 |
|
|
- 链接互联网,确保 AX650N 的设备能正常执行 apt install, pip install 等指令 |
|
|
- 已验证设备:AX650N DEMO Board |
|
|
|
|
|
## Python API 运行 |
|
|
|
|
|
在python3.10(验证) |
|
|
|
|
|
### pipeline方案:ASR + LLM(Qwen) + MeloTTS |
|
|
|
|
|
``` |
|
|
支持板端运行及算力卡模式运行 |
|
|
``` |
|
|
|
|
|
### 工程下载 |
|
|
``` |
|
|
git clone https://huggingface.co/AXERA-TECH/Spoken-Communication.axera 或者 |
|
|
hf download AXERA-TECH/Spoken-Communication.axera --local-dir Spoken-Communication.axera |
|
|
|
|
|
cd Spoken-Communication.axera |
|
|
|
|
|
工程目录文件结构如下: |
|
|
. |
|
|
|-- README.md |
|
|
|-- ax_model |
|
|
|-- ax_spoken_communication_demo.py |
|
|
|-- config.json |
|
|
|-- libaxllm |
|
|
|-- libmelotts |
|
|
|-- model.py |
|
|
|-- requirements.txt |
|
|
|-- utils |
|
|
`-- input_question |
|
|
|
|
|
``` |
|
|
|
|
|
### 具体流程 |
|
|
|
|
|
**板端 demo** |
|
|
|
|
|
1、安装依赖库 |
|
|
|
|
|
``` |
|
|
1): |
|
|
如果环境中没有axengine,下载安装,位置任意 |
|
|
hf download AXERA-TECH/PyAXEngine --local-dir PyAXEngine |
|
|
cd PyAXEngine |
|
|
pip3 install axengine-0.1.3-py3-none-any.whl |
|
|
|
|
|
2): |
|
|
cd Spoken-Communication.axera |
|
|
pip3 install -r requirements.txt |
|
|
|
|
|
3): |
|
|
apt install espeak 或者 |
|
|
sudo apt install espeak |
|
|
``` |
|
|
|
|
|
2、模型下载 |
|
|
|
|
|
``` |
|
|
主目录下执行命令: |
|
|
hf download AXERA-TECH/Qwen2.5-1.5B-Instruct --local-dir libaxllm --include qwen2.5-1.5b-ctx-ax650/* |
|
|
模型下载至libaxllm文件夹 |
|
|
``` |
|
|
|
|
|
3、在开发板运行以下命令 |
|
|
|
|
|
``` |
|
|
1)、运行qwen api |
|
|
cd libaxllm |
|
|
|
|
|
启动支持上下文的 tokenizer 服务器 |
|
|
python3 qwen2.5_tokenizer_uid.py |
|
|
|
|
|
运行 |
|
|
sh run_qwen2.5_1.5b_ctx_ax650_api.sh |
|
|
|
|
|
2)、运行pipeline板端demo |
|
|
cd .. |
|
|
|
|
|
python3 ax_spoken_communication_demo.py --audio_dir input_question --output_dir output_answer --api_url http://10.126.29.158:8000 |
|
|
|
|
|
运行参数说明: |
|
|
|
|
|
| 参数名称 | 说明| |
|
|
|-------|------| |
|
|
| `--audio_dir` | 音频路径 | |
|
|
| `--api_url` | qwen API服务地址,对应其运行服务器 | |
|
|
| `--output_dir` | 结果保存路径 | |
|
|
``` |
|
|
|
|
|
输出: |
|
|
1)输入音频相对应的wav文件,2)识别信息"output_answer/processing_summary.txt" |
|
|
如下: |
|
|
``` |
|
|
批量处理结果汇总 |
|
|
|
|
|
文件 1: Q1.wav |
|
|
原始文本: 人工智能和人类智能最本质的区别是什么?。 |
|
|
回答结果: 人工智能和人类智能最本质的区别在于,人工智能是基于算法和数据进行学习和决策的机器智能,而人类智能是基于经验和直觉进行思考和决策的生物智能。 |
|
|
合成音频: Q1_answer.wav |
|
|
处理时间: 8.22 秒 |
|
|
音频时长: 15.19 秒 |
|
|
RTF: 0.54 |
|
|
|
|
|
文件 2: Q2.wav |
|
|
原始文本: 人工智能没有思想,为什么他能创作出震撼人心的艺术?。 |
|
|
回答结果: 人工智能创作艺术是因为它可以通过算法和数据进行学习和分析,理解艺术作品的风格、情感和意义,然后通过生成模型进行创作。这与人类艺术家创作艺术的灵感、经验和直觉不同,但人工智能在某些领域已经表现出超越人类的能力。 |
|
|
合成音频: Q2_answer.wav |
|
|
处理时间: 9.43 秒 |
|
|
音频时长: 23.68 秒 |
|
|
RTF: 0.40 |
|
|
|
|
|
文件 3: Q3.wav |
|
|
原始文本: 人工智能最终会统治人类吗?。 |
|
|
回答结果: 人工智能的发展可能会对人类社会产生重大影响,但目前来看,人工智能尚未达到能够统治人类的程度。人工智能主要是在特定任务上表现出色,如数据分析、图像识别等,但在决策、伦理和情感理解等方面仍存在局限。 |
|
|
合成音频: Q3_answer.wav |
|
|
处理时间: 8.86 秒 |
|
|
音频时长: 22.62 秒 |
|
|
RTF: 0.39 |
|
|
|
|
|
总计: 3 个文件 |
|
|
总处理时间: 26.53 秒 |
|
|
``` |
|
|
|
|
|
4、Latency |
|
|
|
|
|
AX650N |
|
|
|
|
|
RTF: 约为0.4,如上例。 |
|
|
|
|
|
|
|
|
**算力卡demo** |
|
|
|
|
|
运行步骤与板端demo大致相同,以aarch64环境为例: |
|
|
``` |
|
|
1、运行qwen api |
|
|
cd libaxllm |
|
|
|
|
|
启动支持上下文的 tokenizer 服务器 |
|
|
python3 qwen2.5_tokenizer_uid.py |
|
|
|
|
|
运行对应环境的api |
|
|
sh run_qwen2.5_1.5b_ctx_axcl_aarch64_api.sh |
|
|
|
|
|
2、运行pipeline算力卡demo |
|
|
cd .. |
|
|
python3 ax_spoken_communication_demo.py --audio_dir input_question --api_url http://10.126.33.13:8000 --output_dir output |
|
|
``` |
|
|
x86环境运行步骤同上 |
|
|
|
|
|
|
|
|
|
|
|
## 参考 |
|
|
- [sensevoice.axera](https://github.com/ml-inory/sensevoice.axera/tree/main) |
|
|
- [3D-Speaker.axera](https://github.com/AXERA-TECH/3D-Speaker.axera/tree/master) |
|
|
- [melotts.axera](https://github.com/ml-inory/melotts.axera/tree/main) |
|
|
- [ax-llm](https://github.com/AXERA-TECH/ax-llm/tree/ax-context) |
|
|
|
|
|
|
|
|
## 技术讨论 |
|
|
|
|
|
- Github issues |
|
|
- QQ 群: 139953715 |