
方案概述 🚀
本方案基于RK3588平台,通过RKNN(Rockchip Neural Network)工具链实现高效的语音生成功能。RK3588作为瑞芯微推出的高性能AIoT处理器,内置NPU(神经网络处理单元),配合RKNN工具链可高效完成端侧语音合成(TTS)任务。
MeloTTS.cpp 是meloTTS 的 C++ 实现,MeloTTS是由 MyShell.ai 发布的一个高质量、多语言的文本转语音 (Text To Speech) 库,支持英语、中文以及其他多种语言。本仓库基于OpenVINO,支持在 CPU、GPU 和 NPU 边缘设备上的部署。目前,本仓库支持中文(混合英文)和纯英语
RK3588平台部署 😈
环境准备:
- RK3588开发板(推荐Rock5B或Firefly RK3588)
- RKNN Toolkit2工具包(建议版本≥1.4.0)
- 音频处理工具库(如librosa/pyaudio等)
部署流程:
- 将转换完成的RKNN模型传输至开发板
- 编写模型加载及推理代码
- 实现文本预处理和音频后处理功能
🎯 模型访问地址:MeloTTS-Chinese(点击直达Hugging Face页面)
生成 ONNX 模型 ⚡
shell
# 使用支持 ONNX 导出的版本
git clone https://github.com/mmontol/MeloTTS.git
导出 ONNX 脚本 🔥
-
export_onnx.pypython# 修改 config_path/ckpt_path from melo.api import TTS import os os.environ["HF_ENDPOINT"] = "https://hf-mirror.com" # Speed is adjustable speed = 1.0 device = 'cpu' # or cuda:0 model = TTS(language='ZH', device=device, use_hf=False ,config_path = './MeloTTS-Chinese/config.json', ckpt_path='./MeloTTS-Chinese/checkpoint.pth') speaker_ids = model.hps.data.spk2id model.export_onnx(speaker_ids['ZH']) -
Runshell# 在当前目录下生成encoder-ZH_MIX_EN.onnx和decoder-ZH_MIX_EN.onnx文件 python export_onnx.py
生成RKNN模型 👿
-
to_rknn.py , 不进行量化生成rknn模型
-
分别生成 decoder/encoder rknn 模型
shellfrom rknn.api import RKNN ONNX_MODEL = './weights/decoder-ZH_MIX_EN.onnx' RKNN_MODEL = './weights/decoder-ZH_MIX_EN_rk3588.rknn' PLATFORM = "RK3588" QUANTIZE_ON = False if __name__ == '__main__': # Create RKNN object rknn = RKNN(verbose=False) # Pre-process config print('--> Config model') rknn.config(target_platform=PLATFORM) print('done') # Load model print('--> Loading model') ret = rknn.load_onnx(model=ONNX_MODEL) if ret != 0: print('Load model failed!') exit(ret) print('done') # Build model print('--> Building model') ret = rknn.build(do_quantization=QUANTIZE_ON) if ret != 0: print('Build model failed!') exit(ret) print('done') # Export rknn model print('--> Export rknn model') ret = rknn.export_rknn(RKNN_MODEL) if ret != 0: print('Export rknn model failed!') exit(ret) print('done') # Release rknn.release()