MeloTTS 生成 RKNN 模型

方案概述 🚀

本方案基于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等)

部署流程:

  1. 将转换完成的RKNN模型传输至开发板
  2. 编写模型加载及推理代码
  3. 实现文本预处理和音频后处理功能

🎯 模型访问地址:MeloTTS-Chinese(点击直达Hugging Face页面)


生成 ONNX 模型 ⚡

shell 复制代码
# 使用支持 ONNX 导出的版本
git clone https://github.com/mmontol/MeloTTS.git

导出 ONNX 脚本 🔥

  • export_onnx.py

    python 复制代码
    # 修改 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'])
  • Run

    shell 复制代码
    # 在当前目录下生成encoder-ZH_MIX_EN.onnx和decoder-ZH_MIX_EN.onnx文件
    python export_onnx.py

生成RKNN模型 👿

  • to_rknn.py , 不进行量化生成rknn模型

  • 分别生成 decoder/encoder rknn 模型

    shell 复制代码
    from 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()
相关推荐
深度智能Ai2 天前
IndexTTS 2.5 语音合成 API 接口使用文档
ai·语音合成·tts·在线语音合成
liuyanqun-parbie7 天前
从语音到答案:实时语音客服机器人技术实践
机器人·agent·tts·asr·语音
嵌入式分享14 天前
RK3588/RK3576 为什么取消原生 LVDS?显示接口选型与外部转换方案
rk3588·lvds·mipi
程序猿编码18 天前
不用 GPU!RK3588 跑视觉大模型,Qwen3.5-2B VLM 端侧落地
大模型·llm·rk3588·qwen·推理·vlm
深圳市爱派派智能科技有限公司18 天前
告别部署繁琐:LlamaPi 一键搭建本地 Agent 推理底座
rk3588·agent·openai api·本地部署·边缘ai·端侧大模型·llamapi
星野云联AIoT技术洞察19 天前
RK3588 边缘 AI 盒子适合什么工业视觉场景
计算机视觉·边缘计算·rk3588·语音识别·图像识别·边缘网关·边缘计算盒子
企鹅的蚂蚁19 天前
LubanCat RK3588 实时 Linux 开发实战(十四):EtherCAT 主站方案选择与 Full SDK 准备
rk3588·lubancat·嵌入式linux·ethercat·full sdk
企鹅的蚂蚁20 天前
LubanCat RK3588 实时 Linux 开发(七):YT6801 PCIe 网卡驱动移植与 vermagic 排查
linux·rk3588·linux驱动·yt6801·pcie网卡·vermagic
程序猿编码20 天前
扔掉 Python!纯 C++ 本地跑扩散 TTS,GGML 加持,支持 RK3588 NPU 加速
c++·计算机视觉·大模型·transformer·rk3588·推理·ggml
企鹅的蚂蚁21 天前
LubanCat RK3588 实时 Linux 开发(九):从 U-Boot 到 initramfs 的串口启动故障分析
linux·rk3588·u-boot·串口调试·initramfs·linux启动